# 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 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 microsoftads: <https://relay.inferal.com/ontology/microsoftads/> .
@prefix schema: <https://schema.org/> .

# Class hierarchy
microsoftads:AdInsightApiFaultDetail rdfs:subClassOf microsoftads:AdInsightApplicationFault .
microsoftads:AdInsightApplicationFaultBase rdfs:subClassOf microsoftads:AdInsightApplicationFault .
microsoftads:AdInsightAuctionSegmentSearchParameter rdfs:subClassOf microsoftads:AdInsightSearchParameter .
microsoftads:AdInsightBroadMatchKeywordOpportunity rdfs:subClassOf microsoftads:AdInsightKeywordOpportunity .
microsoftads:AdInsightCampaignBudgetRecommendation rdfs:subClassOf microsoftads:AdInsightRecommendationBase .
microsoftads:AdInsightCategorySearchParameter rdfs:subClassOf microsoftads:AdInsightSearchParameter .
microsoftads:AdInsightCompetitionSearchParameter rdfs:subClassOf microsoftads:AdInsightSearchParameter .
microsoftads:AdInsightDateRangeSearchParameter rdfs:subClassOf microsoftads:AdInsightSearchParameter .
microsoftads:AdInsightDeviceCriterion rdfs:subClassOf microsoftads:AdInsightCriterion .
microsoftads:AdInsightDeviceSearchParameter rdfs:subClassOf microsoftads:AdInsightSearchParameter .
microsoftads:AdInsightEntityParameter rdfs:subClassOf microsoftads:AdInsightPerformanceInsightsMessageParameter .
microsoftads:AdInsightExcludeAccountKeywordsSearchParameter rdfs:subClassOf microsoftads:AdInsightSearchParameter .
microsoftads:AdInsightLocationCriterion rdfs:subClassOf microsoftads:AdInsightCriterion .
microsoftads:AdInsightNetworkCriterion rdfs:subClassOf microsoftads:AdInsightCriterion .
microsoftads:AdInsightLanguageCriterion rdfs:subClassOf microsoftads:AdInsightCriterion .
microsoftads:AdInsightIdeaTextSearchParameter rdfs:subClassOf microsoftads:AdInsightSearchParameter .
microsoftads:AdInsightImpressionShareSearchParameter rdfs:subClassOf microsoftads:AdInsightSearchParameter .
microsoftads:AdInsightKeywordOpportunityBase rdfs:subClassOf microsoftads:AdInsightKeywordOpportunity .
microsoftads:AdInsightKeywordRecommendation rdfs:subClassOf microsoftads:AdInsightRecommendationBase .
microsoftads:AdInsightLanguageSearchParameter rdfs:subClassOf microsoftads:AdInsightSearchParameter .
microsoftads:AdInsightLocationSearchParameter rdfs:subClassOf microsoftads:AdInsightSearchParameter .
microsoftads:AdInsightNetworkSearchParameter rdfs:subClassOf microsoftads:AdInsightSearchParameter .
microsoftads:AdInsightPerformanceInsightsMessageParameterBase rdfs:subClassOf microsoftads:AdInsightPerformanceInsightsMessageParameter .
microsoftads:AdInsightQuerySearchParameter rdfs:subClassOf microsoftads:AdInsightSearchParameter .
microsoftads:AdInsightRecommendationBase rdfs:subClassOf microsoftads:AdInsightRecommendation .
microsoftads:AdInsightRecommendationBaseBase rdfs:subClassOf microsoftads:AdInsightRecommendationBase .
microsoftads:AdInsightRecommendationInfoBase rdfs:subClassOf microsoftads:AdInsightRecommendationInfo .
microsoftads:AdInsightRemoveConflictingNegativeKeywordRecommendation rdfs:subClassOf microsoftads:AdInsightRecommendationBase .
microsoftads:AdInsightResponsiveSearchAdAssetRecommendation rdfs:subClassOf microsoftads:AdInsightRecommendationBase .
microsoftads:AdInsightResponsiveSearchAdRecommendation rdfs:subClassOf microsoftads:AdInsightRecommendationBase .
microsoftads:AdInsightResponsiveSearchAdsRecommendation rdfs:subClassOf microsoftads:AdInsightRecommendation .
microsoftads:AdInsightRSARecommendationInfo rdfs:subClassOf microsoftads:AdInsightRecommendationInfo .
microsoftads:AdInsightSearchVolumeSearchParameter rdfs:subClassOf microsoftads:AdInsightSearchParameter .
microsoftads:AdInsightSuggestedBidSearchParameter rdfs:subClassOf microsoftads:AdInsightSearchParameter .
microsoftads:AdInsightTextParameter rdfs:subClassOf microsoftads:AdInsightPerformanceInsightsMessageParameter .
microsoftads:AdInsightUrlParameter rdfs:subClassOf microsoftads:AdInsightPerformanceInsightsMessageParameter .
microsoftads:AdInsightUrlSearchParameter rdfs:subClassOf microsoftads:AdInsightSearchParameter .
microsoftads:AdInsightUseBroadMatchKeywordRecommendation rdfs:subClassOf microsoftads:AdInsightRecommendationBase .
microsoftads:BulkAdApiFaultDetail rdfs:subClassOf microsoftads:BulkApplicationFault .
microsoftads:BulkAdCenterAuthenticationFault rdfs:subClassOf microsoftads:BulkApplicationFault .
microsoftads:BulkAdCenterAuthorizationFault rdfs:subClassOf microsoftads:BulkApplicationFault .
microsoftads:BulkAdCenterFault rdfs:subClassOf microsoftads:BulkApplicationFault .
microsoftads:BulkAdCenterInternalErrorFault rdfs:subClassOf microsoftads:BulkApplicationFault .
microsoftads:BulkAdCenterSystemFault rdfs:subClassOf microsoftads:BulkApplicationFault .
microsoftads:BulkApiFaultDetail rdfs:subClassOf microsoftads:BulkApplicationFault .
microsoftads:BulkEditorialError rdfs:subClassOf microsoftads:BulkBatchError .
microsoftads:BulkApplicationFaultBase rdfs:subClassOf microsoftads:BulkApplicationFault .
microsoftads:BulkBatchErrorBase rdfs:subClassOf microsoftads:BulkBatchError .
microsoftads:BulkEditorialApiFaultDetail rdfs:subClassOf microsoftads:BulkApplicationFault .
microsoftads:CampaignManagementAccountContentNegativeKeywordList rdfs:subClassOf microsoftads:CampaignManagementSharedList .
microsoftads:CampaignManagementAccountNegativeKeywordList rdfs:subClassOf microsoftads:CampaignManagementSharedList .
microsoftads:CampaignManagementAccountPlacementExclusionList rdfs:subClassOf microsoftads:CampaignManagementSharedList .
microsoftads:CampaignManagementAccountPlacementInclusionList rdfs:subClassOf microsoftads:CampaignManagementSharedList .
microsoftads:CampaignManagementActionAdExtension rdfs:subClassOf microsoftads:CampaignManagementAdExtension .
microsoftads:CampaignManagementAd rdfs:subClassOf aent:Ad .
microsoftads:CampaignManagementAsset rdfs:subClassOf aent:Creative .
microsoftads:CampaignManagementImageAsset rdfs:subClassOf microsoftads:CampaignManagementAsset .
microsoftads:CampaignManagementVerifiedTrackingSetting rdfs:subClassOf microsoftads:CampaignManagementSetting .
microsoftads:CampaignManagementAdApiFaultDetail rdfs:subClassOf microsoftads:CampaignManagementApplicationFault .
microsoftads:CampaignManagementAdBase rdfs:subClassOf microsoftads:CampaignManagementAd .
microsoftads:CampaignManagementAdCenterAuthenticationFault rdfs:subClassOf microsoftads:CampaignManagementApplicationFault .
microsoftads:CampaignManagementAdCenterAuthorizationFault rdfs:subClassOf microsoftads:CampaignManagementApplicationFault .
microsoftads:CampaignManagementAdCenterFault rdfs:subClassOf microsoftads:CampaignManagementApplicationFault .
microsoftads:CampaignManagementAdCenterInternalErrorFault rdfs:subClassOf microsoftads:CampaignManagementApplicationFault .
microsoftads:CampaignManagementAdCenterSystemFault rdfs:subClassOf microsoftads:CampaignManagementApplicationFault .
microsoftads:CampaignManagementAdGroup rdfs:subClassOf aent:TargetingGroup .
microsoftads:CampaignManagementBiddingScheme rdfs:subClassOf aent:BidStrategy .
microsoftads:CampaignManagementRateBid rdfs:subClassOf microsoftads:CampaignManagementCriterionBid .
microsoftads:CampaignManagementCampaign rdfs:subClassOf aent:Campaign .
microsoftads:CampaignManagementSharedList rdfs:subClassOf microsoftads:CampaignManagementSharedEntity .
microsoftads:CampaignManagementNegativeKeyword rdfs:subClassOf microsoftads:CampaignManagementSharedListItem .
microsoftads:CampaignManagementAdExtensionBase rdfs:subClassOf microsoftads:CampaignManagementAdExtension .
microsoftads:CampaignManagementAdGroupCriterionBase rdfs:subClassOf microsoftads:CampaignManagementAdGroupCriterion .
microsoftads:CampaignManagementImage rdfs:subClassOf microsoftads:CampaignManagementMedia .
microsoftads:CampaignManagementAgeCriterion rdfs:subClassOf microsoftads:CampaignManagementCriterion .
microsoftads:CampaignManagementAgeDimension rdfs:subClassOf microsoftads:CampaignManagementAudienceGroupDimension .
microsoftads:CampaignManagementAISearchSetting rdfs:subClassOf microsoftads:CampaignManagementSetting .
microsoftads:CampaignManagementApiFaultDetail rdfs:subClassOf microsoftads:CampaignManagementApplicationFault .
microsoftads:CampaignManagementAppAdExtension rdfs:subClassOf microsoftads:CampaignManagementAdExtension .
microsoftads:CampaignManagementAppDownloadGoal rdfs:subClassOf microsoftads:CampaignManagementConversionGoal .
microsoftads:CampaignManagementAppInstallAd rdfs:subClassOf microsoftads:CampaignManagementAd .
microsoftads:CampaignManagementAppInstallGoal rdfs:subClassOf microsoftads:CampaignManagementConversionGoal .
microsoftads:CampaignManagementEditorialError rdfs:subClassOf microsoftads:CampaignManagementBatchError .
microsoftads:CampaignManagementApplicationFaultBase rdfs:subClassOf microsoftads:CampaignManagementApplicationFault .
microsoftads:CampaignManagementCustomerList rdfs:subClassOf microsoftads:CampaignManagementAudience .
microsoftads:CampaignManagementAppSetting rdfs:subClassOf microsoftads:CampaignManagementSetting .
microsoftads:CampaignManagementAssetBase rdfs:subClassOf microsoftads:CampaignManagementAsset .
microsoftads:CampaignManagementAudienceBase rdfs:subClassOf microsoftads:CampaignManagementAudience .
microsoftads:CampaignManagementAudienceCriterion rdfs:subClassOf microsoftads:CampaignManagementCriterion .
microsoftads:CampaignManagementAudienceDimension rdfs:subClassOf microsoftads:CampaignManagementAudienceGroupDimension .
microsoftads:CampaignManagementAudienceGroupDimensionBase rdfs:subClassOf microsoftads:CampaignManagementAudienceGroupDimension .
microsoftads:CampaignManagementBaseDomainSetting rdfs:subClassOf microsoftads:CampaignManagementSetting .
microsoftads:CampaignManagementBatchErrorBase rdfs:subClassOf microsoftads:CampaignManagementBatchError .
microsoftads:CampaignManagementBatchErrorCollectionBase rdfs:subClassOf microsoftads:CampaignManagementBatchErrorCollection .
microsoftads:CampaignManagementBiddableAdGroupCriterion rdfs:subClassOf microsoftads:CampaignManagementAdGroupCriterion .
microsoftads:CampaignManagementBiddableCampaignCriterion rdfs:subClassOf microsoftads:CampaignManagementCampaignCriterion .
microsoftads:CampaignManagementBiddingSchemeBase rdfs:subClassOf microsoftads:CampaignManagementBiddingScheme .
microsoftads:CampaignManagementBidMultiplier rdfs:subClassOf microsoftads:CampaignManagementCriterionBid .
microsoftads:CampaignManagementBrandItem rdfs:subClassOf microsoftads:CampaignManagementSharedListItem .
microsoftads:CampaignManagementBrandList rdfs:subClassOf microsoftads:CampaignManagementSharedList .
microsoftads:CampaignManagementCallAdExtension rdfs:subClassOf microsoftads:CampaignManagementAdExtension .
microsoftads:CampaignManagementCalloutAdExtension rdfs:subClassOf microsoftads:CampaignManagementAdExtension .
microsoftads:CampaignManagementCallToActionSetting rdfs:subClassOf microsoftads:CampaignManagementSetting .
microsoftads:CampaignManagementCampaignCriterionBase rdfs:subClassOf microsoftads:CampaignManagementCampaignCriterion .
microsoftads:CampaignManagementCampaignFrequencyCapSetting rdfs:subClassOf microsoftads:CampaignManagementSetting .
microsoftads:CampaignManagementCashbackAdjustment rdfs:subClassOf microsoftads:CampaignManagementCriterionCashback .
microsoftads:CampaignManagementChannelPlacementCriterion rdfs:subClassOf microsoftads:CampaignManagementCriterion .
microsoftads:CampaignManagementCombinedList rdfs:subClassOf microsoftads:CampaignManagementAudience .
microsoftads:CampaignManagementCommissionBiddingScheme rdfs:subClassOf microsoftads:CampaignManagementBiddingScheme .
microsoftads:CampaignManagementCompanyList rdfs:subClassOf microsoftads:CampaignManagementLinkedInSegment .
microsoftads:CampaignManagementConversionGoalBase rdfs:subClassOf microsoftads:CampaignManagementConversionGoal .
microsoftads:CampaignManagementCoOpSetting rdfs:subClassOf microsoftads:CampaignManagementSetting .
microsoftads:CampaignManagementCostPerSaleBiddingScheme rdfs:subClassOf microsoftads:CampaignManagementBiddingScheme .
microsoftads:CampaignManagementResponsiveAd rdfs:subClassOf microsoftads:CampaignManagementAd .
microsoftads:CampaignManagementResponsiveSearchAd rdfs:subClassOf microsoftads:CampaignManagementAd .
microsoftads:CampaignManagementCriterionBase rdfs:subClassOf microsoftads:CampaignManagementCriterion .
microsoftads:CampaignManagementCriterionBidBase rdfs:subClassOf microsoftads:CampaignManagementCriterionBid .
microsoftads:CampaignManagementCriterionCashbackBase rdfs:subClassOf microsoftads:CampaignManagementCriterionCashback .
microsoftads:CampaignManagementCustomAudience rdfs:subClassOf microsoftads:CampaignManagementAudience .
microsoftads:CampaignManagementCustomEventsRule rdfs:subClassOf microsoftads:CampaignManagementRemarketingRule .
microsoftads:CampaignManagementCustomLinkedInCriterion rdfs:subClassOf microsoftads:CampaignManagementCriterion .
microsoftads:CampaignManagementCustomSegment rdfs:subClassOf microsoftads:CampaignManagementAudience .
microsoftads:CampaignManagementDataTableAdExtension rdfs:subClassOf microsoftads:CampaignManagementAdExtension .
microsoftads:CampaignManagementDayTimeCriterion rdfs:subClassOf microsoftads:CampaignManagementCriterion .
microsoftads:CampaignManagementDealCriterion rdfs:subClassOf microsoftads:CampaignManagementCriterion .
microsoftads:CampaignManagementDeviceCriterion rdfs:subClassOf microsoftads:CampaignManagementCriterion .
microsoftads:CampaignManagementDisclaimerAdExtension rdfs:subClassOf microsoftads:CampaignManagementAdExtension .
microsoftads:CampaignManagementDisclaimerSetting rdfs:subClassOf microsoftads:CampaignManagementSetting .
microsoftads:CampaignManagementDurationGoal rdfs:subClassOf microsoftads:CampaignManagementConversionGoal .
microsoftads:CampaignManagementDynamicFeedSetting rdfs:subClassOf microsoftads:CampaignManagementSetting .
microsoftads:CampaignManagementDynamicSearchAd rdfs:subClassOf microsoftads:CampaignManagementAd .
microsoftads:CampaignManagementDynamicSearchAdsSetting rdfs:subClassOf microsoftads:CampaignManagementSetting .
microsoftads:CampaignManagementEditorialApiFaultDetail rdfs:subClassOf microsoftads:CampaignManagementApplicationFault .
microsoftads:CampaignManagementEditorialErrorCollection rdfs:subClassOf microsoftads:CampaignManagementBatchErrorCollection .
microsoftads:CampaignManagementEnhancedCpcBiddingScheme rdfs:subClassOf microsoftads:CampaignManagementBiddingScheme .
microsoftads:CampaignManagementEventGoal rdfs:subClassOf microsoftads:CampaignManagementConversionGoal .
microsoftads:CampaignManagementExpandedTextAd rdfs:subClassOf microsoftads:CampaignManagementAd .
microsoftads:CampaignManagementFileImportJob rdfs:subClassOf microsoftads:CampaignManagementImportJob .
microsoftads:CampaignManagementFileImportOption rdfs:subClassOf microsoftads:CampaignManagementImportOption .
microsoftads:CampaignManagementFilterLinkAdExtension rdfs:subClassOf microsoftads:CampaignManagementAdExtension .
microsoftads:CampaignManagementFixedBid rdfs:subClassOf microsoftads:CampaignManagementCriterionBid .
microsoftads:CampaignManagementFlyerAdExtension rdfs:subClassOf microsoftads:CampaignManagementAdExtension .
microsoftads:CampaignManagementGenderCriterion rdfs:subClassOf microsoftads:CampaignManagementCriterion .
microsoftads:CampaignManagementGenderDimension rdfs:subClassOf microsoftads:CampaignManagementAudienceGroupDimension .
microsoftads:CampaignManagementGenreCriterion rdfs:subClassOf microsoftads:CampaignManagementCriterion .
microsoftads:CampaignManagementGoogleImportJob rdfs:subClassOf microsoftads:CampaignManagementImportJob .
microsoftads:CampaignManagementGoogleImportOption rdfs:subClassOf microsoftads:CampaignManagementImportOption .
microsoftads:CampaignManagementHotelAd rdfs:subClassOf microsoftads:CampaignManagementAd .
microsoftads:CampaignManagementHotelAdvanceBookingWindowCriterion rdfs:subClassOf microsoftads:CampaignManagementCriterion .
microsoftads:CampaignManagementHotelCheckInDateCriterion rdfs:subClassOf microsoftads:CampaignManagementCriterion .
microsoftads:CampaignManagementHotelCheckInDayCriterion rdfs:subClassOf microsoftads:CampaignManagementCriterion .
microsoftads:CampaignManagementHotelDateSelectionTypeCriterion rdfs:subClassOf microsoftads:CampaignManagementCriterion .
microsoftads:CampaignManagementHotelGroup rdfs:subClassOf microsoftads:CampaignManagementCriterion .
microsoftads:CampaignManagementHotelLengthOfStayCriterion rdfs:subClassOf microsoftads:CampaignManagementCriterion .
microsoftads:CampaignManagementHotelSetting rdfs:subClassOf microsoftads:CampaignManagementSetting .
microsoftads:CampaignManagementImageAdExtension rdfs:subClassOf microsoftads:CampaignManagementAdExtension .
microsoftads:CampaignManagementImageMediaRepresentation rdfs:subClassOf microsoftads:CampaignManagementMediaRepresentation .
microsoftads:CampaignManagementImportJobBase rdfs:subClassOf microsoftads:CampaignManagementImportJob .
microsoftads:CampaignManagementImportOptionBase rdfs:subClassOf microsoftads:CampaignManagementImportOption .
microsoftads:CampaignManagementImpressionBasedRemarketingList rdfs:subClassOf microsoftads:CampaignManagementAudience .
microsoftads:CampaignManagementImpressionTrackingSetting rdfs:subClassOf microsoftads:CampaignManagementSetting .
microsoftads:CampaignManagementInheritFromParentBiddingScheme rdfs:subClassOf microsoftads:CampaignManagementBiddingScheme .
microsoftads:CampaignManagementInMarketAudience rdfs:subClassOf microsoftads:CampaignManagementAudience .
microsoftads:CampaignManagementInStoreTransactionGoal rdfs:subClassOf microsoftads:CampaignManagementConversionGoal .
microsoftads:CampaignManagementLeadFormAdExtension rdfs:subClassOf microsoftads:CampaignManagementAdExtension .
microsoftads:CampaignManagementLinkedInSegmentBase rdfs:subClassOf microsoftads:CampaignManagementLinkedInSegment .
microsoftads:CampaignManagementLocationAdExtension rdfs:subClassOf microsoftads:CampaignManagementAdExtension .
microsoftads:CampaignManagementLocationCriterion rdfs:subClassOf microsoftads:CampaignManagementCriterion .
microsoftads:CampaignManagementLocationIntentCriterion rdfs:subClassOf microsoftads:CampaignManagementCriterion .
microsoftads:CampaignManagementLogoAdExtension rdfs:subClassOf microsoftads:CampaignManagementAdExtension .
microsoftads:CampaignManagementManualCpaBiddingScheme rdfs:subClassOf microsoftads:CampaignManagementBiddingScheme .
microsoftads:CampaignManagementManualCpcBiddingScheme rdfs:subClassOf microsoftads:CampaignManagementBiddingScheme .
microsoftads:CampaignManagementManualCpmBiddingScheme rdfs:subClassOf microsoftads:CampaignManagementBiddingScheme .
microsoftads:CampaignManagementManualCpvBiddingScheme rdfs:subClassOf microsoftads:CampaignManagementBiddingScheme .
microsoftads:CampaignManagementMaxClicksBiddingScheme rdfs:subClassOf microsoftads:CampaignManagementBiddingScheme .
microsoftads:CampaignManagementMaxConversionsBiddingScheme rdfs:subClassOf microsoftads:CampaignManagementBiddingScheme .
microsoftads:CampaignManagementMaxConversionValueBiddingScheme rdfs:subClassOf microsoftads:CampaignManagementBiddingScheme .
microsoftads:CampaignManagementMaxRoasBiddingScheme rdfs:subClassOf microsoftads:CampaignManagementBiddingScheme .
microsoftads:CampaignManagementMediaBase rdfs:subClassOf microsoftads:CampaignManagementMedia .
microsoftads:CampaignManagementMediaRepresentationBase rdfs:subClassOf microsoftads:CampaignManagementMediaRepresentation .
microsoftads:CampaignManagementNegativeAdGroupCriterion rdfs:subClassOf microsoftads:CampaignManagementAdGroupCriterion .
microsoftads:CampaignManagementNegativeCampaignCriterion rdfs:subClassOf microsoftads:CampaignManagementCampaignCriterion .
microsoftads:CampaignManagementNegativeKeywordList rdfs:subClassOf microsoftads:CampaignManagementSharedList .
microsoftads:CampaignManagementNegativeSite rdfs:subClassOf microsoftads:CampaignManagementSharedListItem .
microsoftads:CampaignManagementNetworkDistributionSetting rdfs:subClassOf microsoftads:CampaignManagementSetting .
microsoftads:CampaignManagementNewCustomerAcquisitionGoalSetting rdfs:subClassOf microsoftads:CampaignManagementSetting .
microsoftads:CampaignManagementNewsAdExtension rdfs:subClassOf microsoftads:CampaignManagementAdExtension .
microsoftads:CampaignManagementNumberRuleItem rdfs:subClassOf microsoftads:CampaignManagementRuleItem .
microsoftads:CampaignManagementOfflineConversionGoal rdfs:subClassOf microsoftads:CampaignManagementConversionGoal .
microsoftads:CampaignManagementPagesViewedPerVisitGoal rdfs:subClassOf microsoftads:CampaignManagementConversionGoal .
microsoftads:CampaignManagementPageVisitorsRule rdfs:subClassOf microsoftads:CampaignManagementRemarketingRule .
microsoftads:CampaignManagementPageVisitorsWhoDidNotVisitAnotherPageRule rdfs:subClassOf microsoftads:CampaignManagementRemarketingRule .
microsoftads:CampaignManagementPageVisitorsWhoVisitedAnotherPageRule rdfs:subClassOf microsoftads:CampaignManagementRemarketingRule .
microsoftads:CampaignManagementPercentCpcBiddingScheme rdfs:subClassOf microsoftads:CampaignManagementBiddingScheme .
microsoftads:CampaignManagementPerformanceMaxSetting rdfs:subClassOf microsoftads:CampaignManagementSetting .
microsoftads:CampaignManagementPlacementCriterion rdfs:subClassOf microsoftads:CampaignManagementCriterion .
microsoftads:CampaignManagementPlacementExclusionList rdfs:subClassOf microsoftads:CampaignManagementSharedList .
microsoftads:CampaignManagementPriceAdExtension rdfs:subClassOf microsoftads:CampaignManagementAdExtension .
microsoftads:CampaignManagementProductAd rdfs:subClassOf microsoftads:CampaignManagementAd .
microsoftads:CampaignManagementProductAudience rdfs:subClassOf microsoftads:CampaignManagementAudience .
microsoftads:CampaignManagementProductPartition rdfs:subClassOf microsoftads:CampaignManagementCriterion .
microsoftads:CampaignManagementProductScope rdfs:subClassOf microsoftads:CampaignManagementCriterion .
microsoftads:CampaignManagementProfileCriterion rdfs:subClassOf microsoftads:CampaignManagementCriterion .
microsoftads:CampaignManagementProfileDimension rdfs:subClassOf microsoftads:CampaignManagementAudienceGroupDimension .
microsoftads:CampaignManagementPromotionAdExtension rdfs:subClassOf microsoftads:CampaignManagementAdExtension .
microsoftads:CampaignManagementRadiusCriterion rdfs:subClassOf microsoftads:CampaignManagementCriterion .
microsoftads:CampaignManagementReachOptimizationGoalSetting rdfs:subClassOf microsoftads:CampaignManagementSetting .
microsoftads:CampaignManagementRemarketingList rdfs:subClassOf microsoftads:CampaignManagementAudience .
microsoftads:CampaignManagementRemarketingRuleBase rdfs:subClassOf microsoftads:CampaignManagementRemarketingRule .
microsoftads:CampaignManagementResponsiveSearchAdsSetting rdfs:subClassOf microsoftads:CampaignManagementSetting .
microsoftads:CampaignManagementReviewAdExtension rdfs:subClassOf microsoftads:CampaignManagementAdExtension .
microsoftads:CampaignManagementRuleItemBase rdfs:subClassOf microsoftads:CampaignManagementRuleItem .
microsoftads:CampaignManagementSettingBase rdfs:subClassOf microsoftads:CampaignManagementSetting .
microsoftads:CampaignManagementSharedListBase rdfs:subClassOf microsoftads:CampaignManagementSharedList .
microsoftads:CampaignManagementSharedListItemBase rdfs:subClassOf microsoftads:CampaignManagementSharedListItem .
microsoftads:CampaignManagementShoppingSetting rdfs:subClassOf microsoftads:CampaignManagementSetting .
microsoftads:CampaignManagementSimilarRemarketingList rdfs:subClassOf microsoftads:CampaignManagementAudience .
microsoftads:CampaignManagementSite rdfs:subClassOf microsoftads:CampaignManagementSharedListItem .
microsoftads:CampaignManagementSitelinkAdExtension rdfs:subClassOf microsoftads:CampaignManagementAdExtension .
microsoftads:CampaignManagementStoreCriterion rdfs:subClassOf microsoftads:CampaignManagementCriterion .
microsoftads:CampaignManagementStringRuleItem rdfs:subClassOf microsoftads:CampaignManagementRuleItem .
microsoftads:CampaignManagementStructuredSnippetAdExtension rdfs:subClassOf microsoftads:CampaignManagementAdExtension .
microsoftads:CampaignManagementTargetCpaBiddingScheme rdfs:subClassOf microsoftads:CampaignManagementBiddingScheme .
microsoftads:CampaignManagementTargetImpressionShareBiddingScheme rdfs:subClassOf microsoftads:CampaignManagementBiddingScheme .
microsoftads:CampaignManagementTargetRoasBiddingScheme rdfs:subClassOf microsoftads:CampaignManagementBiddingScheme .
microsoftads:CampaignManagementTargetSetting rdfs:subClassOf microsoftads:CampaignManagementSetting .
microsoftads:CampaignManagementTextAd rdfs:subClassOf microsoftads:CampaignManagementAd .
microsoftads:CampaignManagementTextAsset rdfs:subClassOf microsoftads:CampaignManagementAsset .
microsoftads:CampaignManagementThirdPartyMeasurementSetting rdfs:subClassOf microsoftads:CampaignManagementSetting .
microsoftads:CampaignManagementTopicCriterion rdfs:subClassOf microsoftads:CampaignManagementCriterion .
microsoftads:CampaignManagementUnifiedAutomationSetting rdfs:subClassOf microsoftads:CampaignManagementSetting .
microsoftads:CampaignManagementUrlGoal rdfs:subClassOf microsoftads:CampaignManagementConversionGoal .
microsoftads:CampaignManagementVanityPharmaSetting rdfs:subClassOf microsoftads:CampaignManagementSetting .
microsoftads:CampaignManagementVideoAdExtension rdfs:subClassOf microsoftads:CampaignManagementAdExtension .
microsoftads:CampaignManagementVideoAsset rdfs:subClassOf microsoftads:CampaignManagementAsset .
microsoftads:CampaignManagementWebpage rdfs:subClassOf microsoftads:CampaignManagementCriterion .
microsoftads:CustomerBillingAdApiFaultDetail rdfs:subClassOf microsoftads:CustomerBillingApplicationFault .
microsoftads:CustomerBillingApiBatchFault rdfs:subClassOf microsoftads:CustomerBillingApplicationFault .
microsoftads:CustomerBillingApiFault rdfs:subClassOf microsoftads:CustomerBillingApplicationFault .
microsoftads:CustomerBillingApplicationFaultBase rdfs:subClassOf microsoftads:CustomerBillingApplicationFault .
microsoftads:CustomerManagementAdApiFaultDetail rdfs:subClassOf microsoftads:CustomerManagementApplicationFault .
microsoftads:CustomerManagementAdvertiserAccount rdfs:subClassOf aent:AdAccount .
microsoftads:CustomerManagementApiBatchFault rdfs:subClassOf microsoftads:CustomerManagementApplicationFault .
microsoftads:CustomerManagementApiFault rdfs:subClassOf microsoftads:CustomerManagementApplicationFault .
microsoftads:CustomerManagementApplicationFaultBase rdfs:subClassOf microsoftads:CustomerManagementApplicationFault .
microsoftads:ReportingAccountPerformanceReportRequest rdfs:subClassOf microsoftads:ReportingReportRequest .
microsoftads:ReportingAdApiFaultDetail rdfs:subClassOf microsoftads:ReportingApplicationFault .
microsoftads:ReportingAdDynamicTextPerformanceReportRequest rdfs:subClassOf microsoftads:ReportingReportRequest .
microsoftads:ReportingAdExtensionByAdReportRequest rdfs:subClassOf microsoftads:ReportingReportRequest .
microsoftads:ReportingAdExtensionByKeywordReportRequest rdfs:subClassOf microsoftads:ReportingReportRequest .
microsoftads:ReportingAdExtensionDetailReportRequest rdfs:subClassOf microsoftads:ReportingReportRequest .
microsoftads:ReportingAdGroupPerformanceReportRequest rdfs:subClassOf microsoftads:ReportingReportRequest .
microsoftads:ReportingAdPerformanceReportRequest rdfs:subClassOf microsoftads:ReportingReportRequest .
microsoftads:ReportingAgeGenderAudienceReportRequest rdfs:subClassOf microsoftads:ReportingReportRequest .
microsoftads:ReportingApiFaultDetail rdfs:subClassOf microsoftads:ReportingApplicationFault .
microsoftads:ReportingApplicationFaultBase rdfs:subClassOf microsoftads:ReportingApplicationFault .
microsoftads:ReportingAppsPerformanceReportRequest rdfs:subClassOf microsoftads:ReportingReportRequest .
microsoftads:ReportingAssetGroupPerformanceReportRequest rdfs:subClassOf microsoftads:ReportingReportRequest .
microsoftads:ReportingAssetPerformanceReportRequest rdfs:subClassOf microsoftads:ReportingReportRequest .
microsoftads:ReportingAudiencePerformanceReportRequest rdfs:subClassOf microsoftads:ReportingReportRequest .
microsoftads:ReportingBidStrategyReportRequest rdfs:subClassOf microsoftads:ReportingReportRequest .
microsoftads:ReportingBudgetSummaryReportRequest rdfs:subClassOf microsoftads:ReportingReportRequest .
microsoftads:ReportingCallDetailReportRequest rdfs:subClassOf microsoftads:ReportingReportRequest .
microsoftads:ReportingCampaignPerformanceReportRequest rdfs:subClassOf microsoftads:ReportingReportRequest .
microsoftads:ReportingCategoryClickCoverageReportRequest rdfs:subClassOf microsoftads:ReportingReportRequest .
microsoftads:ReportingCategoryInsightsReportRequest rdfs:subClassOf microsoftads:ReportingReportRequest .
microsoftads:ReportingCombinationPerformanceReportRequest rdfs:subClassOf microsoftads:ReportingReportRequest .
microsoftads:ReportingConversionPerformanceReportRequest rdfs:subClassOf microsoftads:ReportingReportRequest .
microsoftads:ReportingDestinationUrlPerformanceReportRequest rdfs:subClassOf microsoftads:ReportingReportRequest .
microsoftads:ReportingDSAAutoTargetPerformanceReportRequest rdfs:subClassOf microsoftads:ReportingReportRequest .
microsoftads:ReportingDSACategoryPerformanceReportRequest rdfs:subClassOf microsoftads:ReportingReportRequest .
microsoftads:ReportingDSASearchQueryPerformanceReportRequest rdfs:subClassOf microsoftads:ReportingReportRequest .
microsoftads:ReportingFeedItemPerformanceReportRequest rdfs:subClassOf microsoftads:ReportingReportRequest .
microsoftads:ReportingGeographicPerformanceReportRequest rdfs:subClassOf microsoftads:ReportingReportRequest .
microsoftads:ReportingGoalsAndFunnelsReportRequest rdfs:subClassOf microsoftads:ReportingReportRequest .
microsoftads:ReportingHotelDimensionPerformanceReportRequest rdfs:subClassOf microsoftads:ReportingReportRequest .
microsoftads:ReportingHotelGroupPerformanceReportRequest rdfs:subClassOf microsoftads:ReportingReportRequest .
microsoftads:ReportingKeywordPerformanceReportRequest rdfs:subClassOf microsoftads:ReportingReportRequest .
microsoftads:ReportingMMMPerformanceReportRequest rdfs:subClassOf microsoftads:ReportingReportRequest .
microsoftads:ReportingMSClickIdPerformanceReportRequest rdfs:subClassOf microsoftads:ReportingReportRequest .
microsoftads:ReportingNegativeKeywordConflictReportRequest rdfs:subClassOf microsoftads:ReportingReportRequest .
microsoftads:ReportingProductDimensionPerformanceReportRequest rdfs:subClassOf microsoftads:ReportingReportRequest .
microsoftads:ReportingProductMatchCountReportRequest rdfs:subClassOf microsoftads:ReportingReportRequest .
microsoftads:ReportingProductNegativeKeywordConflictReportRequest rdfs:subClassOf microsoftads:ReportingReportRequest .
microsoftads:ReportingProductPartitionPerformanceReportRequest rdfs:subClassOf microsoftads:ReportingReportRequest .
microsoftads:ReportingProductPartitionUnitPerformanceReportRequest rdfs:subClassOf microsoftads:ReportingReportRequest .
microsoftads:ReportingProductSearchQueryPerformanceReportRequest rdfs:subClassOf microsoftads:ReportingReportRequest .
microsoftads:ReportingProfessionalDemographicsAudienceReportRequest rdfs:subClassOf microsoftads:ReportingReportRequest .
microsoftads:ReportingPublisherUsagePerformanceReportRequest rdfs:subClassOf microsoftads:ReportingReportRequest .
microsoftads:ReportingReportRequestBase rdfs:subClassOf microsoftads:ReportingReportRequest .
microsoftads:ReportingSearchCampaignChangeHistoryReportRequest rdfs:subClassOf microsoftads:ReportingReportRequest .
microsoftads:ReportingSearchInsightPerformanceReportRequest rdfs:subClassOf microsoftads:ReportingReportRequest .
microsoftads:ReportingSearchQueryPerformanceReportRequest rdfs:subClassOf microsoftads:ReportingReportRequest .
microsoftads:ReportingSearchTermLandingPageReportRequest rdfs:subClassOf microsoftads:ReportingReportRequest .
microsoftads:ReportingShareOfVoiceReportRequest rdfs:subClassOf microsoftads:ReportingReportRequest .
microsoftads:ReportingTravelQueryInsightReportRequest rdfs:subClassOf microsoftads:ReportingReportRequest .
microsoftads:ReportingUserLocationPerformanceReportRequest rdfs:subClassOf microsoftads:ReportingReportRequest .

<https://relay.inferal.com/ontology/microsoftads/shapes> a tsps:ShapeGeneration ;
  tsps:shapeReferenceChainLimit 5 ;
  tsps:omittedShapeReferenceCount 1
  ;
  tsps:omittedShapeReference [
    tsps:referenceFrom microsoftads:CampaignManagementGetAdExtensionsAssociationsResponseShape ;
    tsps:referenceTo microsoftads:CampaignManagementAdExtensionAssociationCollectionShape ;
    tsps:omittedBecause "over-long"
  ] .

# Shape for Ad Insight Ad Group Bid Landscape
microsoftads:AdInsightAdGroupBidLandscapeShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightAdGroupBidLandscape ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightAdGroupBidLandscape/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "The ad group identifier." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightAdGroupBidLandscape/adGroupBidLandscapeType> ;
    sh:name "ad group bid landscape type" ;
    sh:description "Indicates whether all or a subset of an ad group's existing keywords were used to determine the bid landscape." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Uniform" "DefaultBidOnly" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightAdGroupBidLandscape/startDate> ;
    sh:name "start date" ;
    sh:description "The first date used to calculate the bid landscape. The start date is usually seven days prior to the end date. The difference between the start and end dates could be less than seven if performance data is not available, for example with a new ad group." ;
    sh:node microsoftads:AdInsightDayMonthAndYearShape ;
    sh:class microsoftads:AdInsightDayMonthAndYear ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightAdGroupBidLandscape/endDate> ;
    sh:name "end date" ;
    sh:description "The most recent date used to calculate the bid landscape. The end date should be approximately 2 days prior to today's date when the service is called." ;
    sh:node microsoftads:AdInsightDayMonthAndYearShape ;
    sh:class microsoftads:AdInsightDayMonthAndYear ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightAdGroupBidLandscape/bidLandscapePoints> ;
    sh:name "bid landscape points" ;
    sh:description "The list of the total estimated clicks, cost, and impressions from StartDate to EndDate given the suggested bid." ;
    sh:node microsoftads:AdInsightBidLandscapePointShape ;
    sh:class microsoftads:AdInsightBidLandscapePoint ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Day Month And Year
microsoftads:AdInsightDayMonthAndYearShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightDayMonthAndYear ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightDayMonthAndYear/day> ;
    sh:name "day" ;
    sh:description "The day of the month." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightDayMonthAndYear/month> ;
    sh:name "month" ;
    sh:description "The month specified as an integer value in the range of 1 through 12, where 1 is January and 12 is December." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightDayMonthAndYear/year> ;
    sh:name "year" ;
    sh:description "The year specified as a four-digit integer value." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Bid Landscape Point
microsoftads:AdInsightBidLandscapePointShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightBidLandscapePoint ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBidLandscapePoint/bid> ;
    sh:name "bid" ;
    sh:description "The suggested bid value." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBidLandscapePoint/clicks> ;
    sh:name "clicks" ;
    sh:description "The estimated number of clicks. This element will be nil if there is no estimate available." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBidLandscapePoint/impressions> ;
    sh:name "impressions" ;
    sh:description "The estimated number of impressions." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBidLandscapePoint/topImpressions> ;
    sh:name "top impressions" ;
    sh:description "The estimated number of impressions in the top or mainline ad results. This element will be nil if there is no estimate available." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBidLandscapePoint/currencyCode> ;
    sh:name "currency code" ;
    sh:description "The ISO code for the monetary unit of the suggested bid value and estimated performance statistics." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "AED" "ALL" "AMD" "ARS" "AUD" "AZM" "BGL" "BHD" "BND" "BOB" "BRL" "BYB" "BZD" "CAD" "CHF" "CLP" "CNY" "COP" "CRC" "CZK" "DOP" "DKK" "DZD" "EEK" "EGP" "EUR" "GBP" "GEL" "GTQ" "HKD" "HNL" "HRK" "HUF" "IDR" "ILS" "INR" "IQD" "IRR" "ISK" "JMD" "JOD" "JPY" "KES" "KGS" "KRW" "KWD" "KZT" "LBP" "LTL" "LVL" "LYD" "MAD" "MKD" "MOP" "MNT" "MVR" "MXN" "MYR" "NIO" "NOK" "NZD" "OMR" "PAB" "PEN" "PHP" "PKR" "PLN" "PYG" "QAR" "ROL" "RUR" "SAR" "SEK" "SGD" "SIT" "SKK" "SYP" "THB" "TND" "TRY" "TTD" "TWD" "UAH" "USD" "UYU" "UZS" "VEF" "YER" "VND" "YUN" "ZAR" "ZWD" "UNSPECIFY" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBidLandscapePoint/cost> ;
    sh:name "cost" ;
    sh:description "The estimated cost. This element will be nil if there is no estimate available." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBidLandscapePoint/marginalCPC> ;
    sh:name "marginal cpc" ;
    sh:description "Reserved for future use." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Ad Group Bid Landscape Input
microsoftads:AdInsightAdGroupBidLandscapeInputShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightAdGroupBidLandscapeInput ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightAdGroupBidLandscapeInput/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "The ad group identifier." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightAdGroupBidLandscapeInput/adGroupBidLandscapeType> ;
    sh:name "ad group bid landscape type" ;
    sh:description "Determines whether all or a subset of an ad group's existing keywords should be used to determine the bid landscape. If not specified in a request, the default value is Uniform." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Uniform" "DefaultBidOnly" ) ;
  ] .

# Shape for Ad Insight Ad Group Estimate
microsoftads:AdInsightAdGroupEstimateShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightAdGroupEstimate ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightAdGroupEstimate/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "The ad group identifier." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightAdGroupEstimate/keywordEstimates> ;
    sh:name "keyword estimates" ;
    sh:description "The list of suggested keywords with minimum and maximum traffic estimates. Traffic estimates include average CPC, average position, clicks, CTR, impressions, and total cost." ;
    sh:node microsoftads:AdInsightKeywordEstimateShape ;
    sh:class microsoftads:AdInsightKeywordEstimate ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Keyword Estimate
microsoftads:AdInsightKeywordEstimateShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightKeywordEstimate ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordEstimate/keyword> ;
    sh:name "keyword" ;
    sh:description "The suggested keyword." ;
    sh:node microsoftads:AdInsightKeywordShape ;
    sh:class microsoftads:AdInsightKeyword ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordEstimate/minimum> ;
    sh:name "minimum" ;
    sh:description "The minimum traffic estimate. Traffic estimates include average CPC, average position, clicks, CTR, impressions, and total cost." ;
    sh:node microsoftads:AdInsightTrafficEstimateShape ;
    sh:class microsoftads:AdInsightTrafficEstimate ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordEstimate/maximum> ;
    sh:name "maximum" ;
    sh:description "The maximum traffic estimate. Traffic estimates include average CPC, average position, clicks, CTR, impressions, and total cost." ;
    sh:node microsoftads:AdInsightTrafficEstimateShape ;
    sh:class microsoftads:AdInsightTrafficEstimate ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Keyword
microsoftads:AdInsightKeywordShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightKeyword ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeyword/id> ;
    sh:name "id" ;
    sh:description "The Microsoft Advertising identifier of the keyword." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeyword/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/microsoftads/property/Microsoftads.AdInsightKeyword/matchType> ;
    sh:name "match type" ;
    sh:description "The match type of the keyword." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Exact" "Phrase" "Broad" "Aggregate" ) ;
  ] .

# Shape for Ad Insight Traffic Estimate
microsoftads:AdInsightTrafficEstimateShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightTrafficEstimate ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightTrafficEstimate/impressions> ;
    sh:name "impressions" ;
    sh:description "The estimated number of impressions per week." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightTrafficEstimate/clicks> ;
    sh:name "clicks" ;
    sh:description "The estimated number of clicks per week." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightTrafficEstimate/totalCost> ;
    sh:name "total cost" ;
    sh:description "The estimated total cost per week." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightTrafficEstimate/ctr> ;
    sh:name "ctr" ;
    sh:description "The estimated CTR. The formula used to calculate the CTR is (clicks / impressions) &#42; 100." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightTrafficEstimate/averageCpc> ;
    sh:name "average cpc" ;
    sh:description "The estimated average CPC. The formula used to calculate the average CPC is (total cost / clicks)." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightTrafficEstimate/averagePosition> ;
    sh:name "average position" ;
    sh:description "The estimated average position on the web page for ads that were delivered. Average position is deprecated and from March 31st, 2021 onwards this value is \"0\" (zero)." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Ad Group Estimator
microsoftads:AdInsightAdGroupEstimatorShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightAdGroupEstimator ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightAdGroupEstimator/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "The ad group identifier. This element is reserved for future use. The returned estimates are not based on any specific ad group." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightAdGroupEstimator/maxCpc> ;
    sh:name "max cpc" ;
    sh:description "The maximum cost per click filter criteria for all keyword estimates in the ad group. You can override this setting for specific keywords with the corresponding keyword estimators." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightAdGroupEstimator/keywordEstimators> ;
    sh:name "keyword estimators" ;
    sh:description "The list of keyword estimators with your keyword level filter criteria for traffic estimates." ;
    sh:node microsoftads:AdInsightKeywordEstimatorShape ;
    sh:class microsoftads:AdInsightKeywordEstimator ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Keyword Estimator
microsoftads:AdInsightKeywordEstimatorShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightKeywordEstimator ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordEstimator/keyword> ;
    sh:name "keyword" ;
    sh:description "The keyword used for traffic estimates. You can request estimates for Phrase and Broad match types." ;
    sh:node microsoftads:AdInsightKeywordShape ;
    sh:class microsoftads:AdInsightKeyword ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordEstimator/maxCpc> ;
    sh:name "max cpc" ;
    sh:description "The maximum cost per click filter criteria for the keyword. You can set the default maximum CPC for all of the ad group's keywords using the MaxCpc element of the AdGroupEstimator object. Use the keyword estimator if you want to override the max CPC for a specific keyword." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Api Fault Detail
microsoftads:AdInsightApiFaultDetailShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightApiFaultDetail ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightApiFaultDetail/trackingId> ;
    sh:name "tracking id" ;
    sh:description "The identifier of the log entry that contains the details of the API call." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightApiFaultDetail/operationErrors> ;
    sh:name "operation errors" ;
    sh:description "An array of operation errors that contains the reasons that explain why the service operation failed when the error is not related to a specific item in the batch of items." ;
    sh:node microsoftads:AdInsightOperationErrorShape ;
    sh:class microsoftads:AdInsightOperationError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightApiFaultDetail/batchErrors> ;
    sh:name "batch errors" ;
    sh:description "An array of batch errors that identifies the items in the batch of items in the request message that caused the operation to fail. Each object contains the details that explain why the item caused the failure." ;
    sh:node microsoftads:AdInsightBatchErrorShape ;
    sh:class microsoftads:AdInsightBatchError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightApiFaultDetail/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Operation Error
microsoftads:AdInsightOperationErrorShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightOperationError ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightOperationError/code> ;
    sh:name "code" ;
    sh:description "A numeric error code that identifies the error." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightOperationError/errorCode> ;
    sh:name "error code" ;
    sh:description "A symbolic string constant that identifies the error. For example, UserIsNotAuthorized." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightOperationError/details> ;
    sh:name "details" ;
    sh:description "A message that provides additional details about the error. This string can be empty." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightOperationError/message> ;
    sh:name "message" ;
    sh:description "A message that describes the error. For more information about troubleshooting and error handling, see Handling Service Errors and Exceptions and Operation Error Codes." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Batch Error
microsoftads:AdInsightBatchErrorShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightBatchError ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBatchError/code> ;
    sh:name "code" ;
    sh:description "A numeric error code that identifies the error." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBatchError/errorCode> ;
    sh:name "error code" ;
    sh:description "A symbolic string constant that identifies the error. For example, UserIsNotAuthorized." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBatchError/details> ;
    sh:name "details" ;
    sh:description "A message that provides additional details about the batch error. This string can be empty." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBatchError/index> ;
    sh:name "index" ;
    sh:description "The zero-based index of the item in the batch of items in the request message that failed." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBatchError/message> ;
    sh:name "message" ;
    sh:description "A message that describes the error. For more information about troubleshooting and error handling, see Handling Service Errors and Exceptions and Operation Error Codes." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Application Fault
microsoftads:AdInsightApplicationFaultShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightApplicationFault ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightApplicationFault/trackingId> ;
    sh:name "tracking id" ;
    sh:description "The identifier of the log entry that contains the details of the API call." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightApplicationFault/operationErrors> ;
    sh:name "operation errors" ;
    sh:node microsoftads:AdInsightOperationErrorShape ;
    sh:class microsoftads:AdInsightOperationError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightApplicationFault/batchErrors> ;
    sh:name "batch errors" ;
    sh:node microsoftads:AdInsightBatchErrorShape ;
    sh:class microsoftads:AdInsightBatchError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightApplicationFault/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Application Fault Base
microsoftads:AdInsightApplicationFaultBaseShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightApplicationFaultBase ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightApplicationFaultBase/trackingId> ;
    sh:name "tracking id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Apply Recommendation Entity
microsoftads:AdInsightApplyRecommendationEntityShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightApplyRecommendationEntity ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightApplyRecommendationEntity/recommendationId> ;
    sh:name "recommendation id" ;
    sh:description "The identifier of the recommendation. Required." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightApplyRecommendationEntity/recommendationType> ;
    sh:name "recommendation type" ;
    sh:description "The type of recommendation: ADD_BROAD_MATCH_KEYWORD, CAMPAIGN_BUDGET, KEYWORD, REMOVE_CONFLICTING_NEGATIVE_KEYWORD, RESPONSIVE_SEARCH_AD, or RESPONSIVE_SEARCH_AD_ASSET. Required." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Apply Recommendations Request
microsoftads:AdInsightApplyRecommendationsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightApplyRecommendationsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightApplyRecommendationsRequest/entities> ;
    sh:name "entities" ;
    sh:description "The list of operations to apply recommendations. There is a limit of 100 operations per request. Required." ;
    sh:node microsoftads:AdInsightApplyRecommendationEntityShape ;
    sh:class microsoftads:AdInsightApplyRecommendationEntity ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Apply Recommendations Response
microsoftads:AdInsightApplyRecommendationsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightApplyRecommendationsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightApplyRecommendationsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array BatchError that contains details for any request items that were not successful. The list of errors does not correspond directly to the list of items in the request. The list can be empty if there were no errors, or it can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:node microsoftads:AdInsightBatchErrorShape ;
    sh:class microsoftads:AdInsightBatchError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Auction Insight Entry
microsoftads:AdInsightAuctionInsightEntryShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightAuctionInsightEntry ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightAuctionInsightEntry/displayDomain> ;
    sh:name "display domain" ;
    sh:description "The display URL of another advertiser who participates in the same auctions as you. The competing websites listed in your auction insights data are those who enter the same auctions as you, and are eligible for the same impressions that you are. Competitors aren't necessarily determined on how similar their keywords, match types, or other targeting settings are to your own, and auction insights doesn't provide a full report on these metrics for other advertisers." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightAuctionInsightEntry/aggregatedKpi> ;
    sh:name "aggregated kpi" ;
    sh:description "The auction insight key performance indicators across all segments for the display domain. The aggregated data is available whether or not you also requested SegmentedKpis." ;
    sh:node microsoftads:AdInsightAuctionInsightKpiShape ;
    sh:class microsoftads:AdInsightAuctionInsightKpi ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightAuctionInsightEntry/segmentedKpis> ;
    sh:name "segmented kpis" ;
    sh:description "The list of auction insight key performance indicators for each unique combination of the requested segments. The segmented data is only available when you include an AuctionSegmentSearchParameter object in the GetAuctionInsightData request." ;
    sh:node microsoftads:AdInsightAuctionInsightKpiShape ;
    sh:class microsoftads:AdInsightAuctionInsightKpi ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Auction Insight Kpi
microsoftads:AdInsightAuctionInsightKpiShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightAuctionInsightKpi ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightAuctionInsightKpi/segments> ;
    sh:name "segments" ;
    sh:description "The list of strings identifies a distinct combination of requested segments. The list of segment values is in the same order as the AuctionSegment value set i.e., Day, Week, Month, Quarter, DayOfWeek, and then Device. For example if you requested the Day, Device, and Quarter segments for May 1, 2018, this element will contain a list of three strings in the following order: 5/1/2018 (Day), 4/1/2018 (Quarter), and PC (Device). This element is only applicable for the SegmentedKpis of an AuctionInsightEntry. This element is nil and not applicable for the AggregatedKpi of an AuctionInsightEntry." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightAuctionInsightKpi/impressionShare> ;
    sh:name "impression share" ;
    sh:description "The number of times an ad is shown on the Microsoft Advertising Network divided by the total available impressions. Use this to compare your share of impressions to the impression share of advertisers competing against you." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightAuctionInsightKpi/overlapRate> ;
    sh:name "overlap rate" ;
    sh:description "The percentage of time competitors' ads showed up on the search results page when your ad was shown. If the rate is high then this advertiser is a competitor since their ads shows up on the same search results page as yours." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightAuctionInsightKpi/averagePosition> ;
    sh:name "average position" ;
    sh:description "The average position on the web page for ads that were delivered. Although it varies, positions 1-4 appear at the top of the search results page and positions 5-10 appear in other locations (for example, the bottom or the sidebar). Use this to compare your ad position with the average rank of all ads in the auction. Average position is deprecated and from March 31st, 2021 onwards this value is \"0\" (zero)." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightAuctionInsightKpi/aboveRate> ;
    sh:name "above rate" ;
    sh:description "The percentage of time competitors' ads showed up higher than your ads on the search results page. If the rate is high then the other advertiser is getting more desirable ad positions than you. A high rate is likely due to a poor quality score or a low bid." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightAuctionInsightKpi/topOfPageRate> ;
    sh:name "top of page rate" ;
    sh:description "The percentage of time your ad showed up in the mainline, the premium ad position above the organic search results. Ads at the top of the page tend to receive more clicks." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightAuctionInsightKpi/outrankingShare> ;
    sh:name "outranking share" ;
    sh:description "The percentage of time your ad showed up higher on the search results pages than your competitors or your ad showed when theirs did not. If the rate is high, you are getting a more desirable ad position than other advertisers." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightAuctionInsightKpi/absoluteTopOfPageRate> ;
    sh:name "absolute top of page rate" ;
    sh:description "The number of times an ad is shown as the very first ad above the organic search results, divided by the total number of impressions it actually received. Ads at the absolute top of the page tend to receive more clicks. This element is not returned by default. To get this element, include the AbsoluteTopOfPageRate value in the ReturnAdditionalFields element when you call the GetAuctionInsightData service operation." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Auction Insight Result
microsoftads:AdInsightAuctionInsightResultShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightAuctionInsightResult ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightAuctionInsightResult/segments> ;
    sh:name "segments" ;
    sh:description "The segments if any were specified via one or more AuctionSegmentSearchParameter in the GetAuctionInsightData request. The list of auction segments is in the same order as the AuctionSegment value set i.e., Day, Week, Month, Quarter, DayOfWeek, and then Device. For example if you requested the Day, Device, and Quarter segments for May 1, 2018, this element will contain a list of three auction segments in the following order: Day, Quarter, and Device." ;
    sh:datatype xsd:string ;
    sh:in ( "Day" "Week" "Month" "Quarter" "DayOfWeek" "Device" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightAuctionInsightResult/entries> ;
    sh:name "entries" ;
    sh:description "One or more auction insight entries i.e., one result per domain that you competed with in the auction." ;
    sh:node microsoftads:AdInsightAuctionInsightEntryShape ;
    sh:class microsoftads:AdInsightAuctionInsightEntry ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightAuctionInsightResult/usedImpressions> ;
    sh:name "used impressions" ;
    sh:description "The percent of impressions that were used to generate the auction insight entries. The value can range from 0 to 1.0, for example 0.8 indicates that 80 percent of impressions were used." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightAuctionInsightResult/usedKeywords> ;
    sh:name "used keywords" ;
    sh:description "The number of keywords that were used to generate the auction insight entries." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Auction Segment Search Parameter
microsoftads:AdInsightAuctionSegmentSearchParameterShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightAuctionSegmentSearchParameter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightAuctionSegmentSearchParameter/segment> ;
    sh:name "segment" ;
    sh:description "Determines how you want the SegmentedKpis data segmented in the result from the GetAuctionInsightData operation. You can request auction insight data segmented by Day, DayOfWeek, Device, Month, Quarter, and Week." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Day" "Week" "Month" "Quarter" "DayOfWeek" "Device" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightAuctionSegmentSearchParameter/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Auto Apply Recommendations Info
microsoftads:AdInsightAutoApplyRecommendationsInfoShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightAutoApplyRecommendationsInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightAutoApplyRecommendationsInfo/recommendationType> ;
    sh:name "recommendation type" ;
    sh:description "Supported recommendation types in auto-apply mode. We will keep the list updated once new recommendations support auto-apply.Add responsive search ads Add multimedia ads Remove conflicting negative keywords Fix conversion goal setting issue Create conversion goalTo set the auto-apply opt-in status to the supported recommendation types above, please use the following keys as below: ResponsiveSearchAdsOpportunity MultiMediaAdsOpportunity RemoveConflictingNegativeKeywordOpportunity FixConversionGoalSettingsOpportunity CreateConversionGoalOpportunity ." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightAutoApplyRecommendationsInfo/aAROptInStatus> ;
    sh:name "a aropt in status" ;
    sh:description "True for opt-in, False for opt-out." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Bid Opportunity
microsoftads:AdInsightBidOpportunityShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightBidOpportunity ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBidOpportunity/campaignId> ;
    sh:name "campaign id" ;
    sh:description "The identifier of the campaign for the ad group that owns the keyword." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBidOpportunity/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "The identifier of the ad group that owns the keyword." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBidOpportunity/keywordId> ;
    sh:name "keyword id" ;
    sh:description "The identifier of the keyword to which the bid opportunity applies." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBidOpportunity/currentBid> ;
    sh:name "current bid" ;
    sh:description "The current keyword bid amount specified for the match type in the MatchType element." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBidOpportunity/matchType> ;
    sh:name "match type" ;
    sh:description "The match type to which the suggested bid value applies. The possible values are BroadMatch, ExactMatch, and PhraseMatch." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBidOpportunity/suggestedBid> ;
    sh:name "suggested bid" ;
    sh:description "The suggested bid based on the last 7 days of performance history for the corresponding ad group." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBidOpportunity/estimatedIncreaseInImpressions> ;
    sh:name "estimated increase in impressions" ;
    sh:description "The estimated impressions opportunities corresponding to the suggested bid." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBidOpportunity/estimatedIncreaseInClicks> ;
    sh:name "estimated increase in clicks" ;
    sh:description "The estimated clicks opportunities corresponding to the suggested bid." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBidOpportunity/estimatedIncreaseInCost> ;
    sh:name "estimated increase in cost" ;
    sh:description "The estimated increase in spend corresponding to the suggested bid." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBidOpportunity/opportunityKey> ;
    sh:name "opportunity key" ;
    sh:description "An identifier that uniquely identifies the opportunity." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Breakdown
microsoftads:AdInsightBreakdownShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightBreakdown ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBreakdown/keys> ;
    sh:name "keys" ;
    sh:description "The audience breakdown keys." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBreakdown/values> ;
    sh:name "values" ;
    sh:description "The audience breakdown values." ;
    sh:datatype xsd:int ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBreakdown/globalValues> ;
    sh:name "global values" ;
    sh:description "The audiance breakdown global values." ;
    sh:datatype xsd:int ;
  ] .

# Shape for Ad Insight Breakdowns
microsoftads:AdInsightBreakdownsShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightBreakdowns ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBreakdowns/age> ;
    sh:name "age" ;
    sh:description "The audience breakdown category is Age." ;
    sh:node microsoftads:AdInsightBreakdownShape ;
    sh:class microsoftads:AdInsightBreakdown ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBreakdowns/device> ;
    sh:name "device" ;
    sh:description "The audience breakdown category is Device." ;
    sh:node microsoftads:AdInsightBreakdownShape ;
    sh:class microsoftads:AdInsightBreakdown ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBreakdowns/gender> ;
    sh:name "gender" ;
    sh:description "The audience breakdown category is Gender." ;
    sh:node microsoftads:AdInsightBreakdownShape ;
    sh:class microsoftads:AdInsightBreakdown ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBreakdowns/inMarket> ;
    sh:name "in market" ;
    sh:description "The audience breakdown category is InMarket." ;
    sh:node microsoftads:AdInsightBreakdownShape ;
    sh:class microsoftads:AdInsightBreakdown ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBreakdowns/industry> ;
    sh:name "industry" ;
    sh:description "The audience breakdown category is Industry." ;
    sh:node microsoftads:AdInsightBreakdownShape ;
    sh:class microsoftads:AdInsightBreakdown ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBreakdowns/jobFunction> ;
    sh:name "job function" ;
    sh:description "The audience breakdown category is JobFunction." ;
    sh:node microsoftads:AdInsightBreakdownShape ;
    sh:class microsoftads:AdInsightBreakdown ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBreakdowns/locationCountry> ;
    sh:name "location country" ;
    sh:description "The audience breakdown category is LocationCountry." ;
    sh:node microsoftads:AdInsightLocationBreakdownShape ;
    sh:class microsoftads:AdInsightLocationBreakdown ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBreakdowns/location> ;
    sh:name "location" ;
    sh:description "The audience breakdown category is Location." ;
    sh:node microsoftads:AdInsightLocationBreakdownShape ;
    sh:class microsoftads:AdInsightLocationBreakdown ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBreakdowns/locationSubGeography> ;
    sh:name "location sub geography" ;
    sh:description "The audience breakdown category is LocationSubGeography." ;
    sh:node microsoftads:AdInsightLocationBreakdownShape ;
    sh:class microsoftads:AdInsightLocationBreakdown ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBreakdowns/locationMetroArea> ;
    sh:name "location metro area" ;
    sh:description "The audience breakdown category is LocationMetroArea." ;
    sh:node microsoftads:AdInsightLocationBreakdownShape ;
    sh:class microsoftads:AdInsightLocationBreakdown ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBreakdowns/locationCity> ;
    sh:name "location city" ;
    sh:description "The audience breakdown category is LocationCity." ;
    sh:node microsoftads:AdInsightLocationBreakdownShape ;
    sh:class microsoftads:AdInsightLocationBreakdown ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBreakdowns/locationPostalCode> ;
    sh:name "location postal code" ;
    sh:description "The audience breakdown category is LocationPostalCode." ;
    sh:node microsoftads:AdInsightLocationBreakdownShape ;
    sh:class microsoftads:AdInsightLocationBreakdown ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBreakdowns/locationCounty> ;
    sh:name "location county" ;
    sh:description "The audience breakdown category is LocationCounty." ;
    sh:node microsoftads:AdInsightLocationBreakdownShape ;
    sh:class microsoftads:AdInsightLocationBreakdown ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Location Breakdown
microsoftads:AdInsightLocationBreakdownShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightLocationBreakdown ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightLocationBreakdown/info> ;
    sh:name "info" ;
    sh:description "The location information about a location breakdown." ;
    sh:node microsoftads:AdInsightLocationInfoShape ;
    sh:class microsoftads:AdInsightLocationInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightLocationBreakdown/keys> ;
    sh:name "keys" ;
    sh:description "A list of location breakdown keys." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightLocationBreakdown/values> ;
    sh:name "values" ;
    sh:description "A list of location breakdown values." ;
    sh:datatype xsd:int ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightLocationBreakdown/globalValues> ;
    sh:name "global values" ;
    sh:description "A list of location breakdown global values." ;
    sh:datatype xsd:int ;
  ] .

# Shape for Ad Insight Location Info
microsoftads:AdInsightLocationInfoShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightLocationInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightLocationInfo/name> ;
    sh:name "name" ;
    sh:description "The name of the location breakdown." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Broad Match Keyword Opportunity
microsoftads:AdInsightBroadMatchKeywordOpportunityShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightBroadMatchKeywordOpportunity ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBroadMatchKeywordOpportunity/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "The identifier of the ad group to apply the suggested keyword to." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBroadMatchKeywordOpportunity/campaignId> ;
    sh:name "campaign id" ;
    sh:description "The identifier of the campaign that owns the ad group." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBroadMatchKeywordOpportunity/adGroupName> ;
    sh:name "ad group name" ;
    sh:description "The name of the ad group to apply the suggested keyword to." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBroadMatchKeywordOpportunity/campaignName> ;
    sh:name "campaign name" ;
    sh:description "The name of the campaign that owns the ad group." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBroadMatchKeywordOpportunity/matchType> ;
    sh:name "match type" ;
    sh:description "The match type that the suggested bid applies to. The following are the possible match-type values: 1 - Exact match 2 - Phrase match 3 - Broad match" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBroadMatchKeywordOpportunity/suggestedKeyword> ;
    sh:name "suggested keyword" ;
    sh:description "The suggested keyword." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBroadMatchKeywordOpportunity/suggestedBid> ;
    sh:name "suggested bid" ;
    sh:description "The suggested bid that may result in your ads serving on the first page of the search query results." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBroadMatchKeywordOpportunity/monthlySearches> ;
    sh:name "monthly searches" ;
    sh:description "The estimated monthly volume of user search queries that may match the suggested keyword for the corresponding MatchType element." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBroadMatchKeywordOpportunity/competition> ;
    sh:name "competition" ;
    sh:description "An indicator of competitive bids for this keyword relative to all search keywords. The competition score ranges from 0 to 1.00, where 0 indicates low competition and 1.00 indicates that there is a high number of advertisers competing for this keyword." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBroadMatchKeywordOpportunity/estimatedIncreaseInClicks> ;
    sh:name "estimated increase in clicks" ;
    sh:description "Estimated increase in clicks if the opportunity is applied." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBroadMatchKeywordOpportunity/estimatedIncreaseInCost> ;
    sh:name "estimated increase in cost" ;
    sh:description "Estimated increase in cost if the opportunity is applied." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBroadMatchKeywordOpportunity/estimatedIncreaseInImpressions> ;
    sh:name "estimated increase in impressions" ;
    sh:description "Estimated increase in impressions if the opportunity is applied." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBroadMatchKeywordOpportunity/opportunityKey> ;
    sh:name "opportunity key" ;
    sh:description "An identifier that uniquely identifies the opportunity." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBroadMatchKeywordOpportunity/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBroadMatchKeywordOpportunity/clickShare> ;
    sh:name "click share" ;
    sh:description "Broad match click share in the marketplace." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBroadMatchKeywordOpportunity/averageCTR> ;
    sh:name "average ctr" ;
    sh:description "Broad match average CTR in the marketplace." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBroadMatchKeywordOpportunity/averageCPC> ;
    sh:name "average cpc" ;
    sh:description "Broad match average CPC in the marketplace." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBroadMatchKeywordOpportunity/referenceKeywordId> ;
    sh:name "reference keyword id" ;
    sh:description "The identifier of an existing reference keyword used by the service to offer the keyword opportunity." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBroadMatchKeywordOpportunity/referenceKeywordBid> ;
    sh:name "reference keyword bid" ;
    sh:description "The bid of an existing reference keyword used by the service to offer the keyword opportunity." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBroadMatchKeywordOpportunity/referenceKeywordMatchType> ;
    sh:name "reference keyword match type" ;
    sh:description "The match type of an existing reference keyword used by the service to offer the keyword opportunity. The following are the possible match-type values: 1 - Exact match 2 - Phrase match" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBroadMatchKeywordOpportunity/impressionShare> ;
    sh:name "impression share" ;
    sh:description "Broad match impression share in the marketplace." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBroadMatchKeywordOpportunity/searchQueryKPIs> ;
    sh:name "search query kpis" ;
    sh:description "A list of up to three broad match search query KPI objects. Each item contains search query statistics of including broad match type keyword bids" ;
    sh:node microsoftads:AdInsightBroadMatchSearchQueryKPIShape ;
    sh:class microsoftads:AdInsightBroadMatchSearchQueryKPI ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Broad Match Search Query Kpi
microsoftads:AdInsightBroadMatchSearchQueryKPIShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightBroadMatchSearchQueryKPI ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBroadMatchSearchQueryKPI/searchQuery> ;
    sh:name "search query" ;
    sh:description "The search query corresponding to the keyword." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBroadMatchSearchQueryKPI/impressions> ;
    sh:name "impressions" ;
    sh:description "The impressions for the search query." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBroadMatchSearchQueryKPI/clicks> ;
    sh:name "clicks" ;
    sh:description "The clicks for the search query." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBroadMatchSearchQueryKPI/sRPV> ;
    sh:name "s rpv" ;
    sh:description "The SRPV for the search query." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBroadMatchSearchQueryKPI/averageCTR> ;
    sh:name "average ctr" ;
    sh:description "The average CTR for the search query." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Budget Opportunity
microsoftads:AdInsightBudgetOpportunityShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightBudgetOpportunity ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBudgetOpportunity/campaignId> ;
    sh:name "campaign id" ;
    sh:description "The identifier of the campaign to which the suggested budget applies." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBudgetOpportunity/currentBudget> ;
    sh:name "current budget" ;
    sh:description "The campaign's current budget." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBudgetOpportunity/recommendedBudget> ;
    sh:name "recommended budget" ;
    sh:description "The suggested budget based on the last 15 days of performance history for the corresponding campaign." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBudgetOpportunity/budgetType> ;
    sh:name "budget type" ;
    sh:description "The type of budget that the campaign uses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "DailyBudgetStandard" "DailyBudgetAccelerated" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBudgetOpportunity/increaseInImpressions> ;
    sh:name "increase in impressions" ;
    sh:description "The estimated impressions opportunities corresponding to the suggested budget." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBudgetOpportunity/percentageIncreaseInImpressions> ;
    sh:name "percentage increase in impressions" ;
    sh:description "The estimated percentage increase in impressions corresponding to the suggested budget." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBudgetOpportunity/increaseInClicks> ;
    sh:name "increase in clicks" ;
    sh:description "The estimated clicks opportunities corresponding to the suggested budget." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBudgetOpportunity/percentageIncreaseInClicks> ;
    sh:name "percentage increase in clicks" ;
    sh:description "The estimated percentage increase in clicks corresponding to the suggested budget." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBudgetOpportunity/budgetPoints> ;
    sh:name "budget points" ;
    sh:description "The list of budget points with weekly impressions, clicks and cost estimates for the given budget amount." ;
    sh:node microsoftads:AdInsightBudgetPointShape ;
    sh:class microsoftads:AdInsightBudgetPoint ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBudgetOpportunity/opportunityKey> ;
    sh:name "opportunity key" ;
    sh:description "An identifier that uniquely identifies the opportunity." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Budget Point
microsoftads:AdInsightBudgetPointShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightBudgetPoint ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBudgetPoint/budgetAmount> ;
    sh:name "budget amount" ;
    sh:description "A potential new budget. This budget amount is your current campaign budget if the BudgetPointType value is Current." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBudgetPoint/budgetPointType> ;
    sh:name "budget point type" ;
    sh:description "The type of budget relative to a list of budget points. For example, if the budget point type is Current then this object's BudgetAmount element would be equal to the corresponding campaign's daily budget." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Current" "Suggested" "Maximum" "Other" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBudgetPoint/estimatedWeeklyClicks> ;
    sh:name "estimated weekly clicks" ;
    sh:description "The estimated weekly clicks for the given budget amount." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBudgetPoint/estimatedWeeklyCost> ;
    sh:name "estimated weekly cost" ;
    sh:description "The estimated weekly cost for the given budget amount." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightBudgetPoint/estimatedWeeklyImpressions> ;
    sh:name "estimated weekly impressions" ;
    sh:description "The estimated weekly impressions for the given budget amount." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Campaign Bid Landscape
microsoftads:AdInsightCampaignBidLandscapeShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightCampaignBidLandscape ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCampaignBidLandscape/campaignId> ;
    sh:name "campaign id" ;
    sh:description "The campaign identifier." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCampaignBidLandscape/campaignBidLandscapeType> ;
    sh:name "campaign bid landscape type" ;
    sh:description "Indicates the campaign bid strategy and landscape type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Ecpc_CampaignWideBid" "Ecpc_BidScaling" "TargetCpa" "TargetRoas" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCampaignBidLandscape/startDate> ;
    sh:name "start date" ;
    sh:description "The first date used to calculate the bid landscape. The start date is usually seven days prior to the end date. The difference between the start and end dates might be less than seven if performance data is not available, e.g., the campaign is new." ;
    sh:node microsoftads:AdInsightDayMonthAndYearShape ;
    sh:class microsoftads:AdInsightDayMonthAndYear ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCampaignBidLandscape/endDate> ;
    sh:name "end date" ;
    sh:description "The most recent date used to calculate the bid landscape. The end date should be set to approximately two days before the current date when CampaignBidLandscape is called." ;
    sh:node microsoftads:AdInsightDayMonthAndYearShape ;
    sh:class microsoftads:AdInsightDayMonthAndYear ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCampaignBidLandscape/campaignBidLandscapePoints> ;
    sh:name "campaign bid landscape points" ;
    sh:description "A list of CampaignBidLandscapePoint objects with the total estimated performance from StartDate to EndDate by the bid or target." ;
    sh:node microsoftads:AdInsightCampaignBidLandscapePointShape ;
    sh:class microsoftads:AdInsightCampaignBidLandscapePoint ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Campaign Bid Landscape Point
microsoftads:AdInsightCampaignBidLandscapePointShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightCampaignBidLandscapePoint ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCampaignBidLandscapePoint/bid> ;
    sh:name "bid" ;
    sh:description "The suggested bid value." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCampaignBidLandscapePoint/targetCpa> ;
    sh:name "target cpa" ;
    sh:description "The CampaignBidLandscapeType is TargetCpa. This element will be nil if the CampaignBidLandscapeType isn't TargetCpa." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCampaignBidLandscapePoint/targetRoas> ;
    sh:name "target roas" ;
    sh:description "The CampaignBidLandscapeType is TargetRoas. This element will be nil if the CampaignBidLandscapeType isn't TargetRoas." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCampaignBidLandscapePoint/clicks> ;
    sh:name "clicks" ;
    sh:description "The estimated number of clicks. This element will be nil if there is no estimate available." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCampaignBidLandscapePoint/impressions> ;
    sh:name "impressions" ;
    sh:description "The estimated number of impressions." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCampaignBidLandscapePoint/topImpressions> ;
    sh:name "top impressions" ;
    sh:description "The estimated number of impressions in the top or mainline ad results. This element will be nil if there is no estimate available." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCampaignBidLandscapePoint/currencyCode> ;
    sh:name "currency code" ;
    sh:description "The ISO code for the monetary unit of the suggested bid value and estimated performance statistics." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "AED" "ALL" "AMD" "ARS" "AUD" "AZM" "BGL" "BHD" "BND" "BOB" "BRL" "BYB" "BZD" "CAD" "CHF" "CLP" "CNY" "COP" "CRC" "CZK" "DOP" "DKK" "DZD" "EEK" "EGP" "EUR" "GBP" "GEL" "GTQ" "HKD" "HNL" "HRK" "HUF" "IDR" "ILS" "INR" "IQD" "IRR" "ISK" "JMD" "JOD" "JPY" "KES" "KGS" "KRW" "KWD" "KZT" "LBP" "LTL" "LVL" "LYD" "MAD" "MKD" "MOP" "MNT" "MVR" "MXN" "MYR" "NIO" "NOK" "NZD" "OMR" "PAB" "PEN" "PHP" "PKR" "PLN" "PYG" "QAR" "ROL" "RUR" "SAR" "SEK" "SGD" "SIT" "SKK" "SYP" "THB" "TND" "TRY" "TTD" "TWD" "UAH" "USD" "UYU" "UZS" "VEF" "YER" "VND" "YUN" "ZAR" "ZWD" "UNSPECIFY" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCampaignBidLandscapePoint/cost> ;
    sh:name "cost" ;
    sh:description "The estimated cost. This element will be nil if there is no estimate available." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCampaignBidLandscapePoint/conversions> ;
    sh:name "conversions" ;
    sh:description "The estimated number of conversions. This element will be nil if there is no estimate available." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCampaignBidLandscapePoint/conversionValues> ;
    sh:name "conversion values" ;
    sh:description "The estimated conversion values. This element will be nil if there is no estimate available." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCampaignBidLandscapePoint/marginalCPC> ;
    sh:name "marginal cpc" ;
    sh:description "The CampaignBidLandscapeType is MarginalCpc. This element will be nil if the CampaignBidLandscapeType isn't MarginalCpc." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Campaign Budget Recommendation
microsoftads:AdInsightCampaignBudgetRecommendationShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightCampaignBudgetRecommendation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCampaignBudgetRecommendation/accountId> ;
    sh:name "account id" ;
    sh:description "The identifier of the account. Output only." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCampaignBudgetRecommendation/accountName> ;
    sh:name "account name" ;
    sh:description "The name of the account. Output only." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCampaignBudgetRecommendation/campaignId> ;
    sh:name "campaign id" ;
    sh:description "The campaign ID targeted by this recommendation. Output only. This field will be set for the following recommendation types: KEYWORD, RESPONSIVE_SEARCH_AD" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCampaignBudgetRecommendation/campaignName> ;
    sh:name "campaign name" ;
    sh:description "The name of the campaign. Output only." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCampaignBudgetRecommendation/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "The ad group ID targeted by this recommendation. This will be set only when the recommendation affects a single ad group. Output only. This field will be set for the following recommendation types: KEYWORD, RESPONSIVE_SEARCH_AD." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCampaignBudgetRecommendation/adGroupName> ;
    sh:name "ad group name" ;
    sh:description "The name of the ad group. Output only." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCampaignBudgetRecommendation/recommendationType> ;
    sh:name "recommendation type" ;
    sh:description "The type of recommendation. Note: We currently support CAMPAIGN_BUDGET, KEYWORD, and RESPONSIVE_SEARCH_AD. RecommendationType is output only." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCampaignBudgetRecommendation/type> ;
    sh:name "type" ;
    sh:description "The RecommendationType value set has the following values: CampaignBudgetRecommendation, KeywordRecommendation, ResponsiveSearchAdRecommendation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCampaignBudgetRecommendation/recommendationId> ;
    sh:name "recommendation id" ;
    sh:description "The identifier of the recommendation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCampaignBudgetRecommendation/recommendationHash> ;
    sh:name "recommendation hash" ;
    sh:description "The hash of the recommendation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCampaignBudgetRecommendation/currentClicks> ;
    sh:name "current clicks" ;
    sh:description "Actual clicks of the ad group in the past 7 days. Output only." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCampaignBudgetRecommendation/estimatedIncreaseInClicks> ;
    sh:name "estimated increase in clicks" ;
    sh:description "The estimated click opportunities corresponding to the suggested ad." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCampaignBudgetRecommendation/currentCost> ;
    sh:name "current cost" ;
    sh:description "Actual spending of the ad group in the past 7 days, in the currency of this account." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCampaignBudgetRecommendation/estimatedIncreaseInCost> ;
    sh:name "estimated increase in cost" ;
    sh:description "The estimated increase in spend corresponding to the suggested ad." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCampaignBudgetRecommendation/currentImpressions> ;
    sh:name "current impressions" ;
    sh:description "Actual impressions of the ad group in the past 7 days." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCampaignBudgetRecommendation/estimatedIncreaseInImpressions> ;
    sh:name "estimated increase in impressions" ;
    sh:description "The estimated impressions opportunities corresponding to the suggested ad." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCampaignBudgetRecommendation/currentConversions> ;
    sh:name "current conversions" ;
    sh:description "Actual conversions of the ad group in the past 7 days. Output only." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCampaignBudgetRecommendation/estimatedIncreaseInConversions> ;
    sh:name "estimated increase in conversions" ;
    sh:description "The estimated impression opportunities corresponding to the suggested ad." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCampaignBudgetRecommendation/dismissed> ;
    sh:name "dismissed" ;
    sh:description "Whether the recommendation is dismissed or not. Output only." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCampaignBudgetRecommendation/recommendedBudget> ;
    sh:name "recommended budget" ;
    sh:description "The recommended budget amount based on the last 15 days of performance history for the corresponding campaign. Output only." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCampaignBudgetRecommendation/currentBudget> ;
    sh:name "current budget" ;
    sh:description "The current budget amount. Output only." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCampaignBudgetRecommendation/budgetPoints> ;
    sh:name "budget points" ;
    sh:description "The list of budget points with weekly impressions, clicks and cost estimates for the given budget amount. Output only." ;
    sh:node microsoftads:AdInsightBudgetPointShape ;
    sh:class microsoftads:AdInsightBudgetPoint ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCampaignBudgetRecommendation/budgetType> ;
    sh:name "budget type" ;
    sh:description "The type of budget that the campaign uses. Output only." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "DailyBudgetStandard" "DailyBudgetAccelerated" ) ;
  ] .

# Shape for Ad Insight Campaign Estimate
microsoftads:AdInsightCampaignEstimateShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightCampaignEstimate ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCampaignEstimate/campaignId> ;
    sh:name "campaign id" ;
    sh:description "The ad group identifier." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCampaignEstimate/adGroupEstimates> ;
    sh:name "ad group estimates" ;
    sh:description "The nested list of suggested keywords for the campaign's ad groups with minimum and maximum traffic estimates. Traffic estimates include average CPC, average position, clicks, CTR, impressions, and total cost." ;
    sh:node microsoftads:AdInsightAdGroupEstimateShape ;
    sh:class microsoftads:AdInsightAdGroupEstimate ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Campaign Estimator
microsoftads:AdInsightCampaignEstimatorShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightCampaignEstimator ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCampaignEstimator/campaignId> ;
    sh:name "campaign id" ;
    sh:description "The campaign identifier. This element is reserved for future use. The returned estimates are not based on any specific campaign." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCampaignEstimator/dailyBudget> ;
    sh:name "daily budget" ;
    sh:description "The daily budget filter criteria for all keyword traffic estimates in the campaign." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCampaignEstimator/criteria> ;
    sh:name "criteria" ;
    sh:description "The list of campaign level criteria for traffic estimates. Do not try to instantiate a Criterion. You can include one or more the following objects that derive from it: DeviceCriterion, LanguageCriterion, LocationCriterion, and NetworkCriterion. The location, language, and network criterions are required for traffic estimates." ;
    sh:or (
      [ sh:node microsoftads:AdInsightCriterionShape ; sh:class microsoftads:AdInsightCriterion ]
      [ sh:node microsoftads:AdInsightDeviceCriterionShape ; sh:class microsoftads:AdInsightDeviceCriterion ]
      [ sh:node microsoftads:AdInsightLanguageCriterionShape ; sh:class microsoftads:AdInsightLanguageCriterion ]
      [ sh:node microsoftads:AdInsightLocationCriterionShape ; sh:class microsoftads:AdInsightLocationCriterion ]
      [ sh:node microsoftads:AdInsightNetworkCriterionShape ; sh:class microsoftads:AdInsightNetworkCriterion ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCampaignEstimator/adGroupEstimators> ;
    sh:name "ad group estimators" ;
    sh:description "The list of ad group estimators with your ad group and keyword level filter criteria for traffic estimates." ;
    sh:node microsoftads:AdInsightAdGroupEstimatorShape ;
    sh:class microsoftads:AdInsightAdGroupEstimator ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCampaignEstimator/negativeKeywords> ;
    sh:name "negative keywords" ;
    sh:description "The list of negative keyword filter criteria for all keyword traffic estimates in the campaign." ;
    sh:node microsoftads:AdInsightNegativeKeywordShape ;
    sh:class microsoftads:AdInsightNegativeKeyword ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Criterion
microsoftads:AdInsightCriterionShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightCriterion ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCriterion/locationId> ;
    sh:name "location id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCriterion/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCriterion/language> ;
    sh:name "language" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCriterion/network> ;
    sh:name "network" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "OwnedAndOperatedAndSyndicatedSearch" "OwnedAndOperatedOnly" "SyndicatedSearchOnly" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCriterion/deviceName> ;
    sh:name "device name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Negative Keyword
microsoftads:AdInsightNegativeKeywordShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightNegativeKeyword ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightNegativeKeyword/id> ;
    sh:name "id" ;
    sh:description "The Microsoft Advertising identifier of the negative keyword." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightNegativeKeyword/text> ;
    sh:name "text" ;
    sh:description "The negative keyword text." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightNegativeKeyword/matchType> ;
    sh:name "match type" ;
    sh:description "The match type of the negative keyword." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Exact" "Phrase" "Broad" "Aggregate" ) ;
  ] .

# Shape for Ad Insight Category Search Parameter
microsoftads:AdInsightCategorySearchParameterShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightCategorySearchParameter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCategorySearchParameter/categoryId> ;
    sh:name "category id" ;
    sh:description "The Microsoft Advertising identifier for the keyword category. To get a list of keyword category identifiers, use the GetKeywordIdeaCategories service operation." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCategorySearchParameter/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Competition Search Parameter
microsoftads:AdInsightCompetitionSearchParameterShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightCompetitionSearchParameter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCompetitionSearchParameter/competitionLevels> ;
    sh:name "competition levels" ;
    sh:description "The competition levels that you want for the returned keyword ideas. Competition levels are defined by the number of advertisers bidding on this keyword, relative to all other keywords across Microsoft Advertising. Possible values are Low, Medium, and High." ;
    sh:datatype xsd:string ;
    sh:in ( "Low" "Medium" "High" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightCompetitionSearchParameter/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Date Range Search Parameter
microsoftads:AdInsightDateRangeSearchParameterShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightDateRangeSearchParameter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightDateRangeSearchParameter/startDate> ;
    sh:name "start date" ;
    sh:description "The start date range of monthly search counts for the returned keyword ideas." ;
    sh:node microsoftads:AdInsightDayMonthAndYearShape ;
    sh:class microsoftads:AdInsightDayMonthAndYear ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightDateRangeSearchParameter/endDate> ;
    sh:name "end date" ;
    sh:description "The end date range of monthly search counts for the returned keyword ideas." ;
    sh:node microsoftads:AdInsightDayMonthAndYearShape ;
    sh:class microsoftads:AdInsightDayMonthAndYear ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightDateRangeSearchParameter/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Decimal Rounded Result
microsoftads:AdInsightDecimalRoundedResultShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightDecimalRoundedResult ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightDecimalRoundedResult/value> ;
    sh:name "value" ;
    sh:description "The rounded value to the nearest scale unit. Output only." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightDecimalRoundedResult/unit> ;
    sh:name "unit" ;
    sh:description "The scale unit: Thousand, Million, Billion, None. Output only." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Billion" "Million" "Thousand" "None" ) ;
  ] .

# Shape for Ad Insight Device Criterion
microsoftads:AdInsightDeviceCriterionShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightDeviceCriterion ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightDeviceCriterion/deviceName> ;
    sh:name "device name" ;
    sh:description "The device that you want to target. Possible case-sensitive values are All, Computers, Smartphones, and Tablets." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightDeviceCriterion/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Device Search Parameter
microsoftads:AdInsightDeviceSearchParameterShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightDeviceSearchParameter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightDeviceSearchParameter/device> ;
    sh:name "device" ;
    sh:description "The device criterion for the returned keyword ideas." ;
    sh:node microsoftads:AdInsightDeviceCriterionShape ;
    sh:class microsoftads:AdInsightDeviceCriterion ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightDeviceSearchParameter/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Dismiss Recommendation Entity
microsoftads:AdInsightDismissRecommendationEntityShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightDismissRecommendationEntity ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightDismissRecommendationEntity/recommendationId> ;
    sh:name "recommendation id" ;
    sh:description "The identifier of the recommendation. Required." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightDismissRecommendationEntity/recommendationType> ;
    sh:name "recommendation type" ;
    sh:description "The type of recommendation: ADD_BROAD_MATCH_KEYWORD, CAMPAIGN_BUDGET, KEYWORD, REMOVE_CONFLICTING_NEGATIVE_KEYWORD, RESPONSIVE_SEARCH_AD, or RESPONSIVE_SEARCH_AD_ASSET. Required." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Dismiss Recommendations Request
microsoftads:AdInsightDismissRecommendationsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightDismissRecommendationsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightDismissRecommendationsRequest/entities> ;
    sh:name "entities" ;
    sh:description "The list of operations to dismiss recommendations. There is a limit of 100 operations per request. Required." ;
    sh:node microsoftads:AdInsightDismissRecommendationEntityShape ;
    sh:class microsoftads:AdInsightDismissRecommendationEntity ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Dismiss Recommendations Response
microsoftads:AdInsightDismissRecommendationsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightDismissRecommendationsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightDismissRecommendationsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array BatchError that contains details for any request items that were not successful. The list of errors does not correspond directly to the list of items in the request. The list can be empty if there were no errors, or it can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:node microsoftads:AdInsightBatchErrorShape ;
    sh:class microsoftads:AdInsightBatchError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Domain Category
microsoftads:AdInsightDomainCategoryShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightDomainCategory ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightDomainCategory/categoryName> ;
    sh:name "category name" ;
    sh:description "The category name. Up to three category levels can be returned, and will be separated by a forward slash (\"/\"). For example the returned category might be US/CA/SFO." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightDomainCategory/coverage> ;
    sh:name "coverage" ;
    sh:description "A score from 0.0 to 1.0 that indicates the percentage of pages in the requested language that belong to a particular domain out of all the pages that Bing has indexed for the same language your website's domain. In other words coverage is the percentage of webpages that match a category and language divided by the total number of webpages using the same language in the domain. For example, if the category US/CA/SFO matches 500 english webpages and US/CA matches 1,000 english webpages, then the coverage will be 0.50 (50 percent)." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightDomainCategory/bid> ;
    sh:name "bid" ;
    sh:description "Reserved for future use." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Entity Detail
microsoftads:AdInsightEntityDetailShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightEntityDetail ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightEntityDetail/entityId> ;
    sh:name "entity id" ;
    sh:description "For account, this is AccountId. For campaign, this is CampaignId. For ad group, this is AdGroupId. For keyword, this is KeywordId. For product group, this is ProductGroupId. For search term/website, this is 0." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightEntityDetail/entityName> ;
    sh:name "entity name" ;
    sh:description "For account/campaign/ad group, this is the name information. For keyword, this is the keyword text. For search term, this is the search term text. For product group, this is the node path. For website, this is the website URL." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Entity Parameter
microsoftads:AdInsightEntityParameterShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightEntityParameter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightEntityParameter/type> ;
    sh:name "type" ;
    sh:description "Defines a string for the type of parameter: string, URL, or a list of demand entities." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Text" "Url" "Entities" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightEntityParameter/suggestedText> ;
    sh:name "suggested text" ;
    sh:description "The suggested string value to substitute for the message." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightEntityParameter/entityType> ;
    sh:name "entity type" ;
    sh:description "The entity type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Account" "Campaign" "AdGroup" "Keyword" "ProductGroup" "SearchTerm" "Website" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightEntityParameter/entityCount> ;
    sh:name "entity count" ;
    sh:description "The number of entities." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightEntityParameter/entityDetails> ;
    sh:name "entity details" ;
    sh:description "The detail information for entities." ;
    sh:node microsoftads:AdInsightEntityDetailShape ;
    sh:class microsoftads:AdInsightEntityDetail ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Estimated Bid And Traffic
microsoftads:AdInsightEstimatedBidAndTrafficShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightEstimatedBidAndTraffic ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightEstimatedBidAndTraffic/minClicksPerWeek> ;
    sh:name "min clicks per week" ;
    sh:description "The estimated minimum number of clicks per week." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightEstimatedBidAndTraffic/maxClicksPerWeek> ;
    sh:name "max clicks per week" ;
    sh:description "The estimated maximum number of clicks per week." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightEstimatedBidAndTraffic/averageCPC> ;
    sh:name "average cpc" ;
    sh:description "The estimated average CPC. The formula used to calculate the average CPC is (maximum total cost / maximum number of clicks)." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightEstimatedBidAndTraffic/minImpressionsPerWeek> ;
    sh:name "min impressions per week" ;
    sh:description "The estimated minimum number of impressions per week." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightEstimatedBidAndTraffic/maxImpressionsPerWeek> ;
    sh:name "max impressions per week" ;
    sh:description "The estimated maximum number of impressions per week." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightEstimatedBidAndTraffic/cTR> ;
    sh:name "c tr" ;
    sh:description "The estimated CTR. The formula used to calculate the CTR is (maximum number of clicks / maximum number of impressions) &#42; 100." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightEstimatedBidAndTraffic/minTotalCostPerWeek> ;
    sh:name "min total cost per week" ;
    sh:description "The estimated minimum cost per week." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightEstimatedBidAndTraffic/maxTotalCostPerWeek> ;
    sh:name "max total cost per week" ;
    sh:description "The estimated maximum cost per week." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightEstimatedBidAndTraffic/currencyCode> ;
    sh:name "currency code" ;
    sh:description "The ISO code for the monetary unit of the cost estimates and suggested bid value." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "AED" "ALL" "AMD" "ARS" "AUD" "AZM" "BGL" "BHD" "BND" "BOB" "BRL" "BYB" "BZD" "CAD" "CHF" "CLP" "CNY" "COP" "CRC" "CZK" "DOP" "DKK" "DZD" "EEK" "EGP" "EUR" "GBP" "GEL" "GTQ" "HKD" "HNL" "HRK" "HUF" "IDR" "ILS" "INR" "IQD" "IRR" "ISK" "JMD" "JOD" "JPY" "KES" "KGS" "KRW" "KWD" "KZT" "LBP" "LTL" "LVL" "LYD" "MAD" "MKD" "MOP" "MNT" "MVR" "MXN" "MYR" "NIO" "NOK" "NZD" "OMR" "PAB" "PEN" "PHP" "PKR" "PLN" "PYG" "QAR" "ROL" "RUR" "SAR" "SEK" "SGD" "SIT" "SKK" "SYP" "THB" "TND" "TRY" "TTD" "TWD" "UAH" "USD" "UYU" "UZS" "VEF" "YER" "VND" "YUN" "ZAR" "ZWD" "UNSPECIFY" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightEstimatedBidAndTraffic/matchType> ;
    sh:name "match type" ;
    sh:description "The match type used to determine the estimates." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Exact" "Phrase" "Broad" "Aggregate" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightEstimatedBidAndTraffic/estimatedMinBid> ;
    sh:name "estimated min bid" ;
    sh:description "The suggested bid value." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Estimated Position And Traffic
microsoftads:AdInsightEstimatedPositionAndTrafficShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightEstimatedPositionAndTraffic ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightEstimatedPositionAndTraffic/matchType> ;
    sh:name "match type" ;
    sh:description "The keyword match type used to determine the estimates." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Exact" "Phrase" "Broad" "Aggregate" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightEstimatedPositionAndTraffic/minClicksPerWeek> ;
    sh:name "min clicks per week" ;
    sh:description "The estimated minimum number of clicks per week." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightEstimatedPositionAndTraffic/maxClicksPerWeek> ;
    sh:name "max clicks per week" ;
    sh:description "The estimated maximum number of clicks per week." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightEstimatedPositionAndTraffic/averageCPC> ;
    sh:name "average cpc" ;
    sh:description "The estimated average CPC. The formula used to calculate the average CPC is (maximum total cost / maximum number of clicks)." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightEstimatedPositionAndTraffic/minImpressionsPerWeek> ;
    sh:name "min impressions per week" ;
    sh:description "The estimated minimum number of impressions per week." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightEstimatedPositionAndTraffic/maxImpressionsPerWeek> ;
    sh:name "max impressions per week" ;
    sh:description "The estimated maximum number of impressions per week." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightEstimatedPositionAndTraffic/cTR> ;
    sh:name "c tr" ;
    sh:description "The estimated CTR. The formula used to calculate the CTR is (maximum number of clicks / maximum number of impressions) &#42; 100." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightEstimatedPositionAndTraffic/minTotalCostPerWeek> ;
    sh:name "min total cost per week" ;
    sh:description "The estimated minimum cost per week." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightEstimatedPositionAndTraffic/maxTotalCostPerWeek> ;
    sh:name "max total cost per week" ;
    sh:description "The estimated maximum cost per week." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightEstimatedPositionAndTraffic/currencyCode> ;
    sh:name "currency code" ;
    sh:description "The ISO code for the monetary unit of the cost values such as AverageCPC." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "AED" "ALL" "AMD" "ARS" "AUD" "AZM" "BGL" "BHD" "BND" "BOB" "BRL" "BYB" "BZD" "CAD" "CHF" "CLP" "CNY" "COP" "CRC" "CZK" "DOP" "DKK" "DZD" "EEK" "EGP" "EUR" "GBP" "GEL" "GTQ" "HKD" "HNL" "HRK" "HUF" "IDR" "ILS" "INR" "IQD" "IRR" "ISK" "JMD" "JOD" "JPY" "KES" "KGS" "KRW" "KWD" "KZT" "LBP" "LTL" "LVL" "LYD" "MAD" "MKD" "MOP" "MNT" "MVR" "MXN" "MYR" "NIO" "NOK" "NZD" "OMR" "PAB" "PEN" "PHP" "PKR" "PLN" "PYG" "QAR" "ROL" "RUR" "SAR" "SEK" "SGD" "SIT" "SKK" "SYP" "THB" "TND" "TRY" "TTD" "TWD" "UAH" "USD" "UYU" "UZS" "VEF" "YER" "VND" "YUN" "ZAR" "ZWD" "UNSPECIFY" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightEstimatedPositionAndTraffic/estimatedAdPosition> ;
    sh:name "estimated ad position" ;
    sh:description "The position in the search results given the specified bid. This element is deprecated as of March 31st, 2021 and '0' (zero) is returned going forward." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Exclude Account Keywords Search Parameter
microsoftads:AdInsightExcludeAccountKeywordsSearchParameterShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightExcludeAccountKeywordsSearchParameter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightExcludeAccountKeywordsSearchParameter/excludeAccountKeywords> ;
    sh:name "exclude account keywords" ;
    sh:description "Determines whether or not to exclude existing account keywords from the returned keyword ideas. By default your existing account keywords will be included with the keyword idea data e.g., suggested bid. If you set the element True then the keyword ideas will not include any keywords for the same match type that already exist in your account." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightExcludeAccountKeywordsSearchParameter/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Feed
microsoftads:AdInsightFeedShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightFeed ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightFeed/storeId> ;
    sh:name "store id" ;
    sh:description "Respect StoreId when CampaignSubType is set to FeedBasedAds. Add: Optional. Defaults to null. Update: Optional" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightFeed/feedId> ;
    sh:name "feed id" ;
    sh:description "Respect FeedId when CampaignSubType is set to DynamicFeedBasedAds. Add: Optional. Defaults to null. Update: Optional" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightFeed/feedType> ;
    sh:name "feed type" ;
    sh:description "The feed type." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Get Auction Insight Data Request
microsoftads:AdInsightGetAuctionInsightDataRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightGetAuctionInsightDataRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAuctionInsightDataRequest/entityType> ;
    sh:name "entity type" ;
    sh:description "The entity level that you want to request auction insight data. The supported values are Account, Campaign, AdGroup, and Keyword. This element is required." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Account" "Campaign" "AdGroup" "Keyword" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAuctionInsightDataRequest/entityIds> ;
    sh:name "entity ids" ;
    sh:description "The Microsoft Advertising identifiers for up to 200 campaigns, ad groups, or keywords. This element is required for the campaign, ad group, and keyword entity types. If the EntityType is Account, this element is optional and will override the value set in the CustomerAccountId header. Regardless of the entity type, you must set the CustomerId and CustomerAccountId header elements." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAuctionInsightDataRequest/searchParameters> ;
    sh:name "search parameters" ;
    sh:description "The search parameters define your criteria and filters for the auction insight data. You must include exactly one DateRangeSearchParameter. In addition you can optionally include up to three different AuctionSegmentSearchParameter objects e.g., for Day, DayOfWeek, and Device. Other objects that derive from SearchParameter are not valid for this operation." ;
    sh:or (
      [ sh:node microsoftads:AdInsightAuctionSegmentSearchParameterShape ; sh:class microsoftads:AdInsightAuctionSegmentSearchParameter ]
      [ sh:node microsoftads:AdInsightCategorySearchParameterShape ; sh:class microsoftads:AdInsightCategorySearchParameter ]
      [ sh:node microsoftads:AdInsightCompetitionSearchParameterShape ; sh:class microsoftads:AdInsightCompetitionSearchParameter ]
      [ sh:node microsoftads:AdInsightDateRangeSearchParameterShape ; sh:class microsoftads:AdInsightDateRangeSearchParameter ]
      [ sh:node microsoftads:AdInsightDeviceSearchParameterShape ; sh:class microsoftads:AdInsightDeviceSearchParameter ]
      [ sh:node microsoftads:AdInsightExcludeAccountKeywordsSearchParameterShape ; sh:class microsoftads:AdInsightExcludeAccountKeywordsSearchParameter ]
      [ sh:node microsoftads:AdInsightIdeaTextSearchParameterShape ; sh:class microsoftads:AdInsightIdeaTextSearchParameter ]
      [ sh:node microsoftads:AdInsightImpressionShareSearchParameterShape ; sh:class microsoftads:AdInsightImpressionShareSearchParameter ]
      [ sh:node microsoftads:AdInsightLanguageSearchParameterShape ; sh:class microsoftads:AdInsightLanguageSearchParameter ]
      [ sh:node microsoftads:AdInsightLocationSearchParameterShape ; sh:class microsoftads:AdInsightLocationSearchParameter ]
      [ sh:node microsoftads:AdInsightNetworkSearchParameterShape ; sh:class microsoftads:AdInsightNetworkSearchParameter ]
      [ sh:node microsoftads:AdInsightQuerySearchParameterShape ; sh:class microsoftads:AdInsightQuerySearchParameter ]
      [ sh:node microsoftads:AdInsightSearchParameterShape ; sh:class microsoftads:AdInsightSearchParameter ]
      [ sh:node microsoftads:AdInsightSearchVolumeSearchParameterShape ; sh:class microsoftads:AdInsightSearchVolumeSearchParameter ]
      [ sh:node microsoftads:AdInsightSuggestedBidSearchParameterShape ; sh:class microsoftads:AdInsightSuggestedBidSearchParameter ]
      [ sh:node microsoftads:AdInsightUrlSearchParameterShape ; sh:class microsoftads:AdInsightUrlSearchParameter ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAuctionInsightDataRequest/returnAdditionalFields> ;
    sh:name "return additional fields" ;
    sh:description "The list of additional properties that you want included within each returned auction insight KPI. The additional field values enable you to get the latest features using the current version of the Ad Insight API, and in the next version the corresponding elements will be included by default. This request element is optional." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Search Parameter
microsoftads:AdInsightSearchParameterShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightSearchParameter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSearchParameter/queries> ;
    sh:name "queries" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSearchParameter/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSearchParameter/url> ;
    sh:name "url" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSearchParameter/categoryId> ;
    sh:name "category id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSearchParameter/minimum> ;
    sh:name "minimum" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSearchParameter/maximum> ;
    sh:name "maximum" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSearchParameter/included> ;
    sh:name "included" ;
    sh:node microsoftads:AdInsightKeywordShape ;
    sh:class microsoftads:AdInsightKeyword ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSearchParameter/excluded> ;
    sh:name "excluded" ;
    sh:node microsoftads:AdInsightKeywordShape ;
    sh:class microsoftads:AdInsightKeyword ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSearchParameter/excludeAccountKeywords> ;
    sh:name "exclude account keywords" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSearchParameter/locations> ;
    sh:name "locations" ;
    sh:node microsoftads:AdInsightLocationCriterionShape ;
    sh:class microsoftads:AdInsightLocationCriterion ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSearchParameter/network> ;
    sh:name "network" ;
    sh:node microsoftads:AdInsightNetworkCriterionShape ;
    sh:class microsoftads:AdInsightNetworkCriterion ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSearchParameter/device> ;
    sh:name "device" ;
    sh:node microsoftads:AdInsightDeviceCriterionShape ;
    sh:class microsoftads:AdInsightDeviceCriterion ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSearchParameter/languages> ;
    sh:name "languages" ;
    sh:node microsoftads:AdInsightLanguageCriterionShape ;
    sh:class microsoftads:AdInsightLanguageCriterion ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSearchParameter/competitionLevels> ;
    sh:name "competition levels" ;
    sh:datatype xsd:string ;
    sh:in ( "Low" "Medium" "High" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSearchParameter/startDate> ;
    sh:name "start date" ;
    sh:node microsoftads:AdInsightDayMonthAndYearShape ;
    sh:class microsoftads:AdInsightDayMonthAndYear ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSearchParameter/endDate> ;
    sh:name "end date" ;
    sh:node microsoftads:AdInsightDayMonthAndYearShape ;
    sh:class microsoftads:AdInsightDayMonthAndYear ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSearchParameter/segment> ;
    sh:name "segment" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Day" "Week" "Month" "Quarter" "DayOfWeek" "Device" ) ;
  ] .

# Shape for Ad Insight Location Criterion
microsoftads:AdInsightLocationCriterionShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightLocationCriterion ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightLocationCriterion/locationId> ;
    sh:name "location id" ;
    sh:description "The Microsoft Advertising identifier of the location that you want to target. You can get keyword ideas and traffic estimates for city, country/region, county, metro area (Microsoft Market Area in the United States), and state locations. Postal code location identifiers are not supported for keyword ideas and traffic estimate requests. Currently this feature is available in the United States, United Kingdom, Canada, Australia, France, and Germany. To get a list of geographical location identifiers use the Campaign Management service i.e., the GetGeoLocationsFileUrl service operation." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightLocationCriterion/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Network Criterion
microsoftads:AdInsightNetworkCriterionShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightNetworkCriterion ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightNetworkCriterion/network> ;
    sh:name "network" ;
    sh:description "The network that you want to target. Possible values are OwnedAndOperatedAndSyndicatedSearch, OwnedAndOperatedOnly, and SyndicatedSearchOnly. Note: As of July 2024, Microsoft no longer offers the SyndicatedSearchOnly option as an ad distribution setting. We highly recommend that you switch to \"The entire Microsoft Advertising Network\" and leverage auto-biding to let Microsoft help you manage your budget." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "OwnedAndOperatedAndSyndicatedSearch" "OwnedAndOperatedOnly" "SyndicatedSearchOnly" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightNetworkCriterion/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Language Criterion
microsoftads:AdInsightLanguageCriterionShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightLanguageCriterion ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightLanguageCriterion/language> ;
    sh:name "language" ;
    sh:description "The language that you require. Possible case-sensitive values are English, French, and German." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightLanguageCriterion/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Get Auction Insight Data Response
microsoftads:AdInsightGetAuctionInsightDataResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightGetAuctionInsightDataResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAuctionInsightDataResponse/result> ;
    sh:name "result" ;
    sh:description "Includes the auction insight entries for the requested entity, date range, and segment search parameters." ;
    sh:node microsoftads:AdInsightAuctionInsightResultShape ;
    sh:class microsoftads:AdInsightAuctionInsightResult ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Get Audience Breakdown Request
microsoftads:AdInsightGetAudienceBreakdownRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightGetAudienceBreakdownRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceBreakdownRequest/age> ;
    sh:name "age" ;
    sh:description "The selection of age targeting. Possible values are: EighteenToTwentyFour, TwentyFiveToThirtyFour, ThirtyFiveToFourtyNine, FiftyToSixtyFour, SixtyFiveAndAbove, Unknown. Add: Optional. The default value is null. Update: Optional" ;
    sh:node microsoftads:AdInsightSelectionOfAgeEnumShape ;
    sh:class microsoftads:AdInsightSelectionOfAgeEnum ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceBreakdownRequest/gender> ;
    sh:name "gender" ;
    sh:description "The gender to target. Possible values are: Male, Female, Unknown. Add: Optional. The default value is null. Update: Optional" ;
    sh:node microsoftads:AdInsightSelectionOfGenderEnumShape ;
    sh:class microsoftads:AdInsightSelectionOfGenderEnum ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceBreakdownRequest/audience> ;
    sh:name "audience" ;
    sh:description "The selection of audience targeting. Supported audience types are: Custom audiences, Combined lists, Customer match lists, Dynamic remarketing lists, In-market audiences, Remarketing lists, and Similar audiences. The values stored in the selection refer to segment IDs. Add: Optional. The default value is null. Update: Optional" ;
    sh:node microsoftads:AdInsightSelectionOflongShape ;
    sh:class microsoftads:AdInsightSelectionOflong ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceBreakdownRequest/company> ;
    sh:name "company" ;
    sh:description "The company of LinkedIn profile targeting. The values stored in the selection refer to segment IDs. Add: Optional. The default value is null. Update: Optional" ;
    sh:node microsoftads:AdInsightSelectionOflongShape ;
    sh:class microsoftads:AdInsightSelectionOflong ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceBreakdownRequest/industry> ;
    sh:name "industry" ;
    sh:description "The industry of LinkedIn profile targeting. The values stored in the selection refer to segment IDs. Add: Optional. The default value is null. Update: Optional" ;
    sh:node microsoftads:AdInsightSelectionOflongShape ;
    sh:class microsoftads:AdInsightSelectionOflong ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceBreakdownRequest/jobFunction> ;
    sh:name "job function" ;
    sh:description "The job function The industry of LinkedIn profile targeting. The values stored in the selection refer to segment IDs. Add: Optional. The default value is null. Update: Optional" ;
    sh:node microsoftads:AdInsightSelectionOflongShape ;
    sh:class microsoftads:AdInsightSelectionOflong ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceBreakdownRequest/location> ;
    sh:name "location" ;
    sh:description "The selection of location targeting. The values stored in selection refer to location IDs. Add: Optional. The default value is null. Update: Optional" ;
    sh:node microsoftads:AdInsightSelectionOflongShape ;
    sh:class microsoftads:AdInsightSelectionOflong ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceBreakdownRequest/placement> ;
    sh:name "placement" ;
    sh:description "The selection of placement targeting. The values stored in selection refer to placement IDs. Add: Optional. The default value is null. Update: Optional" ;
    sh:node microsoftads:AdInsightSelectionOflongShape ;
    sh:class microsoftads:AdInsightSelectionOflong ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceBreakdownRequest/device> ;
    sh:name "device" ;
    sh:description "The type of device." ;
    sh:node microsoftads:AdInsightSelectionOfDeviceEnumShape ;
    sh:class microsoftads:AdInsightSelectionOfDeviceEnum ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceBreakdownRequest/topic> ;
    sh:name "topic" ;
    sh:description "The selection of topic targeting. The values stored in selection refer to topic IDs. Add: Optional. The default value is null. Update: Optional" ;
    sh:node microsoftads:AdInsightSelectionOflongShape ;
    sh:class microsoftads:AdInsightSelectionOflong ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceBreakdownRequest/radiusTargets> ;
    sh:name "radius targets" ;
    sh:description "Represents the desired geographical area in terms of miles/kilometers. Add: Optional. The default value is null. Update: Optional" ;
    sh:node microsoftads:AdInsightRadiusTargetShape ;
    sh:class microsoftads:AdInsightRadiusTarget ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceBreakdownRequest/campaignBiddingStrategy> ;
    sh:name "campaign bidding strategy" ;
    sh:description "Indicates the desired bidding strategy for estimation response. Supported values are: 5: EnhancedCPC, 12: ManualCP. Add: Optional. The default value is Manual. Update: Optional" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceBreakdownRequest/campaignSubType> ;
    sh:name "campaign sub type" ;
    sh:description "Indicate the desired ad type for estimation response. Supported values are: 0: StaticAds, 1: FeedBasedAds, 2: DynamicFeedBasedAds. Add: Optional. The default value is StaticAds*. Update: Optional" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceBreakdownRequest/feed> ;
    sh:name "feed" ;
    sh:description "Respect this parameter only when CampaignSubType is FeedBasedAds or DynamicFeedBasedAds. It specifies the desired feed traffic to count as estimation. Add: Optional. The default value is null. Update: Optional" ;
    sh:node microsoftads:AdInsightFeedShape ;
    sh:class microsoftads:AdInsightFeed ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceBreakdownRequest/lcid> ;
    sh:name "lcid" ;
    sh:description "The locale identifier. Add: Optional. Update: Optional" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceBreakdownRequest/breakdownReturnCategory> ;
    sh:name "breakdown return category" ;
    sh:description "The category of audience breakdown. Possible values include: All, Demographics, Device, Location, Interest. Add: Optional. Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "All" "Demographics" "Location" "Interest" "Device" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceBreakdownRequest/multiAdTypes> ;
    sh:name "multi ad types" ;
    sh:description "The audience breakdown ad type. Possible values indlude: DisplayAds, StaticAds, VideoAds. Add: Optional. Update: Optional" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Selection Of Age Enum
microsoftads:AdInsightSelectionOfAgeEnumShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightSelectionOfAgeEnum ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSelectionOfAgeEnum/includes> ;
    sh:name "includes" ;
    sh:description "The traffic matching any value of Includes array is included as an estimation." ;
    sh:datatype xsd:string ;
    sh:in ( "Unknown" "ZeroToTwelve" "ThirteenToSevenTeen" "EighteenToTwentyFour" "TwentyFiveToThirtyFour" "ThirtyFiveToFourtyNine" "FiftyToSixtyFour" "SixtyFiveAndAbove" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSelectionOfAgeEnum/excludes> ;
    sh:name "excludes" ;
    sh:description "The traffic matching any value of Excludes array is excluded as an estimation." ;
    sh:datatype xsd:string ;
    sh:in ( "Unknown" "ZeroToTwelve" "ThirteenToSevenTeen" "EighteenToTwentyFour" "TwentyFiveToThirtyFour" "ThirtyFiveToFourtyNine" "FiftyToSixtyFour" "SixtyFiveAndAbove" ) ;
  ] .

# Shape for Ad Insight Selection Of Gender Enum
microsoftads:AdInsightSelectionOfGenderEnumShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightSelectionOfGenderEnum ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSelectionOfGenderEnum/includes> ;
    sh:name "includes" ;
    sh:description "The traffic matching any value of Includes array is included as an estimation." ;
    sh:datatype xsd:string ;
    sh:in ( "Unknown" "Male" "Female" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSelectionOfGenderEnum/excludes> ;
    sh:name "excludes" ;
    sh:description "The traffic matching any value of Excludes array is excluded as an estimation." ;
    sh:datatype xsd:string ;
    sh:in ( "Unknown" "Male" "Female" ) ;
  ] .

# Shape for Ad Insight Selection Oflong
microsoftads:AdInsightSelectionOflongShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightSelectionOflong ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSelectionOflong/includes> ;
    sh:name "includes" ;
    sh:description "The traffic matching any value of Includes array is included as an estimation." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSelectionOflong/excludes> ;
    sh:name "excludes" ;
    sh:description "The traffic matching any value of Excludes array is excluded as an estimation." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Ad Insight Selection Of Device Enum
microsoftads:AdInsightSelectionOfDeviceEnumShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightSelectionOfDeviceEnum ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSelectionOfDeviceEnum/includes> ;
    sh:name "includes" ;
    sh:description "Include the type of desvices present in the DeviceEnum." ;
    sh:datatype xsd:string ;
    sh:in ( "Desktop" "Smartphone" "Tablet" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSelectionOfDeviceEnum/excludes> ;
    sh:name "excludes" ;
    sh:description "Exclude the type of devices present in the DeviceEnum." ;
    sh:datatype xsd:string ;
    sh:in ( "Desktop" "Smartphone" "Tablet" ) ;
  ] .

# Shape for Ad Insight Radius Target
microsoftads:AdInsightRadiusTargetShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightRadiusTarget ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRadiusTarget/radius> ;
    sh:name "radius" ;
    sh:description "Indicates the desired amount of radius units." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRadiusTarget/radiusUnit> ;
    sh:name "radius unit" ;
    sh:description "Indicates the radius unit. Supports Kilometers or Miles." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Miles" "Kilometers" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRadiusTarget/centerLatitude> ;
    sh:name "center latitude" ;
    sh:description "Defines the center latitude." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRadiusTarget/centerLongitude> ;
    sh:name "center longitude" ;
    sh:description "DEfines the center longitude." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Get Audience Breakdown Response
microsoftads:AdInsightGetAudienceBreakdownResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightGetAudienceBreakdownResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceBreakdownResponse/estAudienceSize> ;
    sh:name "est audience size" ;
    sh:description "Monthly estimated reach user count with rounded results. Output only." ;
    sh:node microsoftads:AdInsightDecimalRoundedResultShape ;
    sh:class microsoftads:AdInsightDecimalRoundedResult ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceBreakdownResponse/estImpression> ;
    sh:name "est impression" ;
    sh:description "Monthly estimated impression with range result. Output only." ;
    sh:node microsoftads:AdInsightDecimalRoundedResultShape ;
    sh:class microsoftads:AdInsightDecimalRoundedResult ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceBreakdownResponse/isImpressionTooSpecific> ;
    sh:name "is impression too specific" ;
    sh:description "Indicates if the impression is too specific." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceBreakdownResponse/isPrivacyCheckPassed> ;
    sh:name "is privacy check passed" ;
    sh:description "Indicates if the estimated audience size passes the privacy check." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceBreakdownResponse/suggestedBid> ;
    sh:name "suggested bid" ;
    sh:description "Suggested bid value under the current targeting. Output only." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceBreakdownResponse/currency> ;
    sh:name "currency" ;
    sh:description "The currency of DailyBudget and Bid. If null, the currency of account setting will be used. Add: Optional. The default value is null. Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UnSpecify" "AustralianDollar" "BrazilianReal" "CanadianDollar" "SwissFranc" "DanishKrone" "EURO" "UKPound" "JapaneseYen" "NorwegianKrone" "NewZealandDollar" "SwedishKrona" "USDollar" "SouthAfricanRand" "ArgentinePeso" "ChileanPeso" "YuanRenminbi" "ColombianPeso" "CzechKoruna" "UAEDirham" "AlgerianDinar" "EgyptianPound" "HongKongDollar" "Forint" "Rupiah" "IsraeliSheqel" "IndianRupee" "Won" "LebanesePound" "MoroccanDirham" "MexicanPeso" "MalaysianRinggit" "NuevoSol" "PhilippinePeso" "PolishZloty" "QatariRial" "SaudiRiyal" "SingaporeDollar" "Baht" "NewTaiwanDollar" "Bolivar" "Dong" "TurkishLira" "NigerianNaira" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceBreakdownResponse/breakdowns> ;
    sh:name "breakdowns" ;
    sh:description "The audience breakdown categories." ;
    sh:node microsoftads:AdInsightBreakdownsShape ;
    sh:class microsoftads:AdInsightBreakdowns ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Get Audience Full Estimation Request
microsoftads:AdInsightGetAudienceFullEstimationRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightGetAudienceFullEstimationRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceFullEstimationRequest/age> ;
    sh:name "age" ;
    sh:description "The selection of age targeting. Possible values are: EighteenToTwentyFour, TwentyFiveToThirtyFour, ThirtyFiveToFourtyNine, FiftyToSixtyFour, SixtyFiveAndAbove, Unknown. Add: Optional. The default value is null. Update: Optional" ;
    sh:node microsoftads:AdInsightSelectionOfAgeEnumShape ;
    sh:class microsoftads:AdInsightSelectionOfAgeEnum ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceFullEstimationRequest/gender> ;
    sh:name "gender" ;
    sh:description "The gender to target. Possible values are: Male, Female, Unknown. Add: Optional. The default value is null. Update: Optional" ;
    sh:node microsoftads:AdInsightSelectionOfGenderEnumShape ;
    sh:class microsoftads:AdInsightSelectionOfGenderEnum ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceFullEstimationRequest/audience> ;
    sh:name "audience" ;
    sh:description "The selection of audience targeting. Supported audience types are: Custom audiences, Combined lists, Customer match lists, Dynamic remarketing lists, In-market audiences, Remarketing lists, and Similar audiences. The values stored in the selection refer to segment IDs. Add: Optional. The default value is null. Update: Optional" ;
    sh:node microsoftads:AdInsightSelectionOflongShape ;
    sh:class microsoftads:AdInsightSelectionOflong ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceFullEstimationRequest/company> ;
    sh:name "company" ;
    sh:description "The company of LinkedIn profile targeting. The values stored in the selection refer to segment IDs. Add: Optional. The default value is null. Update: Optional" ;
    sh:node microsoftads:AdInsightSelectionOflongShape ;
    sh:class microsoftads:AdInsightSelectionOflong ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceFullEstimationRequest/industry> ;
    sh:name "industry" ;
    sh:description "The industry of LinkedIn profile targeting. The values stored in the selection refer to segment IDs. Add: Optional. The default value is null. Update: Optional" ;
    sh:node microsoftads:AdInsightSelectionOflongShape ;
    sh:class microsoftads:AdInsightSelectionOflong ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceFullEstimationRequest/jobFunction> ;
    sh:name "job function" ;
    sh:description "The job function The industry of LinkedIn profile targeting. The values stored in the selection refer to segment IDs. Add: Optional. The default value is null. Update: Optional" ;
    sh:node microsoftads:AdInsightSelectionOflongShape ;
    sh:class microsoftads:AdInsightSelectionOflong ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceFullEstimationRequest/location> ;
    sh:name "location" ;
    sh:description "The selection of location targeting. The values stored in selection refer to location IDs. Add: Optional. The default value is null. Update: Optional" ;
    sh:node microsoftads:AdInsightSelectionOflongShape ;
    sh:class microsoftads:AdInsightSelectionOflong ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceFullEstimationRequest/placement> ;
    sh:name "placement" ;
    sh:description "The selection of placement targeting. The values stored in selection refer to placement IDs. Add: Optional. The default value is null. Update: Optional" ;
    sh:node microsoftads:AdInsightSelectionOflongShape ;
    sh:class microsoftads:AdInsightSelectionOflong ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceFullEstimationRequest/device> ;
    sh:name "device" ;
    sh:description "The type of device." ;
    sh:node microsoftads:AdInsightSelectionOfDeviceEnumShape ;
    sh:class microsoftads:AdInsightSelectionOfDeviceEnum ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceFullEstimationRequest/topic> ;
    sh:name "topic" ;
    sh:description "The selection of topic targeting. The values stored in selection refer to topic IDs. Add: Optional. The default value is null. Update: Optional" ;
    sh:node microsoftads:AdInsightSelectionOflongShape ;
    sh:class microsoftads:AdInsightSelectionOflong ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceFullEstimationRequest/radiusTargets> ;
    sh:name "radius targets" ;
    sh:description "Represents the desired geographical area in terms of miles/kilometers. Add: Optional. The default value is null. Update: Optional" ;
    sh:node microsoftads:AdInsightRadiusTargetShape ;
    sh:class microsoftads:AdInsightRadiusTarget ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceFullEstimationRequest/campaignBiddingStrategy> ;
    sh:name "campaign bidding strategy" ;
    sh:description "Indicates the desired bidding strategy for estimation response. Supported values are: 5: EnhancedCPC, 12: ManualCP. Add: Optional. The default value is Manual. Update: Optional" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceFullEstimationRequest/campaignSubType> ;
    sh:name "campaign sub type" ;
    sh:description "Indicate the desired ad type for estimation response. Supported values are: 0: StaticAds, 1: FeedBasedAds, 2: DynamicFeedBasedAds. Add: Optional. The default value is StaticAds*. Update: Optional" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceFullEstimationRequest/feed> ;
    sh:name "feed" ;
    sh:description "Respect this parameter only when CampaignSubType is FeedBasedAds or DynamicFeedBasedAds. It specifies the desired feed traffic to count as estimation. Add: Optional. The default value is null. Update: Optional" ;
    sh:node microsoftads:AdInsightFeedShape ;
    sh:class microsoftads:AdInsightFeed ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceFullEstimationRequest/dailyBudget> ;
    sh:name "daily budget" ;
    sh:description "The daily campaign budget value. If set to null, the suggested budget is used to perform estimation. Add: Optional. The default value is null. Update: Optional" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceFullEstimationRequest/bid> ;
    sh:name "bid" ;
    sh:description "The desired bid setting value. If set to null, the suggested bid is used to perform estimation. Add: Optional Update: Optional" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceFullEstimationRequest/currency> ;
    sh:name "currency" ;
    sh:description "The currency of DailyBudget and Bid. If null, the currency of account setting will be used. Add: Optional. The default value is null. Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UnSpecify" "AustralianDollar" "BrazilianReal" "CanadianDollar" "SwissFranc" "DanishKrone" "EURO" "UKPound" "JapaneseYen" "NorwegianKrone" "NewZealandDollar" "SwedishKrona" "USDollar" "SouthAfricanRand" "ArgentinePeso" "ChileanPeso" "YuanRenminbi" "ColombianPeso" "CzechKoruna" "UAEDirham" "AlgerianDinar" "EgyptianPound" "HongKongDollar" "Forint" "Rupiah" "IsraeliSheqel" "IndianRupee" "Won" "LebanesePound" "MoroccanDirham" "MexicanPeso" "MalaysianRinggit" "NuevoSol" "PhilippinePeso" "PolishZloty" "QatariRial" "SaudiRiyal" "SingaporeDollar" "Baht" "NewTaiwanDollar" "Bolivar" "Dong" "TurkishLira" "NigerianNaira" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceFullEstimationRequest/multiAdTypes> ;
    sh:name "multi ad types" ;
    sh:description "The audience full estimation ad type. Possible values indlude: DisplayAds, StaticAds, VideoAds. Add: Optional. Update: Optional" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceFullEstimationRequest/startDate> ;
    sh:name "start date" ;
    sh:description "The start date of the date range that identifies the data that you want to use to determine the audience full estimation. This date must be earlier than or the same as the specified end date." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceFullEstimationRequest/endDate> ;
    sh:name "end date" ;
    sh:description "The end date of the date range that identifies the data that you want to use to determine the audience full estimation. This date must be later than or the same as the specified end date." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceFullEstimationRequest/totalBudget> ;
    sh:name "total budget" ;
    sh:description "The total budget." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceFullEstimationRequest/includeImpressionsBreakdown> ;
    sh:name "include impressions breakdown" ;
    sh:description "Include impressions in the audience breakdown." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceFullEstimationRequest/autoTargeting> ;
    sh:name "auto targeting" ;
    sh:description "Use predictive targeting if the value is true." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Get Audience Full Estimation Response
microsoftads:AdInsightGetAudienceFullEstimationResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightGetAudienceFullEstimationResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceFullEstimationResponse/estImpression> ;
    sh:name "est impression" ;
    sh:description "Monthly estimated impression with range result. Output only." ;
    sh:node microsoftads:AdInsightRangeResultOfDecimalRoundedResultShape ;
    sh:class microsoftads:AdInsightRangeResultOfDecimalRoundedResult ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceFullEstimationResponse/estAudienceSize> ;
    sh:name "est audience size" ;
    sh:description "Monthly estimated reach user count with rounded results. Output only." ;
    sh:node microsoftads:AdInsightRangeResultOfDecimalRoundedResultShape ;
    sh:class microsoftads:AdInsightRangeResultOfDecimalRoundedResult ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceFullEstimationResponse/estClick> ;
    sh:name "est click" ;
    sh:description "Monthly estimated user count with range result. Output only." ;
    sh:node microsoftads:AdInsightRangeResultOfDecimalRoundedResultShape ;
    sh:class microsoftads:AdInsightRangeResultOfDecimalRoundedResult ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceFullEstimationResponse/estSpend> ;
    sh:name "est spend" ;
    sh:description "Monthly estimated spend with range result. Output only." ;
    sh:node microsoftads:AdInsightRangeResultOfDecimalRoundedResultShape ;
    sh:class microsoftads:AdInsightRangeResultOfDecimalRoundedResult ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceFullEstimationResponse/estCostPerEvent> ;
    sh:name "est cost per event" ;
    sh:description "Indicates the estimated cost per event. The field meaning varies with CampaignBiddingStrategy request field. Output only. EnhancedCPC: CPC ManualCPM: CPM" ;
    sh:node microsoftads:AdInsightRangeResultOfDecimalRoundedResultShape ;
    sh:class microsoftads:AdInsightRangeResultOfDecimalRoundedResult ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceFullEstimationResponse/estCPC> ;
    sh:name "est cpc" ;
    sh:description "Indicates the estimated cost per click." ;
    sh:node microsoftads:AdInsightRangeResultOfDecimalRoundedResultShape ;
    sh:class microsoftads:AdInsightRangeResultOfDecimalRoundedResult ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceFullEstimationResponse/estCTR> ;
    sh:name "est ctr" ;
    sh:description "Estimated click-through rate (CTR) with range result. Output only." ;
    sh:node microsoftads:AdInsightRangeResultOfdoubleShape ;
    sh:class microsoftads:AdInsightRangeResultOfdouble ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceFullEstimationResponse/suggestedBid> ;
    sh:name "suggested bid" ;
    sh:description "Suggested bid value under the current targeting. Output only." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceFullEstimationResponse/suggestedBudget> ;
    sh:name "suggested budget" ;
    sh:description "Suggested daily budget value under the current targeting and bid. Output only." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceFullEstimationResponse/eventsLostToBid> ;
    sh:name "events lost to bid" ;
    sh:description "Indicates event lost count due to insufficient input bid. The event lost type varies with CampaignBiddingStrategy request field. Output only. EnhancedCPC: Click ManualCPM: Impression" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceFullEstimationResponse/eventsLostToBudget> ;
    sh:name "events lost to budget" ;
    sh:description "Indicates the event lost count due to insufficient input budget. The event lost type varies with CampaignBiddingStrategy request field. Output only. EnhancedCPC: Click ManualCPM: Impression" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceFullEstimationResponse/estReachAudienceSize> ;
    sh:name "est reach audience size" ;
    sh:description "Monthly estimated user count with range result. Output only." ;
    sh:node microsoftads:AdInsightDecimalRoundedResultShape ;
    sh:class microsoftads:AdInsightDecimalRoundedResult ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceFullEstimationResponse/estReachImpression> ;
    sh:name "est reach impression" ;
    sh:description "Monthly estimated impression with range result. Output only." ;
    sh:node microsoftads:AdInsightDecimalRoundedResultShape ;
    sh:class microsoftads:AdInsightDecimalRoundedResult ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceFullEstimationResponse/currency> ;
    sh:name "currency" ;
    sh:description "The currency of DailyBudget and Bid. If null, the currency of account setting will be used. Add: Optional. The default value is null. Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "UnSpecify" "AustralianDollar" "BrazilianReal" "CanadianDollar" "SwissFranc" "DanishKrone" "EURO" "UKPound" "JapaneseYen" "NorwegianKrone" "NewZealandDollar" "SwedishKrona" "USDollar" "SouthAfricanRand" "ArgentinePeso" "ChileanPeso" "YuanRenminbi" "ColombianPeso" "CzechKoruna" "UAEDirham" "AlgerianDinar" "EgyptianPound" "HongKongDollar" "Forint" "Rupiah" "IsraeliSheqel" "IndianRupee" "Won" "LebanesePound" "MoroccanDirham" "MexicanPeso" "MalaysianRinggit" "NuevoSol" "PhilippinePeso" "PolishZloty" "QatariRial" "SaudiRiyal" "SingaporeDollar" "Baht" "NewTaiwanDollar" "Bolivar" "Dong" "TurkishLira" "NigerianNaira" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceFullEstimationResponse/estImpressionByType> ;
    sh:name "est impression by type" ;
    sh:description "The estimated impressions by type." ;
    sh:datatype rdf:JSON ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceFullEstimationResponse/estClickByType> ;
    sh:name "est click by type" ;
    sh:description "The estimated user count by type." ;
    sh:datatype rdf:JSON ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceFullEstimationResponse/estSpendByType> ;
    sh:name "est spend by type" ;
    sh:description "The estimated spend by type." ;
    sh:datatype rdf:JSON ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceFullEstimationResponse/estCostPerEventByType> ;
    sh:name "est cost per event by type" ;
    sh:description "The estimated cost per event by type." ;
    sh:datatype rdf:JSON ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceFullEstimationResponse/estCPCByType> ;
    sh:name "est cpcby type" ;
    sh:description "The estimated cost per click by type." ;
    sh:datatype rdf:JSON ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceFullEstimationResponse/estViewByType> ;
    sh:name "est view by type" ;
    sh:description "The estimated views by type." ;
    sh:datatype rdf:JSON ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceFullEstimationResponse/estCTRByType> ;
    sh:name "est ctrby type" ;
    sh:description "The estimated click-through rate by type." ;
    sh:datatype rdf:JSON ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAudienceFullEstimationResponse/estReachImpressionByType> ;
    sh:name "est reach impression by type" ;
    sh:description "The estimated reach of impressions by type." ;
    sh:datatype rdf:JSON ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Range Result Of Decimal Rounded Result
microsoftads:AdInsightRangeResultOfDecimalRoundedResultShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightRangeResultOfDecimalRoundedResult ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRangeResultOfDecimalRoundedResult/high> ;
    sh:name "high" ;
    sh:description "Indicates the upper bound of range result." ;
    sh:node microsoftads:AdInsightDecimalRoundedResultShape ;
    sh:class microsoftads:AdInsightDecimalRoundedResult ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRangeResultOfDecimalRoundedResult/low> ;
    sh:name "low" ;
    sh:description "Indicates the lower bound of range result." ;
    sh:node microsoftads:AdInsightDecimalRoundedResultShape ;
    sh:class microsoftads:AdInsightDecimalRoundedResult ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Range Result Ofdouble
microsoftads:AdInsightRangeResultOfdoubleShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightRangeResultOfdouble ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRangeResultOfdouble/high> ;
    sh:name "high" ;
    sh:description "Indicates the upper bound of range result." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRangeResultOfdouble/low> ;
    sh:name "low" ;
    sh:description "Indicates the lower bound of range result." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Get Auto Apply Opt In Status Request
microsoftads:AdInsightGetAutoApplyOptInStatusRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightGetAutoApplyOptInStatusRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAutoApplyOptInStatusRequest/recommendationTypesInputs> ;
    sh:name "recommendation types inputs" ;
    sh:description "Determines the type of recommendations that you want to get the auto-apply opt-in status for. Duplicated inputs are allowed in the same. This field includes the list of recommendation type (case sensitive) as below:ResponsiveSearchAdsOpportunityMultiMediaAdsOpportunityRemoveConflictingNegativeKeywordOpportunityFixConversionGoalSettingsOpportunityCreateConversionGoalOpportunity.You may specify a maximum of 100 input elements." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Ad Insight Get Auto Apply Opt In Status Response
microsoftads:AdInsightGetAutoApplyOptInStatusResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightGetAutoApplyOptInStatusResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetAutoApplyOptInStatusResponse/autoApplyRecommendationsStatus> ;
    sh:name "auto apply recommendations status" ;
    sh:description "An array of AutoApplyRecommendationsInfo object which identifies auto-apply opt-in status for the given recommendation types in the request." ;
    sh:node microsoftads:AdInsightAutoApplyRecommendationsInfoShape ;
    sh:class microsoftads:AdInsightAutoApplyRecommendationsInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Get Bid Landscape By Ad Group Ids Request
microsoftads:AdInsightGetBidLandscapeByAdGroupIdsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightGetBidLandscapeByAdGroupIdsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetBidLandscapeByAdGroupIdsRequest/adGroupBidLandscapeInputs> ;
    sh:name "ad group bid landscape inputs" ;
    sh:description "An array of ad group identifiers with corresponding bid landscape type input. A list of suggested bid values with estimated performance statistics will be returned for each input. You may specify a maximum of 1,000 input elements." ;
    sh:node microsoftads:AdInsightAdGroupBidLandscapeInputShape ;
    sh:class microsoftads:AdInsightAdGroupBidLandscapeInput ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Get Bid Landscape By Ad Group Ids Response
microsoftads:AdInsightGetBidLandscapeByAdGroupIdsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightGetBidLandscapeByAdGroupIdsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetBidLandscapeByAdGroupIdsResponse/bidLandscape> ;
    sh:name "bid landscape" ;
    sh:description "An array of AdGroupBidLandscape objects. The array contains a AdGroupBidLandscape corresponding to each ad group and bid landscape type input specified in the request. Duplicate input are allowed in the same call and will return the same results. If the specified input is invalid or has no associated data results, all elements within the AdGroupBidLandscape will be nil except the AdGroupId which reflects the ad group identifier specified in the request. If there is data available for the ad group, the AdGroupBidLandscape object will provide a list of suggested bids and estimated performance statistics." ;
    sh:node microsoftads:AdInsightAdGroupBidLandscapeShape ;
    sh:class microsoftads:AdInsightAdGroupBidLandscape ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Get Bid Landscape By Campaign Ids Request
microsoftads:AdInsightGetBidLandscapeByCampaignIdsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightGetBidLandscapeByCampaignIdsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetBidLandscapeByCampaignIdsRequest/campaignIds> ;
    sh:name "campaign ids" ;
    sh:description "The campaign identifiers." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Ad Insight Get Bid Landscape By Campaign Ids Response
microsoftads:AdInsightGetBidLandscapeByCampaignIdsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightGetBidLandscapeByCampaignIdsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetBidLandscapeByCampaignIdsResponse/bidLandscape> ;
    sh:name "bid landscape" ;
    sh:description "An array of CampaignBidLandscape objects. The array contains a CampaignBidLandscape corresponding to each campaign and bid landscape type input specified in the request. Duplicate input are allowed in the same call and will return the same results. If the specified input is invalid or has no associated data results, all elements within the CampaignBidLandscape will be nil except the CampaignId which reflects the campaign identifier specified in the request. If there is data available for the campaign, the CampaignBidLandscape object will provide a list of suggested bids and estimated performance statistics." ;
    sh:node microsoftads:AdInsightCampaignBidLandscapeShape ;
    sh:class microsoftads:AdInsightCampaignBidLandscape ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Get Bid Landscape By Keyword Ids Request
microsoftads:AdInsightGetBidLandscapeByKeywordIdsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightGetBidLandscapeByKeywordIdsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetBidLandscapeByKeywordIdsRequest/keywordIds> ;
    sh:name "keyword ids" ;
    sh:description "An array of identifiers of the keywords for which you want to get the list of suggested bid values with estimated performance statistics. You may specify a maximum of 1,000 keywords." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetBidLandscapeByKeywordIdsRequest/includeCurrentBid> ;
    sh:name "include current bid" ;
    sh:description "When set to false, the suggested bid values might not include the keyword's current bid. The default value is false. When set to true, one of the suggested bid values will be equal to the keyword's current bid." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Get Bid Landscape By Keyword Ids Response
microsoftads:AdInsightGetBidLandscapeByKeywordIdsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightGetBidLandscapeByKeywordIdsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetBidLandscapeByKeywordIdsResponse/bidLandscape> ;
    sh:name "bid landscape" ;
    sh:description "An array of KeywordBidLandscape objects. The array contains a KeywordBidLandscape corresponding to each keyword specified in the request. Duplicate keyword identifiers are allowed in the same call and will return the same results. If the specified keyword identifier is invalid or has no associated data results, all elements within the KeywordBidLandscape will be nil except the KeywordId which reflects the keyword identifier specified in the request. If there is data available for the keyword, the KeywordBidLandscape object will provide a list of suggested bids and estimated performance statistics." ;
    sh:node microsoftads:AdInsightKeywordBidLandscapeShape ;
    sh:class microsoftads:AdInsightKeywordBidLandscape ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Keyword Bid Landscape
microsoftads:AdInsightKeywordBidLandscapeShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightKeywordBidLandscape ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordBidLandscape/keywordId> ;
    sh:name "keyword id" ;
    sh:description "The keyword identifier." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordBidLandscape/startDate> ;
    sh:name "start date" ;
    sh:description "The first date used to calculate the bid landscape. The start date is usually seven days prior to the end date. The difference between the start and end dates could be less than seven if performance data is not available, for example with a new keyword." ;
    sh:node microsoftads:AdInsightDayMonthAndYearShape ;
    sh:class microsoftads:AdInsightDayMonthAndYear ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordBidLandscape/endDate> ;
    sh:name "end date" ;
    sh:description "The most recent date used to calculate the bid landscape. The end date should be approximately 2 days prior to today's date when the service is called." ;
    sh:node microsoftads:AdInsightDayMonthAndYearShape ;
    sh:class microsoftads:AdInsightDayMonthAndYear ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordBidLandscape/bidLandscapePoints> ;
    sh:name "bid landscape points" ;
    sh:description "The list of the total estimated clicks, cost, and impressions from StartDate to EndDate given the suggested bid." ;
    sh:node microsoftads:AdInsightBidLandscapePointShape ;
    sh:class microsoftads:AdInsightBidLandscapePoint ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Get Bid Opportunities Request
microsoftads:AdInsightGetBidOpportunitiesRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightGetBidOpportunitiesRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetBidOpportunitiesRequest/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "The identifier of the ad group for which you want to determine keyword bid opportunities. If this element is nil or empty, the operation will return all bid opportunities for the specified campaign." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetBidOpportunitiesRequest/campaignId> ;
    sh:name "campaign id" ;
    sh:description "The identifier of the campaign that owns the ad group specified in the AdGroupId element. If this element is nil or empty, then the AdGroupId must also be nil or empty, and the operation will return all bid opportunities for the account." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetBidOpportunitiesRequest/opportunityType> ;
    sh:name "opportunity type" ;
    sh:description "Determines the type or types of bid opportunities corresponding to your ad position goals. The operation will only return opportunities if there's a suggested increase within 100% of your current bid that will help you achieve the specified goal." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Get Bid Opportunities Response
microsoftads:AdInsightGetBidOpportunitiesResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightGetBidOpportunitiesResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetBidOpportunitiesResponse/opportunities> ;
    sh:name "opportunities" ;
    sh:description "An array of BidOpportunity objects that identifies the keywords whose clicks and impressions may increase if you were to apply the suggested match-type bid value. Currently up to 1,000 list items can be returned although the limit is subject to change." ;
    sh:node microsoftads:AdInsightBidOpportunityShape ;
    sh:class microsoftads:AdInsightBidOpportunity ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Get Budget Opportunities Request
microsoftads:AdInsightGetBudgetOpportunitiesRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightGetBudgetOpportunitiesRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetBudgetOpportunitiesRequest/campaignId> ;
    sh:name "campaign id" ;
    sh:description "The identifier of the campaign for which you want to discover possible campaign budget opportunities. If this element is nil or empty, then the operation will return all budget opportunities for the account." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Get Budget Opportunities Response
microsoftads:AdInsightGetBudgetOpportunitiesResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightGetBudgetOpportunitiesResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetBudgetOpportunitiesResponse/opportunities> ;
    sh:name "opportunities" ;
    sh:description "An array of BudgetOpportunity data objects that identify the campaigns whose clicks and impressions may increase if you were to apply the suggested budget. The list will not include opportunities for campaigns that are currently paused by the user. Currently up to 1,000 list items can be returned although the limit is subject to change." ;
    sh:node microsoftads:AdInsightBudgetOpportunityShape ;
    sh:class microsoftads:AdInsightBudgetOpportunity ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Get Domain Categories Request
microsoftads:AdInsightGetDomainCategoriesRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightGetDomainCategoriesRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetDomainCategoriesRequest/domainName> ;
    sh:name "domain name" ;
    sh:description "The website name corresponding to the pages you want your ads to target. The maximum length of the domain is 2,048 characters. You do not need to include the http, https, or www prefix." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetDomainCategoriesRequest/language> ;
    sh:name "language" ;
    sh:description "The language of the website domain. Currently only English is supported, so you must set this element to EN." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetDomainCategoriesRequest/categoryName> ;
    sh:name "category name" ;
    sh:description "The category name filter. If you already know one or more of the categories, then you can optionally filter the list of results by sub-category. Up to three category levels can be specified, and must be separated by a forward slash (\"/\"). For example you can format the filter as CategoryL1 / CategoryL2 / CategoryL3. If you do not include any category name, then all categories for the domain and language will be returned." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Get Domain Categories Response
microsoftads:AdInsightGetDomainCategoriesResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightGetDomainCategoriesResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetDomainCategoriesResponse/categories> ;
    sh:name "categories" ;
    sh:description "The list of domain categories." ;
    sh:node microsoftads:AdInsightDomainCategoryShape ;
    sh:class microsoftads:AdInsightDomainCategory ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Get Estimated Bid By Keyword Ids Request
microsoftads:AdInsightGetEstimatedBidByKeywordIdsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightGetEstimatedBidByKeywordIdsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetEstimatedBidByKeywordIdsRequest/keywordIds> ;
    sh:name "keyword ids" ;
    sh:description "An array of identifiers of the keywords for which you want to get the suggested bid values that could have resulted in your ad appearing in the targeted position in the search results. You may specify a maximum of 1,000 keywords." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetEstimatedBidByKeywordIdsRequest/targetPositionForAds> ;
    sh:name "target position for ads" ;
    sh:description "The position in which you want your ads to appear in the search results. The default value is MainLine1." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "MainLine1" "MainLine" "FirstPage" ) ;
  ] .

# Shape for Ad Insight Get Estimated Bid By Keyword Ids Response
microsoftads:AdInsightGetEstimatedBidByKeywordIdsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightGetEstimatedBidByKeywordIdsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetEstimatedBidByKeywordIdsResponse/keywordEstimatedBids> ;
    sh:name "keyword estimated bids" ;
    sh:description "An array of KeywordIdEstimatedBid data objects. The array contains a corresponding item for each keyword specified in the request. If the keyword ID is not valid, the corresponding item in the array will be null. Each KeywordIdEstimatedBid contains a keyword identifier and a KeywordEstimatedBid. If there is data available for the keyword, the KeywordEstimatedBid will provide a suggested bid value that could have resulted in an ad appearing in the targeted position of the search results. Otherwise, the KeywordEstimatedBid element will be set to null." ;
    sh:node microsoftads:AdInsightKeywordIdEstimatedBidShape ;
    sh:class microsoftads:AdInsightKeywordIdEstimatedBid ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Keyword Id Estimated Bid
microsoftads:AdInsightKeywordIdEstimatedBidShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightKeywordIdEstimatedBid ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordIdEstimatedBid/keywordId> ;
    sh:name "keyword id" ;
    sh:description "The identifier of the keyword to which the suggested bid applies." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordIdEstimatedBid/keywordEstimatedBid> ;
    sh:name "keyword estimated bid" ;
    sh:description "An object that contains the keyword string and the suggested bid value for each match type." ;
    sh:node microsoftads:AdInsightKeywordEstimatedBidShape ;
    sh:class microsoftads:AdInsightKeywordEstimatedBid ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Keyword Estimated Bid
microsoftads:AdInsightKeywordEstimatedBidShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightKeywordEstimatedBid ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordEstimatedBid/keyword> ;
    sh:name "keyword" ;
    sh:description "The keyword to which the estimates apply." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordEstimatedBid/estimatedBids> ;
    sh:name "estimated bids" ;
    sh:description "A list of EstimatedBidAndTraffic data objects that contains the suggested bid value for the keyword and match type. If there is data available for the keyword, the EstimatedBidAndTraffic object will provide an estimated bid value. Otherwise, if no data is available the EstimatedBids element will be null. Each object also contains estimates of clicks, average cost per click (CPC), impressions, click-through rate (CTR), and total cost given the suggested bid. If there is no data available for a match type, the array will not include estimates for the match type. Some returned elements of the EstimatedBidAndTraffic may be NULL." ;
    sh:node microsoftads:AdInsightEstimatedBidAndTrafficShape ;
    sh:class microsoftads:AdInsightEstimatedBidAndTraffic ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Get Estimated Bid By Keywords Request
microsoftads:AdInsightGetEstimatedBidByKeywordsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightGetEstimatedBidByKeywordsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetEstimatedBidByKeywordsRequest/keywords> ;
    sh:name "keywords" ;
    sh:description "A list of KeywordAndMatchType data objects for which you want to get suggested bid values. You may specify a maximum of 1,000 keywords, and each keyword can contain a maximum of 100 characters." ;
    sh:node microsoftads:AdInsightKeywordAndMatchTypeShape ;
    sh:class microsoftads:AdInsightKeywordAndMatchType ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetEstimatedBidByKeywordsRequest/targetPositionForAds> ;
    sh:name "target position for ads" ;
    sh:description "The position where you want your ads to appear in the search results. The default value is MainLine1." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "MainLine1" "MainLine" "FirstPage" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetEstimatedBidByKeywordsRequest/language> ;
    sh:name "language" ;
    sh:description "The language used in parallel with location identifiers for estimating the bids. The language must be supported in each of the locations that you specify in LocationIds. For possible language values, see Ad Languages. If you do not specify the language, the service operation uses the language of the specified AdGroupId or CampaignId. If none of these properties are set, then EN (English) is used by default." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetEstimatedBidByKeywordsRequest/locationIds> ;
    sh:name "location ids" ;
    sh:description "The identifier or identifiers of the geographical locations to use for estimating the bids. All of the locations must support the language specified in the Language element. Although you can specify multiple location identifiers, as a best practice for the most accurate bid estimates per location, you should specify only one location per service call. For possible location identifiers, see Geographical Location Codes. If you do not specify any locations, the service operation uses the location criterions of the specified AdGroupId or CampaignId. If none of these properties are set, then 190 (United States) is used by default." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetEstimatedBidByKeywordsRequest/currencyCode> ;
    sh:name "currency code" ;
    sh:description "The ISO code for the monetary unit to use to calculate the cost estimates and suggested bid value. If not set, the service determines the currency from the account specified in the CustomerAccountId header element. If neither Currency or CustomerAccountId is set, the service uses USD." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "AED" "ALL" "AMD" "ARS" "AUD" "AZM" "BGL" "BHD" "BND" "BOB" "BRL" "BYB" "BZD" "CAD" "CHF" "CLP" "CNY" "COP" "CRC" "CZK" "DOP" "DKK" "DZD" "EEK" "EGP" "EUR" "GBP" "GEL" "GTQ" "HKD" "HNL" "HRK" "HUF" "IDR" "ILS" "INR" "IQD" "IRR" "ISK" "JMD" "JOD" "JPY" "KES" "KGS" "KRW" "KWD" "KZT" "LBP" "LTL" "LVL" "LYD" "MAD" "MKD" "MOP" "MNT" "MVR" "MXN" "MYR" "NIO" "NOK" "NZD" "OMR" "PAB" "PEN" "PHP" "PKR" "PLN" "PYG" "QAR" "ROL" "RUR" "SAR" "SEK" "SGD" "SIT" "SKK" "SYP" "THB" "TND" "TRY" "TTD" "TWD" "UAH" "USD" "UYU" "UZS" "VEF" "YER" "VND" "YUN" "ZAR" "ZWD" "UNSPECIFY" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetEstimatedBidByKeywordsRequest/campaignId> ;
    sh:name "campaign id" ;
    sh:description "The identifier of the campaign that owns the ad group specified in AdGroupId. If you do not specify an ad group, the campaign's performance data is used to help determine how well the keyword might perform in the context of the campaign. Specifying a campaign and ad group helps improve the accuracy of the suggested bid. If neither AdGroupId or CampaignId are specified, the operation uses the specified CustomerAccountId header element to help determine how well the keyword might perform in the context of the account." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetEstimatedBidByKeywordsRequest/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "The identifier of the ad group whose performance data is used to help determine how well the keyword might perform in the context of the ad group. Specifying an ad group helps improve the accuracy of the suggested bid. If you specify an ad group, you must specify the campaign that it belongs to." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetEstimatedBidByKeywordsRequest/entityLevelBid> ;
    sh:name "entity level bid" ;
    sh:description "Determines whether to return estimates for keyword level bids, ad group level bids, or both. - Set EntityLevelBid to Keyword to get an array of KeywordEstimatedBid corresponding to the specified keywords. - Set EntityLevelBid to AdGroup to get one EstimatedBidAndTraffic for the specified ad group. - Set EntityLevelBid to AllEntities to get an array of KeywordEstimatedBid for keywords and one EstimatedBidAndTraffic for an ad group. If you do not set EntityLevelBid, the default is to return only an array of KeywordEstimatedBid, or the equivalent of setting EntityLevelBid to Keyword. If you set EntityLevelBid to any value other thanKeyword, AdGroup, or AllEntities, the service will return Code 3501 with ErrorCode CampaignServiceBidLevelInvalid." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Keyword And Match Type
microsoftads:AdInsightKeywordAndMatchTypeShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightKeywordAndMatchType ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordAndMatchType/keywordText> ;
    sh:name "keyword text" ;
    sh:description "The keyword text." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordAndMatchType/matchTypes> ;
    sh:name "match types" ;
    sh:description "The corresponding match types for the keyword." ;
    sh:datatype xsd:string ;
    sh:in ( "Exact" "Phrase" "Broad" "Aggregate" ) ;
  ] .

# Shape for Ad Insight Get Estimated Bid By Keywords Response
microsoftads:AdInsightGetEstimatedBidByKeywordsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightGetEstimatedBidByKeywordsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetEstimatedBidByKeywordsResponse/keywordEstimatedBids> ;
    sh:name "keyword estimated bids" ;
    sh:description "An array of KeywordEstimatedBid data objects. The array contains an item for each keyword specified in the request. If the keyword is not valid, the corresponding item in the array will be null. Each KeywordEstimatedBid contains a keyword and EstimatedPositions element. If data is available for the keyword, the EstimatedPositionAndTraffic will provide the suggested bid value that could have resulted in an ad appearing in the targeted position of the search results. Otherwise, the EstimatedPositions element will be set to null." ;
    sh:node microsoftads:AdInsightKeywordEstimatedBidShape ;
    sh:class microsoftads:AdInsightKeywordEstimatedBid ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetEstimatedBidByKeywordsResponse/adGroupEstimatedBid> ;
    sh:name "ad group estimated bid" ;
    sh:description "Contains estimates of clicks, average cost per click (CPC), impressions, click-through rate (CTR), and total cost for the specified ad group if you would use the suggested bid. The MatchType value within the EstimatedBidAndTraffic will always be Aggregate. In this context, it represents the default search bid for an ad group." ;
    sh:node microsoftads:AdInsightEstimatedBidAndTrafficShape ;
    sh:class microsoftads:AdInsightEstimatedBidAndTraffic ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Get Estimated Position By Keyword Ids Request
microsoftads:AdInsightGetEstimatedPositionByKeywordIdsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightGetEstimatedPositionByKeywordIdsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetEstimatedPositionByKeywordIdsRequest/keywordIds> ;
    sh:name "keyword ids" ;
    sh:description "An array of identifiers of the keywords for which you want to get the estimated position in the search results, based on the specified bid value. You may specify a maximum of 1,000 keyword identifiers." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetEstimatedPositionByKeywordIdsRequest/maxBid> ;
    sh:name "max bid" ;
    sh:description "The maximum bid value to use to determine the estimated position in the search results. You must specify the bid value in the currency of the account." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Get Estimated Position By Keyword Ids Response
microsoftads:AdInsightGetEstimatedPositionByKeywordIdsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightGetEstimatedPositionByKeywordIdsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetEstimatedPositionByKeywordIdsResponse/keywordEstimatedPositions> ;
    sh:name "keyword estimated positions" ;
    sh:description "A list of KeywordIdEstimatedPosition data objects. The array contains an item for each keyword specified in the request. If the keyword ID is not valid, the corresponding item in the array will be null. Each KeywordIdEstimatedPosition contains a keyword identifier and a KeywordEstimatedPosition. If data is available for the keyword, the EstimatedPositionAndTraffic will provide the estimated position in the search results, based on the specified bid value. Otherwise, the EstimatedPositions element will be set to null." ;
    sh:node microsoftads:AdInsightKeywordIdEstimatedPositionShape ;
    sh:class microsoftads:AdInsightKeywordIdEstimatedPosition ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Keyword Id Estimated Position
microsoftads:AdInsightKeywordIdEstimatedPositionShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightKeywordIdEstimatedPosition ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordIdEstimatedPosition/keywordId> ;
    sh:name "keyword id" ;
    sh:description "The identifier of the keyword to which the estimated position applies." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordIdEstimatedPosition/keywordEstimatedPosition> ;
    sh:name "keyword estimated position" ;
    sh:description "An object that contains the keyword string and estimated position in the search results given the specified maximum bid." ;
    sh:node microsoftads:AdInsightKeywordEstimatedPositionShape ;
    sh:class microsoftads:AdInsightKeywordEstimatedPosition ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Keyword Estimated Position
microsoftads:AdInsightKeywordEstimatedPositionShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightKeywordEstimatedPosition ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordEstimatedPosition/keyword> ;
    sh:name "keyword" ;
    sh:description "The keyword to which the estimates apply." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordEstimatedPosition/estimatedPositions> ;
    sh:name "estimated positions" ;
    sh:description "An array of EstimatedPositionAndTraffic data objects that contains the position in the search results corresponding to the specified maximum bid. Each object also contains estimates of clicks, average cost per click (CPC), impressions, click-through rate (CTR), and total cost given the specified bid. If there is no data available for a match type, the array will not include estimates for the match type." ;
    sh:node microsoftads:AdInsightEstimatedPositionAndTrafficShape ;
    sh:class microsoftads:AdInsightEstimatedPositionAndTraffic ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Get Estimated Position By Keywords Request
microsoftads:AdInsightGetEstimatedPositionByKeywordsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightGetEstimatedPositionByKeywordsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetEstimatedPositionByKeywordsRequest/keywords> ;
    sh:name "keywords" ;
    sh:description "An array of keywords for which you want to get the estimated position in the search results, based on the specified bid value. You may specify a maximum of 1,000 keywords and each keyword can contains a maximum of 100 characters." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetEstimatedPositionByKeywordsRequest/maxBid> ;
    sh:name "max bid" ;
    sh:description "The maximum bid value to use to determine the estimated position in the search results." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetEstimatedPositionByKeywordsRequest/language> ;
    sh:name "language" ;
    sh:description "The language used in parallel with location identifiers for estimating the position. The language must be supported in each of the locations that you specify in LocationIds. For possible language values, see Ad Languages. If you do not specify the language, the service operation uses the language of the specified AdGroupId or CampaignId. If none of these properties are set, then EN (English) is used by default." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetEstimatedPositionByKeywordsRequest/locationIds> ;
    sh:name "location ids" ;
    sh:description "The identifier or identifiers of the geographical locations to use for estimating the position. All of the locations must support the language specified in the Language element. Although you can specify multiple location identifiers, as a best practice for the most accurate position estimates per location, you should specify only one location per service call. For possible location identifiers, see Geographical Location Codes. If you do not specify any locations, the service operation uses the location criterions of the specified AdGroupId or CampaignId. If none of these properties are set, then 190 (United States) is used by default." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetEstimatedPositionByKeywordsRequest/currencyCode> ;
    sh:name "currency code" ;
    sh:description "The ISO code for the monetary unit to use to calculate the cost estimates and suggested bid value. If not set, the service determines the currency from the account specified in the CustomerAccountId header element. If neither Currency or CustomerAccountId is set, the service uses USD." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "AED" "ALL" "AMD" "ARS" "AUD" "AZM" "BGL" "BHD" "BND" "BOB" "BRL" "BYB" "BZD" "CAD" "CHF" "CLP" "CNY" "COP" "CRC" "CZK" "DOP" "DKK" "DZD" "EEK" "EGP" "EUR" "GBP" "GEL" "GTQ" "HKD" "HNL" "HRK" "HUF" "IDR" "ILS" "INR" "IQD" "IRR" "ISK" "JMD" "JOD" "JPY" "KES" "KGS" "KRW" "KWD" "KZT" "LBP" "LTL" "LVL" "LYD" "MAD" "MKD" "MOP" "MNT" "MVR" "MXN" "MYR" "NIO" "NOK" "NZD" "OMR" "PAB" "PEN" "PHP" "PKR" "PLN" "PYG" "QAR" "ROL" "RUR" "SAR" "SEK" "SGD" "SIT" "SKK" "SYP" "THB" "TND" "TRY" "TTD" "TWD" "UAH" "USD" "UYU" "UZS" "VEF" "YER" "VND" "YUN" "ZAR" "ZWD" "UNSPECIFY" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetEstimatedPositionByKeywordsRequest/matchTypes> ;
    sh:name "match types" ;
    sh:description "An array of unique match types for which you want to get estimates. You may not specify the Content match type." ;
    sh:datatype xsd:string ;
    sh:in ( "Exact" "Phrase" "Broad" "Aggregate" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetEstimatedPositionByKeywordsRequest/campaignId> ;
    sh:name "campaign id" ;
    sh:description "The identifier of the campaign that owns the ad group specified in AdGroupId. If you do not specify an ad group, the campaign's performance data is used to help determine how well the keyword might perform in the context of the campaign. Specifying a campaign and ad group helps improve the accuracy of the suggested position. If neither AdGroupId or CampaignId are specified, the operation uses the specified CustomerAccountId header element to help determine how well the keyword might perform in the context of the account." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetEstimatedPositionByKeywordsRequest/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "The identifier of the ad group whose performance data is used to help determine how well the keyword might perform in the context of the ad group. Specifying an ad group helps improve the accuracy of the suggested position. If you specify an ad group, you must specify the campaign that it belongs to." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Get Estimated Position By Keywords Response
microsoftads:AdInsightGetEstimatedPositionByKeywordsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightGetEstimatedPositionByKeywordsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetEstimatedPositionByKeywordsResponse/keywordEstimatedPositions> ;
    sh:name "keyword estimated positions" ;
    sh:description "An array of KeywordEstimatedPosition data objects. The array contains an item for each keyword specified in the request. If the keyword is not valid, the corresponding item in the array will be null. If data is available for the keyword, the EstimatedPositionAndTraffic will provide the estimated position in the search results where your ads could appear, based on the specified bid value. Otherwise, the EstimatedPositions element will be set to null." ;
    sh:node microsoftads:AdInsightKeywordEstimatedPositionShape ;
    sh:class microsoftads:AdInsightKeywordEstimatedPosition ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Get Historical Keyword Performance Request
microsoftads:AdInsightGetHistoricalKeywordPerformanceRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightGetHistoricalKeywordPerformanceRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetHistoricalKeywordPerformanceRequest/keywords> ;
    sh:name "keywords" ;
    sh:description "An array of keywords for which you want to get historical performance statistics. The array can contain a maximum of 1,000 keywords, and each keyword can contain a maximum of 100 characters." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetHistoricalKeywordPerformanceRequest/timeInterval> ;
    sh:name "time interval" ;
    sh:description "The time period that identifies the data to use to determine the key performance index of the specified keywords. For example, use data from the previous seven days or previous 30 days to determine the keyword performance. The default value is LastDay." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "LastMonth" "LastWeek" "LastDay" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetHistoricalKeywordPerformanceRequest/targetAdPosition> ;
    sh:name "target ad position" ;
    sh:description "The position of the search results for which you want to get performance data. For example, to get performance data when ads appeared in the first position of the mainline by using the keyword and match type, set this element to MainLine1. To get performance data when ads appeared in any position of the search results by using the keyword and match type, set this element to All. The default value is All. If you specify All for this element, the service will return multiple results per keyword for each supported ad position. If you specify Aggregate, the service will return one aggregated result. Sidebar ads no longer serve on Bing owned and operated sites in the United States. If you only request first page data e.g., FirstPage1 for the United States (US), then the KeywordKPIs element in the result will be nil/empty. If you include additional countries/regions e.g., US and CA in the same request, then any first page results are only attributed to countries/regions outside the United States." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "All" "MainLine1" "MainLine2" "MainLine3" "MainLine4" "FirstPage1" "FirstPage2" "FirstPage3" "FirstPage4" "FirstPage5" "FirstPage6" "FirstPage7" "FirstPage8" "FirstPage9" "FirstPage10" "Aggregate" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetHistoricalKeywordPerformanceRequest/matchTypes> ;
    sh:name "match types" ;
    sh:description "The match types for which you want to get historical data. You may not specify the Content match type." ;
    sh:datatype xsd:string ;
    sh:in ( "Exact" "Phrase" "Broad" "Aggregate" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetHistoricalKeywordPerformanceRequest/language> ;
    sh:name "language" ;
    sh:description "The language in which the keywords are written. The countries/regions that you specify in the PublisherCountries element must support the specified language. Possible values include Danish, Dutch, English, Finnish, French, German, Italian, Norwegian, Portuguese, Spanish, Swedish, and TraditionalChinese." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetHistoricalKeywordPerformanceRequest/publisherCountries> ;
    sh:name "publisher countries" ;
    sh:description "The country codes of the countries/regions to use as the source of the historical data. You can specify one or more country codes. Each country/region that you specify must support the language specified in the Language element. The following language and country/region combinations are supported: Danish: DK Dutch: NL English: AU, CA, GB, ID, IN, MY, PH, SG, TH, US, VN Finnish: FI French: CA, FR German: AT, CH, DE Italian: IT Norwegian: NB Portuguese: BR Spanish: AR, CL, CO, ES, MX, PE, VE Swedish: SE TraditionalChinese: HK, TW If this element is null, then by default the service includes all countries/regions that support the specified language." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetHistoricalKeywordPerformanceRequest/devices> ;
    sh:name "devices" ;
    sh:description "A list of one or more of the following device types: Computers, NonSmartphones, Smartphones, Tablets. The default is Computers. The response includes keyword performance data for the device types that you specify only, if available. Used to determine a keyword's performance on the specified device types." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Ad Insight Get Historical Keyword Performance Response
microsoftads:AdInsightGetHistoricalKeywordPerformanceResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightGetHistoricalKeywordPerformanceResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetHistoricalKeywordPerformanceResponse/keywordHistoricalPerformances> ;
    sh:name "keyword historical performances" ;
    sh:description "An array of KeywordHistoricalPerformance data objects. The array contains an item for each keyword, device, match type, and ad position specified in the request. If the keyword is not valid or has no data available, the corresponding item in the array will be null." ;
    sh:node microsoftads:AdInsightKeywordHistoricalPerformanceShape ;
    sh:class microsoftads:AdInsightKeywordHistoricalPerformance ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Keyword Historical Performance
microsoftads:AdInsightKeywordHistoricalPerformanceShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightKeywordHistoricalPerformance ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordHistoricalPerformance/keyword> ;
    sh:name "keyword" ;
    sh:description "The keyword to which the keyword performance data applies." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordHistoricalPerformance/keywordKPIs> ;
    sh:name "keyword kpis" ;
    sh:description "An array of KeywordKPI objects that contains the performance data. For each requested keyword that has no available data, the KeywordKPI element will be nil. If the request specified a specific target position, the array will contain only one item per requested keyword. If the request specified All for the target position, then for each requested keyword the array will contain an item for each possible position in the search results. Sidebar ads no longer serve on Bing owned and operated sites in the United States. If you only request first page data e.g., FirstPage1 for the United States (US), then this element will be nil/empty. If you include additional countries/regions e.g., US and CA in the same request, then any first page results are only attributed to countries/regions outside the United States." ;
    sh:node microsoftads:AdInsightKeywordKPIShape ;
    sh:class microsoftads:AdInsightKeywordKPI ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Keyword Kpi
microsoftads:AdInsightKeywordKPIShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightKeywordKPI ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordKPI/device> ;
    sh:name "device" ;
    sh:description "The device where the ad appeared." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordKPI/matchType> ;
    sh:name "match type" ;
    sh:description "The match type that you specified in the request." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Exact" "Phrase" "Broad" "Aggregate" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordKPI/adPosition> ;
    sh:name "ad position" ;
    sh:description "The position in the search results in which the ad appeared." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "All" "MainLine1" "MainLine2" "MainLine3" "MainLine4" "FirstPage1" "FirstPage2" "FirstPage3" "FirstPage4" "FirstPage5" "FirstPage6" "FirstPage7" "FirstPage8" "FirstPage9" "FirstPage10" "Aggregate" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordKPI/clicks> ;
    sh:name "clicks" ;
    sh:description "The number of clicks that the keyword and match type generated during the specified time interval." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordKPI/impressions> ;
    sh:name "impressions" ;
    sh:description "The number of impressions that the keyword and match type generated during the specified time interval." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordKPI/averageCPC> ;
    sh:name "average cpc" ;
    sh:description "The average cost per click (CPC). The average CPC is calculated by dividing the cost of all clicks by the number of clicks." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordKPI/cTR> ;
    sh:name "c tr" ;
    sh:description "The click-through rate (CTR) as a percentage. The CTR is calculated by dividing the number of clicks by the number of impressions and multiplying the result by 100." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordKPI/totalCost> ;
    sh:name "total cost" ;
    sh:description "The cost of using the specified keyword and match type during the specified time interval. The service determines the currency from the account specified in the CustomerAccountId header element. If CustomerAccountId is not set, the service uses USDollar." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordKPI/averageBid> ;
    sh:name "average bid" ;
    sh:description "The average bid of the keyword." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Get Historical Search Count Request
microsoftads:AdInsightGetHistoricalSearchCountRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightGetHistoricalSearchCountRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetHistoricalSearchCountRequest/keywords> ;
    sh:name "keywords" ;
    sh:description "An array of keywords for which you want to determine the number of times that the keyword was used in a search query. The array can contain a maximum of 1,000 keywords, and each keyword can contain a maximum of 100 characters." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetHistoricalSearchCountRequest/language> ;
    sh:name "language" ;
    sh:description "The language in which the keywords are written. The countries/regions that you specify in the PublisherCountries element must support the specified language. For possible values, see Supported Languages." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetHistoricalSearchCountRequest/publisherCountries> ;
    sh:name "publisher countries" ;
    sh:description "The country codes of the countries/regions to use as the source of the historical data. You can specify one or more country codes. Each country/region that you specify must support the language specified in the Language element. For possible values, see Ad Languages. If Null, the default is all countries/regions that support the specified language." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetHistoricalSearchCountRequest/startDate> ;
    sh:name "start date" ;
    sh:description "The start date of the date range that identifies the data that you want to use to determine the historical search count. This date must be earlier than or the same as the specified end date. The date should be later than the maximum available historical data range corresponding to the specified TimePeriodRollup element. The effective start date may be adjusted if the specified TimePeriodRollup is Weekly or Monthly." ;
    sh:node microsoftads:AdInsightDayMonthAndYearShape ;
    sh:class microsoftads:AdInsightDayMonthAndYear ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetHistoricalSearchCountRequest/endDate> ;
    sh:name "end date" ;
    sh:description "The end date of the date range that identifies the data that you want to use to determine the historical search count. The date cannot be later than today's date, and must be later than or the same as the specified start date. The effective end date may be adjusted if the specified TimePeriodRollup is Weekly or Monthly." ;
    sh:node microsoftads:AdInsightDayMonthAndYearShape ;
    sh:class microsoftads:AdInsightDayMonthAndYear ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetHistoricalSearchCountRequest/timePeriodRollup> ;
    sh:name "time period rollup" ;
    sh:description "You may specify whether to return data aggregated daily, weekly, or monthly. For a list of supported values, see the Remarks section below." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetHistoricalSearchCountRequest/devices> ;
    sh:name "devices" ;
    sh:description "A list of one or more of the following device types: Computers, NonSmartphones, Smartphones, Tablets. The default is Computers. The response includes search counts for the device types that you specify only, if available." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Ad Insight Get Historical Search Count Response
microsoftads:AdInsightGetHistoricalSearchCountResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightGetHistoricalSearchCountResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetHistoricalSearchCountResponse/keywordSearchCounts> ;
    sh:name "keyword search counts" ;
    sh:description "An array of KeywordSearchCount data objects. The array contains an item for each keyword specified in the request. If the keyword is not valid, the corresponding item in the array will be null. Each KeywordSearchCount contains an array of SearchCountsByAttributes. The array contains an item for each unique device specified in the request." ;
    sh:node microsoftads:AdInsightKeywordSearchCountShape ;
    sh:class microsoftads:AdInsightKeywordSearchCount ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Keyword Search Count
microsoftads:AdInsightKeywordSearchCountShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightKeywordSearchCount ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordSearchCount/keyword> ;
    sh:name "keyword" ;
    sh:description "The keyword to which the search count data applies." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordSearchCount/searchCountsByAttributes> ;
    sh:name "search counts by attributes" ;
    sh:description "An array of SearchCountsByAttributes objects that contain search counts for each device and network where the keyword was included in a search query. For each requested keyword that has no available data, the SearchCountsByAttributes element will be nil." ;
    sh:node microsoftads:AdInsightSearchCountsByAttributesShape ;
    sh:class microsoftads:AdInsightSearchCountsByAttributes ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Search Counts By Attributes
microsoftads:AdInsightSearchCountsByAttributesShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightSearchCountsByAttributes ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSearchCountsByAttributes/device> ;
    sh:name "device" ;
    sh:description "The device of the user who entered the search query." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSearchCountsByAttributes/historicalSearchCounts> ;
    sh:name "historical search counts" ;
    sh:description "An array of HistoricalSearchCountPeriodic objects that contain a count of the number of times that the keyword was used in a search query. The array contains an item for each month in the specified date range. The items are ordered by calendar month. For each requested keyword that has no available data, the HistoricalSearchCountPeriodic element will be nil." ;
    sh:node microsoftads:AdInsightHistoricalSearchCountPeriodicShape ;
    sh:class microsoftads:AdInsightHistoricalSearchCountPeriodic ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Historical Search Count Periodic
microsoftads:AdInsightHistoricalSearchCountPeriodicShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightHistoricalSearchCountPeriodic ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightHistoricalSearchCountPeriodic/searchCount> ;
    sh:name "search count" ;
    sh:description "The number of times that the keyword was used in a search query on the specified device type during the time period. The count aggregates data from all specified countries or regions." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightHistoricalSearchCountPeriodic/dayMonthAndYear> ;
    sh:name "day month and year" ;
    sh:description "The time period in which the count was captured. The type of aggregation (daily, weekly, or monthly) that you specify in the request determines the length of the time period. For example, if you specified weekly aggregation, the time period is a week and the date is the Sunday of the week when the count was captured." ;
    sh:node microsoftads:AdInsightDayMonthAndYearShape ;
    sh:class microsoftads:AdInsightDayMonthAndYear ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Get Keyword Categories Request
microsoftads:AdInsightGetKeywordCategoriesRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightGetKeywordCategoriesRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetKeywordCategoriesRequest/keywords> ;
    sh:name "keywords" ;
    sh:description "An array of keywords for which you want to determine the possible keyword categories that each keyword belongs to. The array can contain a maximum of 1,000 keywords, and each keyword can contain a maximum of 100 characters." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetKeywordCategoriesRequest/language> ;
    sh:name "language" ;
    sh:description "The language in which the keywords are written. You must set this element to English." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetKeywordCategoriesRequest/publisherCountry> ;
    sh:name "publisher country" ;
    sh:description "The country code of the country/region to use as the source of the category data. You must set this element to US." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetKeywordCategoriesRequest/maxCategories> ;
    sh:name "max categories" ;
    sh:description "The number of categories to include in the results. The maximum number of categories that you can request is 5. The default is 5." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Get Keyword Categories Response
microsoftads:AdInsightGetKeywordCategoriesResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightGetKeywordCategoriesResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetKeywordCategoriesResponse/result> ;
    sh:name "result" ;
    sh:description "An array of KeywordCategoryResult data objects. Each object contains the keyword and a list of categories to which it belongs. The list will include an item for each keyword that you specified in the request. If the keyword category cannot be determined, the KeywordCategories list will contain a single KeywordCategory. The value of Category will be Unknown Category and the value of ConfidenceScore will be 0.0." ;
    sh:node microsoftads:AdInsightKeywordCategoryResultShape ;
    sh:class microsoftads:AdInsightKeywordCategoryResult ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Keyword Category Result
microsoftads:AdInsightKeywordCategoryResultShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightKeywordCategoryResult ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordCategoryResult/keyword> ;
    sh:name "keyword" ;
    sh:description "The keyword being categorized." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordCategoryResult/keywordCategories> ;
    sh:name "keyword categories" ;
    sh:description "An array of KeywordCategory objects that contains a keyword category and a score that indicates the confidence that the keyword belongs to that keyword category." ;
    sh:node microsoftads:AdInsightKeywordCategoryShape ;
    sh:class microsoftads:AdInsightKeywordCategory ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Keyword Category
microsoftads:AdInsightKeywordCategoryShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightKeywordCategory ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordCategory/category> ;
    sh:name "category" ;
    sh:description "The keyword category that the keyword might belong to. If the category is undetermined, this element is set to Unknown Category and the ConfidenceScore element is set to 0.0." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordCategory/confidenceScore> ;
    sh:name "confidence score" ;
    sh:description "A score from 0.0 to 1.0 that indicates the likelihood that the keyword belongs to the category." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Get Keyword Demographics Request
microsoftads:AdInsightGetKeywordDemographicsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightGetKeywordDemographicsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetKeywordDemographicsRequest/keywords> ;
    sh:name "keywords" ;
    sh:description "An array of keywords for which you want to get demographics data. The data is also broken out by device type. The array can contain a maximum of 1,000 keywords, and each keyword can contain a maximum of 100 characters." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetKeywordDemographicsRequest/language> ;
    sh:name "language" ;
    sh:description "The language in which the keywords are written. For possible values, see Ad Languages." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetKeywordDemographicsRequest/publisherCountry> ;
    sh:name "publisher country" ;
    sh:description "The country code of the country/region to use as the source of the demographics data. The country/region that you specify must support the language specified in the Language element. For possible values, see Ad Languages." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetKeywordDemographicsRequest/device> ;
    sh:name "device" ;
    sh:description "An array of devices for which you want to get demographics data. Supported device types include the following: Computers, NonSmartphones, Smartphones, Tablets. The default is Computers. If available the response only includes keyword demographics data for the device types that you specify." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Ad Insight Get Keyword Demographics Response
microsoftads:AdInsightGetKeywordDemographicsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightGetKeywordDemographicsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetKeywordDemographicsResponse/keywordDemographicResult> ;
    sh:name "keyword demographic result" ;
    sh:description "An array of KeywordDemographicResult data objects. The order of the items corresponds directly to the keywords specified in the request. If there is no demographic data available for a keyword, the keyword will be included in the list, but the KeywordDemographics element of the corresponding KeywordDemographicResult will be null. Each KeywordDemographicResult contains an array of KeywordDemographic data objects. The array contains an item for each device specified in the request. Each KeywordDemographic contains the percentage of time that users of a certain age and gender searched for the specified keyword." ;
    sh:node microsoftads:AdInsightKeywordDemographicResultShape ;
    sh:class microsoftads:AdInsightKeywordDemographicResult ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Keyword Demographic Result
microsoftads:AdInsightKeywordDemographicResultShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightKeywordDemographicResult ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordDemographicResult/keyword> ;
    sh:name "keyword" ;
    sh:description "The keyword." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordDemographicResult/keywordDemographics> ;
    sh:name "keyword demographics" ;
    sh:description "An array of KeywordDemographic data objects that contains the percentage of users by age and gender (if known) that searched for the keyword on the device." ;
    sh:node microsoftads:AdInsightKeywordDemographicShape ;
    sh:class microsoftads:AdInsightKeywordDemographic ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Keyword Demographic
microsoftads:AdInsightKeywordDemographicShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightKeywordDemographic ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordDemographic/device> ;
    sh:name "device" ;
    sh:description "The device of the user who entered the search query." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordDemographic/eighteenToTwentyFour> ;
    sh:name "eighteen to twenty four" ;
    sh:description "The percentage of time that users 18 through 24 years of age searched for the keyword. The value is specified in the range 0.0 through 1.0." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordDemographic/twentyFiveToThirtyFour> ;
    sh:name "twenty five to thirty four" ;
    sh:description "The percentage of time that users 25 through 34 years of age searched for the keyword. The value is specified in the range 0.0 through 1.0." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordDemographic/thirtyFiveToFourtyNine> ;
    sh:name "thirty five to fourty nine" ;
    sh:description "The percentage of time that users 35 through 49 years of age searched for the keyword. The value is specified in the range 0.0 through 1.0." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordDemographic/fiftyToSixtyFour> ;
    sh:name "fifty to sixty four" ;
    sh:description "The percentage of time that users 50 through 64 years of age searched for the keyword. The value is specified in the range 0.0 through 1.0." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordDemographic/sixtyFiveAndAbove> ;
    sh:name "sixty five and above" ;
    sh:description "The percentage of time that users 65 years of age or older searched for the keyword. The value is specified in the range 0.0 through 1.0." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordDemographic/ageUnknown> ;
    sh:name "age unknown" ;
    sh:description "Not used." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordDemographic/female> ;
    sh:name "female" ;
    sh:description "The percentage of time that female users searched for the keyword. The value is specified in the range 0.0 through 1.0." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordDemographic/male> ;
    sh:name "male" ;
    sh:description "The percentage of time that male users searched for the keyword. The value is specified in the range 0.0 through 1.0." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordDemographic/genderUnknown> ;
    sh:name "gender unknown" ;
    sh:description "Not Used." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Get Keyword Idea Categories Response
microsoftads:AdInsightGetKeywordIdeaCategoriesResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightGetKeywordIdeaCategoriesResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetKeywordIdeaCategoriesResponse/keywordIdeaCategories> ;
    sh:name "keyword idea categories" ;
    sh:description "The list of keyword idea categories." ;
    sh:node microsoftads:AdInsightKeywordIdeaCategoryShape ;
    sh:class microsoftads:AdInsightKeywordIdeaCategory ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Keyword Idea Category
microsoftads:AdInsightKeywordIdeaCategoryShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightKeywordIdeaCategory ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordIdeaCategory/categoryId> ;
    sh:name "category id" ;
    sh:description "The Microsoft Advertising identifier of the keyword idea category." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordIdeaCategory/categoryName> ;
    sh:name "category name" ;
    sh:description "The name of the keyword idea category." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Get Keyword Ideas Request
microsoftads:AdInsightGetKeywordIdeasRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightGetKeywordIdeasRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetKeywordIdeasRequest/expandIdeas> ;
    sh:name "expand ideas" ;
    sh:description "Determines whether you want new keyword ideas, or if you only want keyword attributes for the set of keywords that you specified in the SearchParameters list. If you set this element false, the QuerySearchParameter object must be included in the SearchParameters list." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetKeywordIdeasRequest/ideaAttributes> ;
    sh:name "idea attributes" ;
    sh:description "The keyword idea attributes that you want included in the response e.g., Keyword, Competition, MonthlySearchCounts, and SuggestedBid. The Competition attribute is required. The Keyword attribute will always be returned for each returned KeywordIdea whether or not you include the Keyword value in the requested list of idea attributes." ;
    sh:datatype xsd:string ;
    sh:in ( "AdGroupId" "AdGroupName" "Keyword" "Source" "MonthlySearchCounts" "SuggestedBid" "Competition" "Relevance" "AdImpressionShare" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetKeywordIdeasRequest/searchParameters> ;
    sh:name "search parameters" ;
    sh:description "The search parameters define your criteria and filters for the requested keyword ideas. Do not try to instantiate a SearchParameter. You can include one or more the following objects that derive from it: CategorySearchParameter, CompetitionSearchParameter, DateRangeSearchParameter, DeviceSearchParameter, ExcludeAccountKeywordsSearchParameter, IdeaTextSearchParameter, ImpressionShareSearchParameter, LanguageSearchParameter, LocationSearchParameter, NetworkSearchParameter, QuerySearchParameter, SearchVolumeSearchParameter, SuggestedBidSearchParameter and UrlSearchParameter. Other objects that derive from SearchParameter are not valid for this operation. You cannot include duplicates of any search parameter type. The list must include all of these search parameters: LanguageSearchParameter, LocationSearchParameter, and NetworkSearchParameter. The list must include one or more of these search parameters: CategorySearchParameter, QuerySearchParameter, or UrlSearchParameter. If the ExpandIdeas element is false, then the QuerySearchParameter is required whether or not you included additional search parameters. It can take up to 72 hours for the previous calendar month's data to be available. For example, if you request keyword ideas on August 1st, 2nd or 3rd, and July's data is not ready, the response will be based on June's data. If you do not include the DateRangeSearchParameter in the GetKeywordIdeas request, then you will not be able to confirm whether the first list item is data for the previous month, or the month prior. If the date range is specified and the most recent month's data is not yet available, then GetKeywordIdeas will return an error." ;
    sh:or (
      [ sh:node microsoftads:AdInsightAuctionSegmentSearchParameterShape ; sh:class microsoftads:AdInsightAuctionSegmentSearchParameter ]
      [ sh:node microsoftads:AdInsightCategorySearchParameterShape ; sh:class microsoftads:AdInsightCategorySearchParameter ]
      [ sh:node microsoftads:AdInsightCompetitionSearchParameterShape ; sh:class microsoftads:AdInsightCompetitionSearchParameter ]
      [ sh:node microsoftads:AdInsightDateRangeSearchParameterShape ; sh:class microsoftads:AdInsightDateRangeSearchParameter ]
      [ sh:node microsoftads:AdInsightDeviceSearchParameterShape ; sh:class microsoftads:AdInsightDeviceSearchParameter ]
      [ sh:node microsoftads:AdInsightExcludeAccountKeywordsSearchParameterShape ; sh:class microsoftads:AdInsightExcludeAccountKeywordsSearchParameter ]
      [ sh:node microsoftads:AdInsightIdeaTextSearchParameterShape ; sh:class microsoftads:AdInsightIdeaTextSearchParameter ]
      [ sh:node microsoftads:AdInsightImpressionShareSearchParameterShape ; sh:class microsoftads:AdInsightImpressionShareSearchParameter ]
      [ sh:node microsoftads:AdInsightLanguageSearchParameterShape ; sh:class microsoftads:AdInsightLanguageSearchParameter ]
      [ sh:node microsoftads:AdInsightLocationSearchParameterShape ; sh:class microsoftads:AdInsightLocationSearchParameter ]
      [ sh:node microsoftads:AdInsightNetworkSearchParameterShape ; sh:class microsoftads:AdInsightNetworkSearchParameter ]
      [ sh:node microsoftads:AdInsightQuerySearchParameterShape ; sh:class microsoftads:AdInsightQuerySearchParameter ]
      [ sh:node microsoftads:AdInsightSearchParameterShape ; sh:class microsoftads:AdInsightSearchParameter ]
      [ sh:node microsoftads:AdInsightSearchVolumeSearchParameterShape ; sh:class microsoftads:AdInsightSearchVolumeSearchParameter ]
      [ sh:node microsoftads:AdInsightSuggestedBidSearchParameterShape ; sh:class microsoftads:AdInsightSuggestedBidSearchParameter ]
      [ sh:node microsoftads:AdInsightUrlSearchParameterShape ; sh:class microsoftads:AdInsightUrlSearchParameter ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Get Keyword Ideas Response
microsoftads:AdInsightGetKeywordIdeasResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightGetKeywordIdeasResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetKeywordIdeasResponse/keywordIdeas> ;
    sh:name "keyword ideas" ;
    sh:description "The list of keyword ideas. Currently up to 3,000 list items can be returned although the limit is subject to change." ;
    sh:node microsoftads:AdInsightKeywordIdeaShape ;
    sh:class microsoftads:AdInsightKeywordIdea ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Keyword Idea
microsoftads:AdInsightKeywordIdeaShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightKeywordIdea ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordIdea/keyword> ;
    sh:name "keyword" ;
    sh:description "The suggested keyword." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordIdea/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "The negative ad group identifier that groups keyword ideas into suggested new ad groups. Keyword ideas for existing ad group identifiers is not supported. If the ad group ID is null then the keyword idea Source element is set to Seed, and there is not any specific recommended ad group." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordIdea/adGroupName> ;
    sh:name "ad group name" ;
    sh:description "The suggested name of the ad group for the keyword idea. If the ad group name is null then the keyword idea Source element is set to Seed, and there is not any specific recommended ad group." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordIdea/source> ;
    sh:name "source" ;
    sh:description "The source or seed for the keyword." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unknown" "Seed" "SuggestionFromKeyword" "SuggestionFromUrl" "SuggestionFromCategory" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordIdea/monthlySearchCounts> ;
    sh:name "monthly search counts" ;
    sh:description "The number of times this keyword was used as a search term for each month within the date range and targeting settings you've selected. By default the size of the list is 12 and the last 12 months of available data are returned. The search counts are sorted in order starting with the most recent month's data at MonthlySeachCounts[0]. It can take up to 72 hours for the previous calendar month's data to be available. For example, if you request keyword ideas on August 1st, 2nd or 3rd, and July's data is not ready, the response will be based on June's data. If you do not include the DateRangeSearchParameter in the GetKeywordIdeas request, then you will not be able to confirm whether the first list item is data for the previous month, or the month prior. If the date range is specified and the most recent month's data is not yet available, then GetKeywordIdeas will return an error." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordIdea/suggestedBid> ;
    sh:name "suggested bid" ;
    sh:description "The suggested minimum bid for this keyword. We create this suggestion using the location and network criterion you included, along with the average cost-per-click (CPC) advertisers are paying for this keyword. This amount is only an estimate and your actual CPC may vary." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordIdea/competition> ;
    sh:name "competition" ;
    sh:description "Determined by the number of advertisers bidding on this keyword, relative to all other keywords across Microsoft Advertising." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Low" "Medium" "High" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordIdea/relevance> ;
    sh:name "relevance" ;
    sh:description "The keyword relevance score. Higher relevance means \"more relevant\". There is no defined range, but as an example you might see values such as 1.00 or 87,083.82. Although the values are not displayed, relevance is used to sort Keyword Planner results by relevance in the Microsoft Advertising UI." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordIdea/adImpressionShare> ;
    sh:name "ad impression share" ;
    sh:description "Ad impression share is the number of impressions you've received divided by the total number of searches for the location and network you're targeting that matched the keyword exactly in the last calendar month." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Get Keyword Locations Request
microsoftads:AdInsightGetKeywordLocationsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightGetKeywordLocationsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetKeywordLocationsRequest/keywords> ;
    sh:name "keywords" ;
    sh:description "An array of keywords for which you want to get geographical location information. The data is also broken out by device type. The array can contain a maximum of 1,000 keywords, and each keyword can contain a maximum of 100 characters." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetKeywordLocationsRequest/language> ;
    sh:name "language" ;
    sh:description "The language in which the keywords are written. For possible values, see Ad Languages." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetKeywordLocationsRequest/publisherCountry> ;
    sh:name "publisher country" ;
    sh:description "The country code of the country/region to use as the source of the location data. The country/region that you specify must support the language specified in the Language element. For possible values, see Ad Languages." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetKeywordLocationsRequest/device> ;
    sh:name "device" ;
    sh:description "An array of devices for which you want to get geographical location information. Supported device types include the following: Computers, NonSmartphones, Smartphones, Tablets. The default is Computers. The response includes keyword locations data for only the device types that you specify, if available." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetKeywordLocationsRequest/level> ;
    sh:name "level" ;
    sh:description "The level at which to aggregate the geographical location data. The following are the possible values: 0 - Country 1 - State/Province 2 - Metropolitan area 3 - City The default value is 1 (State/Province)." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetKeywordLocationsRequest/parentCountry> ;
    sh:name "parent country" ;
    sh:description "The country/region from which the search originated. For possible values, see Geographical Location Codes. The default is US." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetKeywordLocationsRequest/maxLocations> ;
    sh:name "max locations" ;
    sh:description "The maximum number of locations to return. You can request a maximum of 10 locations. The default value is 10." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Get Keyword Locations Response
microsoftads:AdInsightGetKeywordLocationsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightGetKeywordLocationsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetKeywordLocationsResponse/keywordLocationResult> ;
    sh:name "keyword location result" ;
    sh:description "An array of KeywordLocationResult data objects. The order of the items corresponds directly to the keywords specified in the request. If there is no location data available for a keyword, the keyword will be included in the list, but the KeywordLocations element of the corresponding KeywordLocationResult object will be null. Each KeywordLocationResult data object contains an array of KeywordLocation. The array contains an item for each device specified in the request. Each KeywordLocation contains the geographical location and percentage of time that users in the geographical location searched for the specified keyword." ;
    sh:node microsoftads:AdInsightKeywordLocationResultShape ;
    sh:class microsoftads:AdInsightKeywordLocationResult ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Keyword Location Result
microsoftads:AdInsightKeywordLocationResultShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightKeywordLocationResult ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordLocationResult/keyword> ;
    sh:name "keyword" ;
    sh:description "The keyword." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordLocationResult/keywordLocations> ;
    sh:name "keyword locations" ;
    sh:description "An array of KeywordLocation objects that contains the geographical locations and the percentage of times that users searched for the keyword from that location." ;
    sh:node microsoftads:AdInsightKeywordLocationShape ;
    sh:class microsoftads:AdInsightKeywordLocation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Keyword Location
microsoftads:AdInsightKeywordLocationShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightKeywordLocation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordLocation/device> ;
    sh:name "device" ;
    sh:description "The device of the user who entered the search query." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordLocation/location> ;
    sh:name "location" ;
    sh:description "The country/region, state, metropolitan area, or city where users entered the search query." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordLocation/percentage> ;
    sh:name "percentage" ;
    sh:description "The percentage of time that users searched for the keyword from the location. The value is specified in the range 0.0 through 100.0." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Get Keyword Opportunities Request
microsoftads:AdInsightGetKeywordOpportunitiesRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightGetKeywordOpportunitiesRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetKeywordOpportunitiesRequest/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "The identifier of the ad group to get keyword suggestions for. The following restrictions apply to the specified ad group: - Its language must be set to English. - Its distribution medium must include Search. - It should contain keywords and ads. The operation will suggest keywords only if the ad group contains one or more ads and keywords; the more keywords and ads that the ad group contains, the richer the set of suggested keywords will be. If AdGroupId is nil or empty, the operation will return all keyword opportunities for the specified campaign." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetKeywordOpportunitiesRequest/campaignId> ;
    sh:name "campaign id" ;
    sh:description "The identifier of the campaign that owns the specified ad group. If the CampaignId element is nil or empty, then the AdGroupId must also be nil or empty, and the operation will return all keyword opportunities for the account." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetKeywordOpportunitiesRequest/opportunityType> ;
    sh:name "opportunity type" ;
    sh:description "Determines the type or types of keyword opportunities that you want. You may include multiple values as flags. How you specify multiple flags depends on the programming language that you use. For example, C# treats these values as flag values and Java treats them as an array of strings. The SOAP should include a string that contains a space-delimited list of values for example, BroadMatch CampaignContext." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Get Keyword Opportunities Response
microsoftads:AdInsightGetKeywordOpportunitiesResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightGetKeywordOpportunitiesResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetKeywordOpportunitiesResponse/opportunities> ;
    sh:name "opportunities" ;
    sh:description "A list of KeywordOpportunity data objects that identifies a suggested keyword and bid value. The list will be empty if there are no suggestions, which may occur if the ad group does not contain existing ads and keywords. Currently up to 1,000 list items can be returned although the limit is subject to change." ;
    sh:or (
      [ sh:node microsoftads:AdInsightBroadMatchKeywordOpportunityShape ; sh:class microsoftads:AdInsightBroadMatchKeywordOpportunity ]
      [ sh:node microsoftads:AdInsightKeywordOpportunityShape ; sh:class microsoftads:AdInsightKeywordOpportunity ]
      [ sh:node microsoftads:AdInsightKeywordOpportunityBaseShape ; sh:class microsoftads:AdInsightKeywordOpportunityBase ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Keyword Opportunity
microsoftads:AdInsightKeywordOpportunityShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightKeywordOpportunity ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordOpportunity/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "The identifier of the ad group to apply the suggested keyword to." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordOpportunity/campaignId> ;
    sh:name "campaign id" ;
    sh:description "The identifier of the campaign that owns the ad group." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordOpportunity/adGroupName> ;
    sh:name "ad group name" ;
    sh:description "The name of the ad group to apply the suggested keyword to." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordOpportunity/campaignName> ;
    sh:name "campaign name" ;
    sh:description "The name of the campaign that owns the ad group." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordOpportunity/matchType> ;
    sh:name "match type" ;
    sh:description "The match type that the suggested bid applies to. The following are the possible match-type values: 1 - Exact match 2 - Phrase match 3 - Broad match" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordOpportunity/suggestedKeyword> ;
    sh:name "suggested keyword" ;
    sh:description "The suggested keyword." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordOpportunity/suggestedBid> ;
    sh:name "suggested bid" ;
    sh:description "The suggested bid that may result in your ads serving on the first page of the search query results." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordOpportunity/monthlySearches> ;
    sh:name "monthly searches" ;
    sh:description "The estimated monthly volume of user search queries that may match the suggested keyword for the corresponding MatchType element." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordOpportunity/competition> ;
    sh:name "competition" ;
    sh:description "An indicator of competitive bids for this keyword relative to all search keywords. The competition score ranges from 0 to 1.00, where 0 indicates low competition and 1.00 indicates that there is a high number of advertisers competing for this keyword." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordOpportunity/estimatedIncreaseInClicks> ;
    sh:name "estimated increase in clicks" ;
    sh:description "Estimated increase in clicks if the opportunity is applied." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordOpportunity/estimatedIncreaseInCost> ;
    sh:name "estimated increase in cost" ;
    sh:description "Estimated increase in cost if the opportunity is applied." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordOpportunity/estimatedIncreaseInImpressions> ;
    sh:name "estimated increase in impressions" ;
    sh:description "Estimated increase in impressions if the opportunity is applied." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordOpportunity/opportunityKey> ;
    sh:name "opportunity key" ;
    sh:description "An identifier that uniquely identifies the opportunity." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordOpportunity/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordOpportunity/clickShare> ;
    sh:name "click share" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordOpportunity/averageCTR> ;
    sh:name "average ctr" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordOpportunity/averageCPC> ;
    sh:name "average cpc" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordOpportunity/referenceKeywordId> ;
    sh:name "reference keyword id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordOpportunity/referenceKeywordBid> ;
    sh:name "reference keyword bid" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordOpportunity/referenceKeywordMatchType> ;
    sh:name "reference keyword match type" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordOpportunity/impressionShare> ;
    sh:name "impression share" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordOpportunity/searchQueryKPIs> ;
    sh:name "search query kpis" ;
    sh:node microsoftads:AdInsightBroadMatchSearchQueryKPIShape ;
    sh:class microsoftads:AdInsightBroadMatchSearchQueryKPI ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Get Keyword Traffic Estimates Request
microsoftads:AdInsightGetKeywordTrafficEstimatesRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightGetKeywordTrafficEstimatesRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetKeywordTrafficEstimatesRequest/campaignEstimators> ;
    sh:name "campaign estimators" ;
    sh:description "Defines your campaign, ad group, and keyword level criteria and filters for the requested keyword traffic estimates." ;
    sh:node microsoftads:AdInsightCampaignEstimatorShape ;
    sh:class microsoftads:AdInsightCampaignEstimator ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Get Keyword Traffic Estimates Response
microsoftads:AdInsightGetKeywordTrafficEstimatesResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightGetKeywordTrafficEstimatesResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetKeywordTrafficEstimatesResponse/campaignEstimates> ;
    sh:name "campaign estimates" ;
    sh:description "The list of campaign estimates. Within each campaign estimate is a nested list of keyword traffic estimates for each ad group. You can inspect the BatchError Details element to find out which of the requested list items failed. For example if Details contains \"CampaignEstimators[0], AdGroupEstimators[1], KeywordEstimators is null or contains no value\", the error occurred for the 2nd AdGroupEstimator in the submitted list. The Index element of the BatchError is only a sequential count of returned batch errors, and cannot be used to determine where in the request the error occurred." ;
    sh:node microsoftads:AdInsightCampaignEstimateShape ;
    sh:class microsoftads:AdInsightCampaignEstimate ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Get Performance Insights Detail Data By Account Id Request
microsoftads:AdInsightGetPerformanceInsightsDetailDataByAccountIdRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightGetPerformanceInsightsDetailDataByAccountIdRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetPerformanceInsightsDetailDataByAccountIdRequest/entityType> ;
    sh:name "entity type" ;
    sh:description "The entity level that you want to request performance insights summary data from. We currently support account and campaign level data." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Account" "Campaign" "AdGroup" "Keyword" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetPerformanceInsightsDetailDataByAccountIdRequest/startDate> ;
    sh:name "start date" ;
    sh:description "The start date range for performance insights." ;
    sh:node microsoftads:AdInsightDayMonthAndYearShape ;
    sh:class microsoftads:AdInsightDayMonthAndYear ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetPerformanceInsightsDetailDataByAccountIdRequest/endDate> ;
    sh:name "end date" ;
    sh:description "The end date range for performance insights. The maximum date range is one month." ;
    sh:node microsoftads:AdInsightDayMonthAndYearShape ;
    sh:class microsoftads:AdInsightDayMonthAndYear ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Get Performance Insights Detail Data By Account Id Response
microsoftads:AdInsightGetPerformanceInsightsDetailDataByAccountIdResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightGetPerformanceInsightsDetailDataByAccountIdResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetPerformanceInsightsDetailDataByAccountIdResponse/result> ;
    sh:name "result" ;
    sh:description "Defines the performance insight results from calling the GetPerformanceInsightsDetailDataByAccountId operation." ;
    sh:node microsoftads:AdInsightPerformanceInsightsDetailShape ;
    sh:class microsoftads:AdInsightPerformanceInsightsDetail ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Performance Insights Detail
microsoftads:AdInsightPerformanceInsightsDetailShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightPerformanceInsightsDetail ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightPerformanceInsightsDetail/entityId> ;
    sh:name "entity id" ;
    sh:description "For account level, this is AccountId. For campaign level, this is CampaignId." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightPerformanceInsightsDetail/entityType> ;
    sh:name "entity type" ;
    sh:description "The supported types are account and campaign." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Account" "Campaign" "AdGroup" "Keyword" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightPerformanceInsightsDetail/kPIType> ;
    sh:name "k pitype" ;
    sh:description "Defines the type of key performance indicator. At the account level, we support impression, click, spend, and conversion. At the campaign level, we support impression, click, and spend." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Impression" "Click" "Spend" "Conversion" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightPerformanceInsightsDetail/date> ;
    sh:name "date" ;
    sh:description "The date of the detected performance insights." ;
    sh:node microsoftads:AdInsightDayMonthAndYearShape ;
    sh:class microsoftads:AdInsightDayMonthAndYear ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightPerformanceInsightsDetail/description> ;
    sh:name "description" ;
    sh:description "A message to describe the performance insights." ;
    sh:node microsoftads:AdInsightPerformanceInsightsMessageShape ;
    sh:class microsoftads:AdInsightPerformanceInsightsMessage ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightPerformanceInsightsDetail/rootCauses> ;
    sh:name "root causes" ;
    sh:description "Messages that describe the root causes in \"What happened.\"" ;
    sh:node microsoftads:AdInsightPerformanceInsightsMessageShape ;
    sh:class microsoftads:AdInsightPerformanceInsightsMessage ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightPerformanceInsightsDetail/actions> ;
    sh:name "actions" ;
    sh:description "Messages that describe the actions in \"What can I do.\"" ;
    sh:node microsoftads:AdInsightPerformanceInsightsMessageShape ;
    sh:class microsoftads:AdInsightPerformanceInsightsMessage ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Performance Insights Message
microsoftads:AdInsightPerformanceInsightsMessageShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightPerformanceInsightsMessage ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightPerformanceInsightsMessage/templateId> ;
    sh:name "template id" ;
    sh:description "The message template ID." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "FluxImprIncreaseAcct" "FluxImprDecreaseAcct" "FluxImprIncreaseInfinityAcct" "FluxImprIncreaseAcctPrevDay" "FluxImprDecreaseAcctPrevDay" "FluxImprIncreaseInfinityAcctPrevDay" "FluxClickIncreaseAcct" "FluxClickDecreaseAcct" "FluxClickIncreaseInfinityAcct" "FluxClickIncreaseAcctPrevDay" "FluxClickDecreaseAcctPrevDay" "FluxClickIncreaseInfinityAcctPrevDay" "FluxCostIncreaseAcct" "FluxCostDecreaseAcct" "FluxCostIncreaseInfinityAcct" "FluxCostIncreaseAcctPrevDay" "FluxCostDecreaseAcctPrevDay" "FluxCostIncreaseInfinityAcctPrevDay" "FluxImprIncreaseCampaign" "FluxImprDecreaseCampaign" "FluxImprIncreaseInfinityCampaign" "FluxImprIncreaseCampaignPrevDay" "FluxImprDecreaseCampaignPrevDay" "FluxImprIncreaseInfinityCampaignPrevDay" "FluxClickIncreaseCampaign" "FluxClickDecreaseCampaign" "FluxClickIncreaseInfinityCampaign" "FluxClickIncreaseCampaignPrevDay" "FluxClickDecreaseCampaignPrevDay" "FluxClickIncreaseInfinityCampaignPrevDay" "FluxCostIncreaseCampaign" "FluxCostDecreaseCampaign" "FluxCostIncreaseInfinityCampaign" "FluxCostIncreaseCampaignPrevDay" "FluxCostDecreaseCampaignPrevDay" "FluxCostIncreaseInfinityCampaignPrevDay" "FluxConversionDecreaseAcct" "FluxConversionZeroAcct" "RCAudienceIncrease" "RCAudienceDecrease" "RCBidIncrease" "RCBidDecrease" "RCBudgetIncrease" "RCBudgetDecrease" "RCClickIncrease" "RCClickDecrease" "RCConversionGoalIssue" "RCDeviceTargetingBidChange" "RCEditorialApproval" "RCEditorialDisapproval" "RCEntityAdditionWithCount" "RCEntityDeletionWithCount" "RCEntityPauseWithCount" "RCEntityUnpauseWithCount" "RCMoreCompetitive" "RCNetworkLessRestrict" "RCNetworkMoreRestrict" "RCPaymentIssueInvoiceAccountPaused" "RCPaymentIssueInvoiceAccountOnHold" "RCPaymentIssuePrepayAccountPaused" "RCPaymentIssueThresholdAccountOnHold" "RCPaymentIssueYesterday" "RCSearchTermIncrease" "RCSearchTermIncreaseClick" "RCSearchTermDecrease" "RCSearchTermDecreaseClick" "RCSearchTermCompetitionIncrease" "RCSearchTermCompetitionIncreaseClick" "RCSearchTermCompetitionDecrease" "RCSearchTermCompetitionDecreaseClick" "RCSingleCampaignAddition" "RCSingleCampaignPause" "RCSingleCampaignUnpause" "RCSingleCampaignBudgetIncrease" "RCSingleCampaignBudgetDecrease" "RCSingleCampaignDeviceTargetingBidChange" "RCStrongerCompetitorAdQuality" "RCStrongerCompetitorBid" "RCSyndTrafficIncrease" "RCSyndTrafficDecrease" "ActAdsOppr" "ActAllAvailableOppr" "ActBMAdoptionOppr" "ActBMMKeywordOppr" "ActCampaignContextKeywordOppr" "ActCheckPublisherWebsite" "ActCompetitionAuctionInsight" "ActCompetitiveBudgetOppr" "ActCompetitiveKeywordOppr" "ActCompetitiveLocationTargetOppr" "ActCTRQualityBundle" "ActEditorialReviewProcess" "ActFixConversionGoalSettingOppr" "ActFixConversionTrackingOppr" "ActGeneralBudgetOppr" "ActNewConversionGoalOppr" "ActInvoiceAccountPaused" "ActInvoiceAccountOnHold" "ActPrepayAccountPaused" "ActReallocateBudgetOppr" "ActRepairKeywordsOppr" "ActRSAOppr" "ActSearchTerm" "ActSetupConversionTrackingOppr" "ActSiteLinkOppr" "ActThresholdAccountOnHold" "ActWebsiteExclusion" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightPerformanceInsightsMessage/parameters> ;
    sh:name "parameters" ;
    sh:description "Message parameters are used to fill in the template that renders the message string." ;
    sh:or (
      [ sh:node microsoftads:AdInsightEntityParameterShape ; sh:class microsoftads:AdInsightEntityParameter ]
      [ sh:node microsoftads:AdInsightPerformanceInsightsMessageParameterShape ; sh:class microsoftads:AdInsightPerformanceInsightsMessageParameter ]
      [ sh:node microsoftads:AdInsightPerformanceInsightsMessageParameterBaseShape ; sh:class microsoftads:AdInsightPerformanceInsightsMessageParameterBase ]
      [ sh:node microsoftads:AdInsightTextParameterShape ; sh:class microsoftads:AdInsightTextParameter ]
      [ sh:node microsoftads:AdInsightUrlParameterShape ; sh:class microsoftads:AdInsightUrlParameter ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightPerformanceInsightsMessage/indentationLevel> ;
    sh:name "indentation level" ;
    sh:description "Indentation distance or depth when displaying the message. By default, it is 0, which means no indentation distance." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Performance Insights Message Parameter
microsoftads:AdInsightPerformanceInsightsMessageParameterShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightPerformanceInsightsMessageParameter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightPerformanceInsightsMessageParameter/type> ;
    sh:name "type" ;
    sh:description "The supported types are: text, URL, and entities." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Text" "Url" "Entities" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightPerformanceInsightsMessageParameter/suggestedText> ;
    sh:name "suggested text" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightPerformanceInsightsMessageParameter/urlCategory> ;
    sh:name "url category" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Recommendation" "Setting" "Report" "HelpDoc" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightPerformanceInsightsMessageParameter/urlId> ;
    sh:name "url id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "RecRecommendationPage" "RecCompetitionPage" "SettingCreateOrder" "SettingRemoveHold" "SettingAddFunds" "ReportSearchTerm" "ReportPublisherWebsite" "ReportAuctionInsights" "HelpDocNetworkSetting" "HelpDocEditorial" "HelpDocWebsiteReport" "HelpDocWebsiteExclusion" "HelpDocCreateOrder" "HelpDocRemoveHold" "HelpDocAddFunds" "HelpDocRecommendation" "HelpDocAudienceNetwork" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightPerformanceInsightsMessageParameter/suggestedUrl> ;
    sh:name "suggested url" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightPerformanceInsightsMessageParameter/entityType> ;
    sh:name "entity type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Account" "Campaign" "AdGroup" "Keyword" "ProductGroup" "SearchTerm" "Website" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightPerformanceInsightsMessageParameter/entityCount> ;
    sh:name "entity count" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightPerformanceInsightsMessageParameter/entityDetails> ;
    sh:name "entity details" ;
    sh:node microsoftads:AdInsightEntityDetailShape ;
    sh:class microsoftads:AdInsightEntityDetail ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Get Recommendations Request
microsoftads:AdInsightGetRecommendationsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightGetRecommendationsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetRecommendationsRequest/campaignId> ;
    sh:name "campaign id" ;
    sh:description "The identifier of the campaign that owns the ad group specified in the AdGroupId element. If this element is nil or empty, then the AdGroupId must also be nil or empty, and the operation will return all opportunities of a certain recommendation type for the account." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetRecommendationsRequest/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "The identifier of the ad group for which you want to determine responsive search ads opportunities. If this element is nil or empty, the operation will return all opportunities of certain recommendation type for the specified campaign." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetRecommendationsRequest/recommendationType> ;
    sh:name "recommendation type" ;
    sh:description "The identifier of the recommendation type that you want to get. This element can't be nil or empty. One recommendation type per request, e.g., ResponsiveSearchAdsOpportunity." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Get Recommendations Response
microsoftads:AdInsightGetRecommendationsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightGetRecommendationsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetRecommendationsResponse/recommendations> ;
    sh:name "recommendations" ;
    sh:description "An array of Recommendation objects. 2,000 list items can be returned at maximum." ;
    sh:or (
      [ sh:node microsoftads:AdInsightCampaignBudgetRecommendationShape ; sh:class microsoftads:AdInsightCampaignBudgetRecommendation ]
      [ sh:node microsoftads:AdInsightKeywordRecommendationShape ; sh:class microsoftads:AdInsightKeywordRecommendation ]
      [ sh:node microsoftads:AdInsightRecommendationShape ; sh:class microsoftads:AdInsightRecommendation ]
      [ sh:node microsoftads:AdInsightRecommendationBaseShape ; sh:class microsoftads:AdInsightRecommendationBase ]
      [ sh:node microsoftads:AdInsightRecommendationBaseBaseShape ; sh:class microsoftads:AdInsightRecommendationBaseBase ]
      [ sh:node microsoftads:AdInsightRemoveConflictingNegativeKeywordRecommendationShape ; sh:class microsoftads:AdInsightRemoveConflictingNegativeKeywordRecommendation ]
      [ sh:node microsoftads:AdInsightResponsiveSearchAdAssetRecommendationShape ; sh:class microsoftads:AdInsightResponsiveSearchAdAssetRecommendation ]
      [ sh:node microsoftads:AdInsightResponsiveSearchAdRecommendationShape ; sh:class microsoftads:AdInsightResponsiveSearchAdRecommendation ]
      [ sh:node microsoftads:AdInsightResponsiveSearchAdsRecommendationShape ; sh:class microsoftads:AdInsightResponsiveSearchAdsRecommendation ]
      [ sh:node microsoftads:AdInsightUseBroadMatchKeywordRecommendationShape ; sh:class microsoftads:AdInsightUseBroadMatchKeywordRecommendation ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Recommendation
microsoftads:AdInsightRecommendationShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightRecommendation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendation/accountId> ;
    sh:name "account id" ;
    sh:description "The identifier of the account." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendation/campaignId> ;
    sh:name "campaign id" ;
    sh:description "The identifier of the campaign for the ad group that owns the recommendation." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendation/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "The identifier of the ad group that owns the recommendation." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendation/recommendationType> ;
    sh:name "recommendation type" ;
    sh:description "The type of recommendation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendation/recommendationId> ;
    sh:name "recommendation id" ;
    sh:description "The identifier of the recommendation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendation/recommendationHash> ;
    sh:name "recommendation hash" ;
    sh:description "The hash of the recommendation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendation/currentClicks> ;
    sh:name "current clicks" ;
    sh:description "Actual clicks of the ad group in the past 7 days." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendation/estimatedIncreaseInClicks> ;
    sh:name "estimated increase in clicks" ;
    sh:description "The estimated click opportunities corresponding to the suggested ad." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendation/currentCost> ;
    sh:name "current cost" ;
    sh:description "Actual spending of the ad group in the past 7 days, in the currency of this account." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendation/estimatedIncreaseInCost> ;
    sh:name "estimated increase in cost" ;
    sh:description "The estimated increase in spend corresponding to the suggested ad." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendation/currentImpressions> ;
    sh:name "current impressions" ;
    sh:description "Actual impressions of the ad group in the past 7 days." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendation/estimatedIncreaseInImpressions> ;
    sh:name "estimated increase in impressions" ;
    sh:description "The estimated impressions opportunities corresponding to the suggested ad." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendation/currentConversions> ;
    sh:name "current conversions" ;
    sh:description "Actual conversions of the ad group in the past 7 days." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendation/estimatedIncreaseInConversions> ;
    sh:name "estimated increase in conversions" ;
    sh:description "The estimated impression opportunities corresponding to the suggested ad." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendation/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendation/suggestedAd> ;
    sh:name "suggested ad" ;
    sh:node microsoftads:AdInsightSuggestedResponsiveSearchAdShape ;
    sh:class microsoftads:AdInsightSuggestedResponsiveSearchAd ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Suggested Responsive Search Ad
microsoftads:AdInsightSuggestedResponsiveSearchAdShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightSuggestedResponsiveSearchAd ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSuggestedResponsiveSearchAd/headlines> ;
    sh:name "headlines" ;
    sh:description "The list of titles of suggested ads with 3-15 headlines." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSuggestedResponsiveSearchAd/descriptions> ;
    sh:name "descriptions" ;
    sh:description "The list of descriptions of suggested ad with 2-4 descriptions." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSuggestedResponsiveSearchAd/path1> ;
    sh:name "path1" ;
    sh:description "The first part of the optional path that will be appended to the domain portion of your display URL." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSuggestedResponsiveSearchAd/path2> ;
    sh:name "path2" ;
    sh:description "The second part of the optional path that will be appended to the domain portion of your display URL." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSuggestedResponsiveSearchAd/finalUrl> ;
    sh:name "final url" ;
    sh:description "The landing page URL." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Get Text Asset Suggestions By Final Urls Request
microsoftads:AdInsightGetTextAssetSuggestionsByFinalUrlsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightGetTextAssetSuggestionsByFinalUrlsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetTextAssetSuggestionsByFinalUrlsRequest/finalUrls> ;
    sh:name "final urls" ;
    sh:description "The last or final URL where a user is ultimately taken, whether or not the click to final URL path included any redirects. The maximum array limit of FinalUrls for each request is 5." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Ad Insight Get Text Asset Suggestions By Final Urls Response
microsoftads:AdInsightGetTextAssetSuggestionsByFinalUrlsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightGetTextAssetSuggestionsByFinalUrlsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetTextAssetSuggestionsByFinalUrlsResponse/textAssetSuggestions> ;
    sh:name "text asset suggestions" ;
    sh:description "The suggested string value to use for the text asset." ;
    sh:node microsoftads:AdInsightTextAssetSuggestionsShape ;
    sh:class microsoftads:AdInsightTextAssetSuggestions ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightGetTextAssetSuggestionsByFinalUrlsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array BatchError that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:node microsoftads:AdInsightBatchErrorShape ;
    sh:class microsoftads:AdInsightBatchError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Text Asset Suggestions
microsoftads:AdInsightTextAssetSuggestionsShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightTextAssetSuggestions ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightTextAssetSuggestions/finalUrl> ;
    sh:name "final url" ;
    sh:description "The Final URL of the ad, keyword, or criterion. Only the first URL in the list is reported. If the URL contains dynamic text substitution parameters (for example, {param1}), the report will contain the URL before substitution." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightTextAssetSuggestions/textAssets> ;
    sh:name "text assets" ;
    sh:description "Text assets that can be reused across multiple ads." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Ad Insight Idea Text Search Parameter
microsoftads:AdInsightIdeaTextSearchParameterShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightIdeaTextSearchParameter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightIdeaTextSearchParameter/included> ;
    sh:name "included" ;
    sh:description "The list of keywords that you explicitly want included in the list of returned keyword ideas. The match type of each keyword must be set to Broad." ;
    sh:node microsoftads:AdInsightKeywordShape ;
    sh:class microsoftads:AdInsightKeyword ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightIdeaTextSearchParameter/excluded> ;
    sh:name "excluded" ;
    sh:description "The list of keywords that you explicitly want excluded from the list of returned keyword ideas. The match type of each keyword must be set to Broad." ;
    sh:node microsoftads:AdInsightKeywordShape ;
    sh:class microsoftads:AdInsightKeyword ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightIdeaTextSearchParameter/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Impression Share Search Parameter
microsoftads:AdInsightImpressionShareSearchParameterShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightImpressionShareSearchParameter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightImpressionShareSearchParameter/minimum> ;
    sh:name "minimum" ;
    sh:description "The minimum impression share that you want for keyword ideas." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightImpressionShareSearchParameter/maximum> ;
    sh:name "maximum" ;
    sh:description "The maximum impression share that you want for keyword ideas." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightImpressionShareSearchParameter/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Keyword And Confidence
microsoftads:AdInsightKeywordAndConfidenceShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightKeywordAndConfidence ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordAndConfidence/suggestedKeyword> ;
    sh:name "suggested keyword" ;
    sh:description "The suggested keyword." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordAndConfidence/confidenceScore> ;
    sh:name "confidence score" ;
    sh:description "A score from 0.0 to 1.0 that indicates the probability that the keyword would match a user's search query." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Keyword Opportunity Base
microsoftads:AdInsightKeywordOpportunityBaseShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightKeywordOpportunityBase ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordOpportunityBase/adGroupId> ;
    sh:name "ad group id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordOpportunityBase/campaignId> ;
    sh:name "campaign id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordOpportunityBase/adGroupName> ;
    sh:name "ad group name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordOpportunityBase/campaignName> ;
    sh:name "campaign name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordOpportunityBase/matchType> ;
    sh:name "match type" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordOpportunityBase/suggestedKeyword> ;
    sh:name "suggested keyword" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordOpportunityBase/suggestedBid> ;
    sh:name "suggested bid" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordOpportunityBase/monthlySearches> ;
    sh:name "monthly searches" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordOpportunityBase/competition> ;
    sh:name "competition" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordOpportunityBase/estimatedIncreaseInClicks> ;
    sh:name "estimated increase in clicks" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordOpportunityBase/estimatedIncreaseInCost> ;
    sh:name "estimated increase in cost" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordOpportunityBase/estimatedIncreaseInImpressions> ;
    sh:name "estimated increase in impressions" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordOpportunityBase/opportunityKey> ;
    sh:name "opportunity key" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordOpportunityBase/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Keyword Recommendation
microsoftads:AdInsightKeywordRecommendationShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightKeywordRecommendation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordRecommendation/accountId> ;
    sh:name "account id" ;
    sh:description "The identifier of the account. Output only." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordRecommendation/accountName> ;
    sh:name "account name" ;
    sh:description "The name of the account. Output only." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordRecommendation/campaignId> ;
    sh:name "campaign id" ;
    sh:description "The campaign ID targeted by this recommendation. Output only. This field will be set for the following recommendation types: KEYWORD, RESPONSIVE_SEARCH_AD" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordRecommendation/campaignName> ;
    sh:name "campaign name" ;
    sh:description "The name of the campaign. Output only." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordRecommendation/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "The ad group ID targeted by this recommendation. This will be set only when the recommendation affects a single ad group. Output only. This field will be set for the following recommendation types: KEYWORD, RESPONSIVE_SEARCH_AD." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordRecommendation/adGroupName> ;
    sh:name "ad group name" ;
    sh:description "The name of the ad group. Output only." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordRecommendation/recommendationType> ;
    sh:name "recommendation type" ;
    sh:description "The type of recommendation. Note: We currently support CAMPAIGN_BUDGET, KEYWORD, and RESPONSIVE_SEARCH_AD. RecommendationType is output only." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordRecommendation/type> ;
    sh:name "type" ;
    sh:description "The RecommendationType value set has the following values: CampaignBudgetRecommendation, KeywordRecommendation, ResponsiveSearchAdRecommendation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordRecommendation/recommendationId> ;
    sh:name "recommendation id" ;
    sh:description "The identifier of the recommendation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordRecommendation/recommendationHash> ;
    sh:name "recommendation hash" ;
    sh:description "The hash of the recommendation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordRecommendation/currentClicks> ;
    sh:name "current clicks" ;
    sh:description "Actual clicks of the ad group in the past 7 days. Output only." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordRecommendation/estimatedIncreaseInClicks> ;
    sh:name "estimated increase in clicks" ;
    sh:description "The estimated click opportunities corresponding to the suggested ad." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordRecommendation/currentCost> ;
    sh:name "current cost" ;
    sh:description "Actual spending of the ad group in the past 7 days, in the currency of this account." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordRecommendation/estimatedIncreaseInCost> ;
    sh:name "estimated increase in cost" ;
    sh:description "The estimated increase in spend corresponding to the suggested ad." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordRecommendation/currentImpressions> ;
    sh:name "current impressions" ;
    sh:description "Actual impressions of the ad group in the past 7 days." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordRecommendation/estimatedIncreaseInImpressions> ;
    sh:name "estimated increase in impressions" ;
    sh:description "The estimated impressions opportunities corresponding to the suggested ad." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordRecommendation/currentConversions> ;
    sh:name "current conversions" ;
    sh:description "Actual conversions of the ad group in the past 7 days. Output only." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordRecommendation/estimatedIncreaseInConversions> ;
    sh:name "estimated increase in conversions" ;
    sh:description "The estimated impression opportunities corresponding to the suggested ad." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordRecommendation/dismissed> ;
    sh:name "dismissed" ;
    sh:description "Whether the recommendation is dismissed or not. Output only." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordRecommendation/suggestedKeyword> ;
    sh:name "suggested keyword" ;
    sh:description "The text of the keyword (at most 80 characters and 10 words). Output only." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordRecommendation/suggestedBid> ;
    sh:name "suggested bid" ;
    sh:description "The suggested bid that may result in your ads serving on the first page of the search query results. Output only." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordRecommendation/monthlySearches> ;
    sh:name "monthly searches" ;
    sh:description "The estimated monthly volume of user search queries that may match the suggested keyword for the corresponding MatchType element. Output only." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordRecommendation/matchType> ;
    sh:name "match type" ;
    sh:description "The match type that the suggested bid applies to. Output only. The following are the possible match-type values: 1 - Exact match2 - Phrase match3 - Broad match" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordRecommendation/competition> ;
    sh:name "competition" ;
    sh:description "An indicator of competitive bids for this keyword relative to all search keywords. The competition score ranges from 0 to 1.00, where 0 indicates low competition and 1.00 indicates that there is a high number of advertisers competing for this keyword. Output only." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Keyword Suggestion
microsoftads:AdInsightKeywordSuggestionShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightKeywordSuggestion ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordSuggestion/keyword> ;
    sh:name "keyword" ;
    sh:description "The keyword to which the suggested keywords apply." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightKeywordSuggestion/suggestionsAndConfidence> ;
    sh:name "suggestions and confidence" ;
    sh:description "A KeywordAndConfidence array that contains a list of suggested keywords and, for each keyword, a score that indicates the probability that using the keyword would result in an ad being included in the results of a search query. The suggested keywords are sorted in order from keywords with the highest confidence score to those with the lowest confidence score." ;
    sh:node microsoftads:AdInsightKeywordAndConfidenceShape ;
    sh:class microsoftads:AdInsightKeywordAndConfidence ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Language Search Parameter
microsoftads:AdInsightLanguageSearchParameterShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightLanguageSearchParameter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightLanguageSearchParameter/languages> ;
    sh:name "languages" ;
    sh:description "The language criterion list for the returned keyword ideas." ;
    sh:node microsoftads:AdInsightLanguageCriterionShape ;
    sh:class microsoftads:AdInsightLanguageCriterion ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightLanguageSearchParameter/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Location Search Parameter
microsoftads:AdInsightLocationSearchParameterShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightLocationSearchParameter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightLocationSearchParameter/locations> ;
    sh:name "locations" ;
    sh:description "The location criterion list for the returned keyword ideas. You must include between 1 to 2,000 locations." ;
    sh:node microsoftads:AdInsightLocationCriterionShape ;
    sh:class microsoftads:AdInsightLocationCriterion ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightLocationSearchParameter/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Network Search Parameter
microsoftads:AdInsightNetworkSearchParameterShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightNetworkSearchParameter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightNetworkSearchParameter/network> ;
    sh:name "network" ;
    sh:description "The network criterion for the returned keyword ideas." ;
    sh:node microsoftads:AdInsightNetworkCriterionShape ;
    sh:class microsoftads:AdInsightNetworkCriterion ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightNetworkSearchParameter/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Performance Insights Message Parameter Base
microsoftads:AdInsightPerformanceInsightsMessageParameterBaseShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightPerformanceInsightsMessageParameterBase ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightPerformanceInsightsMessageParameterBase/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Text" "Url" "Entities" ) ;
  ] .

# Shape for Ad Insight Query Search Parameter
microsoftads:AdInsightQuerySearchParameterShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightQuerySearchParameter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightQuerySearchParameter/queries> ;
    sh:name "queries" ;
    sh:description "Up to 200 words or phrases that describe what you're advertising." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightQuerySearchParameter/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Recommendation Base
microsoftads:AdInsightRecommendationBaseShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightRecommendationBase ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendationBase/accountId> ;
    sh:name "account id" ;
    sh:description "The identifier of the account. Output only." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendationBase/campaignId> ;
    sh:name "campaign id" ;
    sh:description "The campaign ID targeted by this recommendation. Output only. This field will be set for the following recommendation types: KEYWORD, RESPONSIVE_SEARCH_AD" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendationBase/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "The ad group ID targeted by this recommendation. This will be set only when the recommendation affects a single ad group. Output only. This field will be set for the following recommendation types: KEYWORD, RESPONSIVE_SEARCH_AD." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendationBase/recommendationType> ;
    sh:name "recommendation type" ;
    sh:description "The type of recommendation. Note: We currently support ADD_BROAD_MATCH_KEYWORD, CAMPAIGN_BUDGET, KEYWORD, REMOVE_CONFLICTING_NEGATIVE_KEYWORD, RESPONSIVE_SEARCH_AD, and RESPONSIVE_SEARCH_AD_ASSET. RecommendationType is output only." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendationBase/recommendationId> ;
    sh:name "recommendation id" ;
    sh:description "The identifier of the recommendation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendationBase/recommendationHash> ;
    sh:name "recommendation hash" ;
    sh:description "The hash of the recommendation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendationBase/currentClicks> ;
    sh:name "current clicks" ;
    sh:description "Actual clicks of the ad group in the past 7 days. Output only." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendationBase/estimatedIncreaseInClicks> ;
    sh:name "estimated increase in clicks" ;
    sh:description "The estimated click opportunities corresponding to the suggested ad." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendationBase/currentCost> ;
    sh:name "current cost" ;
    sh:description "Actual spending of the ad group in the past 7 days, in the currency of this account." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendationBase/estimatedIncreaseInCost> ;
    sh:name "estimated increase in cost" ;
    sh:description "The estimated increase in spend corresponding to the suggested ad." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendationBase/currentImpressions> ;
    sh:name "current impressions" ;
    sh:description "Actual impressions of the ad group in the past 7 days." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendationBase/estimatedIncreaseInImpressions> ;
    sh:name "estimated increase in impressions" ;
    sh:description "The estimated impressions opportunities corresponding to the suggested ad." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendationBase/currentConversions> ;
    sh:name "current conversions" ;
    sh:description "Actual conversions of the ad group in the past 7 days. Output only." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendationBase/estimatedIncreaseInConversions> ;
    sh:name "estimated increase in conversions" ;
    sh:description "The estimated impression opportunities corresponding to the suggested ad." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendationBase/type> ;
    sh:name "type" ;
    sh:description "The RecommendationType value set has the following values: AddBroadMatchKeywordRecommendation, CampaignBudgetRecommendation, KeywordRecommendation, RemoveConflictingNegativeKeywordRecommendation, ResponsiveSearchAdRecommendation, and ResponsiveSearchAdAssetRecommendation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Recommendation Base Base
microsoftads:AdInsightRecommendationBaseBaseShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightRecommendationBaseBase ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendationBaseBase/accountId> ;
    sh:name "account id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendationBaseBase/accountName> ;
    sh:name "account name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendationBaseBase/campaignId> ;
    sh:name "campaign id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendationBaseBase/campaignName> ;
    sh:name "campaign name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendationBaseBase/adGroupId> ;
    sh:name "ad group id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendationBaseBase/adGroupName> ;
    sh:name "ad group name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendationBaseBase/recommendationType> ;
    sh:name "recommendation type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendationBaseBase/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendationBaseBase/recommendationId> ;
    sh:name "recommendation id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendationBaseBase/recommendationHash> ;
    sh:name "recommendation hash" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendationBaseBase/currentClicks> ;
    sh:name "current clicks" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendationBaseBase/estimatedIncreaseInClicks> ;
    sh:name "estimated increase in clicks" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendationBaseBase/currentCost> ;
    sh:name "current cost" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendationBaseBase/estimatedIncreaseInCost> ;
    sh:name "estimated increase in cost" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendationBaseBase/currentImpressions> ;
    sh:name "current impressions" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendationBaseBase/estimatedIncreaseInImpressions> ;
    sh:name "estimated increase in impressions" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendationBaseBase/currentConversions> ;
    sh:name "current conversions" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendationBaseBase/estimatedIncreaseInConversions> ;
    sh:name "estimated increase in conversions" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendationBaseBase/dismissed> ;
    sh:name "dismissed" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Recommendation Info
microsoftads:AdInsightRecommendationInfoShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightRecommendationInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendationInfo/recommendationId> ;
    sh:name "recommendation id" ;
    sh:description "The identifier of the recommendation. It is required." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendationInfo/recommendationHash> ;
    sh:name "recommendation hash" ;
    sh:description "The hash of the recommendation. It is required." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendationInfo/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendationInfo/adId> ;
    sh:name "ad id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Recommendation Info Base
microsoftads:AdInsightRecommendationInfoBaseShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightRecommendationInfoBase ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendationInfoBase/recommendationId> ;
    sh:name "recommendation id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendationInfoBase/recommendationHash> ;
    sh:name "recommendation hash" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRecommendationInfoBase/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Remove Conflicting Negative Keyword Recommendation
microsoftads:AdInsightRemoveConflictingNegativeKeywordRecommendationShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightRemoveConflictingNegativeKeywordRecommendation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRemoveConflictingNegativeKeywordRecommendation/accountId> ;
    sh:name "account id" ;
    sh:description "The identifier of the account. Output only." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRemoveConflictingNegativeKeywordRecommendation/accountName> ;
    sh:name "account name" ;
    sh:description "The name of the account. Output only." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRemoveConflictingNegativeKeywordRecommendation/campaignId> ;
    sh:name "campaign id" ;
    sh:description "The campaign ID targeted by this recommendation. Output only. This field will be set for the following recommendation types: KEYWORD, RESPONSIVE_SEARCH_AD" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRemoveConflictingNegativeKeywordRecommendation/campaignName> ;
    sh:name "campaign name" ;
    sh:description "The name of the campaign. Output only." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRemoveConflictingNegativeKeywordRecommendation/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "The ad group ID targeted by this recommendation. This will be set only when the recommendation affects a single ad group. Output only. This field will be set for the following recommendation types: KEYWORD, RESPONSIVE_SEARCH_AD." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRemoveConflictingNegativeKeywordRecommendation/adGroupName> ;
    sh:name "ad group name" ;
    sh:description "The name of the ad group. Output only." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRemoveConflictingNegativeKeywordRecommendation/recommendationType> ;
    sh:name "recommendation type" ;
    sh:description "The type of recommendation. Note: We currently support CAMPAIGN_BUDGET, KEYWORD, and RESPONSIVE_SEARCH_AD. RecommendationType is output only." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRemoveConflictingNegativeKeywordRecommendation/type> ;
    sh:name "type" ;
    sh:description "The RecommendationType value set has the following values: CampaignBudgetRecommendation, KeywordRecommendation, ResponsiveSearchAdRecommendation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRemoveConflictingNegativeKeywordRecommendation/recommendationId> ;
    sh:name "recommendation id" ;
    sh:description "The identifier of the recommendation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRemoveConflictingNegativeKeywordRecommendation/recommendationHash> ;
    sh:name "recommendation hash" ;
    sh:description "The hash of the recommendation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRemoveConflictingNegativeKeywordRecommendation/currentClicks> ;
    sh:name "current clicks" ;
    sh:description "Actual clicks of the ad group in the past 7 days. Output only." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRemoveConflictingNegativeKeywordRecommendation/estimatedIncreaseInClicks> ;
    sh:name "estimated increase in clicks" ;
    sh:description "The estimated click opportunities corresponding to the suggested ad." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRemoveConflictingNegativeKeywordRecommendation/currentCost> ;
    sh:name "current cost" ;
    sh:description "Actual spending of the ad group in the past 7 days, in the currency of this account." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRemoveConflictingNegativeKeywordRecommendation/estimatedIncreaseInCost> ;
    sh:name "estimated increase in cost" ;
    sh:description "The estimated increase in spend corresponding to the suggested ad." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRemoveConflictingNegativeKeywordRecommendation/currentImpressions> ;
    sh:name "current impressions" ;
    sh:description "Actual impressions of the ad group in the past 7 days." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRemoveConflictingNegativeKeywordRecommendation/estimatedIncreaseInImpressions> ;
    sh:name "estimated increase in impressions" ;
    sh:description "The estimated impressions opportunities corresponding to the suggested ad." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRemoveConflictingNegativeKeywordRecommendation/currentConversions> ;
    sh:name "current conversions" ;
    sh:description "Actual conversions of the ad group in the past 7 days. Output only." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRemoveConflictingNegativeKeywordRecommendation/estimatedIncreaseInConversions> ;
    sh:name "estimated increase in conversions" ;
    sh:description "The estimated impression opportunities corresponding to the suggested ad." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRemoveConflictingNegativeKeywordRecommendation/dismissed> ;
    sh:name "dismissed" ;
    sh:description "Whether the recommendation is dismissed or not. Output only." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRemoveConflictingNegativeKeywordRecommendation/negativeKeywordId> ;
    sh:name "negative keyword id" ;
    sh:description "The ID of the negative keyword." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRemoveConflictingNegativeKeywordRecommendation/negativeKeyword> ;
    sh:name "negative keyword" ;
    sh:description "The negative keyword." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRemoveConflictingNegativeKeywordRecommendation/negativeKeywordMatchType> ;
    sh:name "negative keyword match type" ;
    sh:description "The match type of the negative keyword." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRemoveConflictingNegativeKeywordRecommendation/negativeKeywordSharedListId> ;
    sh:name "negative keyword shared list id" ;
    sh:description "The shared list ID of the negative keyword." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRemoveConflictingNegativeKeywordRecommendation/negativeKeywordListName> ;
    sh:name "negative keyword list name" ;
    sh:description "The list name of the negative keyword." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRemoveConflictingNegativeKeywordRecommendation/source> ;
    sh:name "source" ;
    sh:description "The source name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Responsive Search Ad Asset Recommendation
microsoftads:AdInsightResponsiveSearchAdAssetRecommendationShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightResponsiveSearchAdAssetRecommendation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdAssetRecommendation/accountId> ;
    sh:name "account id" ;
    sh:description "The identifier of the account. Output only." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdAssetRecommendation/accountName> ;
    sh:name "account name" ;
    sh:description "The name of the account. Output only." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdAssetRecommendation/campaignId> ;
    sh:name "campaign id" ;
    sh:description "The campaign ID targeted by this recommendation. Output only. This field will be set for the following recommendation types: KEYWORD, RESPONSIVE_SEARCH_AD" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdAssetRecommendation/campaignName> ;
    sh:name "campaign name" ;
    sh:description "The name of the campaign. Output only." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdAssetRecommendation/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "The ad group ID targeted by this recommendation. This will be set only when the recommendation affects a single ad group. Output only. This field will be set for the following recommendation types: KEYWORD, RESPONSIVE_SEARCH_AD." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdAssetRecommendation/adGroupName> ;
    sh:name "ad group name" ;
    sh:description "The name of the ad group. Output only." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdAssetRecommendation/recommendationType> ;
    sh:name "recommendation type" ;
    sh:description "The type of recommendation. Note: We currently support CAMPAIGN_BUDGET, KEYWORD, and RESPONSIVE_SEARCH_AD. RecommendationType is output only." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdAssetRecommendation/type> ;
    sh:name "type" ;
    sh:description "The RecommendationType value set has the following values: CampaignBudgetRecommendation, KeywordRecommendation, ResponsiveSearchAdRecommendation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdAssetRecommendation/recommendationId> ;
    sh:name "recommendation id" ;
    sh:description "The identifier of the recommendation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdAssetRecommendation/recommendationHash> ;
    sh:name "recommendation hash" ;
    sh:description "The hash of the recommendation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdAssetRecommendation/currentClicks> ;
    sh:name "current clicks" ;
    sh:description "Actual clicks of the ad group in the past 7 days. Output only." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdAssetRecommendation/estimatedIncreaseInClicks> ;
    sh:name "estimated increase in clicks" ;
    sh:description "The estimated click opportunities corresponding to the suggested ad." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdAssetRecommendation/currentCost> ;
    sh:name "current cost" ;
    sh:description "Actual spending of the ad group in the past 7 days, in the currency of this account." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdAssetRecommendation/estimatedIncreaseInCost> ;
    sh:name "estimated increase in cost" ;
    sh:description "The estimated increase in spend corresponding to the suggested ad." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdAssetRecommendation/currentImpressions> ;
    sh:name "current impressions" ;
    sh:description "Actual impressions of the ad group in the past 7 days." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdAssetRecommendation/estimatedIncreaseInImpressions> ;
    sh:name "estimated increase in impressions" ;
    sh:description "The estimated impressions opportunities corresponding to the suggested ad." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdAssetRecommendation/currentConversions> ;
    sh:name "current conversions" ;
    sh:description "Actual conversions of the ad group in the past 7 days. Output only." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdAssetRecommendation/estimatedIncreaseInConversions> ;
    sh:name "estimated increase in conversions" ;
    sh:description "The estimated impression opportunities corresponding to the suggested ad." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdAssetRecommendation/dismissed> ;
    sh:name "dismissed" ;
    sh:description "Whether the recommendation is dismissed or not. Output only." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdAssetRecommendation/responsiveSearchAdId> ;
    sh:name "responsive search ad id" ;
    sh:description "The ID of the responsive search ad." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdAssetRecommendation/recommendedResponsiveSearchAd> ;
    sh:name "recommended responsive search ad" ;
    sh:description "The recommended responsive search ad." ;
    sh:node microsoftads:AdInsightSuggestedResponsiveSearchAdShape ;
    sh:class microsoftads:AdInsightSuggestedResponsiveSearchAd ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Responsive Search Ad Recommendation
microsoftads:AdInsightResponsiveSearchAdRecommendationShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightResponsiveSearchAdRecommendation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdRecommendation/accountId> ;
    sh:name "account id" ;
    sh:description "The identifier of the account. Output only." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdRecommendation/accountName> ;
    sh:name "account name" ;
    sh:description "The account name. Output only." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdRecommendation/campaignId> ;
    sh:name "campaign id" ;
    sh:description "The campaign ID targeted by this recommendation. Output only. This field will be set for the following recommendation types: KEYWORD, RESPONSIVE_SEARCH_AD" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdRecommendation/campaignName> ;
    sh:name "campaign name" ;
    sh:description "The campaign name. Output only." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdRecommendation/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "The ad group ID targeted by this recommendation. This will be set only when the recommendation affects a single ad group. Output only. This field will be set for the following recommendation types: KEYWORD, RESPONSIVE_SEARCH_AD." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdRecommendation/adGroupName> ;
    sh:name "ad group name" ;
    sh:description "The ad group name. Output only." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdRecommendation/recommendationType> ;
    sh:name "recommendation type" ;
    sh:description "The type of recommendation. Note: We currently support CAMPAIGN_BUDGET, KEYWORD, and RESPONSIVE_SEARCH_AD. RecommendationType is output only." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdRecommendation/type> ;
    sh:name "type" ;
    sh:description "The RecommendationType value set has the following values: CampaignBudgetRecommendation, KeywordRecommendation, ResponsiveSearchAdRecommendation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdRecommendation/recommendationId> ;
    sh:name "recommendation id" ;
    sh:description "The identifier of the recommendation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdRecommendation/recommendationHash> ;
    sh:name "recommendation hash" ;
    sh:description "The hash of the recommendation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdRecommendation/currentClicks> ;
    sh:name "current clicks" ;
    sh:description "Actual clicks of the ad group in the past 7 days. Output only." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdRecommendation/estimatedIncreaseInClicks> ;
    sh:name "estimated increase in clicks" ;
    sh:description "The estimated click opportunities corresponding to the suggested ad." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdRecommendation/currentCost> ;
    sh:name "current cost" ;
    sh:description "Actual spending of the ad group in the past 7 days, in the currency of this account." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdRecommendation/estimatedIncreaseInCost> ;
    sh:name "estimated increase in cost" ;
    sh:description "The estimated increase in spend corresponding to the suggested ad." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdRecommendation/currentImpressions> ;
    sh:name "current impressions" ;
    sh:description "Actual impressions of the ad group in the past 7 days." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdRecommendation/estimatedIncreaseInImpressions> ;
    sh:name "estimated increase in impressions" ;
    sh:description "The estimated impressions opportunities corresponding to the suggested ad." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdRecommendation/currentConversions> ;
    sh:name "current conversions" ;
    sh:description "Actual conversions of the ad group in the past 7 days. Output only." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdRecommendation/estimatedIncreaseInConversions> ;
    sh:name "estimated increase in conversions" ;
    sh:description "The estimated impression opportunities corresponding to the suggested ad." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdRecommendation/dismissed> ;
    sh:name "dismissed" ;
    sh:description "Whether the recommendation is dismissed or not. Output only." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdRecommendation/suggestedAd> ;
    sh:name "suggested ad" ;
    sh:description "The ad info in the recommendation. Output only." ;
    sh:node microsoftads:AdInsightSuggestedResponsiveSearchAdShape ;
    sh:class microsoftads:AdInsightSuggestedResponsiveSearchAd ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Responsive Search Ads Recommendation
microsoftads:AdInsightResponsiveSearchAdsRecommendationShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightResponsiveSearchAdsRecommendation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdsRecommendation/accountId> ;
    sh:name "account id" ;
    sh:description "The identifier of the account." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdsRecommendation/campaignId> ;
    sh:name "campaign id" ;
    sh:description "The identifier of the campaign for the ad group that owns the recommendation." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdsRecommendation/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "The identifier of the ad group that owns the recommendation." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdsRecommendation/recommendationType> ;
    sh:name "recommendation type" ;
    sh:description "The type of recommendation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdsRecommendation/recommendationId> ;
    sh:name "recommendation id" ;
    sh:description "The identifier of the recommendation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdsRecommendation/recommendationHash> ;
    sh:name "recommendation hash" ;
    sh:description "The hash of the recommendation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdsRecommendation/currentClicks> ;
    sh:name "current clicks" ;
    sh:description "Actual clicks of the ad group in the past 7 days." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdsRecommendation/estimatedIncreaseInClicks> ;
    sh:name "estimated increase in clicks" ;
    sh:description "The estimated click opportunities corresponding to the suggested ad." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdsRecommendation/currentCost> ;
    sh:name "current cost" ;
    sh:description "Actual spending of the ad group in the past 7 days, in the currency of this account." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdsRecommendation/estimatedIncreaseInCost> ;
    sh:name "estimated increase in cost" ;
    sh:description "The estimated increase in spend corresponding to the suggested ad." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdsRecommendation/currentImpressions> ;
    sh:name "current impressions" ;
    sh:description "Actual impressions of the ad group in the past 7 days." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdsRecommendation/estimatedIncreaseInImpressions> ;
    sh:name "estimated increase in impressions" ;
    sh:description "The estimated impressions opportunities corresponding to the suggested ad." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdsRecommendation/currentConversions> ;
    sh:name "current conversions" ;
    sh:description "Actual conversions of the ad group in the past 7 days." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdsRecommendation/estimatedIncreaseInConversions> ;
    sh:name "estimated increase in conversions" ;
    sh:description "The estimated impression opportunities corresponding to the suggested ad." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdsRecommendation/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightResponsiveSearchAdsRecommendation/suggestedAd> ;
    sh:name "suggested ad" ;
    sh:description "The ad info in the recommendation." ;
    sh:node microsoftads:AdInsightSuggestedResponsiveSearchAdShape ;
    sh:class microsoftads:AdInsightSuggestedResponsiveSearchAd ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Retrieve Recommendations Request
microsoftads:AdInsightRetrieveRecommendationsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightRetrieveRecommendationsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRetrieveRecommendationsRequest/maxCount> ;
    sh:name "max count" ;
    sh:description "The max number of returned recommendations. The default value is null. If MaxCount is null or 0, it returns all available recommendations. Optional." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRetrieveRecommendationsRequest/recommendationTypes> ;
    sh:name "recommendation types" ;
    sh:description "The recommendation type names: ADD_BROAD_MATCH_KEYWORD, CAMPAIGN_BUDGET, KEYWORD, REMOVE_CONFLICTING_NEGATIVE_KEYWORD, RESPONSIVE_SEARCH_AD, or RESPONSIVE_SEARCH_AD_ASSET. Required." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Ad Insight Retrieve Recommendations Response
microsoftads:AdInsightRetrieveRecommendationsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightRetrieveRecommendationsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRetrieveRecommendationsResponse/recommendations> ;
    sh:name "recommendations" ;
    sh:description "The available recommendations for specific account ID. The types of recommendations are: AddBroadMatchKeywordRecommendation, CampaignBudgetRecommendation, KeywordRecommendation, RemoveConflictingNegativeKeywordRecommendation, ResponsiveSearchAdRecommendation, and ResponsiveSearchAdAssetRecommendation." ;
    sh:or (
      [ sh:node microsoftads:AdInsightCampaignBudgetRecommendationShape ; sh:class microsoftads:AdInsightCampaignBudgetRecommendation ]
      [ sh:node microsoftads:AdInsightKeywordRecommendationShape ; sh:class microsoftads:AdInsightKeywordRecommendation ]
      [ sh:node microsoftads:AdInsightRecommendationBaseShape ; sh:class microsoftads:AdInsightRecommendationBase ]
      [ sh:node microsoftads:AdInsightRecommendationBaseBaseShape ; sh:class microsoftads:AdInsightRecommendationBaseBase ]
      [ sh:node microsoftads:AdInsightRemoveConflictingNegativeKeywordRecommendationShape ; sh:class microsoftads:AdInsightRemoveConflictingNegativeKeywordRecommendation ]
      [ sh:node microsoftads:AdInsightResponsiveSearchAdAssetRecommendationShape ; sh:class microsoftads:AdInsightResponsiveSearchAdAssetRecommendation ]
      [ sh:node microsoftads:AdInsightResponsiveSearchAdRecommendationShape ; sh:class microsoftads:AdInsightResponsiveSearchAdRecommendation ]
      [ sh:node microsoftads:AdInsightUseBroadMatchKeywordRecommendationShape ; sh:class microsoftads:AdInsightUseBroadMatchKeywordRecommendation ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight RSARecommendation Info
microsoftads:AdInsightRSARecommendationInfoShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightRSARecommendationInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRSARecommendationInfo/recommendationId> ;
    sh:name "recommendation id" ;
    sh:description "The identifier of the recommendation. It is required." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRSARecommendationInfo/recommendationHash> ;
    sh:name "recommendation hash" ;
    sh:description "The hash of the recommendation. It is required." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRSARecommendationInfo/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightRSARecommendationInfo/adId> ;
    sh:name "ad id" ;
    sh:description "Ad id of the responsive search ad that is created by adopting the recommendation. Optional. It is required when you try to tag a recommendation as applied." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Search Volume Search Parameter
microsoftads:AdInsightSearchVolumeSearchParameterShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightSearchVolumeSearchParameter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSearchVolumeSearchParameter/minimum> ;
    sh:name "minimum" ;
    sh:description "The minimum search volume that you want for keyword ideas." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSearchVolumeSearchParameter/maximum> ;
    sh:name "maximum" ;
    sh:description "The maximum search volume that you want for keyword ideas." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSearchVolumeSearchParameter/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Set Auto Apply Opt In Status Request
microsoftads:AdInsightSetAutoApplyOptInStatusRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightSetAutoApplyOptInStatusRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSetAutoApplyOptInStatusRequest/autoApplyOptInStatusInputs> ;
    sh:name "auto apply opt in status inputs" ;
    sh:description "A string array which identifies auto-apply opt-in status of the given recommendation types in the request. Duplicated input keys are not allowed in the same call. This field includes the list of recommendation types with the auto-apply opt-in status to be specified. The existing key and value pairs are as follows (case sensitive): ResponsiveSearchAdsOpportunity = falseMultiMediaAdsOpportunity = true RemoveConflictingNegativeKeywordOpportunity = false FixConversionGoalSettingsOpportunity = false CreateConversionGoalOpportunity = false .If the value of a key is set to true, then the account will opt-in auto-apply of the corresponding recommendation type. You may specify a maximum of 100 input elements." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Ad Insight Set Auto Apply Opt In Status Response
microsoftads:AdInsightSetAutoApplyOptInStatusResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightSetAutoApplyOptInStatusResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSetAutoApplyOptInStatusResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array BatchError that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:node microsoftads:AdInsightBatchErrorShape ;
    sh:class microsoftads:AdInsightBatchError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Suggested Bid Search Parameter
microsoftads:AdInsightSuggestedBidSearchParameterShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightSuggestedBidSearchParameter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSuggestedBidSearchParameter/minimum> ;
    sh:name "minimum" ;
    sh:description "The minimum suggested bid that you want for keyword ideas." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSuggestedBidSearchParameter/maximum> ;
    sh:name "maximum" ;
    sh:description "The maximum suggested bid that you want for keyword ideas." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSuggestedBidSearchParameter/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Suggest Keywords For Url Request
microsoftads:AdInsightSuggestKeywordsForUrlRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightSuggestKeywordsForUrlRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSuggestKeywordsForUrlRequest/url> ;
    sh:name "url" ;
    sh:description "The URL of the webpage to scan for possible keywords. The URL can contain a maximum of 2,000 characters." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSuggestKeywordsForUrlRequest/language> ;
    sh:name "language" ;
    sh:description "The language used by the website. For possible values, see Ad Languages. The default is English." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSuggestKeywordsForUrlRequest/maxKeywords> ;
    sh:name "max keywords" ;
    sh:description "A positive integer value that specifies the maximum number of keywords to return. The maximum value that you can specify is 800. The default is 10." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSuggestKeywordsForUrlRequest/minConfidenceScore> ;
    sh:name "min confidence score" ;
    sh:description "A filter value that limits the keywords that the service returns to those that have a confidence score that is greater than or equal to the specified score. For example, you can specify that you want the operation to return only keywords that have a confidence score of at least 80 percent (0.8). If null, the confidence score is not used to limit the results." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSuggestKeywordsForUrlRequest/excludeBrand> ;
    sh:name "exclude brand" ;
    sh:description "A value that determines whether the results exclude brand keywords. To exclude brand keywords in the result, set to true. The default is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Suggest Keywords For Url Response
microsoftads:AdInsightSuggestKeywordsForUrlResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightSuggestKeywordsForUrlResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSuggestKeywordsForUrlResponse/keywords> ;
    sh:name "keywords" ;
    sh:description "An array of KeywordAndConfidence objects that contains the possible keywords found in the content of the specified URL. In addition, the object includes a score that indicates the probability that using the keyword would result in the URL being included in the results of a search query. The results are sorted in order from keywords with the highest confidence score to those with the lowest confidence score." ;
    sh:node microsoftads:AdInsightKeywordAndConfidenceShape ;
    sh:class microsoftads:AdInsightKeywordAndConfidence ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Suggest Keywords From Existing Keywords Request
microsoftads:AdInsightSuggestKeywordsFromExistingKeywordsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightSuggestKeywordsFromExistingKeywordsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSuggestKeywordsFromExistingKeywordsRequest/keywords> ;
    sh:name "keywords" ;
    sh:description "An array of keywords for which you want to get suggested keywords that could perform better. The array can contain a maximum of 1,000 keywords, and each keyword can contain a maximum of 100 characters." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSuggestKeywordsFromExistingKeywordsRequest/language> ;
    sh:name "language" ;
    sh:description "The language in which the keyword is written. Possible case-sensitive values are English, French, and German. See the Remarks section below for a list of providers that are supported for each language. The default is English." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSuggestKeywordsFromExistingKeywordsRequest/publisherCountries> ;
    sh:name "publisher countries" ;
    sh:description "The country codes of the countries/regions to use as the source of data for determining the suggested keywords. You can specify one or more country codes. Each country/region that you specify must support the language that you specified in the Language element. For supported values, see the Remarks section below. The default is all countries/regions that support the specified language." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSuggestKeywordsFromExistingKeywordsRequest/maxSuggestionsPerKeyword> ;
    sh:name "max suggestions per keyword" ;
    sh:description "The maximum number of keyword suggestions to return per specified keyword. If SuggestionType is set to 4, you can request a maximum of 200 suggestions per keyword; otherwise the maximum suggestions that you can request is 100. The default is 50." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSuggestKeywordsFromExistingKeywordsRequest/suggestionType> ;
    sh:name "suggestion type" ;
    sh:description "The provider to use to generate the keyword suggestions. For a list of possible providers, the language and country/region restrictions of each provider, and the default provider by country/region, see the Remarks section below." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSuggestKeywordsFromExistingKeywordsRequest/removeDuplicates> ;
    sh:name "remove duplicates" ;
    sh:description "A Boolean value that determines whether to remove duplicate keywords from the list of suggested keywords. To remove duplicates, set to true. The default is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSuggestKeywordsFromExistingKeywordsRequest/excludeBrand> ;
    sh:name "exclude brand" ;
    sh:description "A value that determines whether the results exclude brand keywords. To exclude brand keywords in the result, set to true. The default is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSuggestKeywordsFromExistingKeywordsRequest/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "The identifier of the ad group for suggested keywords. This element is not yet supported and may be used to influence keyword suggestions in a future release" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSuggestKeywordsFromExistingKeywordsRequest/campaignId> ;
    sh:name "campaign id" ;
    sh:description "The identifier of the campaign for suggested keywords. This element is not yet supported and may be used to influence keyword suggestions in a future release" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Suggest Keywords From Existing Keywords Response
microsoftads:AdInsightSuggestKeywordsFromExistingKeywordsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightSuggestKeywordsFromExistingKeywordsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightSuggestKeywordsFromExistingKeywordsResponse/keywordSuggestions> ;
    sh:name "keyword suggestions" ;
    sh:description "An array of KeywordSuggestion data objects. The array contains an item for each keyword specified in the request. The object contains a list of suggested keywords that may perform better than the specified keyword. For each suggested keyword, the object includes a score that indicates the probability that using the keyword would result in an ad being included in the results of a search query. If there are no suggestions for a keyword, the SuggestionsAndConfidence element will be null." ;
    sh:node microsoftads:AdInsightKeywordSuggestionShape ;
    sh:class microsoftads:AdInsightKeywordSuggestion ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Tag Recommendations Request
microsoftads:AdInsightTagRecommendationsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightTagRecommendationsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightTagRecommendationsRequest/recommendationType> ;
    sh:name "recommendation type" ;
    sh:description "The identifier of the recommendation type that you have applied. This element cannot be nil or empty. One specific recommendation type per request, e.g., ResponsiveSearchAdsOpportunity." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightTagRecommendationsRequest/recommendationsInfo> ;
    sh:name "recommendations info" ;
    sh:description "The information for an individual recommendation. Duplicate RecommendationInfo (RecommendationId) will be returned as DuplicateRecommendationInfo error. You may specify a maximum of 100 input elements." ;
    sh:or (
      [ sh:node microsoftads:AdInsightRSARecommendationInfoShape ; sh:class microsoftads:AdInsightRSARecommendationInfo ]
      [ sh:node microsoftads:AdInsightRecommendationInfoShape ; sh:class microsoftads:AdInsightRecommendationInfo ]
      [ sh:node microsoftads:AdInsightRecommendationInfoBaseShape ; sh:class microsoftads:AdInsightRecommendationInfoBase ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightTagRecommendationsRequest/lable> ;
    sh:name "lable" ;
    sh:description "The value must be set to either applied or dismissed" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Tag Recommendations Response
microsoftads:AdInsightTagRecommendationsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightTagRecommendationsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightTagRecommendationsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array BatchError that contains details for any request items that were not successful. The list of errors does not correspond directly to the list of items in the request. The list can be empty if there were no errors, or it can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:node microsoftads:AdInsightBatchErrorShape ;
    sh:class microsoftads:AdInsightBatchError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Ad Insight Text Parameter
microsoftads:AdInsightTextParameterShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightTextParameter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightTextParameter/type> ;
    sh:name "type" ;
    sh:description "Defines the type of parameter: string, URL, or a list of demand entities." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Text" "Url" "Entities" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightTextParameter/suggestedText> ;
    sh:name "suggested text" ;
    sh:description "The suggested string value to substitute for the message." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Url Parameter
microsoftads:AdInsightUrlParameterShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightUrlParameter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightUrlParameter/type> ;
    sh:name "type" ;
    sh:description "Defines the type of parameter: string, URL, or a list of demand entities." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Text" "Url" "Entities" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightUrlParameter/suggestedText> ;
    sh:name "suggested text" ;
    sh:description "The suggested string value to substitute for the message." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightUrlParameter/urlCategory> ;
    sh:name "url category" ;
    sh:description "The main category of the URL." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Recommendation" "Setting" "Report" "HelpDoc" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightUrlParameter/urlId> ;
    sh:name "url id" ;
    sh:description "The specified type of the URL." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "RecRecommendationPage" "RecCompetitionPage" "SettingCreateOrder" "SettingRemoveHold" "SettingAddFunds" "ReportSearchTerm" "ReportPublisherWebsite" "ReportAuctionInsights" "HelpDocNetworkSetting" "HelpDocEditorial" "HelpDocWebsiteReport" "HelpDocWebsiteExclusion" "HelpDocCreateOrder" "HelpDocRemoveHold" "HelpDocAddFunds" "HelpDocRecommendation" "HelpDocAudienceNetwork" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightUrlParameter/suggestedUrl> ;
    sh:name "suggested url" ;
    sh:description "THe Suggested URL." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Url Search Parameter
microsoftads:AdInsightUrlSearchParameterShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightUrlSearchParameter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightUrlSearchParameter/url> ;
    sh:name "url" ;
    sh:description "The URL of your website or a page on your website. Microsoft Advertising extracts keywords from the HTML code on your website or landing page. If your HTML code contains Javascript, which generates content at runtime, Microsoft Advertising will not extract keywords rendered from the Javascript and you'll see fewer or no keywords." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightUrlSearchParameter/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Ad Insight Use Broad Match Keyword Recommendation
microsoftads:AdInsightUseBroadMatchKeywordRecommendationShape a sh:NodeShape ;
  sh:targetClass microsoftads:AdInsightUseBroadMatchKeywordRecommendation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightUseBroadMatchKeywordRecommendation/accountId> ;
    sh:name "account id" ;
    sh:description "The identifier of the account. Output only." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightUseBroadMatchKeywordRecommendation/accountName> ;
    sh:name "account name" ;
    sh:description "The name of the account. Output only." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightUseBroadMatchKeywordRecommendation/campaignId> ;
    sh:name "campaign id" ;
    sh:description "The campaign ID targeted by this recommendation. Output only. This field will be set for the following recommendation types: KEYWORD, RESPONSIVE_SEARCH_AD" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightUseBroadMatchKeywordRecommendation/campaignName> ;
    sh:name "campaign name" ;
    sh:description "The name of the campaign. Output only." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightUseBroadMatchKeywordRecommendation/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "The ad group ID targeted by this recommendation. This will be set only when the recommendation affects a single ad group. Output only. This field will be set for the following recommendation types: KEYWORD, RESPONSIVE_SEARCH_AD." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightUseBroadMatchKeywordRecommendation/adGroupName> ;
    sh:name "ad group name" ;
    sh:description "The name of the ad group. Output only." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightUseBroadMatchKeywordRecommendation/recommendationType> ;
    sh:name "recommendation type" ;
    sh:description "The type of recommendation. Note: We currently support CAMPAIGN_BUDGET, KEYWORD, and RESPONSIVE_SEARCH_AD. RecommendationType is output only." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightUseBroadMatchKeywordRecommendation/type> ;
    sh:name "type" ;
    sh:description "The RecommendationType value set has the following values: CampaignBudgetRecommendation, KeywordRecommendation, ResponsiveSearchAdRecommendation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightUseBroadMatchKeywordRecommendation/recommendationId> ;
    sh:name "recommendation id" ;
    sh:description "The identifier of the recommendation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightUseBroadMatchKeywordRecommendation/recommendationHash> ;
    sh:name "recommendation hash" ;
    sh:description "The hash of the recommendation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightUseBroadMatchKeywordRecommendation/currentClicks> ;
    sh:name "current clicks" ;
    sh:description "Actual clicks of the ad group in the past 7 days. Output only." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightUseBroadMatchKeywordRecommendation/estimatedIncreaseInClicks> ;
    sh:name "estimated increase in clicks" ;
    sh:description "The estimated click opportunities corresponding to the suggested ad." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightUseBroadMatchKeywordRecommendation/currentCost> ;
    sh:name "current cost" ;
    sh:description "Actual spending of the ad group in the past 7 days, in the currency of this account." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightUseBroadMatchKeywordRecommendation/estimatedIncreaseInCost> ;
    sh:name "estimated increase in cost" ;
    sh:description "The estimated increase in spend corresponding to the suggested ad." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightUseBroadMatchKeywordRecommendation/currentImpressions> ;
    sh:name "current impressions" ;
    sh:description "Actual impressions of the ad group in the past 7 days." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightUseBroadMatchKeywordRecommendation/estimatedIncreaseInImpressions> ;
    sh:name "estimated increase in impressions" ;
    sh:description "The estimated impressions opportunities corresponding to the suggested ad." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightUseBroadMatchKeywordRecommendation/currentConversions> ;
    sh:name "current conversions" ;
    sh:description "Actual conversions of the ad group in the past 7 days. Output only." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightUseBroadMatchKeywordRecommendation/estimatedIncreaseInConversions> ;
    sh:name "estimated increase in conversions" ;
    sh:description "The estimated impression opportunities corresponding to the suggested ad." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightUseBroadMatchKeywordRecommendation/dismissed> ;
    sh:name "dismissed" ;
    sh:description "Whether the recommendation is dismissed or not. Output only." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightUseBroadMatchKeywordRecommendation/keywordOrderItemId> ;
    sh:name "keyword order item id" ;
    sh:description "The ID of the keyword order item." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightUseBroadMatchKeywordRecommendation/keyword> ;
    sh:name "keyword" ;
    sh:description "The keyword." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightUseBroadMatchKeywordRecommendation/currentMatchType> ;
    sh:name "current match type" ;
    sh:description "The current match type." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightUseBroadMatchKeywordRecommendation/suggestedMatchType> ;
    sh:name "suggested match type" ;
    sh:description "The suggested match type." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightUseBroadMatchKeywordRecommendation/suggestedBid> ;
    sh:name "suggested bid" ;
    sh:description "The suggested bid." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightUseBroadMatchKeywordRecommendation/currentStatus> ;
    sh:name "current status" ;
    sh:description "The current status." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.AdInsightUseBroadMatchKeywordRecommendation/suggestedStatus> ;
    sh:name "suggested status" ;
    sh:description "The suggested status." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Bulk Ad Api Error
microsoftads:BulkAdApiErrorShape a sh:NodeShape ;
  sh:targetClass microsoftads:BulkAdApiError ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkAdApiError/code> ;
    sh:name "code" ;
    sh:description "A numeric error code that identifies the error." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkAdApiError/message> ;
    sh:name "message" ;
    sh:description "A message that describes the error. For more information about troubleshooting and error handling, see Handling Service Errors and Exceptions and Operation Error Codes." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkAdApiError/detail> ;
    sh:name "detail" ;
    sh:description "A message that contains additional details about the error. This string can be empty." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkAdApiError/errorCode> ;
    sh:name "error code" ;
    sh:description "A symbolic string constant that identifies the error. For example, UserIsNotAuthorized." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Bulk Ad Api Fault Detail
microsoftads:BulkAdApiFaultDetailShape a sh:NodeShape ;
  sh:targetClass microsoftads:BulkAdApiFaultDetail ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkAdApiFaultDetail/trackingId> ;
    sh:name "tracking id" ;
    sh:description "The identifier of the log entry that contains the details of the API call." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkAdApiFaultDetail/errors> ;
    sh:name "errors" ;
    sh:description "An array of AdApiError objects that contains the details that explain why the service operation failed." ;
    sh:node microsoftads:BulkAdApiErrorShape ;
    sh:class microsoftads:BulkAdApiError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkAdApiFaultDetail/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Bulk Ad Center Authentication Fault
microsoftads:BulkAdCenterAuthenticationFaultShape a sh:NodeShape ;
  sh:targetClass microsoftads:BulkAdCenterAuthenticationFault ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkAdCenterAuthenticationFault/trackingId> ;
    sh:name "tracking id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkAdCenterAuthenticationFault/errorCode> ;
    sh:name "error code" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "NoCredential" "InvalidCustomerId" "InvalidSecurityTicket" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkAdCenterAuthenticationFault/errorMessage> ;
    sh:name "error message" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkAdCenterAuthenticationFault/mTServerName> ;
    sh:name "m tserver name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkAdCenterAuthenticationFault/faultingLayer> ;
    sh:name "faulting layer" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "MiddleTier" "Database" "Editorial" "Authentication" "Authorization" "Publisher" "AudienceInteligence" "Cam" "Dam" "FlexTag" "BingMerchantCenter" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkAdCenterAuthenticationFault/errorSourceSystem> ;
    sh:name "error source system" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkAdCenterAuthenticationFault/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Bulk Ad Center Authorization Fault
microsoftads:BulkAdCenterAuthorizationFaultShape a sh:NodeShape ;
  sh:targetClass microsoftads:BulkAdCenterAuthorizationFault ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkAdCenterAuthorizationFault/trackingId> ;
    sh:name "tracking id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkAdCenterAuthorizationFault/errorMessage> ;
    sh:name "error message" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkAdCenterAuthorizationFault/mTServerName> ;
    sh:name "m tserver name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkAdCenterAuthorizationFault/faultingLayer> ;
    sh:name "faulting layer" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "MiddleTier" "Database" "Editorial" "Authentication" "Authorization" "Publisher" "AudienceInteligence" "Cam" "Dam" "FlexTag" "BingMerchantCenter" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkAdCenterAuthorizationFault/errorSourceSystem> ;
    sh:name "error source system" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkAdCenterAuthorizationFault/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Bulk Ad Center Fault
microsoftads:BulkAdCenterFaultShape a sh:NodeShape ;
  sh:targetClass microsoftads:BulkAdCenterFault ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkAdCenterFault/trackingId> ;
    sh:name "tracking id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkAdCenterFault/errorMessage> ;
    sh:name "error message" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkAdCenterFault/mTServerName> ;
    sh:name "m tserver name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkAdCenterFault/faultingLayer> ;
    sh:name "faulting layer" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "MiddleTier" "Database" "Editorial" "Authentication" "Authorization" "Publisher" "AudienceInteligence" "Cam" "Dam" "FlexTag" "BingMerchantCenter" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkAdCenterFault/errorSourceSystem> ;
    sh:name "error source system" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkAdCenterFault/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Bulk Ad Center Internal Error Fault
microsoftads:BulkAdCenterInternalErrorFaultShape a sh:NodeShape ;
  sh:targetClass microsoftads:BulkAdCenterInternalErrorFault ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkAdCenterInternalErrorFault/trackingId> ;
    sh:name "tracking id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkAdCenterInternalErrorFault/errorMessage> ;
    sh:name "error message" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkAdCenterInternalErrorFault/mTServerName> ;
    sh:name "m tserver name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkAdCenterInternalErrorFault/faultingLayer> ;
    sh:name "faulting layer" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "MiddleTier" "Database" "Editorial" "Authentication" "Authorization" "Publisher" "AudienceInteligence" "Cam" "Dam" "FlexTag" "BingMerchantCenter" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkAdCenterInternalErrorFault/errorSourceSystem> ;
    sh:name "error source system" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkAdCenterInternalErrorFault/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Bulk Ad Center System Fault
microsoftads:BulkAdCenterSystemFaultShape a sh:NodeShape ;
  sh:targetClass microsoftads:BulkAdCenterSystemFault ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkAdCenterSystemFault/trackingId> ;
    sh:name "tracking id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkAdCenterSystemFault/errorMessage> ;
    sh:name "error message" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkAdCenterSystemFault/mTServerName> ;
    sh:name "m tserver name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkAdCenterSystemFault/faultingLayer> ;
    sh:name "faulting layer" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "MiddleTier" "Database" "Editorial" "Authentication" "Authorization" "Publisher" "AudienceInteligence" "Cam" "Dam" "FlexTag" "BingMerchantCenter" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkAdCenterSystemFault/errorSourceSystem> ;
    sh:name "error source system" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkAdCenterSystemFault/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Bulk Api Fault Detail
microsoftads:BulkApiFaultDetailShape a sh:NodeShape ;
  sh:targetClass microsoftads:BulkApiFaultDetail ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkApiFaultDetail/trackingId> ;
    sh:name "tracking id" ;
    sh:description "The identifier of the log entry that contains the details of the API call." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkApiFaultDetail/batchErrors> ;
    sh:name "batch errors" ;
    sh:description "An array of batch errors that identifies the items in the batch of items in the request message that caused the operation to fail. Each object contains the details that explain why the item caused the failure." ;
    sh:or (
      [ sh:node microsoftads:BulkBatchErrorShape ; sh:class microsoftads:BulkBatchError ]
      [ sh:node microsoftads:BulkBatchErrorBaseShape ; sh:class microsoftads:BulkBatchErrorBase ]
      [ sh:node microsoftads:BulkEditorialErrorShape ; sh:class microsoftads:BulkEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkApiFaultDetail/operationErrors> ;
    sh:name "operation errors" ;
    sh:description "An array of operation errors that contains the reasons that explain why the service operation failed when the error is not related to a specific item in the batch of items." ;
    sh:node microsoftads:BulkOperationErrorShape ;
    sh:class microsoftads:BulkOperationError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkApiFaultDetail/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Bulk Batch Error
microsoftads:BulkBatchErrorShape a sh:NodeShape ;
  sh:targetClass microsoftads:BulkBatchError ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkBatchError/index> ;
    sh:name "index" ;
    sh:description "The zero-based index of the item in the batch of items in the request message that failed." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkBatchError/disapprovedText> ;
    sh:name "disapproved text" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkBatchError/reasonCode> ;
    sh:name "reason code" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkBatchError/location> ;
    sh:name "location" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkBatchError/publisherCountry> ;
    sh:name "publisher country" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkBatchError/fieldPath> ;
    sh:name "field path" ;
    sh:description "Reserved for future use." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkBatchError/errorCode> ;
    sh:name "error code" ;
    sh:description "A symbolic string constant that identifies the error. For example, UserIsNotAuthorized." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkBatchError/message> ;
    sh:name "message" ;
    sh:description "A message that describes the error. For more information about troubleshooting and error handling, see Handling Service Errors and Exceptions and Operation Error Codes." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkBatchError/code> ;
    sh:name "code" ;
    sh:description "A numeric error code that identifies the error." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkBatchError/details> ;
    sh:name "details" ;
    sh:description "A message that provides additional details about the batch error. This string can be empty." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkBatchError/type> ;
    sh:name "type" ;
    sh:description "Reserved for future use." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkBatchError/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version." ;
    sh:node microsoftads:BulkKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:BulkKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkBatchError/appealable> ;
    sh:name "appealable" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Bulk Key Value Pair Ofstring Andstring
microsoftads:BulkKeyValuePairOfstringAndstringShape a sh:NodeShape ;
  sh:targetClass microsoftads:BulkKeyValuePairOfstringAndstring ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkKeyValuePairOfstringAndstring/key> ;
    sh:name "key" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkKeyValuePairOfstringAndstring/value> ;
    sh:name "value" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Bulk Operation Error
microsoftads:BulkOperationErrorShape a sh:NodeShape ;
  sh:targetClass microsoftads:BulkOperationError ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkOperationError/code> ;
    sh:name "code" ;
    sh:description "A numeric error code that identifies the error." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkOperationError/errorCode> ;
    sh:name "error code" ;
    sh:description "A symbolic string constant that identifies the error. For example, UserIsNotAuthorized." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkOperationError/details> ;
    sh:name "details" ;
    sh:description "A message that provides additional details about the error. This string can be empty." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkOperationError/message> ;
    sh:name "message" ;
    sh:description "A message that describes the error. For more information about troubleshooting and error handling, see Handling Service Errors and Exceptions and Operation Error Codes." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Bulk Application Fault
microsoftads:BulkApplicationFaultShape a sh:NodeShape ;
  sh:targetClass microsoftads:BulkApplicationFault ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkApplicationFault/trackingId> ;
    sh:name "tracking id" ;
    sh:description "The identifier of the log entry that contains the details of the API call." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkApplicationFault/errors> ;
    sh:name "errors" ;
    sh:node microsoftads:BulkAdApiErrorShape ;
    sh:class microsoftads:BulkAdApiError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkApplicationFault/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkApplicationFault/editorialErrors> ;
    sh:name "editorial errors" ;
    sh:node microsoftads:BulkEditorialErrorShape ;
    sh:class microsoftads:BulkEditorialError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkApplicationFault/batchErrors> ;
    sh:name "batch errors" ;
    sh:or (
      [ sh:node microsoftads:BulkBatchErrorShape ; sh:class microsoftads:BulkBatchError ]
      [ sh:node microsoftads:BulkBatchErrorBaseShape ; sh:class microsoftads:BulkBatchErrorBase ]
      [ sh:node microsoftads:BulkEditorialErrorShape ; sh:class microsoftads:BulkEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkApplicationFault/operationErrors> ;
    sh:name "operation errors" ;
    sh:node microsoftads:BulkOperationErrorShape ;
    sh:class microsoftads:BulkOperationError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkApplicationFault/errorMessage> ;
    sh:name "error message" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkApplicationFault/mTServerName> ;
    sh:name "m tserver name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkApplicationFault/faultingLayer> ;
    sh:name "faulting layer" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "MiddleTier" "Database" "Editorial" "Authentication" "Authorization" "Publisher" "AudienceInteligence" "Cam" "Dam" "FlexTag" "BingMerchantCenter" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkApplicationFault/errorSourceSystem> ;
    sh:name "error source system" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkApplicationFault/errorCode> ;
    sh:name "error code" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "NoCredential" "InvalidCustomerId" "InvalidSecurityTicket" ) ;
  ] .

# Shape for Bulk Editorial Error
microsoftads:BulkEditorialErrorShape a sh:NodeShape ;
  sh:targetClass microsoftads:BulkEditorialError ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkEditorialError/index> ;
    sh:name "index" ;
    sh:description "The zero-based index of the item in the batch of items in the request message that failed." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkEditorialError/disapprovedText> ;
    sh:name "disapproved text" ;
    sh:description "The text that caused the entity to be disapproved. For text length violations, this element specifies the number of characters by which the specified text exceeds the maximum." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkEditorialError/reasonCode> ;
    sh:name "reason code" ;
    sh:description "A numeric code that identifies the error. For more information, see Editorial Reason Codes." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkEditorialError/location> ;
    sh:name "location" ;
    sh:description "The element or property of the entity that caused the entity to be disapproved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkEditorialError/publisherCountry> ;
    sh:name "publisher country" ;
    sh:description "The corresponding country or region for the flagged editorial issue." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkEditorialError/fieldPath> ;
    sh:name "field path" ;
    sh:description "Reserved for future use." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkEditorialError/errorCode> ;
    sh:name "error code" ;
    sh:description "A symbolic string constant that identifies the error. For example, UserIsNotAuthorized." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkEditorialError/message> ;
    sh:name "message" ;
    sh:description "A message that describes the error. For more information about troubleshooting and error handling, see Handling Service Errors and Exceptions and Operation Error Codes." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkEditorialError/code> ;
    sh:name "code" ;
    sh:description "A numeric error code that identifies the error." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkEditorialError/details> ;
    sh:name "details" ;
    sh:description "A message that provides additional details about the batch error. This string can be empty." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkEditorialError/type> ;
    sh:name "type" ;
    sh:description "Reserved for future use." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkEditorialError/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version." ;
    sh:node microsoftads:BulkKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:BulkKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkEditorialError/appealable> ;
    sh:name "appealable" ;
    sh:description "Reserved for future use." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Bulk Application Fault Base
microsoftads:BulkApplicationFaultBaseShape a sh:NodeShape ;
  sh:targetClass microsoftads:BulkApplicationFaultBase ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkApplicationFaultBase/trackingId> ;
    sh:name "tracking id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Bulk Batch Error Base
microsoftads:BulkBatchErrorBaseShape a sh:NodeShape ;
  sh:targetClass microsoftads:BulkBatchErrorBase ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkBatchErrorBase/fieldPath> ;
    sh:name "field path" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkBatchErrorBase/errorCode> ;
    sh:name "error code" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkBatchErrorBase/message> ;
    sh:name "message" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkBatchErrorBase/code> ;
    sh:name "code" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkBatchErrorBase/details> ;
    sh:name "details" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkBatchErrorBase/index> ;
    sh:name "index" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkBatchErrorBase/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkBatchErrorBase/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:node microsoftads:BulkKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:BulkKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Bulk Campaign Scope
microsoftads:BulkCampaignScopeShape a sh:NodeShape ;
  sh:targetClass microsoftads:BulkCampaignScope ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkCampaignScope/campaignId> ;
    sh:name "campaign id" ;
    sh:description "The identifier of the campaign to download." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkCampaignScope/parentAccountId> ;
    sh:name "parent account id" ;
    sh:description "The identifier of the account that owns the campaign to download." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Bulk Download Campaigns By Account Ids Request
microsoftads:BulkDownloadCampaignsByAccountIdsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:BulkDownloadCampaignsByAccountIdsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkDownloadCampaignsByAccountIdsRequest/accountIds> ;
    sh:name "account ids" ;
    sh:description "The identifier of the account that contains the campaign data to download. The maximum number of accounts that you can specify is one. The size of the account that you can download is limited to four million keywords. If you try to download an account that contains more than 4 million keywords, the call will fail with error 3207 (AccountTooBigToDownload). If the call fails, please call the DownloadCampaignsByCampaignIds operation to download the account by campaigns. The Details element of the fault includes a comma-delimited list of the campaign IDs that the account owns." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkDownloadCampaignsByAccountIdsRequest/lastSyncTimeInUTC> ;
    sh:name "last sync time in utc" ;
    sh:description "The last time that you requested a download. The date and time is expressed in Coordinated Universal Time (UTC). If you specify the last sync time, only those entities that have changed (added, updated, or deleted) since the specified date and time will be downloaded. If the parent campaign or ad group has been deleted since the specified last sync time, you will only see a deleted record for the deleted parent campaign or ad group. For example if a campaign was deleted, the bulk file will not contain deleted records for the ad groups, criterions, ads, and keywords that were in the campaign. Target criterion are treated slightly different from other entities, and deleted records are not returned. If any changes were made to a campaign or ad group's target, then all currently active sub target criterion records are returned. Typically, you request a full download the first time you call the operation by setting this element to null. On all subsequent calls you set the last sync time to the time stamp of the previous download. The download file contains the time stamp of the download in the Sync Time column of the Account record. You should use the account Sync Time to set this element the next time that you request a download. If you set a date and time that is more than 30 days ago, an error will be returned." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkDownloadCampaignsByAccountIdsRequest/downloadEntities> ;
    sh:name "download entities" ;
    sh:description "The entities to include in the download. For a list of entities that you can download, see the DownloadEntity value set. You must specify at least one download entity, and otherwise the operation will error." ;
    sh:datatype xsd:string ;
    sh:in ( "None" "Campaigns" "AdGroups" "Ads" "Keywords" "CampaignNegativeKeywords" "AdGroupNegativeKeywords" "CampaignTargetCriterions" "AdGroupTargetCriterions" "CampaignNegativeSites" "AdGroupNegativeSites" "CampaignLocationAdExtensions" "CampaignCallAdExtensions" "LocationAdExtensions" "CallAdExtensions" "NegativeKeywordLists" "SharedNegativeKeywords" "CampaignNegativeKeywordListAssociations" "ImageAdExtensions" "CampaignImageAdExtensions" "AdGroupImageAdExtensions" "AppAdExtensions" "AdGroupAppAdExtensions" "CampaignAppAdExtensions" "PriceAdExtensions" "ReviewAdExtensions" "CampaignNegativeDynamicSearchAdTargets" "AdGroupProductPartitions" "CampaignProductScopes" "CampaignReviewAdExtensions" "AdGroupReviewAdExtensions" "CalloutAdExtensions" "CampaignCalloutAdExtensions" "AdGroupCalloutAdExtensions" "SitelinkAdExtensions" "CampaignSitelinkAdExtensions" "AdGroupSitelinkAdExtensions" "StructuredSnippetAdExtensions" "CampaignStructuredSnippetAdExtensions" "AdGroupStructuredSnippetAdExtensions" "RemarketingLists" "AdGroupRemarketingListAssociations" "Budgets" "TextAds" "ProductAds" "AppInstallAds" "ExpandedTextAds" "DynamicSearchAds" "AdGroupDynamicSearchAdTargets" "AdGroupNegativeDynamicSearchAdTargets" "CampaignPriceAdExtensions" "AdGroupPriceAdExtensions" "Labels" "CampaignLabels" "AdGroupLabels" "TextAdLabels" "KeywordLabels" "AdGroupNegativeRemarketingListAssociations" "CustomAudiences" "AdGroupCustomAudienceAssociations" "AdGroupNegativeCustomAudienceAssociations" "InMarketAudiences" "AdGroupInMarketAudienceAssociations" "AdGroupNegativeInMarketAudienceAssociations" "Audiences" "AdGroupAudienceAssociations" "AdGroupNegativeAudienceAssociations" "ProductAdLabels" "AppInstallAdLabels" "ExpandedTextAdLabels" "DynamicSearchAdLabels" "AccountLocationAdExtensions" "AccountImageAdExtensions" "AccountAppAdExtensions" "AccountPriceAdExtensions" "AccountReviewAdExtensions" "AccountCalloutAdExtensions" "AccountSitelinkAdExtensions" "AccountStructuredSnippetAdExtensions" "ResponsiveAds" "ResponsiveAdLabels" "ProductAudiences" "AdGroupProductAudienceAssociations" "AdGroupNegativeProductAudienceAssociations" "SimilarRemarketingLists" "AdGroupSimilarRemarketingListAssociations" "AdGroupNegativeSimilarRemarketingListAssociations" "Experiments" "ActionAdExtensions" "CampaignActionAdExtensions" "AdGroupActionAdExtensions" "AccountActionAdExtensions" "ResponsiveSearchAds" "ResponsiveSearchAdLabels" "CampaignAudienceAssociations" "CampaignNegativeAudienceAssociations" "CampaignCustomAudienceAssociations" "CampaignNegativeCustomAudienceAssociations" "CampaignInMarketAudienceAssociations" "CampaignNegativeInMarketAudienceAssociations" "CampaignProductAudienceAssociations" "CampaignNegativeProductAudienceAssociations" "CampaignRemarketingListAssociations" "CampaignNegativeRemarketingListAssociations" "CampaignSimilarRemarketingListAssociations" "CampaignNegativeSimilarRemarketingListAssociations" "Feeds" "FeedItems" "CampaignNegativeStoreCriterions" "PromotionAdExtensions" "AccountPromotionAdExtensions" "CampaignPromotionAdExtensions" "AdGroupPromotionAdExtensions" "CombinedLists" "AdGroupCombinedListAssociations" "AdGroupNegativeCombinedListAssociations" "CampaignCombinedListAssociations" "CampaignNegativeCombinedListAssociations" "Images" "CustomerLists" "AdGroupCustomerListAssociations" "AdGroupNegativeCustomerListAssociations" "CampaignCustomerListAssociations" "CampaignNegativeCustomerListAssociations" "FilterLinkAdExtensions" "AccountFilterLinkAdExtensions" "CampaignFilterLinkAdExtensions" "AdGroupFilterLinkAdExtensions" "FlyerAdExtensions" "AccountFlyerAdExtensions" "CampaignFlyerAdExtensions" "AdGroupFlyerAdExtensions" "BidStrategies" "VideoAdExtensions" "AccountVideoAdExtensions" "CampaignVideoAdExtensions" "AdGroupVideoAdExtensions" "Videos" "DisclaimerAdExtensions" "CampaignDisclaimerAdExtensions" "AdcustomizerAttribute" "CampaignAdcustomizerAttribute" "AdGroupAdcustomizerAttribute" "KeywordAdcustomizerAttribute" "CampaignConversionGoal" "AdGroupHotelListingGroups" "AssetGroups" "AudienceGroups" "CampaignNegativeWebpages" "AudienceGroupAssetGroupAssociations" "AssetGroupListingGroups" "LogoAdExtensions" "AccountLogoAdExtensions" "CampaignLogoAdExtensions" "AdGroupLogoAdExtensions" "LeadFormAdExtensions" "AccountLeadFormAdExtensions" "CampaignLeadFormAdExtensions" "AccountNegativeKeywordList" "AccountNegativeKeywordListAssociation" "AccountNegativeKeyword" "ConversionGoal" "EventGoal" "AppInstallGoal" "MultiStageGoal" "DurationGoal" "OfflineConversionGoal" "UrlGoal" "InStoreTransactionGoal" "PagesViewedPerVisitGoal" "SmartGoal" "InStoreVisitGoal" "ProductGoal" "SeasonalityAdjustments" "DataExclusions" "BrandList" "BrandItem" "CampaignBrandListAssociation" "AssetGroupSearchThemes" "ImpressionBasedRemarketingList" "AdGroupImpressionBasedRemarketingListAssociations" "AdGroupNegativeImpressionBasedRemarketingListAssociations" "CampaignImpressionBasedRemarketingListAssociations" "CampaignNegativeImpressionBasedRemarketingListAssociations" "AssetGroupUrlTargets" "NewCustomerAcquisitionGoal" "ConversionValueRule" "AccountPlacementExclusionList" "AccountPlacementExclusionListItem" "CampaignAccountPlacementExclusionListAssociation" "AccountPlacementInclusionList" "AccountPlacementInclusionListItem" "CampaignAccountPlacementInclusionListAssociation" "Topic" "ContentPlacement" "BrandKit" "CustomSegment" "AdGroupCustomSegmentAssociations" "AccountContentNegativeKeywordList" "AccountContentNegativeKeywordListAssociation" "AccountContentNegativeKeyword" "AssetGroupNegativeKeywords" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkDownloadCampaignsByAccountIdsRequest/dataScope> ;
    sh:name "data scope" ;
    sh:description "You may include quality score data such as ad relevance, in addition to entity data such as campaign settings. The default value is EntityData. You may include multiple values as flags. How you specify multiple flags depends on the programming language that you use. For example, C# treats these values as flag values and Java treats them as an array of strings. The SOAP should include a string that contains a space-delimited list of values for example, EntityData QualityScoreData. If BidSuggestionsData or QualityScoreData are included, you must request a full sync. To perform a full sync, do not set LastSyncTimeInUTC i.e., leave it nil." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkDownloadCampaignsByAccountIdsRequest/downloadFileType> ;
    sh:name "download file type" ;
    sh:description "The file type of the download file. For possible values, see DownloadFileType. The default is CSV." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Csv" "Tsv" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkDownloadCampaignsByAccountIdsRequest/formatVersion> ;
    sh:name "format version" ;
    sh:description "The format for records of the download file. As a best practice you should always specify the latest format version. Currently the only supported format version for Bing Ads API Version 13 is 6.0. You should manage records according to the Bulk File Schema for the corresponding format version." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkDownloadCampaignsByAccountIdsRequest/compressionType> ;
    sh:name "compression type" ;
    sh:description "The compression type of the download file. For possible values, see CompressionType. The default compression type is Zip." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Zip" "GZip" ) ;
  ] .

# Shape for Bulk Download Campaigns By Account Ids Response
microsoftads:BulkDownloadCampaignsByAccountIdsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:BulkDownloadCampaignsByAccountIdsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkDownloadCampaignsByAccountIdsResponse/downloadRequestId> ;
    sh:name "download request id" ;
    sh:description "The identifier of the download request. You use the identifier to call the GetBulkDownloadStatus operation to check the status of the download. The identifier is valid for a maximum of two days. If you have not successfully downloaded the file within this period, it is removed from the download site and you will need to get a new download request identifier. The string has a length up to 40 and can contain any character." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Bulk Download Campaigns By Campaign Ids Request
microsoftads:BulkDownloadCampaignsByCampaignIdsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:BulkDownloadCampaignsByCampaignIdsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkDownloadCampaignsByCampaignIdsRequest/campaigns> ;
    sh:name "campaigns" ;
    sh:description "The campaigns to download. You can specify a maximum of 1,000 campaigns. The campaigns that you specify must belong to the same account." ;
    sh:node microsoftads:BulkCampaignScopeShape ;
    sh:class microsoftads:BulkCampaignScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkDownloadCampaignsByCampaignIdsRequest/lastSyncTimeInUTC> ;
    sh:name "last sync time in utc" ;
    sh:description "The last time that you requested a download. The date and time is expressed in Coordinated Universal Time (UTC). If you specify the last sync time, only those entities that have changed (added, updated, or deleted) since the specified date and time will be downloaded. If the parent campaign or ad group has been deleted since the specified last sync time, you will only see a deleted record for the deleted parent campaign or ad group. For example if a campaign was deleted, the bulk file will not contain deleted records for the ad groups, criterions, ads, and keywords that were in the campaign. Target criterion are treated slightly different from other entities, and deleted records are not returned. If any changes were made to a campaign or ad group's target, then all currently active sub target criterion records are returned. Typically, you request a full download the first time you call the operation by setting this element to null. On all subsequent calls you set the last sync time to the time stamp of the previous download. The download file contains the time stamp of the download in the Sync Time column of the Account record. You should use the account Sync Time to set this element the next time that you request a download. If you set a date and time that is more than 30 days prior, an error will be returned." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkDownloadCampaignsByCampaignIdsRequest/downloadEntities> ;
    sh:name "download entities" ;
    sh:description "The entities to include in the download. For a list of entities that you can download, see the DownloadEntity value set. You must specify at least one download entity, and otherwise the operation will error." ;
    sh:datatype xsd:string ;
    sh:in ( "None" "Campaigns" "AdGroups" "Ads" "Keywords" "CampaignNegativeKeywords" "AdGroupNegativeKeywords" "CampaignTargetCriterions" "AdGroupTargetCriterions" "CampaignNegativeSites" "AdGroupNegativeSites" "CampaignLocationAdExtensions" "CampaignCallAdExtensions" "LocationAdExtensions" "CallAdExtensions" "NegativeKeywordLists" "SharedNegativeKeywords" "CampaignNegativeKeywordListAssociations" "ImageAdExtensions" "CampaignImageAdExtensions" "AdGroupImageAdExtensions" "AppAdExtensions" "AdGroupAppAdExtensions" "CampaignAppAdExtensions" "PriceAdExtensions" "ReviewAdExtensions" "CampaignNegativeDynamicSearchAdTargets" "AdGroupProductPartitions" "CampaignProductScopes" "CampaignReviewAdExtensions" "AdGroupReviewAdExtensions" "CalloutAdExtensions" "CampaignCalloutAdExtensions" "AdGroupCalloutAdExtensions" "SitelinkAdExtensions" "CampaignSitelinkAdExtensions" "AdGroupSitelinkAdExtensions" "StructuredSnippetAdExtensions" "CampaignStructuredSnippetAdExtensions" "AdGroupStructuredSnippetAdExtensions" "RemarketingLists" "AdGroupRemarketingListAssociations" "Budgets" "TextAds" "ProductAds" "AppInstallAds" "ExpandedTextAds" "DynamicSearchAds" "AdGroupDynamicSearchAdTargets" "AdGroupNegativeDynamicSearchAdTargets" "CampaignPriceAdExtensions" "AdGroupPriceAdExtensions" "Labels" "CampaignLabels" "AdGroupLabels" "TextAdLabels" "KeywordLabels" "AdGroupNegativeRemarketingListAssociations" "CustomAudiences" "AdGroupCustomAudienceAssociations" "AdGroupNegativeCustomAudienceAssociations" "InMarketAudiences" "AdGroupInMarketAudienceAssociations" "AdGroupNegativeInMarketAudienceAssociations" "Audiences" "AdGroupAudienceAssociations" "AdGroupNegativeAudienceAssociations" "ProductAdLabels" "AppInstallAdLabels" "ExpandedTextAdLabels" "DynamicSearchAdLabels" "AccountLocationAdExtensions" "AccountImageAdExtensions" "AccountAppAdExtensions" "AccountPriceAdExtensions" "AccountReviewAdExtensions" "AccountCalloutAdExtensions" "AccountSitelinkAdExtensions" "AccountStructuredSnippetAdExtensions" "ResponsiveAds" "ResponsiveAdLabels" "ProductAudiences" "AdGroupProductAudienceAssociations" "AdGroupNegativeProductAudienceAssociations" "SimilarRemarketingLists" "AdGroupSimilarRemarketingListAssociations" "AdGroupNegativeSimilarRemarketingListAssociations" "Experiments" "ActionAdExtensions" "CampaignActionAdExtensions" "AdGroupActionAdExtensions" "AccountActionAdExtensions" "ResponsiveSearchAds" "ResponsiveSearchAdLabels" "CampaignAudienceAssociations" "CampaignNegativeAudienceAssociations" "CampaignCustomAudienceAssociations" "CampaignNegativeCustomAudienceAssociations" "CampaignInMarketAudienceAssociations" "CampaignNegativeInMarketAudienceAssociations" "CampaignProductAudienceAssociations" "CampaignNegativeProductAudienceAssociations" "CampaignRemarketingListAssociations" "CampaignNegativeRemarketingListAssociations" "CampaignSimilarRemarketingListAssociations" "CampaignNegativeSimilarRemarketingListAssociations" "Feeds" "FeedItems" "CampaignNegativeStoreCriterions" "PromotionAdExtensions" "AccountPromotionAdExtensions" "CampaignPromotionAdExtensions" "AdGroupPromotionAdExtensions" "CombinedLists" "AdGroupCombinedListAssociations" "AdGroupNegativeCombinedListAssociations" "CampaignCombinedListAssociations" "CampaignNegativeCombinedListAssociations" "Images" "CustomerLists" "AdGroupCustomerListAssociations" "AdGroupNegativeCustomerListAssociations" "CampaignCustomerListAssociations" "CampaignNegativeCustomerListAssociations" "FilterLinkAdExtensions" "AccountFilterLinkAdExtensions" "CampaignFilterLinkAdExtensions" "AdGroupFilterLinkAdExtensions" "FlyerAdExtensions" "AccountFlyerAdExtensions" "CampaignFlyerAdExtensions" "AdGroupFlyerAdExtensions" "BidStrategies" "VideoAdExtensions" "AccountVideoAdExtensions" "CampaignVideoAdExtensions" "AdGroupVideoAdExtensions" "Videos" "DisclaimerAdExtensions" "CampaignDisclaimerAdExtensions" "AdcustomizerAttribute" "CampaignAdcustomizerAttribute" "AdGroupAdcustomizerAttribute" "KeywordAdcustomizerAttribute" "CampaignConversionGoal" "AdGroupHotelListingGroups" "AssetGroups" "AudienceGroups" "CampaignNegativeWebpages" "AudienceGroupAssetGroupAssociations" "AssetGroupListingGroups" "LogoAdExtensions" "AccountLogoAdExtensions" "CampaignLogoAdExtensions" "AdGroupLogoAdExtensions" "LeadFormAdExtensions" "AccountLeadFormAdExtensions" "CampaignLeadFormAdExtensions" "AccountNegativeKeywordList" "AccountNegativeKeywordListAssociation" "AccountNegativeKeyword" "ConversionGoal" "EventGoal" "AppInstallGoal" "MultiStageGoal" "DurationGoal" "OfflineConversionGoal" "UrlGoal" "InStoreTransactionGoal" "PagesViewedPerVisitGoal" "SmartGoal" "InStoreVisitGoal" "ProductGoal" "SeasonalityAdjustments" "DataExclusions" "BrandList" "BrandItem" "CampaignBrandListAssociation" "AssetGroupSearchThemes" "ImpressionBasedRemarketingList" "AdGroupImpressionBasedRemarketingListAssociations" "AdGroupNegativeImpressionBasedRemarketingListAssociations" "CampaignImpressionBasedRemarketingListAssociations" "CampaignNegativeImpressionBasedRemarketingListAssociations" "AssetGroupUrlTargets" "NewCustomerAcquisitionGoal" "ConversionValueRule" "AccountPlacementExclusionList" "AccountPlacementExclusionListItem" "CampaignAccountPlacementExclusionListAssociation" "AccountPlacementInclusionList" "AccountPlacementInclusionListItem" "CampaignAccountPlacementInclusionListAssociation" "Topic" "ContentPlacement" "BrandKit" "CustomSegment" "AdGroupCustomSegmentAssociations" "AccountContentNegativeKeywordList" "AccountContentNegativeKeywordListAssociation" "AccountContentNegativeKeyword" "AssetGroupNegativeKeywords" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkDownloadCampaignsByCampaignIdsRequest/dataScope> ;
    sh:name "data scope" ;
    sh:description "You may include quality score data such as ad relevance, in addition to entity data such as campaign settings. The default value is EntityData. You may include multiple values as flags. How you specify multiple flags depends on the programming language that you use. For example, C# treats these values as flag values and Java treats them as an array of strings. The SOAP should include a string that contains a space-delimited list of values for example, EntityData QualityScoreData. If BidSuggestionsData or QualityScoreData are included, you must request a full sync. To perform a full sync, do not set LastSyncTimeInUTC i.e., leave it nil." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkDownloadCampaignsByCampaignIdsRequest/downloadFileType> ;
    sh:name "download file type" ;
    sh:description "The format of the download file. For possible values, see DownloadFileType. The default is CSV." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Csv" "Tsv" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkDownloadCampaignsByCampaignIdsRequest/formatVersion> ;
    sh:name "format version" ;
    sh:description "The format for records of the download file. As a best practice you should always specify the latest format version. Currently the only supported format version for Bing Ads API Version 13 is 6.0. You should manage records according to the Bulk File Schema for the corresponding format version." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkDownloadCampaignsByCampaignIdsRequest/compressionType> ;
    sh:name "compression type" ;
    sh:description "The compression type of the download file. For possible values, see CompressionType. The default compression type is Zip." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Zip" "GZip" ) ;
  ] .

# Shape for Bulk Download Campaigns By Campaign Ids Response
microsoftads:BulkDownloadCampaignsByCampaignIdsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:BulkDownloadCampaignsByCampaignIdsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkDownloadCampaignsByCampaignIdsResponse/downloadRequestId> ;
    sh:name "download request id" ;
    sh:description "The identifier of the download request. You use the identifier to call the GetBulkDownloadStatus operation to check the status of the download. The identifier is valid for a maximum of two days. If you have not successfully downloaded the file within this period, it is removed from the download site and you will need to get a new download request identifier. The string has a length up to 40 and can contain any character." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Bulk Editorial Api Fault Detail
microsoftads:BulkEditorialApiFaultDetailShape a sh:NodeShape ;
  sh:targetClass microsoftads:BulkEditorialApiFaultDetail ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkEditorialApiFaultDetail/trackingId> ;
    sh:name "tracking id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkEditorialApiFaultDetail/editorialErrors> ;
    sh:name "editorial errors" ;
    sh:node microsoftads:BulkEditorialErrorShape ;
    sh:class microsoftads:BulkEditorialError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkEditorialApiFaultDetail/batchErrors> ;
    sh:name "batch errors" ;
    sh:or (
      [ sh:node microsoftads:BulkBatchErrorShape ; sh:class microsoftads:BulkBatchError ]
      [ sh:node microsoftads:BulkBatchErrorBaseShape ; sh:class microsoftads:BulkBatchErrorBase ]
      [ sh:node microsoftads:BulkEditorialErrorShape ; sh:class microsoftads:BulkEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkEditorialApiFaultDetail/operationErrors> ;
    sh:name "operation errors" ;
    sh:node microsoftads:BulkOperationErrorShape ;
    sh:class microsoftads:BulkOperationError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkEditorialApiFaultDetail/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Bulk Get Bulk Download Status Request
microsoftads:BulkGetBulkDownloadStatusRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:BulkGetBulkDownloadStatusRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkGetBulkDownloadStatusRequest/requestId> ;
    sh:name "request id" ;
    sh:description "The identifier of the download request. The DownloadCampaignsByAccountIds and DownloadCampaignsByCampaignIds operations return this element as the DownloadRequestId. The identifier is valid for a maximum of two days. If you have not successfully downloaded the file within this period, it is removed from the download site and you will need to get a new download request identifier. The string has a length up to 40 and can contain any character." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Bulk Get Bulk Download Status Response
microsoftads:BulkGetBulkDownloadStatusResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:BulkGetBulkDownloadStatusResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkGetBulkDownloadStatusResponse/requestStatus> ;
    sh:name "request status" ;
    sh:description "The status of the download. The possible values are as follows. Completed - The download completed successfully. InProgress - The download is in progress. Failed - The download failed. You may submit a new download with fewer entities, without quality score and bid suggestions data, or try again to submit the same download later. FailedFullSyncRequired - The request's LastSyncTimeInUTC element must be set to null, for example if the specified account was included in a data migration. After requesting a full download, you may begin requesting delta downloads again." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkGetBulkDownloadStatusResponse/resultFileUrl> ;
    sh:name "result file url" ;
    sh:description "The URL that contains the download data when the RequestStatus value is Completed. You have five minutes from the time this URL is returned to download the file. If you do not start the download within this time period, you will need to call GetBulkDownloadStatus again to get a new URL. You should not take a dependency on the domain of the download URL, as it is subject to change. The download file is compressed (in zip format), so you must unzip the file to access the data. For information about the bulk file format, see Bulk File Schema." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkGetBulkDownloadStatusResponse/percentComplete> ;
    sh:name "percent complete" ;
    sh:description "The progress completion percentage for system processing of the bulk download file." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkGetBulkDownloadStatusResponse/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. Forward compatibility changes will be noted here in future releases. There are currently no forward compatibility changes for this operation." ;
    sh:node microsoftads:BulkKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:BulkKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkGetBulkDownloadStatusResponse/errors> ;
    sh:name "errors" ;
    sh:description "An array of OperationError objects corresponding to errors encountered during the system processing of the bulk file after your download request was submitted." ;
    sh:node microsoftads:BulkOperationErrorShape ;
    sh:class microsoftads:BulkOperationError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Bulk Get Bulk Upload Status Request
microsoftads:BulkGetBulkUploadStatusRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:BulkGetBulkUploadStatusRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkGetBulkUploadStatusRequest/requestId> ;
    sh:name "request id" ;
    sh:description "The identifier of the upload request. The identifier is valid for up to 15 minutes. If you have not successfully uploaded the file within this period, you will need to get a new request identifier and upload URL." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Bulk Get Bulk Upload Status Response
microsoftads:BulkGetBulkUploadStatusResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:BulkGetBulkUploadStatusResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkGetBulkUploadStatusResponse/requestStatus> ;
    sh:name "request status" ;
    sh:description "The status of the upload. The following are the possible returned status values. Completed - The upload file was accepted and processed successfully without errors. CompletedWithErrors - The upload completed with one or more errors. While the overall upload was successful, one or more add or update errors could have occurred. As a best practice you should request error information via the ResponseMode element when calling GetBulkUploadUrl and check the ResultFileUrl for any errors. Failed - The entire upload failed due to an unexpected error. You may submit a new upload with fewer entities or try again to submit the same upload later. FileUploaded - The upload request has been received and is in the queue for processing. InProgress - The upload file has been accepted and the upload is in progress. PendingFileUpload - The upload file has not been received for the corresponding RequestId. UploadFileRowCountExceeded - The limit of bulk records in the upload file has been exceeded. For more information about limits and upload best practices, see Bulk Upload. UploadFileFormatNotSupported - The Format Version Name field specified in the upload is not supported for this version of the Bulk API." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkGetBulkUploadStatusResponse/resultFileUrl> ;
    sh:name "result file url" ;
    sh:description "The URL of the file that contains the requested results, for example upload error information. The URL must be used within five minutes of the time that the GetBulkUploadStatus operation returns the Completed or CompletedWithErrors status response string. If you do not start the download within this period of time, you will need to call GetBulkUploadStatus again to get a new URL. You should not take a dependency on the domain of the download URL, as it is subject to change." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkGetBulkUploadStatusResponse/percentComplete> ;
    sh:name "percent complete" ;
    sh:description "The progress completion percentage for system processing of the uploaded bulk file. The value range is between 0 and 100. You should also compare the upload status. If the upload fails, the percent complete will reset to zero (0)." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkGetBulkUploadStatusResponse/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. Forward compatibility changes will be noted here in future releases. There are currently no forward compatibility changes for this operation." ;
    sh:node microsoftads:BulkKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:BulkKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkGetBulkUploadStatusResponse/errors> ;
    sh:name "errors" ;
    sh:description "An array of OperationError objects corresponding to errors encountered during the system processing of the bulk file after your HTTP POST upload completed. For example, an OperationError would include the BulkServiceFormatVersionNotSupported error code if the uploaded file contains one or more bulk records that are not supported with the corresponding file format version." ;
    sh:node microsoftads:BulkOperationErrorShape ;
    sh:class microsoftads:BulkOperationError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Bulk Get Bulk Upload Url Request
microsoftads:BulkGetBulkUploadUrlRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:BulkGetBulkUploadUrlRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkGetBulkUploadUrlRequest/responseMode> ;
    sh:name "response mode" ;
    sh:description "Specify whether to return errors and their corresponding data, or only the errors in the results file. The default is ErrorsOnly." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "ErrorsOnly" "ErrorsAndResults" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkGetBulkUploadUrlRequest/accountId> ;
    sh:name "account id" ;
    sh:description "The account identifier corresponding to the data that will be uploaded." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Bulk Get Bulk Upload Url Response
microsoftads:BulkGetBulkUploadUrlResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:BulkGetBulkUploadUrlResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkGetBulkUploadUrlResponse/uploadUrl> ;
    sh:name "upload url" ;
    sh:description "The URL where you may submit your bulk upload file via HTTP POST. The upload URL is valid for up to 15 minutes. If you have not successfully uploaded the file within this period, you will need to get a new request identifier and upload URL." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkGetBulkUploadUrlResponse/requestId> ;
    sh:name "request id" ;
    sh:description "The identifier of the upload request. The identifier is valid for up to 15 minutes. If you have not successfully uploaded the file within this period, you will need to get a new request identifier and upload URL." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Bulk Upload Entity Records Request
microsoftads:BulkUploadEntityRecordsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:BulkUploadEntityRecordsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkUploadEntityRecordsRequest/responseMode> ;
    sh:name "response mode" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "ErrorsOnly" "ErrorsAndResults" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkUploadEntityRecordsRequest/entityRecords> ;
    sh:name "entity records" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkUploadEntityRecordsRequest/accountId> ;
    sh:name "account id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Bulk Upload Entity Records Response
microsoftads:BulkUploadEntityRecordsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:BulkUploadEntityRecordsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkUploadEntityRecordsResponse/entityRecords> ;
    sh:name "entity records" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkUploadEntityRecordsResponse/requestId> ;
    sh:name "request id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkUploadEntityRecordsResponse/requestStatus> ;
    sh:name "request status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.BulkUploadEntityRecordsResponse/errors> ;
    sh:name "errors" ;
    sh:node microsoftads:BulkOperationErrorShape ;
    sh:class microsoftads:BulkOperationError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Account Content Negative Keyword List
microsoftads:CampaignManagementAccountContentNegativeKeywordListShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAccountContentNegativeKeywordList ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAccountContentNegativeKeywordList/itemCount> ;
    sh:name "item count" ;
    sh:description "The number of SharedListItem objects that are added to this shared list. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAccountContentNegativeKeywordList/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier of the shared entity. Add: Read-only Update: Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAccountContentNegativeKeywordList/name> ;
    sh:name "name" ;
    sh:description "The name of the shared entity. The maximum string length is 255. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAccountContentNegativeKeywordList/type> ;
    sh:name "type" ;
    sh:description "The type of the shared entity. This value is NegativeKeywordList when you retrieve a NegativeKeywordList. This value is PlacementExclusionList when you retrieve a PlacementExclusionList. This value is AccountNegativeKeywordList when you retrieve an AccountNegativeKeywordList. For more information about shared entity types, see SharedEntity Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAccountContentNegativeKeywordList/associationCount> ;
    sh:name "association count" ;
    sh:description "The number of active associations between this shared entity and another entity such as campaign or ad account. For a NegativeKeywordList, the maximum number of active associations between the negative keyword list and campaign is 20. For a PlacementExclusionList, the maximum number of active associations between the website exclusion list and ad account is undefined. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAccountContentNegativeKeywordList/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. Forward compatibility changes will be noted here in future releases. There are currently no forward compatibility changes for this object." ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Key Value Pair Ofstring Andstring
microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementKeyValuePairOfstringAndstring/key> ;
    sh:name "key" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementKeyValuePairOfstringAndstring/value> ;
    sh:name "value" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Account Migration Statuses Info
microsoftads:CampaignManagementAccountMigrationStatusesInfoShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAccountMigrationStatusesInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAccountMigrationStatusesInfo/accountId> ;
    sh:name "account id" ;
    sh:description "The Microsoft Advertising identifier of the account." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAccountMigrationStatusesInfo/migrationStatusInfos> ;
    sh:name "migration status infos" ;
    sh:description "The list of migration status info for the corresponding account." ;
    sh:node microsoftads:CampaignManagementMigrationStatusInfoShape ;
    sh:class microsoftads:CampaignManagementMigrationStatusInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Migration Status Info
microsoftads:CampaignManagementMigrationStatusInfoShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementMigrationStatusInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementMigrationStatusInfo/migrationType> ;
    sh:name "migration type" ;
    sh:description "The migration type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementMigrationStatusInfo/startTimeInUtc> ;
    sh:name "start time in utc" ;
    sh:description "The date and time when the migration began. The value is in Coordinated Universal Time (UTC). The date and time value reflects the date and time at the server, not the client. For information about the format of the date and time, see the dateTime entry in Primitive XML Data Types." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementMigrationStatusInfo/status> ;
    sh:name "status" ;
    sh:description "The migration status." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "NotInPilot" "NotStarted" "InProgress" "Completed" ) ;
  ] .

# Shape for Campaign Management Account Negative Keyword List
microsoftads:CampaignManagementAccountNegativeKeywordListShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAccountNegativeKeywordList ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAccountNegativeKeywordList/itemCount> ;
    sh:name "item count" ;
    sh:description "The number of SharedListItem objects that are added to this shared list. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAccountNegativeKeywordList/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier of the shared entity. Add: Read-only Update: Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAccountNegativeKeywordList/name> ;
    sh:name "name" ;
    sh:description "The name of the shared entity. The maximum string length is 255. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAccountNegativeKeywordList/type> ;
    sh:name "type" ;
    sh:description "The type of the shared entity. This value is NegativeKeywordList when you retrieve a NegativeKeywordList. This value is PlacementExclusionList when you retrieve a PlacementExclusionList. This value is AccountNegativeKeywordList when you retrieve an AccountNegativeKeywordList. For more information about shared entity types, see SharedEntity Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAccountNegativeKeywordList/associationCount> ;
    sh:name "association count" ;
    sh:description "The number of active associations between this shared entity and another entity such as campaign or ad account. For a NegativeKeywordList, the maximum number of active associations between the negative keyword list and campaign is 20. For a PlacementExclusionList, the maximum number of active associations between the website exclusion list and ad account is undefined. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAccountNegativeKeywordList/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. Forward compatibility changes will be noted here in future releases. There are currently no forward compatibility changes for this object." ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Account Placement Exclusion List
microsoftads:CampaignManagementAccountPlacementExclusionListShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAccountPlacementExclusionList ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAccountPlacementExclusionList/itemCount> ;
    sh:name "item count" ;
    sh:description "The number of Site objects that are added to this shared list. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAccountPlacementExclusionList/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier of the shared entity. Add: Read-only Update: Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAccountPlacementExclusionList/name> ;
    sh:name "name" ;
    sh:description "The name of the shared entity. The maximum string length is 255. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAccountPlacementExclusionList/type> ;
    sh:name "type" ;
    sh:description "The type of the shared entity. This value is NegativeKeywordList when you retrieve a NegativeKeywordList. This value is PlacementExclusionList when you retrieve a PlacementExclusionList. This value is AccountNegativeKeywordList when you retrieve an AccountNegativeKeywordList. For more information about shared entity types, see SharedEntity Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAccountPlacementExclusionList/associationCount> ;
    sh:name "association count" ;
    sh:description "The number of active associations between this shared entity and another entity such as campaign or ad account. For a NegativeKeywordList, the maximum number of active associations between the negative keyword list and campaign is 20. For a PlacementExclusionList, the maximum number of active associations between the website exclusion list and ad account is undefined. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAccountPlacementExclusionList/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. Forward compatibility changes will be noted here in future releases. There are currently no forward compatibility changes for this object." ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Account Placement Inclusion List
microsoftads:CampaignManagementAccountPlacementInclusionListShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAccountPlacementInclusionList ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAccountPlacementInclusionList/itemCount> ;
    sh:name "item count" ;
    sh:description "The number of Site objects that are added to this shared list. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAccountPlacementInclusionList/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier of the shared entity. Add: Read-only Update: Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAccountPlacementInclusionList/name> ;
    sh:name "name" ;
    sh:description "The name of the shared entity. The maximum string length is 255. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAccountPlacementInclusionList/type> ;
    sh:name "type" ;
    sh:description "The type of the shared entity. This value is NegativeKeywordList when you retrieve a NegativeKeywordList. This value is PlacementExclusionList when you retrieve a PlacementExclusionList. This value is AccountNegativeKeywordList when you retrieve an AccountNegativeKeywordList. For more information about shared entity types, see SharedEntity Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAccountPlacementInclusionList/associationCount> ;
    sh:name "association count" ;
    sh:description "The number of active associations between this shared entity and another entity such as campaign or ad account. For a NegativeKeywordList, the maximum number of active associations between the negative keyword list and campaign is 20. For a PlacementExclusionList, the maximum number of active associations between the website exclusion list and ad account is undefined. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAccountPlacementInclusionList/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. Forward compatibility changes will be noted here in future releases. There are currently no forward compatibility changes for this object." ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Account Property
microsoftads:CampaignManagementAccountPropertyShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAccountProperty ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAccountProperty/name> ;
    sh:name "name" ;
    sh:description "The name of the account property." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "None" "TrackingUrlTemplate" "MSCLKIDAutoTaggingEnabled" "AdClickParallelTracking" "FinalUrlSuffix" "IncludeViewThroughConversions" "ProfileExpansionEnabled" "AllowImageAutoRetrieve" "AutoApplyRecommendations" "IncludeAutoBiddingViewThroughConversions" "AutoBiddingViewThroughConversionsValueAttributionWeight" "LoopBackWindowForViewThroughConversions" "BusinessAttributes" "EnableMMAUnderDSAAdgroups" "OptOutFromMCM" "NetflixTCAccepted" "BlockedContentSegments" "AssetAIEnhancementOptout" "AcceptNielsenTermsAndConditions" "ImageMissingWarningOptout" "OptOutFromSystemSourcedImagesInSWF" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAccountProperty/value> ;
    sh:name "value" ;
    sh:description "The value of the named account property. The value will vary by account property name. For more information, see Account Property Values in the section below." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Action Ad Extension
microsoftads:CampaignManagementActionAdExtensionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementActionAdExtension ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementActionAdExtension/status> ;
    sh:name "status" ;
    sh:description "The status of the ad extension. The value will always be Active because the Campaign Management service does not return deleted ad extensions. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Deleted" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementActionAdExtension/scheduling> ;
    sh:name "scheduling" ;
    sh:description "Determines the calendar day and time ranges when the ad extension is eligible to be shown in ads. Add: Optional Update: Optional. If you set this element null, any existing scheduling set for the ad extension will remain unchanged. If you set this to any non-null Schedule object, you are effectively replacing existing scheduling settings for the ad extension. To remove all scheduling set this element to an empty Schedule object." ;
    sh:node microsoftads:CampaignManagementScheduleShape ;
    sh:class microsoftads:CampaignManagementSchedule ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementActionAdExtension/devicePreference> ;
    sh:name "device preference" ;
    sh:description "Not supported for this ad extension type." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementActionAdExtension/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier of the ad extension. Add: Read-only Update: Read-only and Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementActionAdExtension/type> ;
    sh:name "type" ;
    sh:description "The type of the ad extension. This value is ActionAdExtension when you retrieve an action ad extension. Add: Read-only Update: Read-only For more information about ad extension types, see the Ad Extension Data Object Remarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementActionAdExtension/version> ;
    sh:name "version" ;
    sh:description "Tracks the number of times the ad extension has been updated. The version is set to 1 when the ad extension is created, and increments by one after each update. Add: Not allowed Update: Not allowed" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementActionAdExtension/actionType> ;
    sh:name "action type" ;
    sh:description "The action type that you choose here, as well as the Language that you set, determines the text that is displayed on your call-to-action button. Microsoft Advertising does not support all action types for all languages. If you attempt to use an unsupported action type and language combination, an error will be returned. For details see Action Text for Action Ad Extensions. Add: Required Update: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unknown" "ActNow" "ApplyNow" "BetNow" "BidNow" "BookACar" "BookHotel" "BookNow" "Browse" "BuyNow" "ChatNow" "Compare" "ContactUs" "Coupon" "Donate" "Download" "EmailNow" "EnrollNow" "Explore" "FileNow" "FindJob" "FreePlay" "FreeQuote" "FreeTrial" "GetDeals" "GetOffer" "GetQuote" "JoinNow" "LearnMore" "ListenNow" "LogIn" "Message" "NewCars" "OrderNow" "PlayGame" "PlayNow" "PostJob" "Register" "RentACar" "RentNow" "Reserve" "Sale" "SaveNow" "Schedule" "SeeMenu" "SeeMore" "SeeOffer" "SellNow" "ShopNow" "Showtimes" "SignIn" "SignUp" "StartFree" "StartNow" "Subscribe" "TestDrive" "TryNow" "UsedCars" "ViewCars" "ViewNow" "ViewPlans" "VisitSite" "VoteNow" "Watch" "WatchMore" "WatchNow" "Directions" "FindStore" "SwitchNow" "VisitStore" "RenewNow" "Reorder" "BuildNow" "Dealers" "GetDemo" "GetNow" "GoToDemo" "SeeDemo" "SeeModels" "SeeOffers" "ViewDemo" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementActionAdExtension/language> ;
    sh:name "language" ;
    sh:description "The language that the ad extension will be served in. The extension will always be served in this language, regardless of the campaign or ad group's language settings. The supported language strings are: Danish, Dutch, English, Finnish, French, German, Italian, Norwegian, Portuguese, Spanish, Swedish, and TraditionalChinese. Microsoft Advertising does not support all action types for all languages. If you attempt to use an unsupported action type and language combination, an error will be returned. For details see Action Text for Action Ad Extensions. Add: Required Update: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementActionAdExtension/finalMobileUrls> ;
    sh:name "final mobile urls" ;
    sh:description "This is a mobile-friendly landing page URL when Action Extensions are served on mobile devices. If you specify final mobile URLs, you must also specify FinalUrls. The length of the URL is limited to 2,048 characters. The HTTP or HTTPS protocol string does count towards the 2,048 character limit. Add: Optional Update: Optional. If you set this element null, the previous setting will be deleted." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementActionAdExtension/finalUrls> ;
    sh:name "final urls" ;
    sh:description "This is the link to your specific web page or form that corresponds to the action text. When an action URL isn't provided, the ad's final URL will be used. The length of the URL is limited to 2,048 characters. The HTTP or HTTPS protocol string does count towards the 2,048 character limit. Although the data type is a list of strings, only the first list item is used by Microsoft Advertising. Add: Optional Update: Optional. If you set this element null, the previous setting will be deleted." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementActionAdExtension/trackingUrlTemplate> ;
    sh:name "tracking url template" ;
    sh:description "The tracking template to use as a default for all FinalUrls and FinalMobileUrls. The following validation rules apply to tracking templates. For more details about supported templates and parameters, see the Microsoft Advertising help article What tracking or URL parameters can I use? - Tracking templates defined for lower level entities e.g. ads override those set for higher level entities e.g. campaign. For more information, see Entity Limits. - The length of the tracking template is limited to 2,048 characters. The HTTP or HTTPS protocol string does count towards the 2,048 character limit. - The tracking template must be a well-formed URL beginning with one of the following: http://, https://, {lpurl}, or {unescapedlpurl}. - Microsoft Advertising does not validate whether custom parameters exist. If you use custom parameters in your tracking template and they do not exist, then the landing page URL will include the key and value placeholders of your custom parameters without substitution. For example, if your tracking template is https://tracker.example.com/?season={_season}&promocode={_promocode}&u={lpurl} and neither {_season} or {_promocode} are defined at the campaign, ad group, criterion, keyword, or ad level, then the landing page URL will be the same. Add: Optional Update: Optional. If you set this element null, the previous setting will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementActionAdExtension/finalUrlSuffix> ;
    sh:name "final url suffix" ;
    sh:description "The final URL suffix can include tracking parameters that will be appended to the end of your landing page URL. We recommend placing tracking parameters that your landing page requires in a final URL suffix so that your customers are always sent to your landing page. For more details and validation rules see Final URL Suffix in the technical guides. Add: Optional Update: Optional. If you set this element null, the previous setting will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementActionAdExtension/urlCustomParameters> ;
    sh:name "url custom parameters" ;
    sh:description "Your custom collection of key and value parameters for URL tracking. Microsoft Advertising will accept the first 8 CustomParameter objects that you include within the CustomParameters object, and if you include more than 8 custom parameters an error will be returned. Each CustomParameter includes Key and Value elements. For customers in the Custom Parameters Limit Increase Phase 3 pilot (GetCustomerPilotFeatures returns 635), Microsoft Advertising will accept the first 8 custom parameter key and value pairs that you include, and if you include more than 8 custom parameters an error will be returned. Add: Optional Update: Optional. If you set this element null, the previous setting will be deleted." ;
    sh:node microsoftads:CampaignManagementCustomParametersShape ;
    sh:class microsoftads:CampaignManagementCustomParameters ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementActionAdExtension/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. There are currently no forward compatibility changes for the AdExtension object. Add: Read-only Update: Read-only" ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Schedule
microsoftads:CampaignManagementScheduleShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementSchedule ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSchedule/startDate> ;
    sh:name "start date" ;
    sh:description "The scheduled start date. The start date is inclusive. For example, if you set StartDate to 5/5/2020, the ad extensions will start being shown at 12:00 AM on 5/5/2020. Add: Required with a FlyerAdExtension; Optional for other ad extension types. If you do not specify a start date, the ad extensions are immediately eligible to be scheduled during the day and time ranges. Update: Optional. For most ad extension types the start date can be shortened or extended, as long as the end date is either null or occurs after the new start date. If set the start date to null, then you are effectively removing the start date and the ad extensions are immediately eligible to be scheduled during the day and time ranges. With a FlyerAdExtension you can cannot remove the start date. The start date can be shortened or extended, as long as the end date occurs up to 30 days after the new start date." ;
    sh:node microsoftads:CampaignManagementDateShape ;
    sh:class microsoftads:CampaignManagementDate ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSchedule/endDate> ;
    sh:name "end date" ;
    sh:description "The scheduled end date. The end date is inclusive. For example, if you set EndDate to 12/31/2020, the ad extensions will stop being shown at 11:59 PM on 12/31/2020. Add: Required with a FlyerAdExtension; Optional for other ad extension types. For most ad extension types if you do not specify an end date, the ad extensions will continue to be delivered unless you pause the associated campaigns, ad groups, or ads. Update: Optional. For most ad extension types the end date can be shortened or extended, as long as the start date is either null or occurs before the new end date. If you set the end date to null, then you are effectively removing the end date and the ad extensions will continue to be delivered unless you pause the associated campaigns, ad groups, or ads. With a FlyerAdExtension you can cannot remove the end date; The end date can be shortened or extended, as long as the start date occurs up to 30 days before the new end date." ;
    sh:node microsoftads:CampaignManagementDateShape ;
    sh:class microsoftads:CampaignManagementDate ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSchedule/useSearcherTimeZone> ;
    sh:name "use searcher time zone" ;
    sh:description "Determines whether to use the account time zone or the time zone of the search user where the ads could be delivered. Set this property to true if you want the ad extensions to be shown in the search user's time zone, and otherwise set it to false. Add: Optional. If you do not specify this element or leave it null, the default value of false will be set and the account time zone will be used. Update: When you update a schedule the existing settings are replaced with the new setting. Thus if you update a schedule and leave this element null, then you are effectively resetting to the default value of false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSchedule/dayTimeRanges> ;
    sh:name "day time ranges" ;
    sh:description "The list of day and time ranges. Each day and time range includes the scheduled day of week, start/end hour, and start/end minute. Add: Optional. If you set this element to null, then ad extensions will be eligible for scheduling anytime during the calendar start and end dates. Update: Optional. The individual DayTime objects cannot be updated. You can effectively update the day and time ranges by sending a new list of all DayTime settings that should replace the prior set. If you set this element to null, then you are effectively removing all existing day and time ranges." ;
    sh:node microsoftads:CampaignManagementDayTimeShape ;
    sh:class microsoftads:CampaignManagementDayTime ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Date
microsoftads:CampaignManagementDateShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDate ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDate/year> ;
    sh:name "year" ;
    sh:description "Specifies the year. Add: Required Update: Required" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDate/month> ;
    sh:name "month" ;
    sh:description "Specifies the month. Add: Required Update: Required" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDate/day> ;
    sh:name "day" ;
    sh:description "Specifies the day of the month. Add: Required Update: Required" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Day Time
microsoftads:CampaignManagementDayTimeShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDayTime ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDayTime/day> ;
    sh:name "day" ;
    sh:description "The scheduled day of week. Add: Required. Update: The DayTime object cannot be updated." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Sunday" "Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDayTime/startHour> ;
    sh:name "start hour" ;
    sh:description "The scheduled start hour. The possible values range from 0 to 23, where 0 is equivalent to 12:00AM and 12 is 12:00PM. Add: Required. Update: The DayTime object cannot be updated." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDayTime/startMinute> ;
    sh:name "start minute" ;
    sh:description "The scheduled start minute. The possible values range from 0 to 60. Add: Required. Update: The DayTime object cannot be updated." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Zero" "Fifteen" "Thirty" "FortyFive" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDayTime/endHour> ;
    sh:name "end hour" ;
    sh:description "The scheduled end hour. The possible values range from 0 to 24, where 0 is equivalent to 12:00AM and 12 is 12:00PM. Add: Required. Update: The DayTime object cannot be updated." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDayTime/endMinute> ;
    sh:name "end minute" ;
    sh:description "The scheduled end minute. The possible values range from 0 to 60. Add: Required. Update: The DayTime object cannot be updated." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Zero" "Fifteen" "Thirty" "FortyFive" ) ;
  ] .

# Shape for Campaign Management Custom Parameters
microsoftads:CampaignManagementCustomParametersShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementCustomParameters ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomParameters/parameters> ;
    sh:name "parameters" ;
    sh:description "The collection of key and value custom parameters for URL tracking. For campaigns, ad groups, and ad groups, ad group criterions, and ads Microsoft Advertising will accept the first 8 custom parameter key and value pairs that you include, and if you include more than 8 custom parameters an error will be returned. For action, price, and sitelink ad extensions Microsoft Advertising will accept the first 3 custom parameter key and value pairs that you include, and any additional custom parameters will be ignored. For customers in the Custom Parameters Limit Increase Phase 3 pilot (GetCustomerPilotFeatures returns 635) for action, price, and sitelink ad extensions, Microsoft Advertising will accept the first 8 custom parameter key and value pairs that you include, and if you include more than 8 custom parameters an error will be returned. Add: Required Update: Optional. Once you create this CustomParameters object, the existing custom parameters will be removed or replaced. To remove all existing custom parameters create this CustomParameters object and set the Parameters element to nil. To replace or append to the list of custom parameters, create this CustomParameters object and assign to the Parameters element a new list of CustomParameter objects, including any previous custom parameters that you want to retain. To retain all of the existing custom parameters, set the element that uses this CustomParameters object to nil. For example set the UrlCustomParameters element of an ExpandedTextAd to nil if you do not want to update any of the custom parameters.CustomParameter array" ;
    sh:node microsoftads:CampaignManagementCustomParameterShape ;
    sh:class microsoftads:CampaignManagementCustomParameter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Custom Parameter
microsoftads:CampaignManagementCustomParameterShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementCustomParameter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomParameter/key> ;
    sh:name "key" ;
    sh:description "The name of the custom parameter that you want to track. The maximum length of this string is 16, in UTF-8 bytes. With the Campaign Management service you may not specify special characters such as braces and underscore: \\\"\\{\\\", \\\"\\_\\\", and \\\"\\}\\\". With the Bulk service the surrounding braces and underscore are required. The maximum length of 16 UTF-8 bytes does not include the optional braces and underscore: \\\"\\{\\\", \\\"\\_\\\", and \\\"\\}\\\". Add: Required Update: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomParameter/value> ;
    sh:name "value" ;
    sh:description "The value to track using your custom parameter. The maximum length of this string is 200, in UTF-8 bytes. You can set the value to an empty string (\"\") but it cannot be null or empty. The maximum length of the value string is 250 for all entities except action, price, and sitelink ad extensions. The maximum length of the value string is 200 for action, price, and sitelink ad extensions. For action, price, and sitelink ad extensions, the maximum length increases to 250 for customers in the Custom Parameters Limit Increase Phase 3 pilot (GetCustomerPilotFeatures returns 635). Add: Required Update: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Ad
microsoftads:CampaignManagementAdShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAd ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAd/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier for the ad." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAd/type> ;
    sh:name "type" ;
    sh:description "The type of the ad. For more information about ad types, see the Remarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Text" "Image" "Product" "AppInstall" "ExpandedText" "DynamicSearch" "ResponsiveAd" "ResponsiveSearch" "Hotel" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAd/status> ;
    sh:name "status" ;
    sh:description "The status of the ad. You can set the ad status to Active or Paused." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Inactive" "Active" "Paused" "Deleted" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAd/editorialStatus> ;
    sh:name "editorial status" ;
    sh:description "The editorial review status of the ad, which indicates whether the ad is pending review, has been approved, or has been disapproved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Disapproved" "Inactive" "ActiveLimited" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAd/devicePreference> ;
    sh:name "device preference" ;
    sh:description "Determines the device preference for showing the ad. Device preference is only supported for AppInstallAd and TextAd objects." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAd/adFormatPreference> ;
    sh:name "ad format preference" ;
    sh:description "The Ad Format Preference is used to indicate whether or not you prefer the ad copy to be shown to users as a search or audience ad. Search ads tend to be written as a call to action, whereas audience ads should be written in more of an informational style. While you have the option to use search ads as audience ads, designating an ad as Audience ads preferred format allows you to optimize its messaging for native delivery. Possible values are AudienceAd and All. If set to All, the ad will be eligible for both search and audience ad formats. If set to AudienceAd, the ad will only be eligible for the audience ad format. Ad Format Preference is only supported for ExpandedTextAd and TextAd objects." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAd/trackingUrlTemplate> ;
    sh:name "tracking url template" ;
    sh:description "The tracking template to use as a default for all landing page URLs. This element is only supported for AppInstallAd, DynamicSearchAd, ExpandedTextAd, ResponsiveAd, ResponsiveSearchAd, and TextAd objects. It is not supported with the ProductAd object." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAd/finalUrlSuffix> ;
    sh:name "final url suffix" ;
    sh:description "The final URL suffix can include tracking parameters that will be appended to the end of your landing page URL. We recommend placing tracking parameters that your landing page requires in a final URL suffix so that your customers are always sent to your landing page. For more details and validation rules see Final URL Suffix in the technical guides. This element is only supported for AppInstallAd, DynamicSearchAd, ExpandedTextAd, ResponsiveAd, and ResponsiveSearchAd objects. It is not supported with the ProductAd and and TextAd objects." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAd/urlCustomParameters> ;
    sh:name "url custom parameters" ;
    sh:description "Your custom collection of key and value parameters for URL tracking. This element is only supported for AppInstallAd, DynamicSearchAd, ExpandedTextAd, ResponsiveAd, ResponsiveSearchAd, and TextAd objects. It is not supported with the ProductAd object." ;
    sh:node microsoftads:CampaignManagementCustomParametersShape ;
    sh:class microsoftads:CampaignManagementCustomParameters ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAd/finalUrls> ;
    sh:name "final urls" ;
    sh:description "The last or final URL where a user is ultimately taken, whether or not the click to final URL path included any redirects. This element is only supported for AppInstallAd, ExpandedTextAd, ResponsiveAd, ResponsiveSearchAd, and TextAd objects. It is not supported with the DynamicSearchAd and ProductAd objects." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAd/finalMobileUrls> ;
    sh:name "final mobile urls" ;
    sh:description "The mobile landing page URL. This element is only supported for ExpandedTextAd, ResponsiveAd, ResponsiveSearchAd, and TextAd objects. It is not supported with the AppInstallAd, DynamicSearchAd, and ProductAd objects." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAd/finalAppUrls> ;
    sh:name "final app urls" ;
    sh:description "For future use." ;
    sh:node microsoftads:CampaignManagementAppUrlShape ;
    sh:class microsoftads:CampaignManagementAppUrl ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAd/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. Forward compatibility changes will be noted here in future releases. There are currently no forward compatibility changes for this object." ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAd/destinationUrl> ;
    sh:name "destination url" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAd/title> ;
    sh:name "title" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAd/text> ;
    sh:name "text" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAd/displayUrl> ;
    sh:name "display url" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAd/promotionalText> ;
    sh:name "promotional text" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAd/appPlatform> ;
    sh:name "app platform" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAd/appStoreId> ;
    sh:name "app store id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAd/titlePart1> ;
    sh:name "title part1" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAd/titlePart2> ;
    sh:name "title part2" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAd/path1> ;
    sh:name "path1" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAd/path2> ;
    sh:name "path2" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAd/domain> ;
    sh:name "domain" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAd/titlePart3> ;
    sh:name "title part3" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAd/textPart2> ;
    sh:name "text part2" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAd/headline> ;
    sh:name "headline" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAd/longHeadlineString> ;
    sh:name "long headline string" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAd/businessName> ;
    sh:name "business name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAd/callToAction> ;
    sh:name "call to action" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unknown" "ActNow" "ApplyNow" "BetNow" "BidNow" "BookACar" "BookHotel" "BookNow" "Browse" "BuyNow" "ChatNow" "Compare" "ContactUs" "Coupon" "Donate" "Download" "EmailNow" "EnrollNow" "Explore" "FileNow" "FindJob" "FreePlay" "FreeQuote" "FreeTrial" "GetDeals" "GetOffer" "GetQuote" "JoinNow" "LearnMore" "ListenNow" "LogIn" "Message" "NewCars" "OrderNow" "PlayGame" "PlayNow" "PostJob" "Register" "RentACar" "RentNow" "Reserve" "Sale" "SaveNow" "Schedule" "SeeMenu" "SeeMore" "SeeOffer" "SellNow" "ShopNow" "Showtimes" "SignIn" "SignUp" "StartFree" "StartNow" "Subscribe" "TestDrive" "TryNow" "UsedCars" "ViewCars" "ViewNow" "ViewPlans" "VisitSite" "VoteNow" "Watch" "WatchMore" "WatchNow" "Directions" "FindStore" "SwitchNow" "VisitStore" "RenewNow" "Reorder" "Default" "NoButton" "Install" "AddToCart" "BookTravel" "Buy" "OpenLink" "RegisterNow" "BuildNow" "Dealers" "GetDemo" "GetNow" "GoToDemo" "SeeDemo" "SeeModels" "SeeOffers" "ViewDemo" "CustomText" "Discover" "Dismiss" "Apply" "ViewQuote" "Join" "Attend" "RequestDemo" "Automated" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAd/callToActionLanguage> ;
    sh:name "call to action language" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "None" "Albanian" "Arabic" "Bulgarian" "TraditionalChinese" "Croatian" "Czech" "Danish" "Dutch" "English" "Estonian" "Finnish" "French" "German" "Greek" "Hebrew" "Hindi" "Hungarian" "Icelandic" "Indonesian" "Italian" "Japanese" "Korean" "Latvian" "Lithuanian" "Macedonian" "Malay" "Maltese" "Norwegian" "Polish" "Portuguese" "Romanian" "Russian" "Serbian" "Slovak" "Slovenian" "Spanish" "Swedish" "Tagalog" "Thai" "Turkish" "Vietnamese" "SimplifiedChinese" "Bosnian" "All" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAd/images> ;
    sh:name "images" ;
    sh:node microsoftads:CampaignManagementAssetLinkShape ;
    sh:class microsoftads:CampaignManagementAssetLink ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAd/videos> ;
    sh:name "videos" ;
    sh:node microsoftads:CampaignManagementAssetLinkShape ;
    sh:class microsoftads:CampaignManagementAssetLink ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAd/headlines> ;
    sh:name "headlines" ;
    sh:node microsoftads:CampaignManagementAssetLinkShape ;
    sh:class microsoftads:CampaignManagementAssetLink ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAd/longHeadline> ;
    sh:name "long headline" ;
    sh:node microsoftads:CampaignManagementAssetLinkShape ;
    sh:class microsoftads:CampaignManagementAssetLink ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAd/longHeadlines> ;
    sh:name "long headlines" ;
    sh:node microsoftads:CampaignManagementAssetLinkShape ;
    sh:class microsoftads:CampaignManagementAssetLink ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAd/descriptions> ;
    sh:name "descriptions" ;
    sh:node microsoftads:CampaignManagementAssetLinkShape ;
    sh:class microsoftads:CampaignManagementAssetLink ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAd/impressionTrackingUrls> ;
    sh:name "impression tracking urls" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAd/verifiedTrackingSettings> ;
    sh:name "verified tracking settings" ;
    sh:node microsoftads:CampaignManagementVerifiedTrackingSettingShape ;
    sh:class microsoftads:CampaignManagementVerifiedTrackingSetting ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAd/adSubType> ;
    sh:name "ad sub type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management App Url
microsoftads:CampaignManagementAppUrlShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAppUrl ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppUrl/osType> ;
    sh:name "os type" ;
    sh:description "Reserved for future use." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppUrl/url> ;
    sh:name "url" ;
    sh:description "Reserved for future use." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Asset Link
microsoftads:CampaignManagementAssetLinkShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAssetLink ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetLink/asset> ;
    sh:name "asset" ;
    sh:description "The asset with a unique Microsoft Advertising identifier that can be reused across multiple ads. For asset links included in a responsive search ad's Headlines and Descriptions lists, the asset must be a TextAsset. Add: Required Update: Required" ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementAssetShape ; sh:class microsoftads:CampaignManagementAsset ]
      [ sh:node microsoftads:CampaignManagementAssetBaseShape ; sh:class microsoftads:CampaignManagementAssetBase ]
      [ sh:node microsoftads:CampaignManagementImageAssetShape ; sh:class microsoftads:CampaignManagementImageAsset ]
      [ sh:node microsoftads:CampaignManagementTextAssetShape ; sh:class microsoftads:CampaignManagementTextAsset ]
      [ sh:node microsoftads:CampaignManagementVideoAssetShape ; sh:class microsoftads:CampaignManagementVideoAsset ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetLink/pinnedField> ;
    sh:name "pinned field" ;
    sh:description "Determines whether the asset should only be used for a specific ad component, or whether you want Bing AI to optimize the layout for this asset. Unless you have a specific requirement for an asset, don't pin it and let Bing AI optimize the placement. If the Asset is a TextAsset and included in the responsive search ad's Descriptions list, the valid pinned field values are Description1 and Description2. At least one eligible TextAsset must be available for each description position, so you cannot pin all of the assets to the same position. For example you can have 3 text assets pinned to Description1, so long as you have at least one text asset in the responsive search ad's Descriptions list that is either not pinned, or pinned to Description2. If the Asset is a TextAsset and included in the responsive search ad's Headlines list, the valid pinned field values are Headline1, Headline2, and Headline3. At least one eligible TextAsset must be available for each headline position, so you cannot pin all of the assets to the same position. For example you can have 3 text assets pinned to Headline1 and 3 text assets pinned to Headline2, so long as you have at least one text asset in the responsive search ad's Headlines list that is either not pinned, or pinned to Headline3. If you previously pinned an asset to an ad component and later want to remove the pin, you'll need to update the ad with the existing assets and leave the pinned field element empty for the asset or assets that you want to unpin. When you retrieve an asset that is not pinned, the string value is nil or empty. PinnedField shouldn't be set for Performance Max AssetGroup as it doesn't apply. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetLink/assetPerformanceLabel> ;
    sh:name "asset performance label" ;
    sh:description "This lets you know how well the asset is performing. The possible ratings include: - Low: This asset's performance is low and we recommend you replace this asset to improve your ad performance. - Good: This asset is performing well. We recommend you keep this asset and add more assets to improve your ad performance. - Best: This asset's performance is among the best and we recommend that you add more similar assets. - Unrated: We don't have any performance rating for this asset. This can be due to the asset being inactive, not having enough information to determine its performance, or if there aren't enough similar assets to compare against it. - Learning: The asset's performance is being actively evaluated. Once the evaluation is complete, the asset rating will be Low, Good, Best, or Unrated. Add: Read-only. The service will ignore this value if set. Update: Read-only. The service will ignore this value if set." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetLink/editorialStatus> ;
    sh:name "editorial status" ;
    sh:description "The editorial review status of the asset link, which indicates whether the asset is pending review, has been approved, or has been disapproved. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unknown" "Active" "Disapproved" "Inactive" "ActiveLimited" ) ;
  ] .

# Shape for Campaign Management Asset
microsoftads:CampaignManagementAssetShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAsset ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAsset/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier for the asset in a Microsoft Advertising account. The same asset can be used by multiple ads. For example if Seemless Integration is a text asset, it will have the same asset identifier across all ads in the same Microsoft Advertising account." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAsset/name> ;
    sh:name "name" ;
    sh:description "Reserved for future use." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAsset/type> ;
    sh:name "type" ;
    sh:description "The type of the asset. For more information about asset types, see the Remarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAsset/text> ;
    sh:name "text" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAsset/subType> ;
    sh:name "sub type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAsset/cropX> ;
    sh:name "crop x" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAsset/cropY> ;
    sh:name "crop y" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAsset/cropWidth> ;
    sh:name "crop width" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAsset/cropHeight> ;
    sh:name "crop height" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAsset/targetWidth> ;
    sh:name "target width" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAsset/targetHeight> ;
    sh:name "target height" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAsset/croppingType> ;
    sh:name "cropping type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "ManualCrop" "CenterCrop" "SmartCrop" "Unknown" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAsset/thumbnailImage> ;
    sh:name "thumbnail image" ;
    sh:node microsoftads:CampaignManagementImageAssetShape ;
    sh:class microsoftads:CampaignManagementImageAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Image Asset
microsoftads:CampaignManagementImageAssetShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementImageAsset ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImageAsset/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier for the asset in a Microsoft Advertising account. The same image asset identifier can be used multiple times in the same ad for different aspect ratios, and can also be used by multiple ads in the same Microsoft Advertising account. The identifier of image asset with SubType set to LandscapeImageMedia is used for all auto-generated image asset sub types within the same ad. Whether or not you let Microsoft Advertising automatically generate the cropped images, the Id does not need to be unique among the image assets linked to the same ad. You can create media for responsive ads via the AddMedia service operation. Then you can use the returned media identifier as the image asset ID. The aspect ratio of the image that you added must be supported for the image asset SubType. Add: Required Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImageAsset/name> ;
    sh:name "name" ;
    sh:description "Reserved for future use. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImageAsset/type> ;
    sh:name "type" ;
    sh:description "The type of the asset. This value is ImageAsset when you retrieve an image asset. For more information about asset types, see the Asset Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImageAsset/subType> ;
    sh:name "sub type" ;
    sh:description "Represents the aspect ratio for this image asset. The aspect ratio for the sub type must match the effective image asset dimensions. If CropHeight and CropWidth are not used then the aspect ratio for the sub type must match the aspect ratio of the stored image media. If CropHeight and CropWidth are used then the true aspect ratio of the media that is stored in the account level media library can differ, so long as CropHeight and CropWidth result in the correct aspect ratio. In either case the true aspect ratio of the media that is stored in the account level media library will remain unchanged. The sub type must be set to \"Logo\" if the image is associated with an ad as a \"LandscapeLogoMedia\" or \"SquareLogoMedia\". The possible sub type values include OriginalImage, LandscapeLogoMedia, SquareLogoMedia, LandscapeImageMedia, SquareImageMedia, ImageMedia169X100, ImageMedia201X100, ImageMedia120X100, ImageMedia200X100, ImageMedia124X100, ImageMedia153X100. For more details see ResponsiveAd Remarks. Note: As of now, the SubType OriginalImage replaces the role of LandscapeImageMedia as the default image for ResponsiveAd of Audience Campaign. New sub types might be added in the future, so you should not take any dependency on a fixed set of values. Add: Required Update: Read-only. You cannot update the sub type during update." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImageAsset/cropX> ;
    sh:name "crop x" ;
    sh:description "Starting from the lower left corner of image asset source, this is the number of pixels to skip to the right on the x-axis before applying the CropWidth. Add: Optional. If you do not set this element, the service will automatically crop according to the aspect ratio of the SubType. Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImageAsset/cropY> ;
    sh:name "crop y" ;
    sh:description "Starting from the lower left corner of image asset source, this is the number of pixels to skip upwards on the y-axis before applying the CropHeight. Add: Optional. If you do not set this element, the service will automatically crop according to the aspect ratio of the SubType. Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImageAsset/cropWidth> ;
    sh:name "crop width" ;
    sh:description "The number of pixels to use from the image asset source, starting from the CropX position and moving to the right. Add: Optional. If you do not set this element, the service will automatically crop according to the aspect ratio of the SubType. Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImageAsset/cropHeight> ;
    sh:name "crop height" ;
    sh:description "The number of pixels to use from the image asset source, starting from the CropY position and moving upwards. Add: Optional. If you do not set this element, the service will automatically crop according to the aspect ratio of the SubType. Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImageAsset/targetWidth> ;
    sh:name "target width" ;
    sh:description "The target width dimension of an image asset." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImageAsset/targetHeight> ;
    sh:name "target height" ;
    sh:description "The target height dimension of an image asset." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImageAsset/croppingType> ;
    sh:name "cropping type" ;
    sh:description "Defines the possible cropping types." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "ManualCrop" "CenterCrop" "SmartCrop" "Unknown" ) ;
  ] .

# Shape for Campaign Management Verified Tracking Setting
microsoftads:CampaignManagementVerifiedTrackingSettingShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementVerifiedTrackingSetting ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVerifiedTrackingSetting/type> ;
    sh:name "type" ;
    sh:description "The type of the setting. This value is VerifiedTracking when you retrieve a verified tracking setting. For more information about setting types, see the Setting Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVerifiedTrackingSetting/details> ;
    sh:name "details" ;
    sh:description "Key-value pairs for the VerifiedTrackingSetting object. VerifiedTrackingSetting relates third-party measurement settings. This allows you to track viewability, brand safety, and invalid traffic metrics via a third-party verification provider, such as Integral Ad Science. This feature is available for native, display, and online video ads using the CPM bid strategy. Note: Currently, IAS is the only supported vendor (vendorName), but other verification providers are coming soon. The example below pertains to IAS. There are 3 key-value pairs for IAS:\"vendorName\"\"advertiserEntityID\" (client ID for your verification provider)\"publisherEntityID\" (reporting ID for your verification provider)Example (required for IAS): vendorName : \"IAS\"advertiserEntityID : \"12345678\"publisherEntityID : \"12345678\"" ;
    sh:node <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVerifiedTrackingSetting/details/ListLevel1Shape> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Ad Api Error
microsoftads:CampaignManagementAdApiErrorShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAdApiError ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdApiError/code> ;
    sh:name "code" ;
    sh:description "A numeric error code that identifies the error." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdApiError/message> ;
    sh:name "message" ;
    sh:description "A message that describes the error. For more information about troubleshooting and error handling, see Handling Service Errors and Exceptions and Operation Error Codes." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdApiError/detail> ;
    sh:name "detail" ;
    sh:description "A message that contains additional details about the error. This string can be empty." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdApiError/errorCode> ;
    sh:name "error code" ;
    sh:description "A symbolic string constant that identifies the error. For example, UserIsNotAuthorized." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Ad Api Fault Detail
microsoftads:CampaignManagementAdApiFaultDetailShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAdApiFaultDetail ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdApiFaultDetail/trackingId> ;
    sh:name "tracking id" ;
    sh:description "The identifier of the log entry that contains the details of the API call." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdApiFaultDetail/errors> ;
    sh:name "errors" ;
    sh:description "An array of AdApiError objects that contains the details that explain why the service operation failed." ;
    sh:node microsoftads:CampaignManagementAdApiErrorShape ;
    sh:class microsoftads:CampaignManagementAdApiError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdApiFaultDetail/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Ad Base
microsoftads:CampaignManagementAdBaseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAdBase ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdBase/id> ;
    sh:name "id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdBase/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Text" "Image" "Product" "AppInstall" "ExpandedText" "DynamicSearch" "ResponsiveAd" "ResponsiveSearch" "Hotel" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdBase/status> ;
    sh:name "status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Inactive" "Active" "Paused" "Deleted" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdBase/editorialStatus> ;
    sh:name "editorial status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Disapproved" "Inactive" "ActiveLimited" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdBase/devicePreference> ;
    sh:name "device preference" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdBase/adFormatPreference> ;
    sh:name "ad format preference" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdBase/trackingUrlTemplate> ;
    sh:name "tracking url template" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdBase/finalUrlSuffix> ;
    sh:name "final url suffix" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdBase/urlCustomParameters> ;
    sh:name "url custom parameters" ;
    sh:node microsoftads:CampaignManagementCustomParametersShape ;
    sh:class microsoftads:CampaignManagementCustomParameters ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdBase/finalUrls> ;
    sh:name "final urls" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdBase/finalMobileUrls> ;
    sh:name "final mobile urls" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdBase/finalAppUrls> ;
    sh:name "final app urls" ;
    sh:node microsoftads:CampaignManagementAppUrlShape ;
    sh:class microsoftads:CampaignManagementAppUrl ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdBase/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Ad Center Authentication Fault
microsoftads:CampaignManagementAdCenterAuthenticationFaultShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAdCenterAuthenticationFault ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdCenterAuthenticationFault/trackingId> ;
    sh:name "tracking id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdCenterAuthenticationFault/errorCode> ;
    sh:name "error code" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "NoCredential" "InvalidCustomerId" "InvalidSecurityTicket" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdCenterAuthenticationFault/errorMessage> ;
    sh:name "error message" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdCenterAuthenticationFault/mTServerName> ;
    sh:name "m tserver name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdCenterAuthenticationFault/faultingLayer> ;
    sh:name "faulting layer" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "MiddleTier" "Database" "Editorial" "Authentication" "Authorization" "Publisher" "AudienceInteligence" "Cam" "Dam" "FlexTag" "BingMerchantCenter" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdCenterAuthenticationFault/errorSourceSystem> ;
    sh:name "error source system" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdCenterAuthenticationFault/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Ad Center Authorization Fault
microsoftads:CampaignManagementAdCenterAuthorizationFaultShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAdCenterAuthorizationFault ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdCenterAuthorizationFault/trackingId> ;
    sh:name "tracking id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdCenterAuthorizationFault/errorMessage> ;
    sh:name "error message" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdCenterAuthorizationFault/mTServerName> ;
    sh:name "m tserver name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdCenterAuthorizationFault/faultingLayer> ;
    sh:name "faulting layer" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "MiddleTier" "Database" "Editorial" "Authentication" "Authorization" "Publisher" "AudienceInteligence" "Cam" "Dam" "FlexTag" "BingMerchantCenter" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdCenterAuthorizationFault/errorSourceSystem> ;
    sh:name "error source system" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdCenterAuthorizationFault/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Ad Center Fault
microsoftads:CampaignManagementAdCenterFaultShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAdCenterFault ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdCenterFault/trackingId> ;
    sh:name "tracking id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdCenterFault/errorMessage> ;
    sh:name "error message" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdCenterFault/mTServerName> ;
    sh:name "m tserver name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdCenterFault/faultingLayer> ;
    sh:name "faulting layer" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "MiddleTier" "Database" "Editorial" "Authentication" "Authorization" "Publisher" "AudienceInteligence" "Cam" "Dam" "FlexTag" "BingMerchantCenter" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdCenterFault/errorSourceSystem> ;
    sh:name "error source system" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdCenterFault/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Ad Center Internal Error Fault
microsoftads:CampaignManagementAdCenterInternalErrorFaultShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAdCenterInternalErrorFault ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdCenterInternalErrorFault/trackingId> ;
    sh:name "tracking id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdCenterInternalErrorFault/errorMessage> ;
    sh:name "error message" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdCenterInternalErrorFault/mTServerName> ;
    sh:name "m tserver name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdCenterInternalErrorFault/faultingLayer> ;
    sh:name "faulting layer" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "MiddleTier" "Database" "Editorial" "Authentication" "Authorization" "Publisher" "AudienceInteligence" "Cam" "Dam" "FlexTag" "BingMerchantCenter" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdCenterInternalErrorFault/errorSourceSystem> ;
    sh:name "error source system" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdCenterInternalErrorFault/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Ad Center System Fault
microsoftads:CampaignManagementAdCenterSystemFaultShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAdCenterSystemFault ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdCenterSystemFault/trackingId> ;
    sh:name "tracking id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdCenterSystemFault/errorMessage> ;
    sh:name "error message" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdCenterSystemFault/mTServerName> ;
    sh:name "m tserver name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdCenterSystemFault/faultingLayer> ;
    sh:name "faulting layer" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "MiddleTier" "Database" "Editorial" "Authentication" "Authorization" "Publisher" "AudienceInteligence" "Cam" "Dam" "FlexTag" "BingMerchantCenter" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdCenterSystemFault/errorSourceSystem> ;
    sh:name "error source system" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdCenterSystemFault/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Add Ad Extensions Request
microsoftads:CampaignManagementAddAdExtensionsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddAdExtensionsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddAdExtensionsRequest/accountId> ;
    sh:name "account id" ;
    sh:description "The identifier of the account to add the extensions to." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddAdExtensionsRequest/adExtensions> ;
    sh:name "ad extensions" ;
    sh:description "The list of ad extensions of any type to add to the account. You can specify a maximum of 100 extensions per call." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementActionAdExtensionShape ; sh:class microsoftads:CampaignManagementActionAdExtension ]
      [ sh:node microsoftads:CampaignManagementAdExtensionShape ; sh:class microsoftads:CampaignManagementAdExtension ]
      [ sh:node microsoftads:CampaignManagementAdExtensionBaseShape ; sh:class microsoftads:CampaignManagementAdExtensionBase ]
      [ sh:node microsoftads:CampaignManagementAppAdExtensionShape ; sh:class microsoftads:CampaignManagementAppAdExtension ]
      [ sh:node microsoftads:CampaignManagementCallAdExtensionShape ; sh:class microsoftads:CampaignManagementCallAdExtension ]
      [ sh:node microsoftads:CampaignManagementCalloutAdExtensionShape ; sh:class microsoftads:CampaignManagementCalloutAdExtension ]
      [ sh:node microsoftads:CampaignManagementDataTableAdExtensionShape ; sh:class microsoftads:CampaignManagementDataTableAdExtension ]
      [ sh:node microsoftads:CampaignManagementDisclaimerAdExtensionShape ; sh:class microsoftads:CampaignManagementDisclaimerAdExtension ]
      [ sh:node microsoftads:CampaignManagementFilterLinkAdExtensionShape ; sh:class microsoftads:CampaignManagementFilterLinkAdExtension ]
      [ sh:node microsoftads:CampaignManagementFlyerAdExtensionShape ; sh:class microsoftads:CampaignManagementFlyerAdExtension ]
      [ sh:node microsoftads:CampaignManagementImageAdExtensionShape ; sh:class microsoftads:CampaignManagementImageAdExtension ]
      [ sh:node microsoftads:CampaignManagementLeadFormAdExtensionShape ; sh:class microsoftads:CampaignManagementLeadFormAdExtension ]
      [ sh:node microsoftads:CampaignManagementLocationAdExtensionShape ; sh:class microsoftads:CampaignManagementLocationAdExtension ]
      [ sh:node microsoftads:CampaignManagementLogoAdExtensionShape ; sh:class microsoftads:CampaignManagementLogoAdExtension ]
      [ sh:node microsoftads:CampaignManagementNewsAdExtensionShape ; sh:class microsoftads:CampaignManagementNewsAdExtension ]
      [ sh:node microsoftads:CampaignManagementPriceAdExtensionShape ; sh:class microsoftads:CampaignManagementPriceAdExtension ]
      [ sh:node microsoftads:CampaignManagementPromotionAdExtensionShape ; sh:class microsoftads:CampaignManagementPromotionAdExtension ]
      [ sh:node microsoftads:CampaignManagementReviewAdExtensionShape ; sh:class microsoftads:CampaignManagementReviewAdExtension ]
      [ sh:node microsoftads:CampaignManagementSitelinkAdExtensionShape ; sh:class microsoftads:CampaignManagementSitelinkAdExtension ]
      [ sh:node microsoftads:CampaignManagementStructuredSnippetAdExtensionShape ; sh:class microsoftads:CampaignManagementStructuredSnippetAdExtension ]
      [ sh:node microsoftads:CampaignManagementVideoAdExtensionShape ; sh:class microsoftads:CampaignManagementVideoAdExtension ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Ad Extension
microsoftads:CampaignManagementAdExtensionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAdExtension ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/status> ;
    sh:name "status" ;
    sh:description "The status of the ad extension. The value will always be Active because the Campaign Management service does not return deleted ad extensions." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Deleted" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/scheduling> ;
    sh:name "scheduling" ;
    sh:description "Determines the calendar day and time ranges when the ad extension is eligible to be shown in ads." ;
    sh:node microsoftads:CampaignManagementScheduleShape ;
    sh:class microsoftads:CampaignManagementSchedule ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/devicePreference> ;
    sh:name "device preference" ;
    sh:description "This element determines whether the preference is for the ad extension to be displayed on mobile devices or all devices. To specify a preference for mobile devices, set this element to 30001. To specify all devices, set this element to 0 (zero) or leave the element nil. By default, this element will be nil. This element is only applicable for the AppAdExtension and SitelinkAdExtension types." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier of the ad extension." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/type> ;
    sh:name "type" ;
    sh:description "The type of ad extension. For more information, see Remarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/version> ;
    sh:name "version" ;
    sh:description "Tracks the number of times the ad extension has been updated. The version is set to 1 when the ad extension is created, and increments by one after each update." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/address> ;
    sh:name "address" ;
    sh:node microsoftads:CampaignManagementAddressShape ;
    sh:class microsoftads:CampaignManagementAddress ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/geoPoint> ;
    sh:name "geo point" ;
    sh:node microsoftads:CampaignManagementGeoPointShape ;
    sh:class microsoftads:CampaignManagementGeoPoint ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/geoCodeStatus> ;
    sh:name "geo code status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Pending" "Complete" "Invalid" "Failed" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/companyName> ;
    sh:name "company name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/phoneNumber> ;
    sh:name "phone number" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. Forward compatibility changes will be noted here in future releases. There are currently no forward compatibility changes for this object." ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/countryCode> ;
    sh:name "country code" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/isCallOnly> ;
    sh:name "is call only" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/isCallTrackingEnabled> ;
    sh:name "is call tracking enabled" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/requireTollFreeTrackingNumber> ;
    sh:name "require toll free tracking number" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/alternativeText> ;
    sh:name "alternative text" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/description> ;
    sh:name "description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/destinationUrl> ;
    sh:name "destination url" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/imageMediaIds> ;
    sh:name "image media ids" ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/trackingUrlTemplate> ;
    sh:name "tracking url template" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/finalUrlSuffix> ;
    sh:name "final url suffix" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/urlCustomParameters> ;
    sh:name "url custom parameters" ;
    sh:node microsoftads:CampaignManagementCustomParametersShape ;
    sh:class microsoftads:CampaignManagementCustomParameters ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/finalUrls> ;
    sh:name "final urls" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/finalMobileUrls> ;
    sh:name "final mobile urls" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/finalAppUrls> ;
    sh:name "final app urls" ;
    sh:node microsoftads:CampaignManagementAppUrlShape ;
    sh:class microsoftads:CampaignManagementAppUrl ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/images> ;
    sh:name "images" ;
    sh:node microsoftads:CampaignManagementAssetLinkShape ;
    sh:class microsoftads:CampaignManagementAssetLink ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/displayText> ;
    sh:name "display text" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/layouts> ;
    sh:name "layouts" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/sourceType> ;
    sh:name "source type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/appPlatform> ;
    sh:name "app platform" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/appStoreId> ;
    sh:name "app store id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/name> ;
    sh:name "name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/sourceUrl> ;
    sh:name "source url" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/filter> ;
    sh:name "filter" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/priority> ;
    sh:name "priority" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/isExact> ;
    sh:name "is exact" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/text> ;
    sh:name "text" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/source> ;
    sh:name "source" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/url> ;
    sh:name "url" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/nameUrl> ;
    sh:name "name url" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/description1> ;
    sh:name "description1" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/description2> ;
    sh:name "description2" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/actionType> ;
    sh:name "action type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unknown" "ActNow" "ApplyNow" "BetNow" "BidNow" "BookACar" "BookHotel" "BookNow" "Browse" "BuyNow" "ChatNow" "Compare" "ContactUs" "Coupon" "Donate" "Download" "EmailNow" "EnrollNow" "Explore" "FileNow" "FindJob" "FreePlay" "FreeQuote" "FreeTrial" "GetDeals" "GetOffer" "GetQuote" "JoinNow" "LearnMore" "ListenNow" "LogIn" "Message" "NewCars" "OrderNow" "PlayGame" "PlayNow" "PostJob" "Register" "RentACar" "RentNow" "Reserve" "Sale" "SaveNow" "Schedule" "SeeMenu" "SeeMore" "SeeOffer" "SellNow" "ShopNow" "Showtimes" "SignIn" "SignUp" "StartFree" "StartNow" "Subscribe" "TestDrive" "TryNow" "UsedCars" "ViewCars" "ViewNow" "ViewPlans" "VisitSite" "VoteNow" "Watch" "WatchMore" "WatchNow" "Directions" "FindStore" "SwitchNow" "VisitStore" "RenewNow" "Reorder" "BuildNow" "Dealers" "GetDemo" "GetNow" "GoToDemo" "SeeDemo" "SeeModels" "SeeOffers" "ViewDemo" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/language> ;
    sh:name "language" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/header> ;
    sh:name "header" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/values> ;
    sh:name "values" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/priceExtensionType> ;
    sh:name "price extension type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unknown" "Brands" "Events" "Locations" "Neighborhoods" "ProductCategories" "ProductTiers" "Services" "ServiceCategories" "ServiceTiers" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/tableRows> ;
    sh:name "table rows" ;
    sh:node microsoftads:CampaignManagementPriceTableRowShape ;
    sh:class microsoftads:CampaignManagementPriceTableRow ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/promotionItem> ;
    sh:name "promotion item" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/discountModifier> ;
    sh:name "discount modifier" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unknown" "UpTo" "None" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/percentOff> ;
    sh:name "percent off" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/moneyAmountOff> ;
    sh:name "money amount off" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/promotionCode> ;
    sh:name "promotion code" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/ordersOverAmount> ;
    sh:name "orders over amount" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/promotionStartDate> ;
    sh:name "promotion start date" ;
    sh:node microsoftads:CampaignManagementDateShape ;
    sh:class microsoftads:CampaignManagementDate ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/promotionEndDate> ;
    sh:name "promotion end date" ;
    sh:node microsoftads:CampaignManagementDateShape ;
    sh:class microsoftads:CampaignManagementDate ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/promotionOccasion> ;
    sh:name "promotion occasion" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unknown" "NewYears" "ValentinesDay" "Easter" "MothersDay" "FathersDay" "LaborDay" "BackToSchool" "Halloween" "BlackFriday" "CyberMonday" "Christmas" "BoxingDay" "None" "IndependenceDay" "NationalDay" "EndOfSeason" "WinterSale" "SummerSale" "FallSale" "SpringSale" "Ramadan" "EidAlFitr" "EidAlAdha" "SinglesDay" "WomensDay" "Holi" "ParentsDay" "StNicholasDay" "ChineseNewYear" "Carnival" "Epiphany" "RoshHashanah" "Passover" "Hanukkah" "Diwali" "Navratri" "Songkran" "YearEndGift" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/currencyCode> ;
    sh:name "currency code" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/adExtensionHeaderType> ;
    sh:name "ad extension header type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unknown" "Amenities" "Brands" "Classes" "Courses" "DailyRates" "DegreePrograms" "Departments" "Destinations" "FeaturedHotels" "Goods" "Grades" "Highlights" "InsuranceCoverage" "Items" "Languages" "Locations" "Models" "Neighborhoods" "Prices" "Rates" "Ratings" "SchoolDistricts" "Services" "ServiceCatalog" "Shows" "Sizes" "Styles" "Tools" "Topics" "Types" "Vacations" "Vehicles" "What" "Who" "Why" "Deals" "BestSellers" "AgeGroups" "Occasions" "Flowers" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/texts> ;
    sh:name "texts" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/flyerName> ;
    sh:name "flyer name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/storeId> ;
    sh:name "store id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/imageMediaUrls> ;
    sh:name "image media urls" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/actionText> ;
    sh:name "action text" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/videoId> ;
    sh:name "video id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/thumbnailId> ;
    sh:name "thumbnail id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/thumbnailUrl> ;
    sh:name "thumbnail url" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/title> ;
    sh:name "title" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/popupText> ;
    sh:name "popup text" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/lineText> ;
    sh:name "line text" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/disclaimerLayout> ;
    sh:name "disclaimer layout" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/businessName> ;
    sh:name "business name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/businessLogo> ;
    sh:name "business logo" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/businessLogoUrl> ;
    sh:name "business logo url" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/domainName> ;
    sh:name "domain name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/callToAction> ;
    sh:name "call to action" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unknown" "CustomText" "ApplyNow" "BookNow" "ContactUs" "Download" "GetOffer" "GetQuote" "LearnMore" "SignUp" "Subscribe" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/actionName> ;
    sh:name "action name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/actionDescription> ;
    sh:name "action description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/corporateImage> ;
    sh:name "corporate image" ;
    sh:node microsoftads:CampaignManagementImageAssetShape ;
    sh:class microsoftads:CampaignManagementImageAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/corporateImageInternalUrl> ;
    sh:name "corporate image internal url" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/formHeadline> ;
    sh:name "form headline" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/formBusinessName> ;
    sh:name "form business name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/formDescription> ;
    sh:name "form description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/formPolicyUrl> ;
    sh:name "form policy url" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/formQuestions> ;
    sh:name "form questions" ;
    sh:node microsoftads:CampaignManagementLeadFormQuestionDefinitionShape ;
    sh:class microsoftads:CampaignManagementLeadFormQuestionDefinition ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/confirmationMessage> ;
    sh:name "confirmation message" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/confirmationDescription> ;
    sh:name "confirmation description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/confirmationAction> ;
    sh:name "confirmation action" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unknown" "None" "VisitWebsite" "DownloadFile" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/confirmationUrl> ;
    sh:name "confirmation url" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/leadDelivery> ;
    sh:name "lead delivery" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unknown" "CSV" "Email" "Webhook" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/leadEmails> ;
    sh:name "lead emails" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/leadWebhookUrl> ;
    sh:name "lead webhook url" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtension/leadWebhookKey> ;
    sh:name "lead webhook key" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Address
microsoftads:CampaignManagementAddressShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddress ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddress/streetAddress> ;
    sh:name "street address" ;
    sh:description "The first line of the address. The first line can contain a maximum of 80 characters. Add: Required Update: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddress/streetAddress2> ;
    sh:name "street address2" ;
    sh:description "The second line of the address. The second line can contain a maximum of 80 characters. Add: Optional Update: Optional. If you set this element null, the previous setting will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddress/cityName> ;
    sh:name "city name" ;
    sh:description "The name of the city where the street address is located. The name can contain a maximum of 80 characters. Add: Required Update: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddress/provinceCode> ;
    sh:name "province code" ;
    sh:description "A code that identifies the state or province where the street address is located. For example, WA. The code can contain a maximum of 50 characters. You must specify either ProvinceName or ProvinceCode. The ProvinceCode and ProvinceName are not required if the CountryCode element is set to either FR, IE, or SG. Add: Required Update: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddress/provinceName> ;
    sh:name "province name" ;
    sh:description "The name of the state or province where the street address is located. For example, Washington. The name can contain a maximum of 50 characters. You must specify either ProvinceName or ProvinceCode. TheProvinceCode and ProvinceName are not required if the CountryCode element is set to either FR, IE, or SG. Add: Required Update: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddress/postalCode> ;
    sh:name "postal code" ;
    sh:description "The postal or zip code. The postal code can contain a maximum of 80 characters. Add: Optional Update: Optional. If you set this element null, the previous setting will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddress/countryCode> ;
    sh:name "country code" ;
    sh:description "The country where the street address is located. The country code must contain a 2 character country code. The supported country code values include AR, AT, AU, BR, CA, CH, CL, CO, DE, DK, ES, FI, FR, GB, HK, ID, IE, IN, IT, MX, MY, NL, NZ, NO, PE, PH, SE, SG, TH, TW, US, VE, and VN. Add: Required Update: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Geo Point
microsoftads:CampaignManagementGeoPointShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGeoPoint ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGeoPoint/latitudeInMicroDegrees> ;
    sh:name "latitude in micro degrees" ;
    sh:description "The latitude specified in micro degrees. The latitude must be greater than or equal to -85000000 and less than or equal to +85000000." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGeoPoint/longitudeInMicroDegrees> ;
    sh:name "longitude in micro degrees" ;
    sh:description "The longitude specified in micro degrees. The longitude must be greater than or equal to -180000000 and less than or equal to +180000000." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Price Table Row
microsoftads:CampaignManagementPriceTableRowShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementPriceTableRow ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPriceTableRow/header> ;
    sh:name "header" ;
    sh:description "The header that precedes the pricing data. The header can contain a maximum of 25 characters. The header must tie directly to the priceextensiontype that you defined for the PriceAdExtension. Add: Required Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPriceTableRow/description> ;
    sh:name "description" ;
    sh:description "The description must provide further information about the header that is also defined in this object. The description can contain a maximum of 25 characters. Add: Required Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPriceTableRow/finalUrls> ;
    sh:name "final urls" ;
    sh:description "The landing page URL. The following validation rules apply to Final URLs and Final Mobile URLs. - The length of the URL is limited to 2,048 characters. The HTTP or HTTPS protocol string does count towards the 2,048 character limit. - You may specify up to 10 list items for both FinalUrls and FinalMobileUrls; however, only the first item in each list is used for delivery. The service allows up to 10 list items for potential forward compatibility. - Usage of '{' and '}' is only allowed to delineate tags, for example {lpurl}. - Final URLs must each be a well-formed URL starting with either http:// or https://. - If you specify FinalMobileUrls, you must also specify FinalUrls. - If the TrackingUrlTemplate or UrlCustomParameters elements are set, then at least one final URL is required. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPriceTableRow/finalMobileUrls> ;
    sh:name "final mobile urls" ;
    sh:description "The landing page URL for mobile devices. The following validation rules apply to Final URLs and Final Mobile URLs. - The length of the URL is limited to 2,048 characters. The HTTP or HTTPS protocol string does count towards the 2,048 character limit. - You may specify up to 10 list items for both FinalUrls and FinalMobileUrls; however, only the first item in each list is used for delivery. The service allows up to 10 list items for potential forward compatibility. - Usage of '{' and '}' is only allowed to delineate tags, for example {lpurl}. - Final URLs must each be a well-formed URL starting with either http:// or https://. - If you specify FinalMobileUrls, you must also specify FinalUrls. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPriceTableRow/price> ;
    sh:name "price" ;
    sh:description "The price that you are advertising. Add: Required Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPriceTableRow/currencyCode> ;
    sh:name "currency code" ;
    sh:description "The currency code for the listed price. The supported currency codes are ARS, AUD, BRL, CAD, CHF, CLP, CNY, COP, DKK, EUR, GBP, HKD, INR, MXN, NZD, PEN, PHP, PLN, SEK, SGD, USD, TWD, and VEF. Add: Required Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPriceTableRow/priceUnit> ;
    sh:name "price unit" ;
    sh:description "The price unit allows you to specify the cost in terms of hour, day, week, etc. The price qualifier for a given product or service e.g., starting from a specific price and up to a maximum price. Possible values include: PerDay, PerHour, PerMonth, PerNight, PerWeek, PerYear, None, and Unknown. Add: Required Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unknown" "PerHour" "PerDay" "PerWeek" "PerMonth" "PerYear" "None" "PerNight" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPriceTableRow/priceQualifier> ;
    sh:name "price qualifier" ;
    sh:description "The price qualifier for a given product or service e.g., starting from a specific price and up to a maximum price. Possible values include: Average, From, UpTo, None, and Unknown. Add: Required Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unknown" "From" "UpTo" "None" "Average" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPriceTableRow/termsAndConditions> ;
    sh:name "terms and conditions" ;
    sh:description "Reserved for future use." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPriceTableRow/termsAndConditionsUrl> ;
    sh:name "terms and conditions url" ;
    sh:description "Reserved for future use." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Lead Form Question Definition
microsoftads:CampaignManagementLeadFormQuestionDefinitionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementLeadFormQuestionDefinition ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLeadFormQuestionDefinition/uniqueQuestionId> ;
    sh:name "unique question id" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLeadFormQuestionDefinition/answers> ;
    sh:name "answers" ;
    sh:datatype xsd:string ;
  ] .

# Shape for Campaign Management Add Ad Extensions Response
microsoftads:CampaignManagementAddAdExtensionsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddAdExtensionsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddAdExtensionsResponse/adExtensionIdentities> ;
    sh:name "ad extension identities" ;
    sh:description "The identities of the extensions that were added. The list corresponds directly to the list of extensions specified in the request." ;
    sh:node microsoftads:CampaignManagementAdExtensionIdentityShape ;
    sh:class microsoftads:CampaignManagementAdExtensionIdentity ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddAdExtensionsResponse/nestedPartialErrors> ;
    sh:name "nested partial errors" ;
    sh:description "An array of BatchErrorCollection objects that contain details for any ad extensions that were not successfully added. The top level error within each BatchErrorCollection object corresponds to potential ad extension errors. The nested list of BatchError objects would include any errors specific to the list items within an ad extension (if applicable). The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorCollectionShape ; sh:class microsoftads:CampaignManagementBatchErrorCollection ]
      [ sh:node microsoftads:CampaignManagementBatchErrorCollectionBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorCollectionBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorCollectionShape ; sh:class microsoftads:CampaignManagementEditorialErrorCollection ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Ad Extension Identity
microsoftads:CampaignManagementAdExtensionIdentityShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAdExtensionIdentity ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtensionIdentity/id> ;
    sh:name "id" ;
    sh:description "The system-generated identifier of the ad extension." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtensionIdentity/version> ;
    sh:name "version" ;
    sh:description "The number of times the contents of the ad extension has been updated. The version is set to 1 when you add the extension and is incremented each time it's revised." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Batch Error Collection
microsoftads:CampaignManagementBatchErrorCollectionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementBatchErrorCollection ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBatchErrorCollection/index> ;
    sh:name "index" ;
    sh:description "The zero-based top level list index in the request message that failed." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBatchErrorCollection/disapprovedText> ;
    sh:name "disapproved text" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBatchErrorCollection/reasonCode> ;
    sh:name "reason code" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBatchErrorCollection/location> ;
    sh:name "location" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBatchErrorCollection/publisherCountry> ;
    sh:name "publisher country" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBatchErrorCollection/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. Forward compatibility changes will be noted here in future releases. There are currently no forward compatibility changes for this object." ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBatchErrorCollection/fieldPath> ;
    sh:name "field path" ;
    sh:description "The name of the data object's element where the error occurred. This value is subject to change, so you should not take a dependency on the current string format. This element is not supported for all errors." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBatchErrorCollection/batchErrors> ;
    sh:name "batch errors" ;
    sh:description "A list of batch errors corresponding to the nested list index." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBatchErrorCollection/message> ;
    sh:name "message" ;
    sh:description "A message that describes the error for the top level list index." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBatchErrorCollection/errorCode> ;
    sh:name "error code" ;
    sh:description "A symbolic string constant that identifies the error for the top level list index." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBatchErrorCollection/code> ;
    sh:name "code" ;
    sh:description "A numeric error code that identifies the error for the top level list index." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBatchErrorCollection/details> ;
    sh:name "details" ;
    sh:description "A message that provides additional details about the batch error for the top level list index. This string can be empty." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBatchErrorCollection/type> ;
    sh:name "type" ;
    sh:description "Reserved for internal use." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBatchErrorCollection/appealable> ;
    sh:name "appealable" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Batch Error
microsoftads:CampaignManagementBatchErrorShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementBatchError ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBatchError/index> ;
    sh:name "index" ;
    sh:description "The zero-based index of the item in the batch of items in the request message that failed." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBatchError/disapprovedText> ;
    sh:name "disapproved text" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBatchError/reasonCode> ;
    sh:name "reason code" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBatchError/location> ;
    sh:name "location" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBatchError/publisherCountry> ;
    sh:name "publisher country" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBatchError/fieldPath> ;
    sh:name "field path" ;
    sh:description "The name of the data object's element where the error occurred. For example if the TrackingUrlTemplate of a Campaign contains invalid text, the value of this FieldPath element is TrackingUrlTemplate. This value is subject to change, so you should not take a dependency on the current string format. This element is not supported for all errors. The field path is supported for errors related to FinalMobileUrls, FinalUrls, TrackingUrlTemplate, and UrlCustomParameters elements of the respective Campaign, AdGroup, TextAd, ProductAd, BiddableAdGroupCriterion, and Keyword objects. It is also supported for errors related to all fields of the CalloutAdExtension and ReviewAdExtension objects." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBatchError/errorCode> ;
    sh:name "error code" ;
    sh:description "A symbolic string constant that identifies the error. For example, UserIsNotAuthorized." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBatchError/message> ;
    sh:name "message" ;
    sh:description "A message that describes the error. For more information about troubleshooting and error handling, see Handling Service Errors and Exceptions and Operation Error Codes." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBatchError/code> ;
    sh:name "code" ;
    sh:description "A numeric error code that identifies the error." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBatchError/details> ;
    sh:name "details" ;
    sh:description "A message that provides additional details about the batch error. This string can be empty." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBatchError/type> ;
    sh:name "type" ;
    sh:description "Reserved for internal use." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBatchError/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. Forward compatibility changes will be noted here in future releases. There are currently no forward compatibility changes for this object." ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBatchError/appealable> ;
    sh:name "appealable" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Add Ad Group Criterions Request
microsoftads:CampaignManagementAddAdGroupCriterionsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddAdGroupCriterionsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddAdGroupCriterionsRequest/criterionType> ;
    sh:name "criterion type" ;
    sh:description "The type of criterion to add, for example Webpage. You can specify only one criterion type value per call. To add, delete, or update target criterions i.e., age, company name, day and time, device, gender, industry, job function, location, location intent, placement, radius, and topic criterions, you must specify the CriterionType value as Targets. You can add, delete, and update multiple target criterion types in the same operation. To retrieve these target criterions via GetAdGroupCriterionsByIds you must request the specific type individually i.e., Age, CompanyName, DayTime, Device, Gender, Industry, JobFunction, Location, LocationIntent, Placement, Radius, and Topic. To add, delete, or update audience criterions i.e., custom audiences, in-market audiences, and remarketing lists, you must specify the CriterionType value as Audience. You can add, delete, and update multiple target criterion types in the same operation. To retrieve these audience criterions via GetAdGroupCriterionsByIds you must request the specific type individually i.e., CustomAudience, InMarketAudience, ProductAudience, and RemarketingList. You cannot add a ProductPartition with this operation. Instead, you should use ApplyProductPartitionActions." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddAdGroupCriterionsRequest/adGroupCriterions> ;
    sh:name "ad group criterions" ;
    sh:description "A list of ad group criterions. You can include up to 1,000 ad group criterions per request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementAdGroupCriterionShape ; sh:class microsoftads:CampaignManagementAdGroupCriterion ]
      [ sh:node microsoftads:CampaignManagementAdGroupCriterionBaseShape ; sh:class microsoftads:CampaignManagementAdGroupCriterionBase ]
      [ sh:node microsoftads:CampaignManagementBiddableAdGroupCriterionShape ; sh:class microsoftads:CampaignManagementBiddableAdGroupCriterion ]
      [ sh:node microsoftads:CampaignManagementNegativeAdGroupCriterionShape ; sh:class microsoftads:CampaignManagementNegativeAdGroupCriterion ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Ad Group Criterion
microsoftads:CampaignManagementAdGroupCriterionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAdGroupCriterion ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdGroupCriterion/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "The identifier of the ad group to apply the criterion to." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdGroupCriterion/status> ;
    sh:name "status" ;
    sh:description "A status value that determines whether to apply the criterion to the ad group." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Paused" "Deleted" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdGroupCriterion/criterion> ;
    sh:name "criterion" ;
    sh:description "The criterion to apply to the ad group. The criterion helps determine whether ads in the ad group are served. For a list of available criterion types, see AdGroupCriterionType." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementAgeCriterionShape ; sh:class microsoftads:CampaignManagementAgeCriterion ]
      [ sh:node microsoftads:CampaignManagementAudienceCriterionShape ; sh:class microsoftads:CampaignManagementAudienceCriterion ]
      [ sh:node microsoftads:CampaignManagementChannelPlacementCriterionShape ; sh:class microsoftads:CampaignManagementChannelPlacementCriterion ]
      [ sh:node microsoftads:CampaignManagementCriterionShape ; sh:class microsoftads:CampaignManagementCriterion ]
      [ sh:node microsoftads:CampaignManagementCriterionBaseShape ; sh:class microsoftads:CampaignManagementCriterionBase ]
      [ sh:node microsoftads:CampaignManagementCustomLinkedInCriterionShape ; sh:class microsoftads:CampaignManagementCustomLinkedInCriterion ]
      [ sh:node microsoftads:CampaignManagementDayTimeCriterionShape ; sh:class microsoftads:CampaignManagementDayTimeCriterion ]
      [ sh:node microsoftads:CampaignManagementDealCriterionShape ; sh:class microsoftads:CampaignManagementDealCriterion ]
      [ sh:node microsoftads:CampaignManagementDeviceCriterionShape ; sh:class microsoftads:CampaignManagementDeviceCriterion ]
      [ sh:node microsoftads:CampaignManagementGenderCriterionShape ; sh:class microsoftads:CampaignManagementGenderCriterion ]
      [ sh:node microsoftads:CampaignManagementGenreCriterionShape ; sh:class microsoftads:CampaignManagementGenreCriterion ]
      [ sh:node microsoftads:CampaignManagementHotelAdvanceBookingWindowCriterionShape ; sh:class microsoftads:CampaignManagementHotelAdvanceBookingWindowCriterion ]
      [ sh:node microsoftads:CampaignManagementHotelCheckInDateCriterionShape ; sh:class microsoftads:CampaignManagementHotelCheckInDateCriterion ]
      [ sh:node microsoftads:CampaignManagementHotelCheckInDayCriterionShape ; sh:class microsoftads:CampaignManagementHotelCheckInDayCriterion ]
      [ sh:node microsoftads:CampaignManagementHotelDateSelectionTypeCriterionShape ; sh:class microsoftads:CampaignManagementHotelDateSelectionTypeCriterion ]
      [ sh:node microsoftads:CampaignManagementHotelGroupShape ; sh:class microsoftads:CampaignManagementHotelGroup ]
      [ sh:node microsoftads:CampaignManagementHotelLengthOfStayCriterionShape ; sh:class microsoftads:CampaignManagementHotelLengthOfStayCriterion ]
      [ sh:node microsoftads:CampaignManagementLocationCriterionShape ; sh:class microsoftads:CampaignManagementLocationCriterion ]
      [ sh:node microsoftads:CampaignManagementLocationIntentCriterionShape ; sh:class microsoftads:CampaignManagementLocationIntentCriterion ]
      [ sh:node microsoftads:CampaignManagementPlacementCriterionShape ; sh:class microsoftads:CampaignManagementPlacementCriterion ]
      [ sh:node microsoftads:CampaignManagementProductPartitionShape ; sh:class microsoftads:CampaignManagementProductPartition ]
      [ sh:node microsoftads:CampaignManagementProductScopeShape ; sh:class microsoftads:CampaignManagementProductScope ]
      [ sh:node microsoftads:CampaignManagementProfileCriterionShape ; sh:class microsoftads:CampaignManagementProfileCriterion ]
      [ sh:node microsoftads:CampaignManagementRadiusCriterionShape ; sh:class microsoftads:CampaignManagementRadiusCriterion ]
      [ sh:node microsoftads:CampaignManagementStoreCriterionShape ; sh:class microsoftads:CampaignManagementStoreCriterion ]
      [ sh:node microsoftads:CampaignManagementTopicCriterionShape ; sh:class microsoftads:CampaignManagementTopicCriterion ]
      [ sh:node microsoftads:CampaignManagementWebpageShape ; sh:class microsoftads:CampaignManagementWebpage ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdGroupCriterion/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier for the ad group criterion." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdGroupCriterion/type> ;
    sh:name "type" ;
    sh:description "The type of ad group criterion. For more information, see Remarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdGroupCriterion/criterionBid> ;
    sh:name "criterion bid" ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBidMultiplierShape ; sh:class microsoftads:CampaignManagementBidMultiplier ]
      [ sh:node microsoftads:CampaignManagementCriterionBidShape ; sh:class microsoftads:CampaignManagementCriterionBid ]
      [ sh:node microsoftads:CampaignManagementCriterionBidBaseShape ; sh:class microsoftads:CampaignManagementCriterionBidBase ]
      [ sh:node microsoftads:CampaignManagementFixedBidShape ; sh:class microsoftads:CampaignManagementFixedBid ]
      [ sh:node microsoftads:CampaignManagementRateBidShape ; sh:class microsoftads:CampaignManagementRateBid ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdGroupCriterion/destinationUrl> ;
    sh:name "destination url" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdGroupCriterion/trackingUrlTemplate> ;
    sh:name "tracking url template" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdGroupCriterion/finalUrlSuffix> ;
    sh:name "final url suffix" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdGroupCriterion/urlCustomParameters> ;
    sh:name "url custom parameters" ;
    sh:node microsoftads:CampaignManagementCustomParametersShape ;
    sh:class microsoftads:CampaignManagementCustomParameters ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdGroupCriterion/finalUrls> ;
    sh:name "final urls" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdGroupCriterion/finalMobileUrls> ;
    sh:name "final mobile urls" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdGroupCriterion/finalAppUrls> ;
    sh:name "final app urls" ;
    sh:node microsoftads:CampaignManagementAppUrlShape ;
    sh:class microsoftads:CampaignManagementAppUrl ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdGroupCriterion/editorialStatus> ;
    sh:name "editorial status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Disapproved" "Inactive" "ActiveLimited" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdGroupCriterion/criterionCashback> ;
    sh:name "criterion cashback" ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementCashbackAdjustmentShape ; sh:class microsoftads:CampaignManagementCashbackAdjustment ]
      [ sh:node microsoftads:CampaignManagementCriterionCashbackShape ; sh:class microsoftads:CampaignManagementCriterionCashback ]
      [ sh:node microsoftads:CampaignManagementCriterionCashbackBaseShape ; sh:class microsoftads:CampaignManagementCriterionCashbackBase ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Criterion
microsoftads:CampaignManagementCriterionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementCriterion ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/type> ;
    sh:name "type" ;
    sh:description "The type of criterion. For more information, see Remarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/parentCriterionId> ;
    sh:name "parent criterion id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/condition> ;
    sh:name "condition" ;
    sh:node microsoftads:CampaignManagementProductConditionShape ;
    sh:class microsoftads:CampaignManagementProductCondition ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/partitionType> ;
    sh:name "partition type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Subdivision" "Unit" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/listing> ;
    sh:name "listing" ;
    sh:node microsoftads:CampaignManagementHotelListingShape ;
    sh:class microsoftads:CampaignManagementHotelListing ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/listingType> ;
    sh:name "listing type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Subdivision" "Unit" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/minDays> ;
    sh:name "min days" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/maxDays> ;
    sh:name "max days" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/startDate> ;
    sh:name "start date" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/endDate> ;
    sh:name "end date" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/checkInDay> ;
    sh:name "check in day" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Sunday" "Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/hotelDateSelectionType> ;
    sh:name "hotel date selection type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unknown" "DefaultSelection" "UserSelection" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/minNights> ;
    sh:name "min nights" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/maxNights> ;
    sh:name "max nights" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/conditions> ;
    sh:name "conditions" ;
    sh:node microsoftads:CampaignManagementProductConditionShape ;
    sh:class microsoftads:CampaignManagementProductCondition ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/parameter> ;
    sh:name "parameter" ;
    sh:node microsoftads:CampaignManagementWebpageParameterShape ;
    sh:class microsoftads:CampaignManagementWebpageParameter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/ageRange> ;
    sh:name "age range" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unknown" "EighteenToTwentyFour" "TwentyFiveToThirtyFour" "ThirtyFiveToFourtyNine" "FiftyToSixtyFour" "SixtyFiveAndAbove" "ThirtyFiveToFiftyFour" "FiftyFiveAndAbove" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/deviceName> ;
    sh:name "device name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/oSName> ;
    sh:name "o sname" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/day> ;
    sh:name "day" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Sunday" "Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/fromHour> ;
    sh:name "from hour" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/fromMinute> ;
    sh:name "from minute" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Zero" "Fifteen" "Thirty" "FortyFive" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/toHour> ;
    sh:name "to hour" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/toMinute> ;
    sh:name "to minute" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Zero" "Fifteen" "Thirty" "FortyFive" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/genderType> ;
    sh:name "gender type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unknown" "Male" "Female" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/name> ;
    sh:name "name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/radius> ;
    sh:name "radius" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/radiusUnit> ;
    sh:name "radius unit" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Miles" "Kilometers" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/latitudeDegrees> ;
    sh:name "latitude degrees" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/longitudeDegrees> ;
    sh:name "longitude degrees" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/locationId> ;
    sh:name "location id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/locationType> ;
    sh:name "location type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/displayName> ;
    sh:name "display name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/enclosedLocationIds> ;
    sh:name "enclosed location ids" ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/intentOption> ;
    sh:name "intent option" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "PeopleInOrSearchingForOrViewingPages" "PeopleIn" "PeopleSearchingForOrViewingPages" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/audienceId> ;
    sh:name "audience id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/audienceType> ;
    sh:name "audience type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/profileId> ;
    sh:name "profile id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/profileType> ;
    sh:name "profile type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/profile> ;
    sh:name "profile" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/storeId> ;
    sh:name "store id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/dealId> ;
    sh:name "deal id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/genreId> ;
    sh:name "genre id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/placementId> ;
    sh:name "placement id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/placementName> ;
    sh:name "placement name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/topicId> ;
    sh:name "topic id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/topicName> ;
    sh:name "topic name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/channelPlacementId> ;
    sh:name "channel placement id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/channelPlacementName> ;
    sh:name "channel placement name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/channelId> ;
    sh:name "channel id" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/channelName> ;
    sh:name "channel name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/subChannelId> ;
    sh:name "sub channel id" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterion/subChannelName> ;
    sh:name "sub channel name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Product Condition
microsoftads:CampaignManagementProductConditionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementProductCondition ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementProductCondition/operand> ;
    sh:name "operand" ;
    sh:description "The condition's operand. The operands implicitly include the equal operator. For example, read Brand as Brand=. Add or Apply: Required Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementProductCondition/attribute> ;
    sh:name "attribute" ;
    sh:description "The condition's attribute value. An attribute's value must exactly match the value specified in the customer's Microsoft Merchant Center catalog file. The available Attribute and Operand values vary depending on the campaign type. For supported attribute and operand values, see Remarks below. Add or Apply: Required Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementProductCondition/operator> ;
    sh:name "operator" ;
    sh:description "The rule item operator. Add: Required Update: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Hotel Listing
microsoftads:CampaignManagementHotelListingShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementHotelListing ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHotelListing/operand> ;
    sh:name "operand" ;
    sh:description "The operand for the hotel listing." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHotelListing/attribute> ;
    sh:name "attribute" ;
    sh:description "The attribute for the hotel listing." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Webpage Parameter
microsoftads:CampaignManagementWebpageParameterShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementWebpageParameter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementWebpageParameter/criterionName> ;
    sh:name "criterion name" ;
    sh:description "The criterion name that you can use to identify the criteria, for example you can filter or sort alphabetically. The criterion name length must be between 1 to 2048, inclusive. Add: Optional. If you do not specify any name, by default the name will be set to a concatenated list of conditions. Each condition will be delimited by the and keyword. For example if the conditions are a) Url contains flower, b) Url contains book, and c) PageContent contains seattle, then the default criterion name will be Url contains flower and Url contains book and PageContent contains seattle. If you do not specify any name, and if no conditions are specified, then you are effectively targeting all webpages and the name will be set to All Webpages. Update: Optional. If you leave this element null or empty the criterion name will not be updated. If you specify an empty string i.e. \"\", then the criterion name will be updated to the default value i.e. either All Webpages or a concatenated list of criterions." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementWebpageParameter/conditions> ;
    sh:name "conditions" ;
    sh:description "The webpage conditions or criteria. You may include up to 3 individual WebpageCondition objects in the list. Each WebpageCondition contains an Argument, Operand and Operator element. If you use Operand as URL and Operator as Equals you can only specify one condition. Add: Optional for biddable criterion; Required for negative criterion. If no conditions are specified, then you are effectively targeting all webpages. Update: Not allowed. You cannot update the webpage conditions. To update the conditions you must delete the criterion and add a new criterion." ;
    sh:node microsoftads:CampaignManagementWebpageConditionShape ;
    sh:class microsoftads:CampaignManagementWebpageCondition ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Webpage Condition
microsoftads:CampaignManagementWebpageConditionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementWebpageCondition ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementWebpageCondition/operand> ;
    sh:name "operand" ;
    sh:description "The webpage condition operand. Add: Required Update: Not applicable. You cannot update the webpage conditions. To update the conditions you must delete the criterion and add a new criterion." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unknown" "Url" "Category" "PageTitle" "PageContent" "CustomLabel" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementWebpageCondition/operator> ;
    sh:name "operator" ;
    sh:description "The webpage condition operator. Add: Optional. Default operator is used when it is not defined. Operator is required only when you use Operand=URL and Operator = Equals Update: Not applicable. You cannot update the webpage conditions. To update the conditions you must delete the criterion and add a new criterion. Default values URL/PageTitle/PageContent - Contains, Category/CustomLabel - Equals. Supported values URL - Contains/Equals, PageTitle/PageContent - Contains, CustomLabel/Category - Equals" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unknown" "Equals" "Contains" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementWebpageCondition/argument> ;
    sh:name "argument" ;
    sh:description "The webpage condition or criterion. The condition is met if the webpage property that is referenced by the operand contains or equals the argument's value. For example you can set this string to the URL, category, page title, or page content for your site. Note: For Performance Max campaigns, you can only set argument to the URL. Add: Required Update: Not applicable. You cannot update the webpage conditions. To update the conditions you must delete the criterion and add a new criterion." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Criterion Bid
microsoftads:CampaignManagementCriterionBidShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementCriterionBid ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterionBid/type> ;
    sh:name "type" ;
    sh:description "The type of criterion bid. For more information, see Remarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterionBid/amount> ;
    sh:name "amount" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterionBid/multiplier> ;
    sh:name "multiplier" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterionBid/rateAmount> ;
    sh:name "rate amount" ;
    sh:node microsoftads:CampaignManagementRateAmountShape ;
    sh:class microsoftads:CampaignManagementRateAmount ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Rate Amount
microsoftads:CampaignManagementRateAmountShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementRateAmount ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRateAmount/amount> ;
    sh:name "amount" ;
    sh:description "The rate amount in percentage form." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Criterion Cashback
microsoftads:CampaignManagementCriterionCashbackShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementCriterionCashback ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterionCashback/type> ;
    sh:name "type" ;
    sh:description "The type of criterion cashback." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterionCashback/cashbackPercent> ;
    sh:name "cashback percent" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Add Ad Group Criterions Response
microsoftads:CampaignManagementAddAdGroupCriterionsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddAdGroupCriterionsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddAdGroupCriterionsResponse/adGroupCriterionIds> ;
    sh:name "ad group criterion ids" ;
    sh:description "A list of unique system identifiers corresponding to the criterion that were added. The list of identifiers corresponds directly to the list of criterion in the request. Items of the list may be returned as null. For each list index where a criterion was not added, the corresponding element will be null." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddAdGroupCriterionsResponse/nestedPartialErrors> ;
    sh:name "nested partial errors" ;
    sh:description "An array of BatchErrorCollection objects that contain details for any criterion that were not successfully added. The top level error within each BatchErrorCollection object corresponds to potential criterion errors. The nested list of BatchError objects would include any errors specific to the list of items a criterion can have. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorCollectionShape ; sh:class microsoftads:CampaignManagementBatchErrorCollection ]
      [ sh:node microsoftads:CampaignManagementBatchErrorCollectionBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorCollectionBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorCollectionShape ; sh:class microsoftads:CampaignManagementEditorialErrorCollection ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Add Ad Groups Request
microsoftads:CampaignManagementAddAdGroupsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddAdGroupsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddAdGroupsRequest/campaignId> ;
    sh:name "campaign id" ;
    sh:description "The identifier of the campaign to add the ad groups to." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddAdGroupsRequest/adGroups> ;
    sh:name "ad groups" ;
    sh:description "An array of AdGroup objects to add to the specified campaign. You can add a maximum of 1,000 ad groups in a single call. Each campaign can have up to 20,000 ad groups." ;
    sh:node microsoftads:CampaignManagementAdGroupShape ;
    sh:class microsoftads:CampaignManagementAdGroup ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddAdGroupsRequest/returnInheritedBidStrategyTypes> ;
    sh:name "return inherited bid strategy types" ;
    sh:description "Reserved for future use." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Ad Group
microsoftads:CampaignManagementAdGroupShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAdGroup ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdGroup/id> ;
    sh:name "id" ;
    sh:description "The system-generated identifier of the ad group. Add: Not allowed. Update: Read-only and Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdGroup/name> ;
    sh:name "name" ;
    sh:description "The name of the ad group. The name must be unique among all active ad groups within the campaign. The name can contain a maximum of 256 characters. Add: Required Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdGroup/startDate> ;
    sh:name "start date" ;
    sh:description "The date that the ads in the ad group can begin serving; otherwise, the service can begin serving the ads in the ad group the day that the ad group becomes active. The start date is inclusive. For example, if you set the start date to 5/5/2021, the ads in the ad group will start at 12:00 AM on 5/5/2021. The time is based on the time zone that you specify at the campaign level. If the associated campaign is campaign managed, the startDate of the adGroup will be set to the Campaign startDate. Add: Optional. If you do not set the start date, then it will default to today's date and the service can begin serving the ads in the ad group as soon as the ad group status is active. Update: Optional. If no value is set for the update, this setting is not changed. The start date cannot be updated after the ad group is submitted i.e., once the start date has arrived." ;
    sh:node microsoftads:CampaignManagementDateShape ;
    sh:class microsoftads:CampaignManagementDate ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdGroup/endDate> ;
    sh:name "end date" ;
    sh:description "The date that the ads in the ad group will expire. If you do not specify an end date, the ads will not expire. The end date can be extended to make an ad group's ads eligible for delivery, even after the ad group expires. The end date is inclusive. For example, if you set EndDate to 12/31/2020, the ads in the ad group will expire at 11:59 PM on 12/31/2020. The time is based on the time zone that you specify at the campaign level. Note: If the associated campaign is campaign managed, the endDate of the adGroup will be set to null. Add: Optional. To set no end date when adding an ad group, set this element to null. Update: Optional. If no value is set for the update, this setting is not changed. To delete the existing end date setting, and effectively set no end date when updating an ad group, set the end date equal to or later than January 2, 2050. When you retrieve the ad group next time, this element will be nil i.e. it will not be set to January 2, 2050." ;
    sh:node microsoftads:CampaignManagementDateShape ;
    sh:class microsoftads:CampaignManagementDate ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdGroup/language> ;
    sh:name "language" ;
    sh:description "Your ad language setting determines the language you will use when you write your ads and should be the language of your customers. IMPORTANT: If languages are set at both the ad group and campaign level, the ad group level language will override the campaign level language. The supported language strings for Search and Shopping campaigns are: Bulgarian, Croatian, Czech, Danish, Dutch, English, Estonian, Finnish, French, German, Greek, Hungarian, Italian, Latvian, Lithuanian, Maltese, Norwegian, Polish, Portuguese, Romanian, Slovak, Slovenian, Spanish, Swedish, and TraditionalChinese. NOTE: The following languages are not yet available for everyone: Bulgarian, Croatian, Czech, Estonian, Greek, Hungarian, Latvian, Lithuanian, Maltese, Polish, Romanian, Slovak, Slovenian. For Dynamic Search Ads campaigns, the campaign and ad group level language settings are ignored in favor of the website domain language. You should set campaign languages to \"All\" and leave the ad group level language empty. For ad groups in Audience campaigns, ad group level language is not supported, and you must set the Languages element of the ad group's campaign to \"All\". Add: Optional if the campaign has one or more languages set, and otherwise the language is required for most campaign types. You are not allowed to set this element for ad groups in Audience campaigns. Update: Optional. If no value is set for the update, this setting is not changed. To remove the language and defer to the campaign level languages, set this element to an empty string value (\"\")." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdGroup/status> ;
    sh:name "status" ;
    sh:description "The status of the ad group. Possible values are Active, Expired, and Paused. The Expired status is read-only. Add: Optional. The default value is Paused. Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Paused" "Expired" "Deleted" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdGroup/privacyStatus> ;
    sh:name "privacy status" ;
    sh:description "Indicates whether or not your ad group target criteria e.g., ProfileCriterion are too narrow for ad groups in Audience campaigns. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unknown" "Active" "TargetingTooNarrow" "Pending" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdGroup/cpcBid> ;
    sh:name "cpc bid" ;
    sh:description "The default bid to use when the user's query and the ad group's keywords match by using either a broad, exact, or phrase match comparison. The minimum and maximum bid range depends on the account's currency. For more information, see Currencies. Specifying a broad, exact, or phrase match bid at the keyword level overrides the ad group's Cpc bid value for the corresponding match type. Add: Optional. If you do not set a bid, it will be set to the minimum depending on your account's currency. Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:node microsoftads:CampaignManagementBidShape ;
    sh:class microsoftads:CampaignManagementBid ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdGroup/network> ;
    sh:name "network" ;
    sh:description "The search networks where you want your ads to display. Supported network values for ad groups within most campaign types are OwnedAndOperatedAndSyndicatedSearch and OwnedAndOperatedOnly. For ad groups in Audience campaigns, ad group level network is not supported. The ad groups are in the Microsoft Audience Network. For ad groups in smart shopping campaigns, you cannot set the network. The service will set the network to OwnedAndOperatedAndSyndicatedSearch. For ad groups in shopping campaigns for brands, the InHousePromotion network (Retailer Network only) is supported in addition to OwnedAndOperatedAndSyndicatedSearch and OwnedAndOperatedOnly. If you select one of the syndicated search options, you can call the SetNegativeSitesToAdGroups or SetNegativeSitesToCampaigns operation to prevent the ads from displaying on specific syndicated search websites. For more information about networks and ad distribution, see the About Ad Distribution help article. Add: Optional. The default is OwnedAndOperatedAndSyndicatedSearch. Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "OwnedAndOperatedAndSyndicatedSearch" "OwnedAndOperatedOnly" "SyndicatedSearchOnly" "InHousePromotion" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdGroup/adRotation> ;
    sh:name "ad rotation" ;
    sh:description "Ad rotation sets how often Microsoft Advertising selects which ads to serve, if you have multiple ads within an ad group. Since no more than one ad from your account can show at a time, ad rotation prioritizes ads that appear statistically more likely to perform better. Note: Ad rotation does not apply to Product Ads. Possible values for the ad rotation Type are OptimizeForClicks and RotateAdsEvenly. If set to OptimizeForClicks, Microsoft Advertising prioritizes the ad from the ad group that appears to have the best chance of performing well, based on auction characteristics or factors, such as keyword, search term, device or location. Better-performing ads will show more frequently, and others will be served less often, if at all. If set to RotateAdsEvenly, Microsoft Advertising provides more balance in rotation between your ads. That is, the ads in a particular ad group have a similar chance of being displayed in response to a searcher's query. Ads are prioritized lower if they have lower ad quality, and therefore might display less often, or not at all. - The RotateAdsEvenly setting can allow lower-performing ads to display as often as better-performing ads. This might impact ad group performance. - The RotateAdsEvenly setting will be ignored if you use an automated bid strategy i.e., MaxClicks, MaxConversions, TargetCpa, or TargetRoas, as these bid strategies prioritize better-performing ads. Add: Optional. The default value is OptimizeForClicks. Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:node microsoftads:CampaignManagementAdRotationShape ;
    sh:class microsoftads:CampaignManagementAdRotation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdGroup/audienceAdsBidAdjustment> ;
    sh:name "audience ads bid adjustment" ;
    sh:description "The percent amount by which to adjust your bid for audience ads above or below the base ad group or keyword bid. This property is available in Search campaigns if the customer is enabled for the Microsoft Audience Network. This property is not available with smart shopping campaigns. Supported values are negative one hundred (-100) through positive nine hundred (900). Setting the bid adjustment to -100 percent will prevent audience ads from showing for this ad group. Set this element to zero (0) if you do not want any bid adjustment for audience ads. If this element is null you will inherit the AudienceAdsBidAdjustment setting of the ad group's Campaign. Add: Optional Update: Optional. This property will only be updated if you also set the UpdateAudienceAdsBidAdjustment element to true, and otherwise this property will be ignored. If the ad group already has a native bid adjustment, and you want to remove it to effectively inherit the AudienceAdsBidAdjustment setting of the ad group's Campaign, set this element to null." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdGroup/trackingUrlTemplate> ;
    sh:name "tracking url template" ;
    sh:description "The tracking template to use as a default for all URLs in your ad group. The following validation rules apply to tracking templates. For more details about supported templates and parameters, see the Microsoft Advertising help article What tracking or URL parameters can I use? - Tracking templates defined for lower level entities e.g. ads override those set for higher level entities e.g. campaign. For more information, see Entity Limits. - The length of the tracking template is limited to 2,048 characters. The HTTP or HTTPS protocol string does count towards the 2,048 character limit. - The tracking template must be a well-formed URL beginning with one of the following: http://, https://, {lpurl}, or {unescapedlpurl}. - Microsoft Advertising does not validate whether custom parameters exist. If you use custom parameters in your tracking template and they do not exist, then the landing page URL will include the key and value placeholders of your custom parameters without substitution. For example, if your tracking template is https://tracker.example.com/?season={_season}&promocode={_promocode}&u={lpurl} and neither {_season} or {_promocode} are defined at the campaign, ad group, criterion, keyword, or ad level, then the landing page URL will be the same. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. If you set this element to an empty string (\"\"), the previous setting will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdGroup/finalUrlSuffix> ;
    sh:name "final url suffix" ;
    sh:description "The final URL suffix can include tracking parameters that will be appended to the end of your landing page URL. We recommend placing tracking parameters that your landing page requires in a final URL suffix so that your customers are always sent to your landing page. For more details and validation rules see Final URL Suffix in the technical guides. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. If you set this element to an empty string (\"\"), the previous setting will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdGroup/urlCustomParameters> ;
    sh:name "url custom parameters" ;
    sh:description "Your custom collection of key and value parameters for URL tracking. Microsoft Advertising will accept the first 8 CustomParameter objects that you include within the CustomParameters object, and if you include more than 8 custom parameters an error will be returned. Each CustomParameter includes Key and Value elements. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. Set the UrlCustomParameters element to null or empty to retain any existing custom parameters. To remove all custom parameters, set the Parameters element of the CustomParameters object to null or empty. To remove a subset of custom parameters, specify the custom parameters that you want to keep in the Parameters element of the CustomParameters object." ;
    sh:node microsoftads:CampaignManagementCustomParametersShape ;
    sh:class microsoftads:CampaignManagementCustomParameters ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdGroup/biddingScheme> ;
    sh:name "bidding scheme" ;
    sh:description "The bid strategy type for how you want to manage your bids. NOTE: As of April 2021, you cannot set any bid strategies for ad groups or keywords. If you attempt to set bid strategies for ad groups or keywords, the request will be ignored without error. Ad groups and keywords will inherit their campaign's bid strategy. Add: Optional. If you do not set this element, then InheritFromParentBiddingScheme is used by default. Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBiddingSchemeShape ; sh:class microsoftads:CampaignManagementBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementBiddingSchemeBaseShape ; sh:class microsoftads:CampaignManagementBiddingSchemeBase ]
      [ sh:node microsoftads:CampaignManagementCommissionBiddingSchemeShape ; sh:class microsoftads:CampaignManagementCommissionBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementCostPerSaleBiddingSchemeShape ; sh:class microsoftads:CampaignManagementCostPerSaleBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementEnhancedCpcBiddingSchemeShape ; sh:class microsoftads:CampaignManagementEnhancedCpcBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementInheritFromParentBiddingSchemeShape ; sh:class microsoftads:CampaignManagementInheritFromParentBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementManualCpaBiddingSchemeShape ; sh:class microsoftads:CampaignManagementManualCpaBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementManualCpcBiddingSchemeShape ; sh:class microsoftads:CampaignManagementManualCpcBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementManualCpmBiddingSchemeShape ; sh:class microsoftads:CampaignManagementManualCpmBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementManualCpvBiddingSchemeShape ; sh:class microsoftads:CampaignManagementManualCpvBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementMaxClicksBiddingSchemeShape ; sh:class microsoftads:CampaignManagementMaxClicksBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementMaxConversionValueBiddingSchemeShape ; sh:class microsoftads:CampaignManagementMaxConversionValueBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementMaxConversionsBiddingSchemeShape ; sh:class microsoftads:CampaignManagementMaxConversionsBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementMaxRoasBiddingSchemeShape ; sh:class microsoftads:CampaignManagementMaxRoasBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementPercentCpcBiddingSchemeShape ; sh:class microsoftads:CampaignManagementPercentCpcBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementTargetCpaBiddingSchemeShape ; sh:class microsoftads:CampaignManagementTargetCpaBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementTargetImpressionShareBiddingSchemeShape ; sh:class microsoftads:CampaignManagementTargetImpressionShareBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementTargetRoasBiddingSchemeShape ; sh:class microsoftads:CampaignManagementTargetRoasBiddingScheme ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdGroup/settings> ;
    sh:name "settings" ;
    sh:description "The ad group settings that typically vary by campaign type. You can include a maximum of one object per setting type in the list of settings e.g., one TargetSetting. The TargetSetting can be used with any campaign type, and determines whether the Age, Audience, CompanyName, Gender, Industry, and JobFunction criterions associated with this ad group use the \"target and bid\" option or the \"bid only\" target option. Within the TargetSetting you can have multiple TargetSettingDetail objects i.e., one per CriterionTypeGroup. Add: Optional. If this element does not include a TargetSetting object, the default bid option for all criterion type groups is effectively \"bid only\". Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementAISearchSettingShape ; sh:class microsoftads:CampaignManagementAISearchSetting ]
      [ sh:node microsoftads:CampaignManagementAppSettingShape ; sh:class microsoftads:CampaignManagementAppSetting ]
      [ sh:node microsoftads:CampaignManagementBaseDomainSettingShape ; sh:class microsoftads:CampaignManagementBaseDomainSetting ]
      [ sh:node microsoftads:CampaignManagementCallToActionSettingShape ; sh:class microsoftads:CampaignManagementCallToActionSetting ]
      [ sh:node microsoftads:CampaignManagementCampaignFrequencyCapSettingShape ; sh:class microsoftads:CampaignManagementCampaignFrequencyCapSetting ]
      [ sh:node microsoftads:CampaignManagementCoOpSettingShape ; sh:class microsoftads:CampaignManagementCoOpSetting ]
      [ sh:node microsoftads:CampaignManagementDisclaimerSettingShape ; sh:class microsoftads:CampaignManagementDisclaimerSetting ]
      [ sh:node microsoftads:CampaignManagementDynamicFeedSettingShape ; sh:class microsoftads:CampaignManagementDynamicFeedSetting ]
      [ sh:node microsoftads:CampaignManagementDynamicSearchAdsSettingShape ; sh:class microsoftads:CampaignManagementDynamicSearchAdsSetting ]
      [ sh:node microsoftads:CampaignManagementHotelSettingShape ; sh:class microsoftads:CampaignManagementHotelSetting ]
      [ sh:node microsoftads:CampaignManagementImpressionTrackingSettingShape ; sh:class microsoftads:CampaignManagementImpressionTrackingSetting ]
      [ sh:node microsoftads:CampaignManagementNetworkDistributionSettingShape ; sh:class microsoftads:CampaignManagementNetworkDistributionSetting ]
      [ sh:node microsoftads:CampaignManagementNewCustomerAcquisitionGoalSettingShape ; sh:class microsoftads:CampaignManagementNewCustomerAcquisitionGoalSetting ]
      [ sh:node microsoftads:CampaignManagementPerformanceMaxSettingShape ; sh:class microsoftads:CampaignManagementPerformanceMaxSetting ]
      [ sh:node microsoftads:CampaignManagementReachOptimizationGoalSettingShape ; sh:class microsoftads:CampaignManagementReachOptimizationGoalSetting ]
      [ sh:node microsoftads:CampaignManagementResponsiveSearchAdsSettingShape ; sh:class microsoftads:CampaignManagementResponsiveSearchAdsSetting ]
      [ sh:node microsoftads:CampaignManagementSettingShape ; sh:class microsoftads:CampaignManagementSetting ]
      [ sh:node microsoftads:CampaignManagementSettingBaseShape ; sh:class microsoftads:CampaignManagementSettingBase ]
      [ sh:node microsoftads:CampaignManagementShoppingSettingShape ; sh:class microsoftads:CampaignManagementShoppingSetting ]
      [ sh:node microsoftads:CampaignManagementTargetSettingShape ; sh:class microsoftads:CampaignManagementTargetSetting ]
      [ sh:node microsoftads:CampaignManagementThirdPartyMeasurementSettingShape ; sh:class microsoftads:CampaignManagementThirdPartyMeasurementSetting ]
      [ sh:node microsoftads:CampaignManagementUnifiedAutomationSettingShape ; sh:class microsoftads:CampaignManagementUnifiedAutomationSetting ]
      [ sh:node microsoftads:CampaignManagementVanityPharmaSettingShape ; sh:class microsoftads:CampaignManagementVanityPharmaSetting ]
      [ sh:node microsoftads:CampaignManagementVerifiedTrackingSettingShape ; sh:class microsoftads:CampaignManagementVerifiedTrackingSetting ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdGroup/adScheduleUseSearcherTimeZone> ;
    sh:name "ad schedule use searcher time zone" ;
    sh:description "Determines whether to use the account time zone or the time zone of the search user where the ads could be delivered. Set this property to true if you want the ads to be shown in the search user's time zone, and otherwise set it to false. This element is not returned by default. To get this element, include the AdScheduleUseSearcherTimeZone value in the ReturnAdditionalFields element when you call the GetAdGroupsByCampaignId and GetAdGroupsByIds service operations. Add: Optional. If you do not specify this element or leave it empty, the default value of true will be set and the search user's time zone will be used. After September 30, 2020, if you do not specify this field or leave it empty, the default value of false is set and the account time zone is used. Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdGroup/adGroupType> ;
    sh:name "ad group type" ;
    sh:description "The ad group type. In a mixed campaign where the CampaignType is \"Search\", the ExperimentId is not set, and the Settings already have a valid DynamicSearchAdsSetting, the possible values are \"SearchDynamic\" and \"SearchStandard\". Otherwise the type of ad groups within \"Search\" campaigns can only be set to \"SearchStandard\". If the ad group type is \"SearchDynamic\", then you can only add dynamic search ads within this ad group. If the ad group type is \"SearchStandard\", then you can add expanded text ads or responsive search ads within this ad group. The type of ad groups within \"DynamicSearchAds\" campaigns can only be set to \"SearchDynamic\". You don't need to set the ad group type for \"DynamicSearchAds\" campaigns, but please note when you retrieve ad groups this element will be set to \"SearchDynamic\". This field can be set to HotelAds for \"Hotel\" or \"Search\" campaign types. This element cannot be set for \"Audience\" or \"Shopping\" campaign types. When you retrieve an ad group within unsupported campaigns, this element will not be set. Add: Optional. The default value for \"Search\" campaigns is \"SearchStandard\". The default value for \"DynamicSearchAds\" campaigns is \"SearchDynamic\". Update: Read-only. You cannot update the ad group type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdGroup/cpvBid> ;
    sh:name "cpv bid" ;
    sh:description "The manual CPV bid strategy type. With the ManualCpv (manual cost per view) bid strategy, you set the highest amount that you'd like to pay per view or per click on a video ad, and Microsoft Advertising uses these bids every time. This element is not returned by default. To get this element, include the Cpv value in the ReturnAdditionalFields element when you call the GetAdGroupsByCampaignId and GetAdGroupsByIds service operations." ;
    sh:node microsoftads:CampaignManagementBidShape ;
    sh:class microsoftads:CampaignManagementBid ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdGroup/cpmBid> ;
    sh:name "cpm bid" ;
    sh:description "The manual CPM bid strategy type. With the ManualCpm (manual cost per thousand) bid strategy, you set the highest amount that you'd like to pay per thousand impressions, and Microsoft Advertising uses these bids every time. This element is not returned by default. To get this element, include the CpmBid value in the ReturnAdditionalFields element when you call the GetAdGroupsByCampaignId and GetAdGroupsByIds service operations." ;
    sh:node microsoftads:CampaignManagementBidShape ;
    sh:class microsoftads:CampaignManagementBid ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdGroup/mcpaBid> ;
    sh:name "mcpa bid" ;
    sh:description "The manual CPA bid strategy type. With the ManualCpa (manual cost per action) bid strategy, you set your big per advertiser-specified action." ;
    sh:node microsoftads:CampaignManagementBidShape ;
    sh:class microsoftads:CampaignManagementBid ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdGroup/multimediaAdsBidAdjustment> ;
    sh:name "multimedia ads bid adjustment" ;
    sh:description "The percent amount by which to adjust your bid for multimedia ads above or below the base ad group or keyword bid." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdGroup/commissionRate> ;
    sh:name "commission rate" ;
    sh:description "The commission rate charged to the advertiser when someone books a hotel and stays there." ;
    sh:node microsoftads:CampaignManagementRateBidShape ;
    sh:class microsoftads:CampaignManagementRateBid ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdGroup/percentCpcBid> ;
    sh:name "percent cpc bid" ;
    sh:description "The percent CPC bid strategy type (total hotel price per night, including taxes and fees)." ;
    sh:node microsoftads:CampaignManagementRateBidShape ;
    sh:class microsoftads:CampaignManagementRateBid ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdGroup/useOptimizedTargeting> ;
    sh:name "use optimized targeting" ;
    sh:description "This will be deprecated. Use UsePredictiveTargeting instead." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdGroup/usePredictiveTargeting> ;
    sh:name "use predictive targeting" ;
    sh:description "Indicates if predictive targeting is enabled for an AdGroup. Note: UsePredictiveTargeting is only available for Audience campaigns. Add: Optional Update: Optional." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdGroup/frequencyCapSettings> ;
    sh:name "frequency cap settings" ;
    sh:description "Settings for the frequency cap." ;
    sh:node microsoftads:CampaignManagementFrequencyCapSettingsShape ;
    sh:class microsoftads:CampaignManagementFrequencyCapSettings ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdGroup/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. Forward compatibility changes will be noted here in future releases. There are currently no forward compatibility changes for this object." ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Bid
microsoftads:CampaignManagementBidShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementBid ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBid/amount> ;
    sh:name "amount" ;
    sh:description "The bid value. For details about the valid bid range for your market, see Currencies." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Ad Rotation
microsoftads:CampaignManagementAdRotationShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAdRotation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdRotation/type> ;
    sh:name "type" ;
    sh:description "The type of ad rotation to apply to the ad group. Ad rotation sets how often Microsoft Advertising selects which ads to serve, if you have multiple ads within an ad group. Since no more than one ad from your account can show at a time, ad rotation prioritizes ads that appear statistically more likely to perform better. Note: Ad rotation does not apply to Product Ads. Possible values are OptimizeForClicks and RotateAdsEvenly. If set to OptimizeForClicks, Microsoft Advertising prioritizes the ad from the ad group that appears to have the best chance of performing well, based on auction characteristics or factors, such as keyword, search term, device or location. Better-performing ads will show more frequently, and others will be served less often, if at all. If set to RotateAdsEvenly, Microsoft Advertising provides more balance in rotation between your ads. That is, the ads in a particular ad group have a similar chance of being displayed in response to a searcher's query. Ads are prioritized lower if they have lower ad quality, and therefore might display less often, or not at all. - The RotateAdsEvenly setting can allow lower-performing ads to display as often as better-performing ads. This might impact ad group performance. - The RotateAdsEvenly setting will be ignored if you use an automated bid strategy i.e., MaxClicks, MaxConversions, TargetCpa, or TargetRoas, as these bid strategies prioritize better-performing ads. Add: Optional. If not specified, the default value is OptimizeForClicks. Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "OptimizeForClicks" "RotateAdsEvenly" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdRotation/startDate> ;
    sh:name "start date" ;
    sh:description "Reserved for future use only. Must be null." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdRotation/endDate> ;
    sh:name "end date" ;
    sh:description "Reserved for future use only. Must be null." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Bidding Scheme
microsoftads:CampaignManagementBiddingSchemeShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementBiddingScheme ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBiddingScheme/type> ;
    sh:name "type" ;
    sh:description "The type of bidding scheme that is set for this campaign, ad group, or keyword. For more information about bidding scheme types, see the Remarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBiddingScheme/maxCpc> ;
    sh:name "max cpc" ;
    sh:node microsoftads:CampaignManagementBidShape ;
    sh:class microsoftads:CampaignManagementBid ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBiddingScheme/targetCpa> ;
    sh:name "target cpa" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBiddingScheme/manualCpc> ;
    sh:name "manual cpc" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBiddingScheme/inheritedBidStrategyType> ;
    sh:name "inherited bid strategy type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBiddingScheme/targetRoas> ;
    sh:name "target roas" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBiddingScheme/targetImpressionShare> ;
    sh:name "target impression share" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBiddingScheme/targetAdPosition> ;
    sh:name "target ad position" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBiddingScheme/maxPercentCpc> ;
    sh:name "max percent cpc" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBiddingScheme/commissionRate> ;
    sh:name "commission rate" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBiddingScheme/manualCpi> ;
    sh:name "manual cpi" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBiddingScheme/targetCostPerSale> ;
    sh:name "target cost per sale" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Setting
microsoftads:CampaignManagementSettingShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementSetting ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetting/type> ;
    sh:name "type" ;
    sh:description "The type of setting. For more information, see Remarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetting/priority> ;
    sh:name "priority" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetting/salesCountryCode> ;
    sh:name "sales country code" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetting/storeId> ;
    sh:name "store id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetting/localInventoryAdsEnabled> ;
    sh:name "local inventory ads enabled" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetting/shoppableAdsEnabled> ;
    sh:name "shoppable ads enabled" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetting/feedLabel> ;
    sh:name "feed label" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetting/feedId> ;
    sh:name "feed id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetting/domainName> ;
    sh:name "domain name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetting/language> ;
    sh:name "language" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetting/source> ;
    sh:name "source" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "All" "SystemIndex" "AdvertiserSuppliedUrls" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetting/pageFeedIds> ;
    sh:name "page feed ids" ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetting/dynamicDescriptionEnabled> ;
    sh:name "dynamic description enabled" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetting/details> ;
    sh:name "details" ;
    sh:node <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetting/details/ListLevel1Shape> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetting/bidOption> ;
    sh:name "bid option" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "BidValue" "BidBoost" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetting/bidBoostValue> ;
    sh:name "bid boost value" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetting/bidMaxValue> ;
    sh:name "bid max value" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetting/disclaimerAdsEnabled> ;
    sh:name "disclaimer ads enabled" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetting/hotelAdGroupType> ;
    sh:name "hotel ad group type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetting/autoGeneratedAssetsEnabled> ;
    sh:name "auto generated assets enabled" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetting/finalUrlExpansionOptOut> ;
    sh:name "final url expansion opt out" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetting/autoGeneratedTextOptOut> ;
    sh:name "auto generated text opt out" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetting/autoGeneratedImageOptOut> ;
    sh:name "auto generated image opt out" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetting/costPerSaleOptOut> ;
    sh:name "cost per sale opt out" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetting/automatedCallToActionOptOut> ;
    sh:name "automated call to action opt out" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetting/callToActionOptOut> ;
    sh:name "call to action opt out" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetting/displayUrlMode> ;
    sh:name "display url mode" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "ManufacturerWebsiteUrl" "WebsiteDescription" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetting/websiteDescription> ;
    sh:name "website description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unspecified" "PrescriptionTreatmentWebsite_En" "PrescriptionTreatmentWebsite_Es" "PrescriptionDeviceWebsite_En" "PrescriptionDeviceWebsite_Es" "MedicalDeviceWebsite_En" "MedicalDeviceWebsite_Es" "PreventativeTreatmentWebsite_En" "PreventativeTreatmentWebsite_Es" "PrescriptionContraceptionWebsite_En" "PrescriptionContraceptionWebsite_Es" "PrescriptionVaccineWebsite_En" "PrescriptionVaccineWebsite_Es" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetting/appStore> ;
    sh:name "app store" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetting/appId> ;
    sh:name "app id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetting/newCustomerAcquisitionGoalId> ;
    sh:name "new customer acquisition goal id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetting/newCustomerAcquisitionBidOnlyMode> ;
    sh:name "new customer acquisition bid only mode" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetting/additionalConversionValue> ;
    sh:name "additional conversion value" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetting/baseDomain> ;
    sh:name "base domain" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetting/searchTermMatchingOptOut> ;
    sh:name "search term matching opt out" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetting/aISearchEnabled> ;
    sh:name "a isearch enabled" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetting/networkOption> ;
    sh:name "network option" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "OwnedAndOperatedAndSyndicatedSearch" "OwnedAndOperatedOnly" "SyndicatedSearchOnly" "InHousePromotion" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetting/impressionTrackingUrl> ;
    sh:name "impression tracking url" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetting/optimizationGoal> ;
    sh:name "optimization goal" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unspecified" "MaxImpressions" "MaxUniqueReach" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetting/timeGranularity> ;
    sh:name "time granularity" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "HOUR" "DAY" "WEEK" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetting/capValue> ;
    sh:name "cap value" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetting/channelOptimizationOptOut> ;
    sh:name "channel optimization opt out" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetting/audienceOptimizationOptOut> ;
    sh:name "audience optimization opt out" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Rate Bid
microsoftads:CampaignManagementRateBidShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementRateBid ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRateBid/type> ;
    sh:name "type" ;
    sh:description "The type of criterion bid. For more information, see Remarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRateBid/rateAmount> ;
    sh:name "rate amount" ;
    sh:description "Defines an object that represents the rate amount." ;
    sh:node microsoftads:CampaignManagementRateAmountShape ;
    sh:class microsoftads:CampaignManagementRateAmount ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Frequency Cap Settings
microsoftads:CampaignManagementFrequencyCapSettingsShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementFrequencyCapSettings ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFrequencyCapSettings/timeGranularity> ;
    sh:name "time granularity" ;
    sh:description "The smallest time interval to limit ad serves. Values are Hour, Day, Week." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "HOUR" "DAY" "WEEK" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFrequencyCapSettings/capValue> ;
    sh:name "cap value" ;
    sh:description "A limit to the number of times an ad is shown." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Add Ad Groups Response
microsoftads:CampaignManagementAddAdGroupsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddAdGroupsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddAdGroupsResponse/adGroupIds> ;
    sh:name "ad group ids" ;
    sh:description "A list of unique system identifiers corresponding to the ad groups that were added. The list of identifiers corresponds directly to the list of ad groups in the request. Items of the list may be returned as null. For each list index where an ad group was not added, the corresponding element will be null." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddAdGroupsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddAdGroupsResponse/inheritedBidStrategyTypes> ;
    sh:name "inherited bid strategy types" ;
    sh:description "Reserved for future use." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Campaign Management Add Ads Request
microsoftads:CampaignManagementAddAdsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddAdsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddAdsRequest/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "The identifier of the ad group to add the ads to." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddAdsRequest/ads> ;
    sh:name "ads" ;
    sh:description "An array of up to 50 ads that you want added to the ad group." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementAdShape ; sh:class microsoftads:CampaignManagementAd ]
      [ sh:node microsoftads:CampaignManagementAdBaseShape ; sh:class microsoftads:CampaignManagementAdBase ]
      [ sh:node microsoftads:CampaignManagementAppInstallAdShape ; sh:class microsoftads:CampaignManagementAppInstallAd ]
      [ sh:node microsoftads:CampaignManagementDynamicSearchAdShape ; sh:class microsoftads:CampaignManagementDynamicSearchAd ]
      [ sh:node microsoftads:CampaignManagementExpandedTextAdShape ; sh:class microsoftads:CampaignManagementExpandedTextAd ]
      [ sh:node microsoftads:CampaignManagementHotelAdShape ; sh:class microsoftads:CampaignManagementHotelAd ]
      [ sh:node microsoftads:CampaignManagementProductAdShape ; sh:class microsoftads:CampaignManagementProductAd ]
      [ sh:node microsoftads:CampaignManagementResponsiveAdShape ; sh:class microsoftads:CampaignManagementResponsiveAd ]
      [ sh:node microsoftads:CampaignManagementResponsiveSearchAdShape ; sh:class microsoftads:CampaignManagementResponsiveSearchAd ]
      [ sh:node microsoftads:CampaignManagementTextAdShape ; sh:class microsoftads:CampaignManagementTextAd ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Add Ads Response
microsoftads:CampaignManagementAddAdsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddAdsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddAdsResponse/adIds> ;
    sh:name "ad ids" ;
    sh:description "A list of unique system identifiers corresponding to the ads that were added. The list of identifiers corresponds directly to the list of ads in the request. Items of the list may be returned as null. For each list index where an ad was not added, the corresponding element will be null." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddAdsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Add Asset Groups Request
microsoftads:CampaignManagementAddAssetGroupsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddAssetGroupsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddAssetGroupsRequest/campaignId> ;
    sh:name "campaign id" ;
    sh:description "The ID of the Performace Max campaign." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddAssetGroupsRequest/assetGroups> ;
    sh:name "asset groups" ;
    sh:description "Array of asset groups to add to the specified campaign. A maximum of 100 asset groups can be specified in a single call." ;
    sh:node microsoftads:CampaignManagementAssetGroupShape ;
    sh:class microsoftads:CampaignManagementAssetGroup ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Asset Group
microsoftads:CampaignManagementAssetGroupShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAssetGroup ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroup/name> ;
    sh:name "name" ;
    sh:description "The name of the asset group. Names should be unique in a campaign and are case sensitive. The length cannot exceed 256 characters. Add: Required Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroup/status> ;
    sh:name "status" ;
    sh:description "The status of the Asset group. Possible values are Active, Expired and Paused. The Expired status is read-only. Add: Optional. Default is Paused. Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Paused" "Deleted" "Expired" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroup/startDate> ;
    sh:name "start date" ;
    sh:description "The date that the asset group can begin serving; otherwise, the service can begin serving ads the day that the asset group becomes active. The start date is inclusive. For example, if you set the start date to 5/5/2021, the ads created from the asset group will start at 12:00 AM on 5/5/2021. The time is based on the time zone that you specify at the campaign level. Add: Optional. If you do not set the start date, then it will default to today's date and the service can begin serving ads as soon as the asset group status is active. Update: Optional. If no value is set for the update, this setting is not changed. The start date cannot be updated after the asset group is submitted i.e., once the start date has arrived." ;
    sh:node microsoftads:CampaignManagementDateShape ;
    sh:class microsoftads:CampaignManagementDate ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroup/endDate> ;
    sh:name "end date" ;
    sh:description "The date that the asset group will expire. If you do not specify an end date, the asset group will not expire. The end date can be extended to make an asset group eligible for delivery, even after the asset group expires. The end date is inclusive. For example, if you set EndDate to 12/31/2020, the ads in the asset group will expire at 11:59 PM on 12/31/2020. The time is based on the time zone that you specify at the campaign level. Add: Optional. To set no end date when adding an asset group, set this element to null. Update: Optional. If no value is set for the update, this setting is not changed. To delete the existing end date setting, and effectively set no end date when updating an asset group, set the end date equal to or later than January 2, 2050. When you retrieve the asset group next time, this element will be nil i.e. it will not be set to January 2, 2050." ;
    sh:node microsoftads:CampaignManagementDateShape ;
    sh:class microsoftads:CampaignManagementDate ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroup/path1> ;
    sh:name "path1" ;
    sh:description "The first part of the optional path that will be appended to the domain portion of your display URL. The domain portion of your display URL e.g. https://www.contoso.com will be generated from the domain of your Final URL (FinalUrls element). Then if you have specified a value for Path1 it will be appended to the display URL. If you have also specified a value for Path2, then it will also be appended to the display URL after Path1. For example if your FinalUrls contains https://www.contoso.com, Path1 is set to subdirectory1, and Path2 is set to subdirectory2, then the URL displayed will be https://www.contoso.com/subdirectory1/subdirectory2. No more than 15 characters can be input. The ad will fail to display if the length of the final URL domain and the paths combined exceed 67 characters. For languages with double-width characters e.g. Traditional Chinese no more than 7 final characters can be input. The ad will fail to display if the length of the final URL domain and the paths combined exceed 33 characters. The double-width characters are determined by the characters you use instead of the character set of the campaign language settings. Double-width characters include Korean, Japanese and Chinese languages characters as well as Emojis. The path cannot contain the forward slash (/) or newline (\\n) characters. If the path includes a space, it will be replaced with an underscore (_) when the ad is shown. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroup/path2> ;
    sh:name "path2" ;
    sh:description "The second part of the optional path that will be appended to the domain portion of your display URL. The domain portion of your display URL e.g. https://www.contoso.com will be generated from the domain of your Final URL (FinalUrls element). Then if you have specified a value for Path1 it will be appended to the display URL. If you have also specified a value for Path2, then it will also be appended to the display URL after Path1. For example if your FinalUrls contains https://www.contoso.com, Path1 is set to subdirectory1, and Path2 is set to subdirectory2, then the URL displayed will be https://www.contoso.com/subdirectory1/subdirectory2. You can only specify Path2 if Path1 is also set. No more than 15 characters can be input. The ad will fail to display if the length of the final URL domain and the paths combined exceed 67 characters. For languages with double-width characters e.g. Traditional Chinese no more than 7 final characters can be input. The ad will fail to display if the length of the final URL domain and the paths combined exceed 33 characters. The double-width characters are determined by the characters you use instead of the character set of the campaign language settings. Double-width characters include Korean, Japanese and Chinese languages characters as well as Emojis. The path cannot contain the forward slash (/) or newline (\\n) characters. If the path includes a space, it will be replaced with an underscore (_) when the ad is shown. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroup/businessName> ;
    sh:name "business name" ;
    sh:description "The name of the business. Your business's name may appear in your ad, depending on the ad placement. The length of the string is limited to 25 characters. Add: Required. If not provided and parent campaign associates to a store, the store name will be used as the business name. Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroup/headlines> ;
    sh:name "headlines" ;
    sh:description "Headlines are the most prominent text that appears in your ad, so you should make the most out of the available characters. We require multiple headlines so the ad can flexibly display across a variety of publishers and placements. From a data model perspective the descriptions and headlines are each stored as text assets i.e., one TextAsset per AssetLink. The same asset can be used by multiple ads. For example if \"Seamless Integration\" is a text asset, it will have the same asset identifier across all ads in the same Microsoft Advertising account. You must set between 3-15 headlines. Each headline's Text must contain at least one word. The Text cannot contain the newline (\\n) character. If the parent campaign associates to a store and you specify Headlines, you must also specify LongHeadlines, Descriptions, and Images. Add: Optional if its parent campaign associates to a store, required if its parent campaign does not associate to a store. Update: Optional. To retain all of the existing asset links, set or leave this element nil. If you set a value for this element, any headlines that were previously linked to this asset group will be replaced. If the parent campaign associates to a store and you set this element to an empty list, the previous setting will be deleted." ;
    sh:node microsoftads:CampaignManagementAssetLinkShape ;
    sh:class microsoftads:CampaignManagementAssetLink ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroup/longHeadlines> ;
    sh:name "long headlines" ;
    sh:description "You must set between 1-5 long headlines. Each headline's Text must contain at least one word. The Text cannot contain the newline (\\n) character. If the parent campaign associates to a store and you specify LongHeadlines, you must also specify Headlines, Descriptions, and Images. Add: Optional if the parent campaign associates to a store, required if its parent campaign does not associate to a store. Update: Optional. To retain all of the existing asset links, set or leave this element nil. If you set a value for this element, any headlines that were previously linked to this asset group will be replaced. If the parent campaign associates to a store and you set this element to an empty list, the previous setting will be deleted." ;
    sh:node microsoftads:CampaignManagementAssetLinkShape ;
    sh:class microsoftads:CampaignManagementAssetLink ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroup/descriptions> ;
    sh:name "descriptions" ;
    sh:description "The descriptions that are shown below the path in your ad. You must set between 2-5 descriptions. Each description's Text must contain at least one word. The Text cannot contain the newline (\\n) character. If the parent campaign associates to a store and you specify Descriptions, you must also specify Headlines, LongHeadlines, and Images. Add: Optional if the parent campaign associates to a store, required if its parent campaign does not associate to a store. Update: Optional. To retain all of the existing asset links, set or leave this element nil. If you set a value for this element, any descriptions that were previously linked to this asset group will be replaced. If the parent campaign associates to a store and you set this element to an empty list, the previous setting will be deleted." ;
    sh:node microsoftads:CampaignManagementAssetLinkShape ;
    sh:class microsoftads:CampaignManagementAssetLink ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroup/images> ;
    sh:name "images" ;
    sh:description "Image assets with different sizes and aspect ratios so they can flexibly display across a variety of publishers and placements. Include one or more AssetLink objects that each contain an ImageAsset with SubType and crop settings that match the desired aspect ratio. The ImageAsset contains the CropHeight, CropWidth, CropX, CropY and SubType fields. The possible sub type values include LandscapeImageMedia, SquareImageMedia, LandscapeLogoMedia, SquareLogoMedia, ImageMedia1x2, ImageMedia4x1, ImageMedia201X100, ImageMedia169X100, ImageMedia153X100, and ImageMedia124X100. You must provide at least 1 LandscapeImageMedia and 1 SquareImageMedia. A total of up to 20 images and a total of up to 5 logos can be saved. If the parent campaign associates to a store and you specify Images, you must also specify Headlines, LongHeadlines, and Descriptions. Add: Optional if the parent campaign associates to a store, required if its parent campaign does not associate to a store. Update: Optional. If no value is set for the update, this setting is not changed. If you include images during update, any previously set images will be replaced. If the parent campaign associates to a store and you set this element to an empty list, the previous setting will be deleted." ;
    sh:node microsoftads:CampaignManagementAssetLinkShape ;
    sh:class microsoftads:CampaignManagementAssetLink ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroup/videos> ;
    sh:name "videos" ;
    sh:description "Reserved." ;
    sh:node microsoftads:CampaignManagementAssetLinkShape ;
    sh:class microsoftads:CampaignManagementAssetLink ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroup/callToAction> ;
    sh:name "call to action" ;
    sh:description "A brief, punchy reason for customers to click your ad right now. This is displayed on your call to action button. Add: Required. If not provided and parent campaign associates to a store, it will default to LearnMore. Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unknown" "ActNow" "ApplyNow" "BetNow" "BidNow" "BookACar" "BookHotel" "BookNow" "Browse" "BuyNow" "ChatNow" "Compare" "ContactUs" "Coupon" "Donate" "Download" "EmailNow" "EnrollNow" "Explore" "FileNow" "FindJob" "FreePlay" "FreeQuote" "FreeTrial" "GetDeals" "GetOffer" "GetQuote" "JoinNow" "LearnMore" "ListenNow" "LogIn" "Message" "NewCars" "OrderNow" "PlayGame" "PlayNow" "PostJob" "Register" "RentACar" "RentNow" "Reserve" "Sale" "SaveNow" "Schedule" "SeeMenu" "SeeMore" "SeeOffer" "SellNow" "ShopNow" "Showtimes" "SignIn" "SignUp" "StartFree" "StartNow" "Subscribe" "TestDrive" "TryNow" "UsedCars" "ViewCars" "ViewNow" "ViewPlans" "VisitSite" "VoteNow" "Watch" "WatchMore" "WatchNow" "Directions" "FindStore" "SwitchNow" "VisitStore" "RenewNow" "Reorder" "Default" "NoButton" "Install" "AddToCart" "BookTravel" "Buy" "OpenLink" "RegisterNow" "BuildNow" "Dealers" "GetDemo" "GetNow" "GoToDemo" "SeeDemo" "SeeModels" "SeeOffers" "ViewDemo" "CustomText" "Discover" "Dismiss" "Apply" "ViewQuote" "Join" "Attend" "RequestDemo" "Automated" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroup/finalUrls> ;
    sh:name "final urls" ;
    sh:description "The landing page URL. The domain portion of the URL in combination with the path 1 and path 2 strings cannot exceed 67 characters. The following validation rules apply to Final URLs and Final Mobile URLs. - The length of the URL is limited to 2,048 characters. The HTTP or HTTPS protocol string does count towards the 2,048 character limit. - You may specify up to 10 items for both FinalUrls and FinalMobileUrls; however, only the first item in each list is used for delivery. The service allows up to 10 for potential forward compatibility. - Usage of '{' and '}' is only allowed to delineate tags, for example {lpurl}. - Final URLs must each be a well-formed URL starting with either http:// or https://. - If you specify FinalMobileUrls, you must also specify FinalUrls. For retail campaigns, the final url must match the domain from the store associated with the campaign. Add: Required. If not provided and parent campaign associates to a store, the store URL will be used as the final URL. Update: Optional" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroup/assetGroupSearchThemes> ;
    sh:name "asset group search themes" ;
    sh:description "A list of asset group search themes." ;
    sh:node microsoftads:CampaignManagementAssetGroupSearchThemeShape ;
    sh:class microsoftads:CampaignManagementAssetGroupSearchTheme ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroup/finalMobileUrls> ;
    sh:name "final mobile urls" ;
    sh:description "The mobile landing page URL. The following validation rules apply to Final URLs and Final Mobile URLs. - The length of the URL is limited to 2,048 characters. The HTTP or HTTPS protocol string does count towards the 2,048 character limit. - You may specifiy up to 10 items for both FinalUrls and FinalMobileUrls; however, only the first item in each list is used for delivery. The service allows up to 10 for potential forward compatibility. - Usage of '{' and '}' is only allowed to delineate tags, for example {lpurl}. - Final URLs must each be a well-formed URL starting with either http:// or https://. - If you specify FinalMobileUrls, you must also specify FinalUrls. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroup/trackingUrlTemplate> ;
    sh:name "tracking url template" ;
    sh:description "The tracking template to use as a default for all URLs in your asset group. The following validation rules apply to tracking templates. For more details about supported templates and parameters, see the Microsoft Advertising help article What tracking or URL parameters can I use? - Tracking templates defined for lower level entities e.g. ads override those set for higher level entities e.g. campaign. For more information, see Entity Limits. - The length of the tracking template is limited to 2,048 characters. The HTTP or HTTPS protocol string does count towards the 2,048 character limit. - The tracking template must be a well-formed URL beginning with one of the following: http://, https://, {lpurl}, or {unescapedlpurl}. - Microsoft Advertising does not validate whether custom parameters exist. If you use custom parameters in your tracking template and they do not exist, then the landing page URL will include the key and value placeholders of your custom parameters without substitution. For example, if your tracking template is https://tracker.example.com/?season={_season}&promocode={_promocode}&u={lpurl} and neither {_season} or {_promocode} are defined at the campaign, asset group, criterion, keyword, or ad level, then the landing page URL will be the same. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. If you set this element to an empty string (\"\"), the previous setting will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroup/finalUrlSuffix> ;
    sh:name "final url suffix" ;
    sh:description "The final URL suffix can include tracking parameters that will be appended to the end of your landing page URL. We recommend placing tracking parameters that your landing page requires in a final URL suffix so that your customers are always sent to your landing page. For more details and validation rules see Final URL Suffix in the technical guides. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. If you set this element to an empty string (\"\"), the previous setting will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroup/urlCustomParameters> ;
    sh:name "url custom parameters" ;
    sh:description "Your custom collection of key and value parameters for URL tracking. Microsoft Advertising will accept the first 8 CustomParameter objects that you include within the CustomParameters object, and if you include more than 8 custom parameters an error will be returned. Each CustomParameter includes Key and Value elements. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. Set the UrlCustomParameters element to null or empty to retain any existing custom parameters. To remove all custom parameters, set the Parameters element of the CustomParameters object to null or empty. To remove a subset of custom parameters, specify the custom parameters that you want to keep in the Parameters element of the CustomParameters object." ;
    sh:node microsoftads:CampaignManagementCustomParametersShape ;
    sh:class microsoftads:CampaignManagementCustomParameters ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroup/editorialStatus> ;
    sh:name "editorial status" ;
    sh:description "The editorial review status of the asset group, which indicates whether the asset group is pending review, has been approved, or has been disapproved. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Disapproved" "Inactive" "ActiveLimited" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroup/assetGroupUrlTargets> ;
    sh:name "asset group url targets" ;
    sh:description "Reserved." ;
    sh:node microsoftads:CampaignManagementAssetGroupUrlTargetShape ;
    sh:class microsoftads:CampaignManagementAssetGroupUrlTarget ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroup/id> ;
    sh:name "id" ;
    sh:description "The system generated asset group ID. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroup/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. Forward compatibility changes will be noted here in future releases. There are currently no forward compatibility changes for this object." ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Asset Group Search Theme
microsoftads:CampaignManagementAssetGroupSearchThemeShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAssetGroupSearchTheme ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroupSearchTheme/id> ;
    sh:name "id" ;
    sh:description "The system generated asset group ID. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroupSearchTheme/searchTheme> ;
    sh:name "search theme" ;
    sh:description "The type of search theme." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroupSearchTheme/status> ;
    sh:name "status" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Paused" "Disapproved" "Inactive" "Deleted" ) ;
  ] .

# Shape for Campaign Management Asset Group Url Target
microsoftads:CampaignManagementAssetGroupUrlTargetShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAssetGroupUrlTarget ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroupUrlTarget/id> ;
    sh:name "id" ;
    sh:description "Reserved." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroupUrlTarget/targetCondition1> ;
    sh:name "target condition1" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroupUrlTarget/targetConditionOperator1> ;
    sh:name "target condition operator1" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroupUrlTarget/targetValue1> ;
    sh:name "target value1" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroupUrlTarget/targetCondition2> ;
    sh:name "target condition2" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroupUrlTarget/targetConditionOperator2> ;
    sh:name "target condition operator2" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroupUrlTarget/targetValue2> ;
    sh:name "target value2" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroupUrlTarget/targetCondition3> ;
    sh:name "target condition3" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroupUrlTarget/targetConditionOperator3> ;
    sh:name "target condition operator3" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroupUrlTarget/targetValue3> ;
    sh:name "target value3" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroupUrlTarget/status> ;
    sh:name "status" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Paused" "Disapproved" "Inactive" "Deleted" ) ;
  ] .

# Shape for Campaign Management Add Asset Groups Response
microsoftads:CampaignManagementAddAssetGroupsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddAssetGroupsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddAssetGroupsResponse/assetGroupIds> ;
    sh:name "asset group ids" ;
    sh:description "Array of asset group IDs to update for the specified campaign. A maximum of 100 asset groups can be specified in a single call." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddAssetGroupsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that weren't successful." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Add Audience Groups Request
microsoftads:CampaignManagementAddAudienceGroupsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddAudienceGroupsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddAudienceGroupsRequest/audienceGroups> ;
    sh:name "audience groups" ;
    sh:description "Array of audience groups. The maximum size of the list is 100 items per service request. You can add a maximum of 10,000 audience groups per account." ;
    sh:node microsoftads:CampaignManagementAudienceGroupShape ;
    sh:class microsoftads:CampaignManagementAudienceGroup ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Audience Group
microsoftads:CampaignManagementAudienceGroupShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAudienceGroup ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudienceGroup/name> ;
    sh:name "name" ;
    sh:description "The name of the audience signal, the name must be unique among all audience groups within the account. The name can contain a maximum of 256 characters. Add: Required Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudienceGroup/description> ;
    sh:name "description" ;
    sh:description "The description of the audience. Use a description to help you remember what audience you are using. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudienceGroup/dimensions> ;
    sh:name "dimensions" ;
    sh:description "Positive dimensions that specifying the audience composition. It should have at least one dimension. Add: Required, at least one dimension is needed. Update: Optional. For each dimension type (age, gender, audience): - If not present in the array, it's not changed. - If it's present in the array, take Age dimension type as an example: - If AgeRanges is set to null or empty, it'll remove existing values for this dimension type. - If AgeRanges has data, it simply replaces existing values. Note: You can't remove all dimension types. An error will be returned and no changes will be made." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementAgeDimensionShape ; sh:class microsoftads:CampaignManagementAgeDimension ]
      [ sh:node microsoftads:CampaignManagementAudienceDimensionShape ; sh:class microsoftads:CampaignManagementAudienceDimension ]
      [ sh:node microsoftads:CampaignManagementAudienceGroupDimensionShape ; sh:class microsoftads:CampaignManagementAudienceGroupDimension ]
      [ sh:node microsoftads:CampaignManagementAudienceGroupDimensionBaseShape ; sh:class microsoftads:CampaignManagementAudienceGroupDimensionBase ]
      [ sh:node microsoftads:CampaignManagementGenderDimensionShape ; sh:class microsoftads:CampaignManagementGenderDimension ]
      [ sh:node microsoftads:CampaignManagementProfileDimensionShape ; sh:class microsoftads:CampaignManagementProfileDimension ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudienceGroup/associationCount> ;
    sh:name "association count" ;
    sh:description "The number of asset groups that associate with this audience group. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudienceGroup/id> ;
    sh:name "id" ;
    sh:description "The system-generated ID. Add: Read-only Update: Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Audience Group Dimension
microsoftads:CampaignManagementAudienceGroupDimensionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAudienceGroupDimension ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudienceGroupDimension/type> ;
    sh:name "type" ;
    sh:description "The type of audience dimensions, the following dimension types are supported as of now: Age, Gender, Audience. Add: For more information about audience types, see the Remarks. Update: For more information about audience types, see the Remarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Age" "Gender" "Audience" "Profile" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudienceGroupDimension/ageRanges> ;
    sh:name "age ranges" ;
    sh:datatype xsd:string ;
    sh:in ( "Unknown" "EighteenToTwentyFour" "TwentyFiveToThirtyFour" "ThirtyFiveToFourtyNine" "FiftyToSixtyFour" "SixtyFiveAndAbove" "ThirtyFiveToFiftyFour" "FiftyFiveAndAbove" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudienceGroupDimension/genderTypes> ;
    sh:name "gender types" ;
    sh:datatype xsd:string ;
    sh:in ( "Unknown" "Male" "Female" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudienceGroupDimension/audiences> ;
    sh:name "audiences" ;
    sh:node microsoftads:CampaignManagementAudienceInfoShape ;
    sh:class microsoftads:CampaignManagementAudienceInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudienceGroupDimension/profiles> ;
    sh:name "profiles" ;
    sh:node microsoftads:CampaignManagementProfileInfoShape ;
    sh:class microsoftads:CampaignManagementProfileInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Audience Info
microsoftads:CampaignManagementAudienceInfoShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAudienceInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudienceInfo/id> ;
    sh:name "id" ;
    sh:description "The ID of the audience." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudienceInfo/type> ;
    sh:name "type" ;
    sh:description "The type of the audience. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Profile Info
microsoftads:CampaignManagementProfileInfoShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementProfileInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementProfileInfo/id> ;
    sh:name "id" ;
    sh:description "Reserved." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementProfileInfo/type> ;
    sh:name "type" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Add Audience Groups Response
microsoftads:CampaignManagementAddAudienceGroupsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddAudienceGroupsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddAudienceGroupsResponse/audienceGroupIds> ;
    sh:name "audience group ids" ;
    sh:description "Array of audience group ids to be added. The maximum size of the list is 100 items per service request." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddAudienceGroupsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that weren't successful." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Add Audiences Request
microsoftads:CampaignManagementAddAudiencesRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddAudiencesRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddAudiencesRequest/audiences> ;
    sh:name "audiences" ;
    sh:description "The list of audiences to add. The maximum size of the list is 100. You cannot add CustomAudience, InMarketAudience, or SimilarRemarketingList objects." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementAudienceShape ; sh:class microsoftads:CampaignManagementAudience ]
      [ sh:node microsoftads:CampaignManagementAudienceBaseShape ; sh:class microsoftads:CampaignManagementAudienceBase ]
      [ sh:node microsoftads:CampaignManagementCombinedListShape ; sh:class microsoftads:CampaignManagementCombinedList ]
      [ sh:node microsoftads:CampaignManagementCustomAudienceShape ; sh:class microsoftads:CampaignManagementCustomAudience ]
      [ sh:node microsoftads:CampaignManagementCustomSegmentShape ; sh:class microsoftads:CampaignManagementCustomSegment ]
      [ sh:node microsoftads:CampaignManagementCustomerListShape ; sh:class microsoftads:CampaignManagementCustomerList ]
      [ sh:node microsoftads:CampaignManagementImpressionBasedRemarketingListShape ; sh:class microsoftads:CampaignManagementImpressionBasedRemarketingList ]
      [ sh:node microsoftads:CampaignManagementInMarketAudienceShape ; sh:class microsoftads:CampaignManagementInMarketAudience ]
      [ sh:node microsoftads:CampaignManagementProductAudienceShape ; sh:class microsoftads:CampaignManagementProductAudience ]
      [ sh:node microsoftads:CampaignManagementRemarketingListShape ; sh:class microsoftads:CampaignManagementRemarketingList ]
      [ sh:node microsoftads:CampaignManagementSimilarRemarketingListShape ; sh:class microsoftads:CampaignManagementSimilarRemarketingList ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Audience
microsoftads:CampaignManagementAudienceShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAudience ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudience/scope> ;
    sh:name "scope" ;
    sh:description "Scope defines what accounts can use this audience. If scope is set to Account, the audience can only be associated with campaigns and ad groups in one account i.e., via the ParentId. If scope is set to Customer, the audience can be associated with campaigns and ad groups in all of the customer's accounts." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Account" "Customer" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudience/membershipDuration> ;
    sh:name "membership duration" ;
    sh:description "When you create an audience, you can specify how far back in time Microsoft Advertising should look for actions that match your audience definition. The minimum duration is 1 day and the maximum duration allowed is 180 days." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudience/searchSize> ;
    sh:name "search size" ;
    sh:description "The total number of people who are active members of this audience in the Search network. This gives you an idea of how many search users you can target. Please see more details in documentation for the objects that inherit this element e.g., RemarketingList." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudience/audienceNetworkSize> ;
    sh:name "audience network size" ;
    sh:description "The total number of people who are active members of this audience in the Audience network. This gives you an idea of how many Audience network users you can target. Please see more details in documentation for the objects that inherit this element e.g., RemarketingList." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudience/supportedCampaignTypes> ;
    sh:name "supported campaign types" ;
    sh:description "The list of campaign types that support this audience. Supported values are Audience, DynamicSearchAds, Search, and Shopping. New campaign types might be added in the future, so you should not take any dependency on a fixed set of values." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudience/customerShare> ;
    sh:name "customer share" ;
    sh:description "Determines the list of customers and accounts that share the audience. Details include audience association counts. This element is only supported with a RemarketingList. Audiences of other types cannot be shared in the customer hierarchy." ;
    sh:node microsoftads:CampaignManagementCustomerShareShape ;
    sh:class microsoftads:CampaignManagementCustomerShare ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudience/id> ;
    sh:name "id" ;
    sh:description "The Microsoft Advertising identifier of the audience." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudience/name> ;
    sh:name "name" ;
    sh:description "The name of the audience. The name can contain a maximum of 128 characters." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudience/description> ;
    sh:name "description" ;
    sh:description "The description of the audience. Use a description to help you remember what audience you are targeting. The description can contain a maximum of 1,024 characters." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudience/type> ;
    sh:name "type" ;
    sh:description "The type of the audience. For more information about audience types, see the Remarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudience/parentId> ;
    sh:name "parent id" ;
    sh:description "The Microsoft Advertising identifier of the account or customer. If the Scope is set to Account, this is the account ID, and otherwise it is the customer ID." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudience/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. Forward compatibility changes will be noted here in future releases. There are currently no forward compatibility changes for this object." ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudience/rule> ;
    sh:name "rule" ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementCustomEventsRuleShape ; sh:class microsoftads:CampaignManagementCustomEventsRule ]
      [ sh:node microsoftads:CampaignManagementPageVisitorsRuleShape ; sh:class microsoftads:CampaignManagementPageVisitorsRule ]
      [ sh:node microsoftads:CampaignManagementPageVisitorsWhoDidNotVisitAnotherPageRuleShape ; sh:class microsoftads:CampaignManagementPageVisitorsWhoDidNotVisitAnotherPageRule ]
      [ sh:node microsoftads:CampaignManagementPageVisitorsWhoVisitedAnotherPageRuleShape ; sh:class microsoftads:CampaignManagementPageVisitorsWhoVisitedAnotherPageRule ]
      [ sh:node microsoftads:CampaignManagementRemarketingRuleShape ; sh:class microsoftads:CampaignManagementRemarketingRule ]
      [ sh:node microsoftads:CampaignManagementRemarketingRuleBaseShape ; sh:class microsoftads:CampaignManagementRemarketingRuleBase ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudience/tagId> ;
    sh:name "tag id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudience/productAudienceType> ;
    sh:name "product audience type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudience/sourceId> ;
    sh:name "source id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudience/combinationRules> ;
    sh:name "combination rules" ;
    sh:node microsoftads:CampaignManagementCombinationRuleShape ;
    sh:class microsoftads:CampaignManagementCombinationRule ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudience/customSegmentCatalogList> ;
    sh:name "custom segment catalog list" ;
    sh:node microsoftads:CampaignManagementCustomSegmentCatalogShape ;
    sh:class microsoftads:CampaignManagementCustomSegmentCatalog ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudience/editorialStatus> ;
    sh:name "editorial status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unknown" "Rejected" "Pending" "PartialApproved" "Approved" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudience/entityType> ;
    sh:name "entity type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "None" "Campaign" "AdGroup" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudience/campaignId> ;
    sh:name "campaign id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudience/adGroupId> ;
    sh:name "ad group id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudience/campaignIds> ;
    sh:name "campaign ids" ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudience/adGroupIds> ;
    sh:name "ad group ids" ;
    sh:datatype xsd:long ;
  ] .

# Shape for Campaign Management Customer Share
microsoftads:CampaignManagementCustomerShareShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementCustomerShare ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomerShare/ownerCustomerId> ;
    sh:name "owner customer id" ;
    sh:description "The customer who owns the share. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomerShare/customerAccountShares> ;
    sh:name "customer account shares" ;
    sh:description "Determines the list of customers and accounts that share the audience or UET tag. Details include audience association counts. When the audience or UET tag has not yet been shared, this element will be nil or empty. Once an audience or UET tag is shared, a CustomerAccountShare object is returned for each customer that can use the share, including one list item for the owner. Add: Required Update: Optional. Once you create this CustomerShare object, the existing CustomerAccountShare list will be removed or replaced. To remove all existing customer account shares create this CustomerShare object and set the CustomerAccountShares element to nil. To replace or append to the list of customer account shares, create this CustomerShare object and assign to the CustomerAccountShares element a new list of CustomerAccountShare objects, including any previous customer account shares that you want to retain. To retain all of the existing customer account shares, set the element that uses this CustomerShare object to nil. For example set the CustomerShare element of a RemarketingList to nil if you do not want to update any of the customer account shares." ;
    sh:node microsoftads:CampaignManagementCustomerAccountShareShape ;
    sh:class microsoftads:CampaignManagementCustomerAccountShare ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Customer Account Share
microsoftads:CampaignManagementCustomerAccountShareShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementCustomerAccountShare ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomerAccountShare/customerId> ;
    sh:name "customer id" ;
    sh:description "The identifier of a customer that can use the shared audience or UET tag. If this element is not set, then the audience is only shared with a subset of advertiser accounts under this customer. Please see AccountId for details about sharing audiences with advertiser accounts. Add: Optional. You must set the AccountId or CustomerId, but you cannot set both. Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomerAccountShare/accountId> ;
    sh:name "account id" ;
    sh:description "The identifier of an advertiser account that can use the shared audience. This element is not applicable for UET tags since you cannot restrict UET tags to a subset of advertiser accounts. You can only create and share UET tags at the CustomerId level. If this element is not set, then all accounts under the CustomerId can use the shared audience or UET tag. One CustomerAccountShare object per advertiser account must be present in the CustomerShare for an audience that is shared with a subset of advertiser accounts, whether or not the advertiser accounts are under the same customer. Add: Optional. You must set the AccountId or CustomerId, but you cannot set both. Update: Optional. You must set the AccountId or CustomerId, but you cannot set both. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomerAccountShare/associations> ;
    sh:name "associations" ;
    sh:description "Provides details about whether and how the shared audience or UET tag is being used. Each list item contains the association count for the corresponding usage type. Add: Read-only Update: Read-only" ;
    sh:node microsoftads:CampaignManagementCustomerAccountShareAssociationShape ;
    sh:class microsoftads:CampaignManagementCustomerAccountShareAssociation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Customer Account Share Association
microsoftads:CampaignManagementCustomerAccountShareAssociationShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementCustomerAccountShareAssociation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomerAccountShareAssociation/usageType> ;
    sh:name "usage type" ;
    sh:description "Indicates how the customer account share is used e.g., via audience association. The possible values include RemarketingListAssociateToAdGroup, RemarketingListAssociateToCampaign, and UETTagAssociateToRemarketingList. New values be added in the future, so you should not take any dependency on a fixed set of strings. - RemarketingListAssociateToAdGroup - The remarketing list is associated with or excluded by one or more ad groups. - RemarketingListAssociateToCampaign - The remarketing list is associated with or excluded by one or more campaigns. - UETTagAssociateToConversionGoal - The UET tag is used by one or more conversion goals. - UETTagAssociateToProductAudience - The UET tag is used by one or more product audiences. - UETTagAssociateToRemarketingList - The UET tag is used by one or more remarketing lists. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomerAccountShareAssociation/associationCount> ;
    sh:name "association count" ;
    sh:description "The association count for the corresponding usage type. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Remarketing Rule
microsoftads:CampaignManagementRemarketingRuleShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementRemarketingRule ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRemarketingRule/type> ;
    sh:name "type" ;
    sh:description "The type of the remarketing rule. For more information about remarketing rule types, see the Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRemarketingRule/ruleItemGroups> ;
    sh:name "rule item groups" ;
    sh:node microsoftads:CampaignManagementRuleItemGroupShape ;
    sh:class microsoftads:CampaignManagementRuleItemGroup ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRemarketingRule/normalForm> ;
    sh:name "normal form" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Conjunctive" "Disjunctive" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRemarketingRule/anotherRuleItemGroups> ;
    sh:name "another rule item groups" ;
    sh:node microsoftads:CampaignManagementRuleItemGroupShape ;
    sh:class microsoftads:CampaignManagementRuleItemGroup ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRemarketingRule/includeRuleItemGroups> ;
    sh:name "include rule item groups" ;
    sh:node microsoftads:CampaignManagementRuleItemGroupShape ;
    sh:class microsoftads:CampaignManagementRuleItemGroup ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRemarketingRule/excludeRuleItemGroups> ;
    sh:name "exclude rule item groups" ;
    sh:node microsoftads:CampaignManagementRuleItemGroupShape ;
    sh:class microsoftads:CampaignManagementRuleItemGroup ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRemarketingRule/categoryOperator> ;
    sh:name "category operator" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "None" "Equals" "Contains" "BeginsWith" "EndsWith" "NotEquals" "DoesNotContain" "DoesNotBeginWith" "DoesNotEndWith" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRemarketingRule/category> ;
    sh:name "category" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRemarketingRule/actionOperator> ;
    sh:name "action operator" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "None" "Equals" "Contains" "BeginsWith" "EndsWith" "NotEquals" "DoesNotContain" "DoesNotBeginWith" "DoesNotEndWith" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRemarketingRule/action> ;
    sh:name "action" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRemarketingRule/labelOperator> ;
    sh:name "label operator" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "None" "Equals" "Contains" "BeginsWith" "EndsWith" "NotEquals" "DoesNotContain" "DoesNotBeginWith" "DoesNotEndWith" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRemarketingRule/label> ;
    sh:name "label" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRemarketingRule/valueOperator> ;
    sh:name "value operator" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "None" "Equals" "GreaterThan" "LessThan" "GreaterThanEqualTo" "LessThanEqualTo" "NotEquals" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRemarketingRule/value> ;
    sh:name "value" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Rule Item Group
microsoftads:CampaignManagementRuleItemGroupShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementRuleItemGroup ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRuleItemGroup/items> ;
    sh:name "items" ;
    sh:description "The list of rule items. The maximum number of rule items in a rule item group is 100. The rule items must all be of the same concrete type derived from the RuleItem base class. Currently only a list of StringRuleItem objects are supported. The list of StringRuleItem objects apply to same visited page, and the rule conditions are joined using the logical AND operator. In other words to add a visitor to the remarketing list, one page must meet all of the conditions in this rule item list. To create a list of rules for another page, you must add a separate RuleItemGroup. Add: Required Update: Optional. If you want to keep any of the previous rule items, then you must explicitly set them again during update." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementNumberRuleItemShape ; sh:class microsoftads:CampaignManagementNumberRuleItem ]
      [ sh:node microsoftads:CampaignManagementRuleItemShape ; sh:class microsoftads:CampaignManagementRuleItem ]
      [ sh:node microsoftads:CampaignManagementRuleItemBaseShape ; sh:class microsoftads:CampaignManagementRuleItemBase ]
      [ sh:node microsoftads:CampaignManagementStringRuleItemShape ; sh:class microsoftads:CampaignManagementStringRuleItem ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Rule Item
microsoftads:CampaignManagementRuleItemShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementRuleItem ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRuleItem/type> ;
    sh:name "type" ;
    sh:description "The type of rule item. For more information, see Remarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRuleItem/operand> ;
    sh:name "operand" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRuleItem/operator> ;
    sh:name "operator" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "None" "Equals" "GreaterThan" "LessThan" "GreaterThanEqualTo" "LessThanEqualTo" "NotEquals" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRuleItem/value> ;
    sh:name "value" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Combination Rule
microsoftads:CampaignManagementCombinationRuleShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementCombinationRule ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCombinationRule/audienceIds> ;
    sh:name "audience ids" ;
    sh:description "The list of audience identifiers to combine in a logical set. You can combine custom audiences, customer lists, product audiences, similar audiences, and remarketing lists. You cannot include other combined lists or in-market audiences in a combined list. For details, please see the remarks section below. Each combination rule set can contain up to 100 audience IDs." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCombinationRule/operator> ;
    sh:name "operator" ;
    sh:description "Determines whether to include or exclude any or all of the AudienceIds." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "And" "Or" "Not" ) ;
  ] .

# Shape for Campaign Management Custom Segment Catalog
microsoftads:CampaignManagementCustomSegmentCatalogShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementCustomSegmentCatalog ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomSegmentCatalog/catalogId> ;
    sh:name "catalog id" ;
    sh:description "The catalog ID." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomSegmentCatalog/catalogName> ;
    sh:name "catalog name" ;
    sh:description "The catalog name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomSegmentCatalog/effectiveEditorialStatus> ;
    sh:name "effective editorial status" ;
    sh:description "The effective editorial status." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unknown" "Approved" "Rejected" "Pending" ) ;
  ] .

# Shape for Campaign Management Add Audiences Response
microsoftads:CampaignManagementAddAudiencesResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddAudiencesResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddAudiencesResponse/audienceIds> ;
    sh:name "audience ids" ;
    sh:description "A list of unique system identifiers corresponding to the audiences that were added. The list of identifiers corresponds directly to the list of audiences in the request. Items of the list may be returned as null. For each list index where an audience was not added, the corresponding element will be null." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddAudiencesResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Add Bid Strategies Request
microsoftads:CampaignManagementAddBidStrategiesRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddBidStrategiesRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddBidStrategiesRequest/bidStrategies> ;
    sh:name "bid strategies" ;
    sh:description "An array of BidStrategy objects to add to the account's portfolio bid strategy library. You can include a maximum of 100 bid strategies in a single call. Each account can have up to 11,000 portfolio bid strategies. The account is determined by the required CustomerAccountId header element." ;
    sh:node microsoftads:CampaignManagementBidStrategyShape ;
    sh:class microsoftads:CampaignManagementBidStrategy ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Bid Strategy
microsoftads:CampaignManagementBidStrategyShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementBidStrategy ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBidStrategy/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier of the bid strategy. Add: Read-only Update: Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBidStrategy/name> ;
    sh:name "name" ;
    sh:description "The name of the bid strategy. The name must be unique among all bid strategies within the account. The name can contain a maximum of 255 characters. The service performs a case-insensitive comparison when it compares the name to existing bid strategy names. Add: Required Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBidStrategy/associatedCampaignType> ;
    sh:name "associated campaign type" ;
    sh:description "The type of ad campaign that can be included the portfolio bid strategy. The supported campaign types are \"Search\" and \"Shopping\" (except smart shopping campaigns). Once you choose a campaign type, the portfolio can only include campaigns of that type. Add: Optional. The default campaign type is Search. Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBidStrategy/biddingScheme> ;
    sh:name "bidding scheme" ;
    sh:description "The portfolio bid strategy type and settings. If the AssociatedCampaignType is \"Search\", the supported bid strategies are MaxClicksBiddingScheme, MaxConversionsBiddingScheme TargetCpaBiddingScheme, TargetImpressionShareBiddingScheme, and TargetRoasBiddingScheme. If the AssociatedCampaignType is \"Shopping\", the supported bid strategies are MaxClicksBiddingScheme and TargetRoasBiddingScheme. Once you choose a bid strategy type it cannot be updated. Add: Required Update: Optional. You can update properties of a bidding scheme, but you cannot change the type." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBiddingSchemeShape ; sh:class microsoftads:CampaignManagementBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementBiddingSchemeBaseShape ; sh:class microsoftads:CampaignManagementBiddingSchemeBase ]
      [ sh:node microsoftads:CampaignManagementCommissionBiddingSchemeShape ; sh:class microsoftads:CampaignManagementCommissionBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementCostPerSaleBiddingSchemeShape ; sh:class microsoftads:CampaignManagementCostPerSaleBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementEnhancedCpcBiddingSchemeShape ; sh:class microsoftads:CampaignManagementEnhancedCpcBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementInheritFromParentBiddingSchemeShape ; sh:class microsoftads:CampaignManagementInheritFromParentBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementManualCpaBiddingSchemeShape ; sh:class microsoftads:CampaignManagementManualCpaBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementManualCpcBiddingSchemeShape ; sh:class microsoftads:CampaignManagementManualCpcBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementManualCpmBiddingSchemeShape ; sh:class microsoftads:CampaignManagementManualCpmBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementManualCpvBiddingSchemeShape ; sh:class microsoftads:CampaignManagementManualCpvBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementMaxClicksBiddingSchemeShape ; sh:class microsoftads:CampaignManagementMaxClicksBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementMaxConversionValueBiddingSchemeShape ; sh:class microsoftads:CampaignManagementMaxConversionValueBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementMaxConversionsBiddingSchemeShape ; sh:class microsoftads:CampaignManagementMaxConversionsBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementMaxRoasBiddingSchemeShape ; sh:class microsoftads:CampaignManagementMaxRoasBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementPercentCpcBiddingSchemeShape ; sh:class microsoftads:CampaignManagementPercentCpcBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementTargetCpaBiddingSchemeShape ; sh:class microsoftads:CampaignManagementTargetCpaBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementTargetImpressionShareBiddingSchemeShape ; sh:class microsoftads:CampaignManagementTargetImpressionShareBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementTargetRoasBiddingSchemeShape ; sh:class microsoftads:CampaignManagementTargetRoasBiddingScheme ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBidStrategy/associationCount> ;
    sh:name "association count" ;
    sh:description "The number of Campaign objects that currently share this bid strategy. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBidStrategy/scope> ;
    sh:name "scope" ;
    sh:description "A nullable field that indicates whether the bid strategy is created at the customer level or the account level. If no value is provided, the default scope is Account." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Account" "Customer" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBidStrategy/currencyCode> ;
    sh:name "currency code" ;
    sh:description "The currency for the cross-account poortfolio. It must match the account currency provided. If null, it defaults to the account's currency. This field can't be updated." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBidStrategy/reportingTimeZone> ;
    sh:name "reporting time zone" ;
    sh:description "Specifies the reporting timezone for the campaign. If no value is provided, it defaults to the account's timezone. This field can be updated." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Add Bid Strategies Response
microsoftads:CampaignManagementAddBidStrategiesResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddBidStrategiesResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddBidStrategiesResponse/bidStrategyIds> ;
    sh:name "bid strategy ids" ;
    sh:description "A list of unique system identifiers corresponding to the bid strategies that were added. The list of identifiers corresponds directly to the list of bid strategies in the request. Items of the list may be returned as null. For each list index where a bid strategy was not added, the corresponding element will be null." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddBidStrategiesResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Add Brand Kits Request
microsoftads:CampaignManagementAddBrandKitsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddBrandKitsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddBrandKitsRequest/accountId> ;
    sh:name "account id" ;
    sh:description "The Microsoft Advertising identifier of the account." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddBrandKitsRequest/brandKits> ;
    sh:name "brand kits" ;
    sh:description "A list of BrandKits to be created for the specified account." ;
    sh:node microsoftads:CampaignManagementBrandKitShape ;
    sh:class microsoftads:CampaignManagementBrandKit ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Brand Kit
microsoftads:CampaignManagementBrandKitShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementBrandKit ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBrandKit/id> ;
    sh:name "id" ;
    sh:description "The identifier of the brand kit." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBrandKit/name> ;
    sh:name "name" ;
    sh:description "The brand kit's name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBrandKit/businessName> ;
    sh:name "business name" ;
    sh:description "The name of the business." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBrandKit/images> ;
    sh:name "images" ;
    sh:description "The brand kit's images." ;
    sh:node microsoftads:CampaignManagementBrandKitImageShape ;
    sh:class microsoftads:CampaignManagementBrandKitImage ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBrandKit/squareLogos> ;
    sh:name "square logos" ;
    sh:description "The brand kit's square logos." ;
    sh:node microsoftads:CampaignManagementBrandKitImageShape ;
    sh:class microsoftads:CampaignManagementBrandKitImage ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBrandKit/landscapeLogos> ;
    sh:name "landscape logos" ;
    sh:description "The brand kit's landscape logos." ;
    sh:node microsoftads:CampaignManagementBrandKitImageShape ;
    sh:class microsoftads:CampaignManagementBrandKitImage ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBrandKit/palettes> ;
    sh:name "palettes" ;
    sh:description "The brand kit's palettes." ;
    sh:node microsoftads:CampaignManagementBrandKitPaletteShape ;
    sh:class microsoftads:CampaignManagementBrandKitPalette ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBrandKit/fonts> ;
    sh:name "fonts" ;
    sh:description "The brand kit's fonts." ;
    sh:node microsoftads:CampaignManagementBrandKitFontShape ;
    sh:class microsoftads:CampaignManagementBrandKitFont ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBrandKit/brandVoice> ;
    sh:name "brand voice" ;
    sh:description "The brand's personality and tone." ;
    sh:node microsoftads:CampaignManagementBrandVoiceShape ;
    sh:class microsoftads:CampaignManagementBrandVoice ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBrandKit/termExclusions> ;
    sh:name "term exclusions" ;
    sh:description "The term exclusions to use with your brand kit." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBrandKit/messagingRestrictions> ;
    sh:name "messaging restrictions" ;
    sh:description "The messaging restrictions to use with your brand kit." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Campaign Management Brand Kit Image
microsoftads:CampaignManagementBrandKitImageShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementBrandKitImage ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBrandKitImage/cropX> ;
    sh:name "crop x" ;
    sh:description "Where to crop along the x-axis in pixels." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBrandKitImage/cropY> ;
    sh:name "crop y" ;
    sh:description "Where to crop along the y-axis in pixels." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBrandKitImage/cropWidth> ;
    sh:name "crop width" ;
    sh:description "The crop wdith in pixels." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBrandKitImage/cropHeight> ;
    sh:name "crop height" ;
    sh:description "The crop height in pixels." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBrandKitImage/id> ;
    sh:name "id" ;
    sh:description "The identifier of the brand kit image." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBrandKitImage/url> ;
    sh:name "url" ;
    sh:description "The URL for the image." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBrandKitImage/thumbnailUrl> ;
    sh:name "thumbnail url" ;
    sh:description "The URL for the image thumbnail." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Brand Kit Palette
microsoftads:CampaignManagementBrandKitPaletteShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementBrandKitPalette ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBrandKitPalette/colors> ;
    sh:name "colors" ;
    sh:description "The brand kit's color palettes." ;
    sh:node microsoftads:CampaignManagementBrandKitColorShape ;
    sh:class microsoftads:CampaignManagementBrandKitColor ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBrandKitPalette/colorType> ;
    sh:name "color type" ;
    sh:description "The color type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBrandKitPalette/name> ;
    sh:name "name" ;
    sh:description "The name of the brand kit palette." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Brand Kit Color
microsoftads:CampaignManagementBrandKitColorShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementBrandKitColor ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBrandKitColor/name> ;
    sh:name "name" ;
    sh:description "The name of the brand kit color." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBrandKitColor/hexCode> ;
    sh:name "hex code" ;
    sh:description "The hex code for the brand kit color." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Brand Kit Font
microsoftads:CampaignManagementBrandKitFontShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementBrandKitFont ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBrandKitFont/typeface> ;
    sh:name "typeface" ;
    sh:description "The font typeface." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBrandKitFont/weight> ;
    sh:name "weight" ;
    sh:description "The font weight." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBrandKitFont/textAssetType> ;
    sh:name "text asset type" ;
    sh:description "The font text assset type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Brand Voice
microsoftads:CampaignManagementBrandVoiceShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementBrandVoice ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBrandVoice/personality> ;
    sh:name "personality" ;
    sh:description "The brand personality." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBrandVoice/tones> ;
    sh:name "tones" ;
    sh:description "The brand tone." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Campaign Management Add Brand Kits Response
microsoftads:CampaignManagementAddBrandKitsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddBrandKitsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddBrandKitsResponse/brandKitIds> ;
    sh:name "brand kit ids" ;
    sh:description "A list of the created BrandKits." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddBrandKitsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array BatchError that contains details for any request items that were not successful. The list of errors does not correspond directly to the list of items in the request. The list can be empty if there were no errors, or it can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Add Budgets Request
microsoftads:CampaignManagementAddBudgetsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddBudgetsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddBudgetsRequest/budgets> ;
    sh:name "budgets" ;
    sh:description "An array of Budget objects to add to the account's shared budget library. You can add a maximum of 100 budgets in a single call. Each account can have up to 11,000 shared budgets. The account is determined by the required CustomerAccountId header element." ;
    sh:node microsoftads:CampaignManagementBudgetShape ;
    sh:class microsoftads:CampaignManagementBudget ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Budget
microsoftads:CampaignManagementBudgetShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementBudget ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBudget/name> ;
    sh:name "name" ;
    sh:description "The name of the budget. The name must be unique among all budgets within the account. The name can contain a maximum of 255 characters. The service performs a case-insensitive comparison when it compares the name to existing budget names. Add: Required Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBudget/amount> ;
    sh:name "amount" ;
    sh:description "The amount to spend daily across all campaigns that share the budget. Add: Required Update: Optional" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBudget/budgetType> ;
    sh:name "budget type" ;
    sh:description "The budget type determines the pace at which the budget is spent throughout the day. The only valid budget type that you can set is DailyBudgetStandard. Add: Required Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "DailyBudgetAccelerated" "DailyBudgetStandard" "LifetimeBudgetStandard" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBudget/associationCount> ;
    sh:name "association count" ;
    sh:description "The number of Campaign objects that currently share this budget. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBudget/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier of the budget. Add: Read-only Update: Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Add Budgets Response
microsoftads:CampaignManagementAddBudgetsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddBudgetsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddBudgetsResponse/budgetIds> ;
    sh:name "budget ids" ;
    sh:description "A list of unique system identifiers corresponding to the budgets that were added. The list of identifiers corresponds directly to the list of budgets in the request. Items of the list may be returned as null. For each list index where a budget was not added, the corresponding element will be null." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddBudgetsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Add Campaign Conversion Goals Request
microsoftads:CampaignManagementAddCampaignConversionGoalsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddCampaignConversionGoalsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddCampaignConversionGoalsRequest/campaignConversionGoal> ;
    sh:name "campaign conversion goal" ;
    sh:description "An array of the base object of a campaign conversion goal." ;
    sh:node microsoftads:CampaignManagementCampaignConversionGoalShape ;
    sh:class microsoftads:CampaignManagementCampaignConversionGoal ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Campaign Conversion Goal
microsoftads:CampaignManagementCampaignConversionGoalShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementCampaignConversionGoal ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaignConversionGoal/campaignId> ;
    sh:name "campaign id" ;
    sh:description "The Microsoft Advertising assigned identifier of a campaign." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaignConversionGoal/goalId> ;
    sh:name "goal id" ;
    sh:description "The Microsoft Advertising assigned identifier of a conversion goal." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Add Campaign Conversion Goals Response
microsoftads:CampaignManagementAddCampaignConversionGoalsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddCampaignConversionGoalsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddCampaignConversionGoalsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array BatchError that contains details for any request items that were not successful. The list of errors does not correspond directly to the list of items in the request. The list can be empty if there were no errors, or it can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Add Campaign Criterions Request
microsoftads:CampaignManagementAddCampaignCriterionsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddCampaignCriterionsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddCampaignCriterionsRequest/criterionType> ;
    sh:name "criterion type" ;
    sh:description "The type of criterion to add, for example Webpage. You can specify only one criterion type value per call. To add, delete, or update target criterions i.e., age, day and time, device, gender, location, location intent, and radius criterions, you must specify the CriterionType value as Targets. You can add, delete, and update multiple target criterion types in the same operation. To retrieve these target criterions via GetCampaignCriterionsByIds you must request the specific type individually i.e., Age, DayTime, Device, Gender, Location, LocationIntent, and Radius. To add, delete, or update audience criterions i.e., custom audiences, in-market audiences, and remarketing lists, you must specify the CriterionType value as Audience. You can add, delete, and update multiple target criterion types in the same operation. To retrieve these audience criterions via GetCampaignCriterionsByIds you must request the specific type individually i.e., CustomAudience, InMarketAudience, ProductAudience, and RemarketingList." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddCampaignCriterionsRequest/campaignCriterions> ;
    sh:name "campaign criterions" ;
    sh:description "A list of criterions that help determine whether ads in each campaign get served. You can include up to 100 campaign criterions per request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBiddableCampaignCriterionShape ; sh:class microsoftads:CampaignManagementBiddableCampaignCriterion ]
      [ sh:node microsoftads:CampaignManagementCampaignCriterionShape ; sh:class microsoftads:CampaignManagementCampaignCriterion ]
      [ sh:node microsoftads:CampaignManagementCampaignCriterionBaseShape ; sh:class microsoftads:CampaignManagementCampaignCriterionBase ]
      [ sh:node microsoftads:CampaignManagementNegativeCampaignCriterionShape ; sh:class microsoftads:CampaignManagementNegativeCampaignCriterion ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Campaign Criterion
microsoftads:CampaignManagementCampaignCriterionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementCampaignCriterion ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaignCriterion/campaignId> ;
    sh:name "campaign id" ;
    sh:description "The identifier of the campaign to apply the criterion to." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaignCriterion/criterion> ;
    sh:name "criterion" ;
    sh:description "The criterion to apply to the campaign. The criterion helps determine whether ads in the campaign are served. For a list of available criterion types, see CampaignCriterionType." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementAgeCriterionShape ; sh:class microsoftads:CampaignManagementAgeCriterion ]
      [ sh:node microsoftads:CampaignManagementAudienceCriterionShape ; sh:class microsoftads:CampaignManagementAudienceCriterion ]
      [ sh:node microsoftads:CampaignManagementChannelPlacementCriterionShape ; sh:class microsoftads:CampaignManagementChannelPlacementCriterion ]
      [ sh:node microsoftads:CampaignManagementCriterionShape ; sh:class microsoftads:CampaignManagementCriterion ]
      [ sh:node microsoftads:CampaignManagementCriterionBaseShape ; sh:class microsoftads:CampaignManagementCriterionBase ]
      [ sh:node microsoftads:CampaignManagementCustomLinkedInCriterionShape ; sh:class microsoftads:CampaignManagementCustomLinkedInCriterion ]
      [ sh:node microsoftads:CampaignManagementDayTimeCriterionShape ; sh:class microsoftads:CampaignManagementDayTimeCriterion ]
      [ sh:node microsoftads:CampaignManagementDealCriterionShape ; sh:class microsoftads:CampaignManagementDealCriterion ]
      [ sh:node microsoftads:CampaignManagementDeviceCriterionShape ; sh:class microsoftads:CampaignManagementDeviceCriterion ]
      [ sh:node microsoftads:CampaignManagementGenderCriterionShape ; sh:class microsoftads:CampaignManagementGenderCriterion ]
      [ sh:node microsoftads:CampaignManagementGenreCriterionShape ; sh:class microsoftads:CampaignManagementGenreCriterion ]
      [ sh:node microsoftads:CampaignManagementHotelAdvanceBookingWindowCriterionShape ; sh:class microsoftads:CampaignManagementHotelAdvanceBookingWindowCriterion ]
      [ sh:node microsoftads:CampaignManagementHotelCheckInDateCriterionShape ; sh:class microsoftads:CampaignManagementHotelCheckInDateCriterion ]
      [ sh:node microsoftads:CampaignManagementHotelCheckInDayCriterionShape ; sh:class microsoftads:CampaignManagementHotelCheckInDayCriterion ]
      [ sh:node microsoftads:CampaignManagementHotelDateSelectionTypeCriterionShape ; sh:class microsoftads:CampaignManagementHotelDateSelectionTypeCriterion ]
      [ sh:node microsoftads:CampaignManagementHotelGroupShape ; sh:class microsoftads:CampaignManagementHotelGroup ]
      [ sh:node microsoftads:CampaignManagementHotelLengthOfStayCriterionShape ; sh:class microsoftads:CampaignManagementHotelLengthOfStayCriterion ]
      [ sh:node microsoftads:CampaignManagementLocationCriterionShape ; sh:class microsoftads:CampaignManagementLocationCriterion ]
      [ sh:node microsoftads:CampaignManagementLocationIntentCriterionShape ; sh:class microsoftads:CampaignManagementLocationIntentCriterion ]
      [ sh:node microsoftads:CampaignManagementPlacementCriterionShape ; sh:class microsoftads:CampaignManagementPlacementCriterion ]
      [ sh:node microsoftads:CampaignManagementProductPartitionShape ; sh:class microsoftads:CampaignManagementProductPartition ]
      [ sh:node microsoftads:CampaignManagementProductScopeShape ; sh:class microsoftads:CampaignManagementProductScope ]
      [ sh:node microsoftads:CampaignManagementProfileCriterionShape ; sh:class microsoftads:CampaignManagementProfileCriterion ]
      [ sh:node microsoftads:CampaignManagementRadiusCriterionShape ; sh:class microsoftads:CampaignManagementRadiusCriterion ]
      [ sh:node microsoftads:CampaignManagementStoreCriterionShape ; sh:class microsoftads:CampaignManagementStoreCriterion ]
      [ sh:node microsoftads:CampaignManagementTopicCriterionShape ; sh:class microsoftads:CampaignManagementTopicCriterion ]
      [ sh:node microsoftads:CampaignManagementWebpageShape ; sh:class microsoftads:CampaignManagementWebpage ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaignCriterion/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. Forward compatibility changes will be noted here in future releases. There are currently no forward compatibility changes for this object." ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaignCriterion/status> ;
    sh:name "status" ;
    sh:description "A status value that determines whether to apply the criterion to the campaign." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Paused" "Deleted" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaignCriterion/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier for the campaign criterion." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaignCriterion/type> ;
    sh:name "type" ;
    sh:description "The type of campaign criterion. For more information, see Remarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaignCriterion/criterionBid> ;
    sh:name "criterion bid" ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBidMultiplierShape ; sh:class microsoftads:CampaignManagementBidMultiplier ]
      [ sh:node microsoftads:CampaignManagementCriterionBidShape ; sh:class microsoftads:CampaignManagementCriterionBid ]
      [ sh:node microsoftads:CampaignManagementCriterionBidBaseShape ; sh:class microsoftads:CampaignManagementCriterionBidBase ]
      [ sh:node microsoftads:CampaignManagementFixedBidShape ; sh:class microsoftads:CampaignManagementFixedBid ]
      [ sh:node microsoftads:CampaignManagementRateBidShape ; sh:class microsoftads:CampaignManagementRateBid ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaignCriterion/criterionCashback> ;
    sh:name "criterion cashback" ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementCashbackAdjustmentShape ; sh:class microsoftads:CampaignManagementCashbackAdjustment ]
      [ sh:node microsoftads:CampaignManagementCriterionCashbackShape ; sh:class microsoftads:CampaignManagementCriterionCashback ]
      [ sh:node microsoftads:CampaignManagementCriterionCashbackBaseShape ; sh:class microsoftads:CampaignManagementCriterionCashbackBase ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Add Campaign Criterions Response
microsoftads:CampaignManagementAddCampaignCriterionsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddCampaignCriterionsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddCampaignCriterionsResponse/campaignCriterionIds> ;
    sh:name "campaign criterion ids" ;
    sh:description "A list of unique system identifiers corresponding to the criterion that were added. The list of identifiers corresponds directly to the list of criterion in the request. Items of the list may be returned as null. For each list index where a criterion was not added, the corresponding element will be null." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddCampaignCriterionsResponse/nestedPartialErrors> ;
    sh:name "nested partial errors" ;
    sh:description "An array of BatchErrorCollection objects that contain details for any criterion that were not successfully added. The top level error within each BatchErrorCollection object corresponds to potential criterion errors. The nested list of BatchError objects would include any errors specific to the list of items a criterion can have. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorCollectionShape ; sh:class microsoftads:CampaignManagementBatchErrorCollection ]
      [ sh:node microsoftads:CampaignManagementBatchErrorCollectionBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorCollectionBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorCollectionShape ; sh:class microsoftads:CampaignManagementEditorialErrorCollection ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Add Campaigns Request
microsoftads:CampaignManagementAddCampaignsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddCampaignsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddCampaignsRequest/accountId> ;
    sh:name "account id" ;
    sh:description "The identifier of the account to add the campaigns to." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddCampaignsRequest/campaigns> ;
    sh:name "campaigns" ;
    sh:description "The list of campaigns to add to the specified account. You can add 100 campaigns per service request." ;
    sh:node microsoftads:CampaignManagementCampaignShape ;
    sh:class microsoftads:CampaignManagementCampaign ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Campaign
microsoftads:CampaignManagementCampaignShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementCampaign ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaign/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier of the campaign. Add: Read-only Update: Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaign/name> ;
    sh:name "name" ;
    sh:description "The name of the campaign. The name must be unique among all active or paused campaigns within the account. The name can contain a maximum of 128 characters. The service performs a case-insensitive comparison when it compares the name to existing campaign names. Add: Required Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaign/status> ;
    sh:name "status" ;
    sh:description "The status of the campaign. Possible values are Active and Paused. The service will automatically pause the campaign if the budget is depleted. With experiment campaigns you cannot set the Budget, BudgetType, or Status The budget, and status of an experiment campaign are always inherited from the base campaign settings. Add: Optional. The default value is Paused. Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Paused" "BudgetPaused" "BudgetAndManualPaused" "Deleted" "Suspended" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaign/dailyBudget> ;
    sh:name "daily budget" ;
    sh:description "The amount to spend daily on the campaign. You must set the daily budget amount if BudgetId is not set. Your budget is a target; your actual spend might be higher or lower. Variations are caused by a number of factors, such as different traffic volumes in different days of the week, or automatic detection and refunding of fraud clicks that can give money back to a campaign within a few hours of the click. Microsoft Advertising anticipates and automatically compensates for the fluctuations, and usually keeps overspend to less than 100% above your daily limit. Also note that Microsoft Advertising does not require your campaign budget to be higher than the ad group and keyword bids. In other words ad group and keyword bids are validated independently of the campaign budget. In the context of shared budgets, the budget amount is a read-only property that is always returned regardless of whether or not the campaign uses a shared budget. When a campaign is associated to a shared budget the amount returned is that of the shared budget. To determine whether the campaign uses a shared budget, check the value of the BudgetId element as described above. With experiment campaigns you cannot set the Budget, BudgetType, or Status. The budget, and status of an experiment campaign are always inherited from the base campaign settings. Note: This field is currently used to set the lifetime budget amount when the budget type is set to LifetimeBudgetStandard. Add: Required if the BudgetId is not set. Read-only if the campaign uses a shared budget. Update: Optional if the BudgetId is not set. If no value is set for the update, this setting is not changed. Not allowed if the campaign uses a shared budget. If you try to update the budget amount of a campaign that has a shared budget, the service will return the CampaignServiceCannotUpdateSharedBudget error code." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaign/budgetType> ;
    sh:name "budget type" ;
    sh:description "The budget type determines how the budget is spent. The possible values are DailyBudgetAccelerated, DailyBudgetStandard, and LifetimeBudgetStandard. Both DailyBudgetAccelerated and LifetimeBudgetStandard budget types are only available for Audience campaigns that use unshared campaign-level budgets. In the context of shared budgets, the budget type is a read-only property that is always returned regardless of whether or not the campaign uses a shared budget. To determine whether the campaign uses a shared budget, check the value of the BudgetId element as described above. With experiment campaigns you cannot set the Budget, BudgetType, or Status. The budget, and status of an experiment campaign are always inherited from the base campaign settings. Add: Required if the BudgetId is not set. Read-only if the campaign uses a shared budget. Update: Optional if the BudgetId is not set. If no value is set for the update, this setting is not changed. Not allowed if the campaign uses a shared budget. If you try to update the budget type of a campaign that has a shared budget, the service will return the CampaignServiceCannotUpdateSharedBudget error code." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "DailyBudgetAccelerated" "DailyBudgetStandard" "LifetimeBudgetStandard" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaign/timeZone> ;
    sh:name "time zone" ;
    sh:description "This column is deprecated. The time zone where the campaign operates. The time zone is used for reporting and applying the start and end date of an ad group. For possible values, see Time Zones. With experiment campaigns you cannot set the Budget, BudgetType, Status, or TimeZone. The budget, status, and time zone of an experiment campaign are always inherited from the base campaign settings. Add: Required Update: Optional. If no value is set for the update, this setting is not changed. You may not update the time zone if the campaign contains or has ever contained ad groups in the Active or Paused state." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaign/settings> ;
    sh:name "settings" ;
    sh:description "The supported settings that vary by campaign type. Note: VerifiedTrackingSetting is not currently available. You can include a maximum of one object per setting type in the list of settings e.g., one TargetSetting. If the CampaignType is set to Search and if the ExperimentId element is not set, this list can optionally include a DynamicSearchAdsSetting object. Experiment campaigns and base campaigns of experiments cannot include dynamic search ads settings. If you intend to use this campaign for experiments, do not include dynamic search ads settings. If an existing experiment is already based on this campaign, you cannot update the campaign to include dynamic search ads settings. If the CampaignType is set to Shopping, this list must include a ShoppingSetting object. If the CampaignType is set to Audience, this list may or may not include a ShoppingSetting object, depending on whether or not the Audience campaign supports product ads. If the CampaignType is set to DynamicSearchAds, this list must include a DynamicSearchAdsSetting object. If the CampaignType is set to Hotel, this list must include a HotelSetting object. If the CampaignType is set to PerformanceMax, this list must include a PerformanceMaxSetting object. If the Performance Max campaign associates to a store, it also supports a ShoppingSetting. The TargetSetting can be used with any campaign type except Performace Max, and determines whether the Audience criterions associated with this campaign use the \"target and bid\" option or the \"bid only\" target option. Within the TargetSetting you can have one TargetSettingDetail objects i.e., one per supported CriterionTypeGroup. The only criterion type value currently supported for the campaign level target setting is \"Audience\". The TargetSetting object is not returned by default. To get this object, include the TargetSetting value in the ReturnAdditionalFields element when you call the GetCampaignsByAccountId and GetCampaignsByIds service operations. Add: Required if the CampaignType is set to DynamicSearchAds or Shopping, and otherwise this element is optional. If this element does not include a TargetSetting object, the default bid option for all criterion type groups is effectively \"bid only\". Update: Optional. If no value is set for the update, this setting is not changed. The DynamicSearchAdsSetting and ShoppingSetting objects cannot be removed during update." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementAISearchSettingShape ; sh:class microsoftads:CampaignManagementAISearchSetting ]
      [ sh:node microsoftads:CampaignManagementAppSettingShape ; sh:class microsoftads:CampaignManagementAppSetting ]
      [ sh:node microsoftads:CampaignManagementBaseDomainSettingShape ; sh:class microsoftads:CampaignManagementBaseDomainSetting ]
      [ sh:node microsoftads:CampaignManagementCallToActionSettingShape ; sh:class microsoftads:CampaignManagementCallToActionSetting ]
      [ sh:node microsoftads:CampaignManagementCampaignFrequencyCapSettingShape ; sh:class microsoftads:CampaignManagementCampaignFrequencyCapSetting ]
      [ sh:node microsoftads:CampaignManagementCoOpSettingShape ; sh:class microsoftads:CampaignManagementCoOpSetting ]
      [ sh:node microsoftads:CampaignManagementDisclaimerSettingShape ; sh:class microsoftads:CampaignManagementDisclaimerSetting ]
      [ sh:node microsoftads:CampaignManagementDynamicFeedSettingShape ; sh:class microsoftads:CampaignManagementDynamicFeedSetting ]
      [ sh:node microsoftads:CampaignManagementDynamicSearchAdsSettingShape ; sh:class microsoftads:CampaignManagementDynamicSearchAdsSetting ]
      [ sh:node microsoftads:CampaignManagementHotelSettingShape ; sh:class microsoftads:CampaignManagementHotelSetting ]
      [ sh:node microsoftads:CampaignManagementImpressionTrackingSettingShape ; sh:class microsoftads:CampaignManagementImpressionTrackingSetting ]
      [ sh:node microsoftads:CampaignManagementNetworkDistributionSettingShape ; sh:class microsoftads:CampaignManagementNetworkDistributionSetting ]
      [ sh:node microsoftads:CampaignManagementNewCustomerAcquisitionGoalSettingShape ; sh:class microsoftads:CampaignManagementNewCustomerAcquisitionGoalSetting ]
      [ sh:node microsoftads:CampaignManagementPerformanceMaxSettingShape ; sh:class microsoftads:CampaignManagementPerformanceMaxSetting ]
      [ sh:node microsoftads:CampaignManagementReachOptimizationGoalSettingShape ; sh:class microsoftads:CampaignManagementReachOptimizationGoalSetting ]
      [ sh:node microsoftads:CampaignManagementResponsiveSearchAdsSettingShape ; sh:class microsoftads:CampaignManagementResponsiveSearchAdsSetting ]
      [ sh:node microsoftads:CampaignManagementSettingShape ; sh:class microsoftads:CampaignManagementSetting ]
      [ sh:node microsoftads:CampaignManagementSettingBaseShape ; sh:class microsoftads:CampaignManagementSettingBase ]
      [ sh:node microsoftads:CampaignManagementShoppingSettingShape ; sh:class microsoftads:CampaignManagementShoppingSetting ]
      [ sh:node microsoftads:CampaignManagementTargetSettingShape ; sh:class microsoftads:CampaignManagementTargetSetting ]
      [ sh:node microsoftads:CampaignManagementThirdPartyMeasurementSettingShape ; sh:class microsoftads:CampaignManagementThirdPartyMeasurementSetting ]
      [ sh:node microsoftads:CampaignManagementUnifiedAutomationSettingShape ; sh:class microsoftads:CampaignManagementUnifiedAutomationSetting ]
      [ sh:node microsoftads:CampaignManagementVanityPharmaSettingShape ; sh:class microsoftads:CampaignManagementVanityPharmaSetting ]
      [ sh:node microsoftads:CampaignManagementVerifiedTrackingSettingShape ; sh:class microsoftads:CampaignManagementVerifiedTrackingSetting ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaign/campaignType> ;
    sh:name "campaign type" ;
    sh:description "The campaign type determines whether the campaign is an Audience, Dynamic Search Ads, Search, Shopping campaign, Hotel Ads, or Performance Max. Add: Optional. If not specified, then default value of Search is used. Update: Not allowed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaign/subType> ;
    sh:name "sub type" ;
    sh:description "The campaign sub type. If the sub type is not set, the campaign is created according to the campaign type. If the sub type is set to AudienceVideoAds and the campaign type is Audience, the campaign is a video audience campaign. If the sub type is set to ShoppingSmartAds, the campaign is a Microsoft Smart Shopping campaign. If the sub type is set to ShoppingSponsoredProductAd, the campaign is a Microsoft shopping campaigns for brands. Add: Optional and not applicable for most campaign types. For Microsoft smart shopping campaigns you must set the sub type to ShoppingSmartAds. For Microsoft shopping campaigns for brands you must set the sub type to ShoppingSponsoredProductAd. Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaign/audienceAdsBidAdjustment> ;
    sh:name "audience ads bid adjustment" ;
    sh:description "The percent amount by which to adjust your bid for audience ads above or below the base ad group or keyword bid. This property is available in Search campaigns if the customer is enabled for the Microsoft Audience Network. This property is not available with smart shopping campaigns. Supported values are negative one hundred (-100) through positive nine hundred (900). Setting the bid adjustment to -100 will prevent audience ads from showing for this campaign. Set this element to zero (0) if you want to use the base ad group or keyword bid instead of specifying any bid adjustment for audience ads. As a best practice you should always specify a bid adjustment value. If you set this element to null the system default bid adjustment will be used. The system default bid adjustment is currently zero (0), and is subject to change. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaign/trackingUrlTemplate> ;
    sh:name "tracking url template" ;
    sh:description "The tracking template to use as a default for all URLs in your campaign. The following validation rules apply to tracking templates. For more details about supported templates and parameters, see the Microsoft Advertising help article What tracking or URL parameters can I use? - Tracking templates defined for lower level entities e.g. ads override those set for higher level entities e.g. campaign. For more information, see Entity Limits. - The length of the tracking template is limited to 2,048 characters. The HTTP or HTTPS protocol string does count towards the 2,048 character limit. - The tracking template must be a well-formed URL beginning with one of the following: http://, https://, {lpurl}, or {unescapedlpurl}. - Microsoft Advertising does not validate whether custom parameters exist. If you use custom parameters in your tracking template and they do not exist, then the landing page URL will include the key and value placeholders of your custom parameters without substitution. For example, if your tracking template is https://tracker.example.com/?season={_season}&promocode={_promocode}&u={lpurl} and neither {_season} or {_promocode} are defined at the campaign, ad group, criterion, keyword, or ad level, then the landing page URL will be the same. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. If you set this element to an empty string (\"\"), the previous setting will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaign/finalUrlSuffix> ;
    sh:name "final url suffix" ;
    sh:description "The final URL suffix can include tracking parameters that will be appended to the end of your landing page URL. We recommend placing tracking parameters that your landing page requires in a final URL suffix so that your customers are always sent to your landing page. For more details and validation rules see Final URL Suffix in the technical guides. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. If you set this element to an empty string (\"\"), the previous setting will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaign/urlCustomParameters> ;
    sh:name "url custom parameters" ;
    sh:description "Your custom collection of key and value parameters for URL tracking. Microsoft Advertising will accept the first 8 CustomParameter objects that you include within the CustomParameters object, and if you include more than 8 custom parameters an error will be returned. Each CustomParameter includes Key and Value elements. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. Set the UrlCustomParameters element to null or empty to retain any existing custom parameters. To remove all custom parameters, set the Parameters element of the CustomParameters object to null or empty. To remove a subset of custom parameters, specify the custom parameters that you want to keep in the Parameters element of the CustomParameters object." ;
    sh:node microsoftads:CampaignManagementCustomParametersShape ;
    sh:class microsoftads:CampaignManagementCustomParameters ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaign/biddingScheme> ;
    sh:name "bidding scheme" ;
    sh:description "The bid strategy type for how you want to manage your bids. For details about supported bid strategies per campaign type, see Budget and Bid Strategies. IMPORTANT: For some bid strategy types your bid and ad rotation settings are ignored and conversion tracking (via Universal Event Tracking tag and a conversion goal) is required. For more information including supported locations, see Let Microsoft Advertising manage your bids with bid strategies. This element will be nil or empty by default if the campaign uses the MaxConversionValueBiddingScheme or TargetImpressionShareBiddingScheme bid strategy. To get the MaxConversionValueBiddingScheme or TargetImpressionShareBiddingScheme objects, include the respective MaxConversionValueBiddingScheme and TargetImpressionShareBiddingScheme values in the ReturnAdditionalFields element when you call the GetCampaignsByAccountId and GetCampaignsByIds service operations. Note: Starting August 4, 2025, the BiddingScheme will no longer support TargetCpaBiddingScheme and TargetRoasBiddingScheme. Any bid strategy set to Target CPA will be silently converted to Maximize Conversions using the Target CPA value. Any bid strategy set to Target ROAS will be silently converted to Maximize Conversion Value using the Target ROAS value. Existing campaigns that use the Target CPA and Target ROAS bid strategies will remain unaffected. Add: Optional. The default bid strategy type for Search and DynamicSearchAds campaigns is EnhancedCpcBiddingScheme. The default bid strategy type for most Shopping campaigns is EnhancedCpcBiddingScheme; however, the only supported bid strategy types for smart shopping campaigns are MaxConversionsBiddingScheme and MaxConversionValueBiddingScheme. The supported bid strategy types for Audience campaigns are EnhancedCpcBiddingScheme, ManualCpcBiddingScheme, ManualCpmBiddingScheme, and TargetCpaBiddingScheme. The supported bid strategy types for lodging campaigns are CommissionBiddingScheme, ManualCpcBiddingScheme, and PercentCpcBiddingScheme. The supported bid strategies for Performance Max campaigns are MaxConversionsBiddingScheme (with optional TCPA) and MaxConversionValueBiddingScheme (with optional TROAS). The supported bid strategies for new Video campaigns are ManualCpmBiddingScheme and ManualCpvBiddingScheme. NOTE: As of May 2024, you can no longer use the manual CPC bid strategy for audience native campaigns. You can only use manual CPC for audience display and video campaigns, and for lodging campaigns. We will automatically convert any existing manual CPC audience native campaigns to enhanced CPC. If you attempt to set manual CPC for any other campaign type, the request will be ignored without error and the bid strategy will be set to enhanced CPC. As of April 2021, you cannot set any bid strategies for ad groups or keywords. Bid strategies can only be set at the campaign level. If you attempt to set bid strategies for ad groups or keywords, the request will be ignored without error. Ad groups and keywords will inherit their campaign's bid strategy. Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBiddingSchemeShape ; sh:class microsoftads:CampaignManagementBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementBiddingSchemeBaseShape ; sh:class microsoftads:CampaignManagementBiddingSchemeBase ]
      [ sh:node microsoftads:CampaignManagementCommissionBiddingSchemeShape ; sh:class microsoftads:CampaignManagementCommissionBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementCostPerSaleBiddingSchemeShape ; sh:class microsoftads:CampaignManagementCostPerSaleBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementEnhancedCpcBiddingSchemeShape ; sh:class microsoftads:CampaignManagementEnhancedCpcBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementInheritFromParentBiddingSchemeShape ; sh:class microsoftads:CampaignManagementInheritFromParentBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementManualCpaBiddingSchemeShape ; sh:class microsoftads:CampaignManagementManualCpaBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementManualCpcBiddingSchemeShape ; sh:class microsoftads:CampaignManagementManualCpcBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementManualCpmBiddingSchemeShape ; sh:class microsoftads:CampaignManagementManualCpmBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementManualCpvBiddingSchemeShape ; sh:class microsoftads:CampaignManagementManualCpvBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementMaxClicksBiddingSchemeShape ; sh:class microsoftads:CampaignManagementMaxClicksBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementMaxConversionValueBiddingSchemeShape ; sh:class microsoftads:CampaignManagementMaxConversionValueBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementMaxConversionsBiddingSchemeShape ; sh:class microsoftads:CampaignManagementMaxConversionsBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementMaxRoasBiddingSchemeShape ; sh:class microsoftads:CampaignManagementMaxRoasBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementPercentCpcBiddingSchemeShape ; sh:class microsoftads:CampaignManagementPercentCpcBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementTargetCpaBiddingSchemeShape ; sh:class microsoftads:CampaignManagementTargetCpaBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementTargetImpressionShareBiddingSchemeShape ; sh:class microsoftads:CampaignManagementTargetImpressionShareBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementTargetRoasBiddingSchemeShape ; sh:class microsoftads:CampaignManagementTargetRoasBiddingScheme ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaign/budgetId> ;
    sh:name "budget id" ;
    sh:description "The unique Microsoft Advertising identifier of the Budget that this campaign shares with other campaigns in the account. If the value is not null and greater than zero, then the campaign is using a shared budget. If the value is null, then the campaign is not using a shared budget. If the campaign is using a shared budget, and you prefer that it use its own budget e.g. DailyBudget amount, set this element to '0' (zero) and set DailyBudget to a valid budget amount. Note: Shared budgets are not supported with smart shopping campaigns or Performance Max campaigns. With smart shopping campaigns, you must set the DailyBudget amount. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaign/languages> ;
    sh:name "languages" ;
    sh:description "Your ad language setting determines the language you will use when you write your ads and should be the language of your customers. IMPORTANT: If languages are set at both the ad group and campaign level, the ad group level language will override the campaign level language. You can specify multiple languages individually in the list, or only include one list item set to All if you want to target all languages. The supported language strings for Search and Shopping campaigns are: Albanian, Bulgarian, Croatian, Czech, Danish, Dutch, English, Estonian, Finnish, French, German, Greek, Hungarian, Italian, Japanese, Latvian, Lithuanian, Maltese, Norwegian, Polish, Portuguese, Romanian, Slovak, Slovenian, Spanish, Swedish, and TraditionalChinese. NOTE: The following languages are not yet available for everyone: Bulgarian, Croatian, Czech, Estonian, Greek, Hungarian, Japanese, Latvian, Lithuanian, Maltese, Polish, Romanian, Slovak, Slovenian. For Audience campaigns you must include all languages i.e., set this element to All. For Dynamic Search Ads campaigns, the campaign and ad group level language settings are ignored in favor of the website domain language. You should set campaign languages to \"All\" and leave the ad group level language empty. Add: Required for Audience campaigns, and otherwise this element is optional. If there is no campaign language set, then the language of each ad group within the campaign will be required. Update: Optional. If no value is set for the update, this setting is not changed. Once campaign languages are set, you cannot delete all of them. The list of languages that you specify during update replaces the previous settings i.e. does not append to the existing set of languages." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaign/experimentId> ;
    sh:name "experiment id" ;
    sh:description "The system-generated identifier of the Experiment. This element is only set for experiment campaigns i.e., campaigns that have been created for A/B testing based on another Search campaign. Base campaigns will not contain an experiment ID. Likewise, after an experiment has been Graduated to an independent campaign, this element will be empty, even though the campaign was previously an experiment campaign. With experiment campaigns you cannot set the Budget, BudgetType, or Status. The budget, and status of an experiment campaign are always inherited from the base campaign settings. If you want to change an experiment's budget, you will need to change the base campaign's budget. The change in value will then be split based on your experiment TrafficSplitPercent setting. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaign/adScheduleUseSearcherTimeZone> ;
    sh:name "ad schedule use searcher time zone" ;
    sh:description "Determines whether to use the account time zone or the time zone of the search user where the ads could be delivered. Set this property to true if you want the ads to be shown in the search user's time zone, and otherwise set it to false. This element is not returned by default. To get this element, include the AdScheduleUseSearcherTimeZone value in the ReturnAdditionalFields element when you call the GetCampaignsByAccountId and GetCampaignsByIds service operations. Add: Optional. If you do not specify this element or leave it empty, the default value of false will be set and the account time zone will be used. Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaign/bidStrategyId> ;
    sh:name "bid strategy id" ;
    sh:description "The system-generated identifier of the BidStrategy that this campaign shares with other campaigns in the account. If the field is empty, then the campaign is not using a portfolio bid strategy. If the field is not empty and the value is greater than zero, then the campaign is using a portfolio bid strategy. If the campaign is using a portfolio bid strategy, and you prefer that it use its own bid strategy, set this field to '0' (zero). Note: Portfolio bid strategies are not supported with smart shopping campaigns or Performance Max campaigns. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaign/bidStrategyScope> ;
    sh:name "bid strategy scope" ;
    sh:description "A nullable field that indicates whether the BidStrategyId associated with the campaign is defined at the customer level or the account level. If no value is provided, the default scope is set to Account." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Account" "Customer" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaign/multimediaAdsBidAdjustment> ;
    sh:name "multimedia ads bid adjustment" ;
    sh:description "The percent amount by which to adjust your bid for multimedia ads above or below the base ad group or keyword bid" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaign/goalIds> ;
    sh:name "goal ids" ;
    sh:description "A list of goal IDs." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaign/dealIds> ;
    sh:name "deal ids" ;
    sh:description "A list of unique system identifiers corresponding to the deals that were added. The list of identifiers corresponds directly to the list of deals in the request. Items of the list may be returned as null. For each list index where a deal was not added, the corresponding element will be null." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaign/isDealCampaign> ;
    sh:name "is deal campaign" ;
    sh:description "The campaign is a deal campaign if true." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaign/startDate> ;
    sh:name "start date" ;
    sh:description "The date when you want your campaign to begin serving. For campaigns with budget type LifetimeBudgetStandard, StartDate is mandatory. The start date can be updated as long as the campaign has not started serving. Note: Currently, this will only be honored for Audience campaigns." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaign/endDate> ;
    sh:name "end date" ;
    sh:description "The date when you want your campaign to stop serving. If the budget type is LifetimeBudgetStandard, EndDate is required and can't be more than one year after the start date. EndDate can be set or left unset for campaigns with a daily budget. To remove the existing end date and effectively configure the campaign with no end date, set EndDate to January 1, 2050, or a later date. When retrieving the campaign, this element will be null. This indicates that no predefined end date exists, and EndDate won't explicitly be set to January 1, 2050. Note: Currently, this will only be honored for Audience campaigns." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaign/useCampaignLevelDates> ;
    sh:name "use campaign level dates" ;
    sh:description "Determines whether the dates should be managed at the campaign level or the ad group level. If set to true, campaign dates will be considered during serving. For the Lifetime Budget type, this field is required and must be set to true. For Daily Budget types, it can be set to either true or false, depending on whether you prefer to use campaign dates or ad group dates." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaign/isPolitical> ;
    sh:name "is political" ;
    sh:description "Indicates whether a campaign is political. Microsoft doesn't currently support political campaigns. If IsPolitical is set to true, attempts to add or update the campaign will fail with the error: PoliticalCampaignsAreNotSupported. Additionally, if this field is empty or null in a GET call or bulk download, its value is treated as false. Add: Optional. If you do not specify this field or leave it empty, the default value of false is set. Update: Optional. If you do not specify this field or leave it empty, the default value of false is set. Delete: Read-only" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaign/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. Forward compatibility changes will be noted here in future releases. There are currently no forward compatibility changes for this object." ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Add Campaigns Response
microsoftads:CampaignManagementAddCampaignsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddCampaignsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddCampaignsResponse/campaignIds> ;
    sh:name "campaign ids" ;
    sh:description "A list of unique system identifiers corresponding to the campaigns that were added. The list of identifiers corresponds directly to the list of campaigns in the request. Items of the list may be returned as null. For each list index where a campaign was not added, the corresponding element will be null." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddCampaignsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Add Conversion Goals Request
microsoftads:CampaignManagementAddConversionGoalsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddConversionGoalsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddConversionGoalsRequest/conversionGoals> ;
    sh:name "conversion goals" ;
    sh:description "The list of conversion goals to add to the account's shared conversion goal library. You can add a maximum of 100 conversion goals per service request. The account is determined by the required CustomerAccountId header element." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementAppDownloadGoalShape ; sh:class microsoftads:CampaignManagementAppDownloadGoal ]
      [ sh:node microsoftads:CampaignManagementAppInstallGoalShape ; sh:class microsoftads:CampaignManagementAppInstallGoal ]
      [ sh:node microsoftads:CampaignManagementConversionGoalShape ; sh:class microsoftads:CampaignManagementConversionGoal ]
      [ sh:node microsoftads:CampaignManagementConversionGoalBaseShape ; sh:class microsoftads:CampaignManagementConversionGoalBase ]
      [ sh:node microsoftads:CampaignManagementDurationGoalShape ; sh:class microsoftads:CampaignManagementDurationGoal ]
      [ sh:node microsoftads:CampaignManagementEventGoalShape ; sh:class microsoftads:CampaignManagementEventGoal ]
      [ sh:node microsoftads:CampaignManagementInStoreTransactionGoalShape ; sh:class microsoftads:CampaignManagementInStoreTransactionGoal ]
      [ sh:node microsoftads:CampaignManagementOfflineConversionGoalShape ; sh:class microsoftads:CampaignManagementOfflineConversionGoal ]
      [ sh:node microsoftads:CampaignManagementPagesViewedPerVisitGoalShape ; sh:class microsoftads:CampaignManagementPagesViewedPerVisitGoal ]
      [ sh:node microsoftads:CampaignManagementUrlGoalShape ; sh:class microsoftads:CampaignManagementUrlGoal ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Conversion Goal
microsoftads:CampaignManagementConversionGoalShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementConversionGoal ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionGoal/name> ;
    sh:name "name" ;
    sh:description "The conversion goal name. The maximum length of the name is 100, and the name must be unique among all conversion goals belonging to the same customer." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionGoal/status> ;
    sh:name "status" ;
    sh:description "Defines the possible user-determined status values of a conversion goal. These are the status values that a user can decide to set, for example a goal can be set to Paused if you no longer wish to track conversions for that goal. For status values that can be set by the system, for example whether or not the UET tag is verified, see the TrackingStatus element." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Paused" "Deleted" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionGoal/scope> ;
    sh:name "scope" ;
    sh:description "Determines if the goal applies to all accounts or only the account specified in the required CustomerAccountId header element. If you have multiple Microsoft Advertising accounts, you can track conversions across all of those accounts. If you associate a goal with one account, conversions will be tracked for that account only. Possible values are Account and Customer. Once you set scope, you can't change it. If you want to change the scope, you need to create a new conversion goal and pause the old one. Only the Customer scope is supported for the AppInstallGoal." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Account" "Customer" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionGoal/countType> ;
    sh:name "count type" ;
    sh:description "This determines how your conversions are recorded within your chosen conversion window. There are two choices, and if you do not set a value the default is All: - All: All conversions that happen after an ad click will be counted. This is a common choice for sales. - Unique: Only one conversion that happens after an ad click will be counted. This is a common choice for leads. For example: You track two conversions: leads and sales. You pick Unique for leads and All for sales. When one ad click turns into two leads and two sales, it's counted as three conversions: one for the unique lead, and two for all the sales. This element is not applicable for the AppInstallGoal." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "All" "Unique" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionGoal/revenue> ;
    sh:name "revenue" ;
    sh:description "Determines how much each conversion is worth to your business. When adding a conversion goal if you do not specify any revenue tracking preferences, then each ConversionGoalRevenue will be set to their respective default values. When updating a conversion goal, if the Revenue element is nil or empty then none of the nested properties will be updated. However, if this element is not nil or empty then you are effectively replacing any existing revenue properties. The VariableValue option is not available for the AppInstallGoal, DurationGoal, or PagesViewedPerVisitGoal." ;
    sh:node microsoftads:CampaignManagementConversionGoalRevenueShape ;
    sh:class microsoftads:CampaignManagementConversionGoalRevenue ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionGoal/conversionWindowInMinutes> ;
    sh:name "conversion window in minutes" ;
    sh:description "The conversion window is the length of time in minutes after a click that you want to track conversions. If you set this value to 43200 minutes (30 days), then conversions that happen within 30 days after a click are tracked. Past conversions aren't affected. The minimum value supported is 1 minute, although keep in mind that a shorter conversion window will reduce the number of conversions your account records. The maximum value supported is 129600 minutes (90 days)." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionGoal/tagId> ;
    sh:name "tag id" ;
    sh:description "The unique Microsoft Advertising identifier of the UET tag that you added to your website to allow Microsoft Advertising to collect actions people take on your website. Before you take a dependency on the tag ID, please note that the UET tag can be shared with or from another customer. Shared UET tags and audiences are only available for pilot customers. For an overview of sharing audiences and UET tags in a customer hierarchy, see the Share Audiences and UET Tags technical guide. This element is not applicable for the AppInstallGoal, InStoreTransactionGoal, and OfflineConversionGoal." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionGoal/trackingStatus> ;
    sh:name "tracking status" ;
    sh:description "Defines the possible system-determined status values of a conversion goal. These are the status values that can be set by the system, for example the system sets the status to TagUnverified if the UET tag has not yet been verified. For status values that a user can decide to set, for example setting the status to Paused if you no longer wish to track conversions for that goal, see the Status element. Only the NoRecentConversions and RecordingConversions statuses are applicable for the AppInstallGoal and OfflineConversionGoal." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "TagUnverified" "NoRecentConversions" "RecordingConversions" "TagInactive" "InactiveDueToTagUnavailable" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionGoal/excludeFromBidding> ;
    sh:name "exclude from bidding" ;
    sh:description "Determines whether or not to exclude data otherwise related to this conversion goal from a subset of performance report columns. This element is only available for customers who are enabled for the Include in Conversions feature (GetCustomerPilotFeatures returns 574). If this element is set to true, data otherwise related to this conversion goal will be excluded from the Conversions, ConversionRate, CostPerConversion, ReturnOnAdSpend, RevenuePerConversion, and Revenue report columns. Also, if you use an automated bidding bid strategy, setting this property true will result in the goal's conversions no longer factoring into automated bidding calculations. Setting this property \"true\" is effectively the same as unchecking \"Include in Conversions\" in the Microsoft Advertising web application. Regardless of this element value, the AllConversions, AllConversionRate, AllCostPerConversion, AllReturnOnAdSpend, AllRevenuePerConversion, and AllRevenue report columns will include data for all conversion goals. By default this element is false, and data related to this conversion goal are included in all report columns. For more information, see Report Attributes and Performance Statistics and the help article Conversion goals: \"Conversions\" versus \"All conversions\"." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionGoal/viewThroughConversionWindowInMinutes> ;
    sh:name "view through conversion window in minutes" ;
    sh:description "The view-through conversion window is the length of time in minutes after a click that you want to track view-through conversions. If you set this value to 43200 minutes (30 days), then view-through conversions that happen within 30 days after a click are tracked. Past conversions aren't affected. The minimum value supported is 1 minute, although keep in mind that a shorter conversion window will reduce the number of conversions your account records. The maximum value supported is 43200 minutes (30 days). The IncludeViewThroughConversions account property must also be set to true for view-through conversions to be tracked. This element is not returned by default. To get this element, include the ViewThroughConversionWindowInMinutes value in the ReturnAdditionalFields element when you call the GetConversionGoalsByIds and GetConversionGoalsByTagIds service operations. This element is not applicable for the AppInstallGoal, InStoreTransactionGoal, and OfflineConversionGoal." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionGoal/goalCategory> ;
    sh:name "goal category" ;
    sh:description "The category used to segment the conversion goal. Categorize your conversion goals however makes sense for your business. Goal categories don't affect performance - they are here to help you segment your goals and their performance metrics. The supported category values vary by conversion goal type, so please refer to the corresponding reference page for detailed requirements." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unknown" "None" "Purchase" "AddToCart" "BeginCheckout" "Subscribe" "SubmitLeadForm" "BookAppointment" "Signup" "RequestQuote" "GetDirections" "OutboundClick" "Contact" "PageView" "Download" "Other" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionGoal/attributionModelType> ;
    sh:name "attribution model type" ;
    sh:description "Determines which attribution model, _DataDriven_, _LastTouch_ or _LastClick_, is used with a conversion goal. This element is not returned by default. To get this element, include the AttributionModelType value in the ReturnAdditionalFields element when you call the GetConversionGoalsByIds and GetConversionGoalsByTagIds service operations. This element is not applicable for the AppInstallGoal, InStoreTransactionGoal, and OfflineConversionGoal." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "LastClick" "LastTouch" "DataDriven" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionGoal/isEnhancedConversionsEnabled> ;
    sh:name "is enhanced conversions enabled" ;
    sh:description "Determines whether enhanced conversions are enabled for a conversion goal." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionGoal/isAutoGoal> ;
    sh:name "is auto goal" ;
    sh:description "Determines whether a conversion goal is a simplified conversion goal. Only the EventGoal type is supported." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionGoal/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier for the conversion goal." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionGoal/type> ;
    sh:name "type" ;
    sh:description "The type of the conversion goal. For more information about conversion goal types, see the Remarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionGoal/urlOperator> ;
    sh:name "url operator" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Equals" "BeginsWith" "RegularExpression" "Contains" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionGoal/urlExpression> ;
    sh:name "url expression" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionGoal/minimumDurationInSeconds> ;
    sh:name "minimum duration in seconds" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionGoal/minimumPagesViewed> ;
    sh:name "minimum pages viewed" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionGoal/categoryExpression> ;
    sh:name "category expression" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionGoal/categoryOperator> ;
    sh:name "category operator" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Equals" "BeginsWith" "RegularExpression" "Contains" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionGoal/actionExpression> ;
    sh:name "action expression" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionGoal/actionOperator> ;
    sh:name "action operator" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Equals" "BeginsWith" "RegularExpression" "Contains" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionGoal/labelExpression> ;
    sh:name "label expression" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionGoal/labelOperator> ;
    sh:name "label operator" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Equals" "BeginsWith" "RegularExpression" "Contains" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionGoal/valueOperator> ;
    sh:name "value operator" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Equals" "LessThan" "GreaterThan" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionGoal/value> ;
    sh:name "value" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionGoal/appPlatform> ;
    sh:name "app platform" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionGoal/appStoreId> ;
    sh:name "app store id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionGoal/isExternallyAttributed> ;
    sh:name "is externally attributed" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Conversion Goal Revenue
microsoftads:CampaignManagementConversionGoalRevenueShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementConversionGoalRevenue ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionGoalRevenue/type> ;
    sh:name "type" ;
    sh:description "Determines how revenue is tracked. The possible types are FixedValue, NoValue (the default type), and VariableValue. If the type is FixedValue then you must specify the Value element. If the type is NoValue then you must not specify the Value element. If the type is VariableValue then you can optionally specify a default value with the Value element. Add: Optional. If not specified, the default type is NoValue. Update: Optional. If not specified, the default type is NoValue." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "FixedValue" "VariableValue" "NoValue" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionGoalRevenue/value> ;
    sh:name "value" ;
    sh:description "The revenue value or amount. If you assign values to your conversions, you'll be able to see the total value driven by your advertising across different conversions, rather than simply the number of conversions that have happened. The default value is effectively 0, and possible values range from 0 to 999,9999. Accepted values depend on the revenue type, so please see the Type element for details. For the OfflineConversionGoal, the ConversionValue element of the applied OfflineConversion data takes precedence over this currency value. Add: Optional. If not specified, the default type is effectively 0. Update: Optional. If not specified, the default type is effectively 0." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionGoalRevenue/currencyCode> ;
    sh:name "currency code" ;
    sh:description "The currency type that you want the conversion goal revenue to be reported. For a list of possible string values see Microsoft Advertising Currencies. For the EventGoal, InStoreTransactionGoal, OfflineConversionGoal, and UrlGoal objects, if their Scope element is set to Customer and if the Type is FixedValue or VariableValue, this property is required. For the OfflineConversionGoal, the ConversionCurrencyCode element of the applied OfflineConversion data takes precedence over this currency code. For the other supported conversion goals if you modify your UET tag tracking code to pass back both a revenue value and a currency, then the UET tag currency value takes precedence over this currency code. For more information on modifying your UET tag tracking code for variable revenue reporting, see How to report variable revenue with UET. If the Scope element of any ConversionGoal is set to Account and you do not specify the CurrencyCode, then by default the account level billing currency will be used to report conversion goal revenue. This element is not available for the AppInstallGoal, DurationGoal, or PagesViewedPerVisitGoal. You cannot set this property for those goal types. Add: Optional unless otherwise noted above. Update: Optional unless otherwise noted above." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Add Conversion Goals Response
microsoftads:CampaignManagementAddConversionGoalsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddConversionGoalsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddConversionGoalsResponse/conversionGoalIds> ;
    sh:name "conversion goal ids" ;
    sh:description "A list of unique system identifiers corresponding to the conversion goals that were added. The list of identifiers corresponds directly to the list of conversion goals in the request. Items of the list may be returned as null. For each list index where a conversion goal was not added, the corresponding element will be null." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddConversionGoalsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Add Conversion Value Rules Request
microsoftads:CampaignManagementAddConversionValueRulesRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddConversionValueRulesRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddConversionValueRulesRequest/conversionValueRules> ;
    sh:name "conversion value rules" ;
    sh:description "The conversion value rules to be created." ;
    sh:node microsoftads:CampaignManagementConversionValueRuleShape ;
    sh:class microsoftads:CampaignManagementConversionValueRule ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddConversionValueRulesRequest/lcid> ;
    sh:name "lcid" ;
    sh:description "The locale identifier (LCID) for the request. The default value is 1033 for EnglishUS. For more LCID values, see LCID Value Set." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Conversion Value Rule
microsoftads:CampaignManagementConversionValueRuleShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementConversionValueRule ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionValueRule/name> ;
    sh:name "name" ;
    sh:description "The name of the conversion value rule." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionValueRule/locationCondition> ;
    sh:name "location condition" ;
    sh:description "The location condition associated with the conversion value rule. Each conversion value rule can have up to 2 conditions." ;
    sh:node microsoftads:CampaignManagementLocationConditionShape ;
    sh:class microsoftads:CampaignManagementLocationCondition ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionValueRule/audienceCondition> ;
    sh:name "audience condition" ;
    sh:description "The audience condition associated with the conversion value rule. Each conversion value rule can have up to 2 conditions." ;
    sh:node microsoftads:CampaignManagementAudienceConditionShape ;
    sh:class microsoftads:CampaignManagementAudienceCondition ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionValueRule/deviceCondition> ;
    sh:name "device condition" ;
    sh:description "The device condition associated with the conversion value rule. Each conversion value rule can have up to 2 conditions." ;
    sh:node microsoftads:CampaignManagementDeviceConditionShape ;
    sh:class microsoftads:CampaignManagementDeviceCondition ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionValueRule/value> ;
    sh:name "value" ;
    sh:description "The value of the conversion value rule. It should be greater than 0. Add: Required Update: Optional" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionValueRule/operation> ;
    sh:name "operation" ;
    sh:description "The operation type of the conversion value rule." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Add" "Multiply" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionValueRule/currencyCode> ;
    sh:name "currency code" ;
    sh:description "The currency code for the conversion value rule." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionValueRule/status> ;
    sh:name "status" ;
    sh:description "The status of the conversion value rule." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Paused" "Deleted" "Invalid" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionValueRule/id> ;
    sh:name "id" ;
    sh:description "The unique identifier of the conversion value rule. Add: Optional Update: Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Location Condition
microsoftads:CampaignManagementLocationConditionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementLocationCondition ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLocationCondition/includedLocations> ;
    sh:name "included locations" ;
    sh:description "The locations included in the condition." ;
    sh:node microsoftads:CampaignManagementLocationConditionItemShape ;
    sh:class microsoftads:CampaignManagementLocationConditionItem ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLocationCondition/excludedLocations> ;
    sh:name "excluded locations" ;
    sh:description "The locations excluded from the condition." ;
    sh:node microsoftads:CampaignManagementLocationConditionItemShape ;
    sh:class microsoftads:CampaignManagementLocationConditionItem ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLocationCondition/includedLocationIntent> ;
    sh:name "included location intent" ;
    sh:description "The intent option for included locations." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "PeopleInOrSearchingForOrViewingPages" "PeopleIn" "PeopleSearchingForOrViewingPages" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLocationCondition/excludedLocationIntent> ;
    sh:name "excluded location intent" ;
    sh:description "The intent option for excluded locations." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "PeopleInOrSearchingForOrViewingPages" "PeopleIn" "PeopleSearchingForOrViewingPages" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLocationCondition/isPrimary> ;
    sh:name "is primary" ;
    sh:description "Indicates if this is the primary condition. Only 1 primary condition is allowed in a conversion value rule." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Location Condition Item
microsoftads:CampaignManagementLocationConditionItemShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementLocationConditionItem ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLocationConditionItem/id> ;
    sh:name "id" ;
    sh:description "The unique identifier of the location condition item. Required." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLocationConditionItem/name> ;
    sh:name "name" ;
    sh:description "The name of the location condition item." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLocationConditionItem/type> ;
    sh:name "type" ;
    sh:description "The type of the location condition item. Required." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Country" "SubGeography" "MetroArea" "City" "PostalCode" "County" "Neighborhood" ) ;
  ] .

# Shape for Campaign Management Audience Condition
microsoftads:CampaignManagementAudienceConditionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAudienceCondition ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudienceCondition/audiences> ;
    sh:name "audiences" ;
    sh:description "The audiences included in the condition." ;
    sh:node microsoftads:CampaignManagementAudienceConditionItemShape ;
    sh:class microsoftads:CampaignManagementAudienceConditionItem ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudienceCondition/isPrimary> ;
    sh:name "is primary" ;
    sh:description "Indicates if this is the primary condition. Only 1 primary condition is allowed in a conversion value rule." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Audience Condition Item
microsoftads:CampaignManagementAudienceConditionItemShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAudienceConditionItem ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudienceConditionItem/id> ;
    sh:name "id" ;
    sh:description "The unique identifier of the audience condition item. Required." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudienceConditionItem/name> ;
    sh:name "name" ;
    sh:description "The name of the audience condition item." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudienceConditionItem/type> ;
    sh:name "type" ;
    sh:description "The type of the audience condition item. Required." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Device Condition
microsoftads:CampaignManagementDeviceConditionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeviceCondition ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeviceCondition/deviceTypes> ;
    sh:name "device types" ;
    sh:description "The device types included in the condition." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeviceCondition/isPrimary> ;
    sh:name "is primary" ;
    sh:description "Indicates if this is the primary condition. Only 1 primary condition is allowed in a conversion value rule." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Add Conversion Value Rules Response
microsoftads:CampaignManagementAddConversionValueRulesResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddConversionValueRulesResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddConversionValueRulesResponse/conversionValueRuleIds> ;
    sh:name "conversion value rule ids" ;
    sh:description "The IDs of the conversion value rules that were successfully created." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddConversionValueRulesResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Add Data Exclusions Request
microsoftads:CampaignManagementAddDataExclusionsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddDataExclusionsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddDataExclusionsRequest/accountId> ;
    sh:name "account id" ;
    sh:description "The account ID." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddDataExclusionsRequest/dataExclusions> ;
    sh:name "data exclusions" ;
    sh:description "The data exclusions to add." ;
    sh:node microsoftads:CampaignManagementDataExclusionShape ;
    sh:class microsoftads:CampaignManagementDataExclusion ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Data Exclusion
microsoftads:CampaignManagementDataExclusionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDataExclusion ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDataExclusion/id> ;
    sh:name "id" ;
    sh:description "The data exclusion ID." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDataExclusion/name> ;
    sh:name "name" ;
    sh:description "The data exclusion name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDataExclusion/description> ;
    sh:name "description" ;
    sh:description "A description for the data exclusion." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDataExclusion/startDate> ;
    sh:name "start date" ;
    sh:description "The start date. Important: The value must be in your account time zone. This differs from the time zone options when you upload offline conversions in the Microsoft Advertising web application. For information about the format of the date and time, see the dateTime entry in Primitive XML Data Types." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDataExclusion/endDate> ;
    sh:name "end date" ;
    sh:description "The end date. Important: The value must be in your account time zone. This differs from the time zone options when you upload offline conversions in the Microsoft Advertising web application. For information about the format of the date and time, see the dateTime entry in Primitive XML Data Types." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDataExclusion/deviceTypeFilter> ;
    sh:name "device type filter" ;
    sh:description "Which devices types to include for the data exclusion." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDataExclusion/campaignTypeFilter> ;
    sh:name "campaign type filter" ;
    sh:description "Which campaign types to include for the data exclusion." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDataExclusion/campaignAssociations> ;
    sh:name "campaign associations" ;
    sh:description "Which campaigns to include for the data exclusion." ;
    sh:node microsoftads:CampaignManagementCampaignAssociationShape ;
    sh:class microsoftads:CampaignManagementCampaignAssociation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Campaign Association
microsoftads:CampaignManagementCampaignAssociationShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementCampaignAssociation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaignAssociation/campaignId> ;
    sh:name "campaign id" ;
    sh:description "The campaign ID." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Add Data Exclusions Response
microsoftads:CampaignManagementAddDataExclusionsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddDataExclusionsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddDataExclusionsResponse/dataExclusionIds> ;
    sh:name "data exclusion ids" ;
    sh:description "The data exclusion IDs." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddDataExclusionsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array BatchError that contains details for any request items that were not successful. The list of errors does not correspond directly to the list of items in the request. The list can be empty if there were no errors, or it can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Add Experiments Request
microsoftads:CampaignManagementAddExperimentsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddExperimentsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddExperimentsRequest/experiments> ;
    sh:name "experiments" ;
    sh:description "The list of experiments to add. You can add 100 experiments per service request. You can create up to 10 nonconcurrent experiments per base campaign, whether they are added at the same time or across multiple service requests. Each base campaign must be in the same account, and the account is determined by the required CustomerAccountId header element." ;
    sh:node microsoftads:CampaignManagementExperimentShape ;
    sh:class microsoftads:CampaignManagementExperiment ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Experiment
microsoftads:CampaignManagementExperimentShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementExperiment ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementExperiment/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier of the experiment. Add: Read-only Update: Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementExperiment/name> ;
    sh:name "name" ;
    sh:description "The name of the experiment. The name of the experiment campaign that is created from the base campaign will match the experiment name, and vice versa. If the experiment name is updated, the experiment campaign's name will automatically be updated to match, and vice versa. The name must be unique (case-insensitive) among all campaigns and experiments within the account. The name can contain a maximum of 128 characters. Add: Required Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementExperiment/baseCampaignId> ;
    sh:name "base campaign id" ;
    sh:description "The Microsoft Advertising identifier of the campaign used as the base for the experiment campaign. You can create up to 10 nonconcurrent experiments per base campaign. In other words multiple experiments for the same base campaign cannot have overlapping time intervals. Experiments are available for Audience, Search, Shopping, and Performance Max campaigns. If the campaign uses a shared budget, then you cannot use it as the base campaign for an experiment. Add: Read-only and Required. Update: Read-only. You cannot change the base campaign of an experiment." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementExperiment/experimentCampaignId> ;
    sh:name "experiment campaign id" ;
    sh:description "The Microsoft Advertising identifier of the campaign that is created as a copy of the base campaign. All base campaign settings, including ad groups, ads, ad extension associations, and target settings are copied to the new experiment campaign. After the experiment campaign is created you can update all of its settings except for the campaign Budget, BudgetType, and TimeZone. The budget and time zone of an experiment campaign are always inherited from the base campaign settings. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementExperiment/trafficSplitPercent> ;
    sh:name "traffic split percent" ;
    sh:description "The percentage of the base campaign's budget and ad traffic that you want to allocate for this experiment. Ad traffic is split between the experiment and the base campaign based on individual searches. Relevant searches will randomly bring up either ads from your experiment or ads from your base campaign. This means that individual customers could see ads from both sources if they search multiple times. Possible values range from 1 to 99. Add: Required Update: Read-only. You cannot change the split while an experiment is running." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementExperiment/experimentArms> ;
    sh:name "experiment arms" ;
    sh:description "Defines an array of the experiment arm data object." ;
    sh:node microsoftads:CampaignManagementExperimentArmShape ;
    sh:class microsoftads:CampaignManagementExperimentArm ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementExperiment/startDate> ;
    sh:name "start date" ;
    sh:description "The date that the experiment campaign can begin serving ads. The start date cannot be updated after the experiment has begun i.e., once the start date has arrived. The start date is inclusive. For example, if you set start date to 5/5/2020, the experiment will start at 12:00 AM on 5/5/2020. The time is relative to the base campaign time zone. Add: Required Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:node microsoftads:CampaignManagementDateShape ;
    sh:class microsoftads:CampaignManagementDate ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementExperiment/endDate> ;
    sh:name "end date" ;
    sh:description "The date that the experiment will expire. If you do not specify an end date, the ads will not expire. Once the end date has passed, the end date cannot be extended. The end date is inclusive. For example, if you set the end date to 12/31/2020, the experiment will end at 11:59 PM on 12/31/2020. The time is relative to the base campaign time zone. Add: Optional. If you leave this element nil or empty the experiment will not expire until you take further action e.g., set the experiment status to Ended. Update: Optional. If no value is set for the update, this setting is not changed. To delete the current end date and effectively set no end date, set the Day, Month, and Year each to '0' (zero). When you retrieve the experiment next time, this element will not be set." ;
    sh:node microsoftads:CampaignManagementDateShape ;
    sh:class microsoftads:CampaignManagementDate ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementExperiment/experimentStatus> ;
    sh:name "experiment status" ;
    sh:description "The status of the experiment. Possible status values are described in the remarks below. Add: Required. You must set the status to Active; however, the status will be set automatically by Microsoft Advertising to Creating, and the next time you retrieve the experiment its status will be either Active, Creating, CreationFailed, Paused, or Scheduled. Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementExperiment/experimentType> ;
    sh:name "experiment type" ;
    sh:description "Determines whether to show individual customers ads from the experiment and the original campaign randomly, or only from one or the other. The possible values include TrafficBased and CookieBased. TrafficBased: This is also known as the search-based option. Every time customers search, they are randomly shown either ads from your experiment or ads from your original campaign. This means that individual customers could see ads from both sources if they search multiple times. CookieBased: When individual customers search, we show ads from either your experiment or your original campaign, and use a cookie to ensure that, going forward, they will only see ads from this source. The cookie-based option has an important trade-off to consider: On one hand, you may get more accurate data, since you're ensuring that an individual customer is only responding to one source or the other. On the other hand, it may take you longer to build up statistically significant comparison data than with the search-based option. Add: Optional. The default is TrafficBased. Update: Read-only. You cannot update the experiment type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementExperiment/experimentSubType> ;
    sh:name "experiment sub type" ;
    sh:description "The experiment sub type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Experiment Arm
microsoftads:CampaignManagementExperimentArmShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementExperimentArm ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementExperimentArm/id> ;
    sh:name "id" ;
    sh:description "The experiment arm ID." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementExperimentArm/campaignIds> ;
    sh:name "campaign ids" ;
    sh:description "The campaign IDs." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementExperimentArm/trafficSplit> ;
    sh:name "traffic split" ;
    sh:description "The traffic split number." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementExperimentArm/isControlArm> ;
    sh:name "is control arm" ;
    sh:description "The experiment arm is a control arm." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Add Experiments Response
microsoftads:CampaignManagementAddExperimentsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddExperimentsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddExperimentsResponse/experimentIds> ;
    sh:name "experiment ids" ;
    sh:description "A list of unique system identifiers corresponding to the experiments that were added. The list of identifiers corresponds directly to the list of experiments in the request. Items of the list may be returned as null. For each list index where an experiment was not added, the corresponding element will be null." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddExperimentsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Add HTML5s Request
microsoftads:CampaignManagementAddHTML5sRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddHTML5sRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddHTML5sRequest/hTML5Assets> ;
    sh:name "h tml5assets" ;
    sh:description "Array of HTML5 assets to add to the specified campaign." ;
    sh:node microsoftads:CampaignManagementHTML5Shape ;
    sh:class microsoftads:CampaignManagementHTML5 ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Html5
microsoftads:CampaignManagementHTML5Shape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementHTML5 ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHTML5/name> ;
    sh:name "name" ;
    sh:description "The name of the HTML5 asset." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHTML5/url> ;
    sh:name "url" ;
    sh:description "The URL of the HTML5 asset." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHTML5/text> ;
    sh:name "text" ;
    sh:description "Descriptive text for the HTML5 asset." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHTML5/destinationUrl> ;
    sh:name "destination url" ;
    sh:description "The URL of the webpage that the user is taken to when they click the ad." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHTML5/thumbnailUrl> ;
    sh:name "thumbnail url" ;
    sh:description "The URL of the thumbnail used for the HTML5 asset." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHTML5/width> ;
    sh:name "width" ;
    sh:description "The width of the HTML5 asset." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHTML5/height> ;
    sh:name "height" ;
    sh:description "The height of the HTML5 asset." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHTML5/status> ;
    sh:name "status" ;
    sh:description "The status of the HTML5 asset." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHTML5/createdDateTimeInUTC> ;
    sh:name "created date time in utc" ;
    sh:description "The date and time the HTML5 asset was created in UTC." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHTML5/modifiedDateTimeInUTC> ;
    sh:name "modified date time in utc" ;
    sh:description "The date and time the HTML5 asset was modified in UTC." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHTML5/failureCode> ;
    sh:name "failure code" ;
    sh:description "A descriptive error code for any issues with the HTML5 asset." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHTML5/id> ;
    sh:name "id" ;
    sh:description "The HTML5 asset's ID." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Add HTML5s Response
microsoftads:CampaignManagementAddHTML5sResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddHTML5sResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddHTML5sResponse/hTML5AssetIds> ;
    sh:name "h tml5asset ids" ;
    sh:description "The HTML5 asset IDs." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddHTML5sResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that weren't successful." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Add Import Jobs Request
microsoftads:CampaignManagementAddImportJobsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddImportJobsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddImportJobsRequest/importJobs> ;
    sh:name "import jobs" ;
    sh:description "The import jobs to create. Although this element is an array, you can include a maximum of one GoogleImportJob object per call. You can set the Google account that you want to import from via the GoogleAccountId element in the GoogleImportJob object. The Microsoft Advertising ad account that you want to import to is determined by the required CustomerAccountId header element of this AddImportJobs service operation." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementFileImportJobShape ; sh:class microsoftads:CampaignManagementFileImportJob ]
      [ sh:node microsoftads:CampaignManagementGoogleImportJobShape ; sh:class microsoftads:CampaignManagementGoogleImportJob ]
      [ sh:node microsoftads:CampaignManagementImportJobShape ; sh:class microsoftads:CampaignManagementImportJob ]
      [ sh:node microsoftads:CampaignManagementImportJobBaseShape ; sh:class microsoftads:CampaignManagementImportJobBase ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Import Job
microsoftads:CampaignManagementImportJobShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementImportJob ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportJob/name> ;
    sh:name "name" ;
    sh:description "The name of the import job" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportJob/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier of the import job." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportJob/type> ;
    sh:name "type" ;
    sh:description "The type of the import job. For more information about import job types, see the Remarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportJob/status> ;
    sh:name "status" ;
    sh:description "The status of the import job. The possible values are Active, Pause and Deleted. Scheduled imports will have an Active status, whether the job is scheduled once or on a recurring basis in the future. Paused import jobs will have a Pause status. The status of import jobs that only run once will be set to Deleted after the import. Add: Read-only Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportJob/notificationType> ;
    sh:name "notification type" ;
    sh:description "Determines whether and how often you want to receive email notifications about the import job results." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportJob/createdByUserId> ;
    sh:name "created by user id" ;
    sh:description "The unique identifier of the Microsoft Advertising user who created the import job." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportJob/createdByUserName> ;
    sh:name "created by user name" ;
    sh:description "The login user name of the Microsoft Advertising user who created the import job." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportJob/frequency> ;
    sh:name "frequency" ;
    sh:description "Determines whether the import job should be run once or scheduled on a recurring basis. To run the import job now, this element should be nil or empty." ;
    sh:node microsoftads:CampaignManagementFrequencyShape ;
    sh:class microsoftads:CampaignManagementFrequency ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportJob/lastRunTimeInUTC> ;
    sh:name "last run time in utc" ;
    sh:description "The most recent import date and time for this job. The date and time is expressed in Coordinated Universal Time (UTC)." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportJob/createdDateTimeInUTC> ;
    sh:name "created date time in utc" ;
    sh:description "The date and time when the import job was created. The date and time is expressed in Coordinated Universal Time (UTC)." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportJob/importOption> ;
    sh:name "import option" ;
    sh:description "The import options that are available via API." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementFileImportOptionShape ; sh:class microsoftads:CampaignManagementFileImportOption ]
      [ sh:node microsoftads:CampaignManagementGoogleImportOptionShape ; sh:class microsoftads:CampaignManagementGoogleImportOption ]
      [ sh:node microsoftads:CampaignManagementImportOptionShape ; sh:class microsoftads:CampaignManagementImportOption ]
      [ sh:node microsoftads:CampaignManagementImportOptionBaseShape ; sh:class microsoftads:CampaignManagementImportOptionBase ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportJob/notificationEmail> ;
    sh:name "notification email" ;
    sh:description "The email address where import results should be sent. This element is not returned by default. To get this element, include the NotificationEmail value in the ReturnAdditionalFields element when you call the GetImportJobsByIds and GetImportResults service operations." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportJob/credentialId> ;
    sh:name "credential id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportJob/googleAccountId> ;
    sh:name "google account id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportJob/campaignAdGroupIds> ;
    sh:name "campaign ad group ids" ;
    sh:node microsoftads:CampaignManagementCampaignAdGroupIdsShape ;
    sh:class microsoftads:CampaignManagementCampaignAdGroupIds ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportJob/campaignTypes> ;
    sh:name "campaign types" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportJob/googleUserName> ;
    sh:name "google user name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportJob/fileUrl> ;
    sh:name "file url" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportJob/fileSource> ;
    sh:name "file source" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Frequency
microsoftads:CampaignManagementFrequencyShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementFrequency ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFrequency/type> ;
    sh:name "type" ;
    sh:description "The scheduling frequency type. Set this element to \"Scheduling\" if you want to choose a specific Cron value, whether the import job should run once or on a recurring basis. Set this element to \"Auto\" if you want Microsoft Advertising to run imports on a varying schedule that will best optimize your campaigns. If you want the import to run now, you can either set this element to \"RunNow\" or do not set the Google import job Frequency element at all. Add: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFrequency/timeZone> ;
    sh:name "time zone" ;
    sh:description "The time zone used for the import schedule. For possible values, see Time Zones. Add: Optional. If you do not set this element, then \"GreenwichMeanTimeDublinEdinburghLisbonLondon\" (UTC+0) will be used by default." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFrequency/cron> ;
    sh:name "cron" ;
    sh:description "Represents a simplified implementation of Cron frequency. For example, set the string to \"0 16 3 *\" if you want the import to run weekly, every Wednesday at 4:00 PM. For details about supported frequency values, see the Remarks. Add: Required if the Type is set to \"Scheduling\", and otherwise the cron value is ignored." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Import Option
microsoftads:CampaignManagementImportOptionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementImportOption ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. Forward compatibility changes will be noted here in future releases. There are currently no forward compatibility changes for this object." ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/type> ;
    sh:name "type" ;
    sh:description "The type of import option. For more information, see Remarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/newEntities> ;
    sh:name "new entities" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/newPausedCampaignsAndChildEntities> ;
    sh:name "new paused campaigns and child entities" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/newActiveCampaignsAndChildEntities> ;
    sh:name "new active campaigns and child entities" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/newAdGroupsAndChildEntitiesForExistingCampaigns> ;
    sh:name "new ad groups and child entities for existing campaigns" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/newActiveAdsForExistingAdGroups> ;
    sh:name "new active ads for existing ad groups" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/newKeywordsForExistingAdGroups> ;
    sh:name "new keywords for existing ad groups" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/newNegativeKeywordsForExistingParents> ;
    sh:name "new negative keywords for existing parents" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/newNegativeKeywordLists> ;
    sh:name "new negative keyword lists" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/newAccountNegativeKeywords> ;
    sh:name "new account negative keywords" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/pauseNewCampaigns> ;
    sh:name "pause new campaigns" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/newKeywordUrls> ;
    sh:name "new keyword urls" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/newUrlOptions> ;
    sh:name "new url options" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/newNegativeSites> ;
    sh:name "new negative sites" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/newPausedAdsForExistingAdGroups> ;
    sh:name "new paused ads for existing ad groups" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/newLabels> ;
    sh:name "new labels" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/newProductFilters> ;
    sh:name "new product filters" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/newLocationTargets> ;
    sh:name "new location targets" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/newAdSchedules> ;
    sh:name "new ad schedules" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/newDeviceTargets> ;
    sh:name "new device targets" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/newDemographicTargets> ;
    sh:name "new demographic targets" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/newAudienceTargets> ;
    sh:name "new audience targets" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/newTopicTargets> ;
    sh:name "new topic targets" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/newAppAdExtensions> ;
    sh:name "new app ad extensions" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/newCallAdExtensions> ;
    sh:name "new call ad extensions" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/newCalloutAdExtensions> ;
    sh:name "new callout ad extensions" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/newPriceAdExtensions> ;
    sh:name "new price ad extensions" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/newLocationAdExtensions> ;
    sh:name "new location ad extensions" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/newReviewAdExtensions> ;
    sh:name "new review ad extensions" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/newSitelinkAdExtensions> ;
    sh:name "new sitelink ad extensions" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/newStructuredSnippetAdExtensions> ;
    sh:name "new structured snippet ad extensions" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/newPromotionAdExtensions> ;
    sh:name "new promotion ad extensions" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/newImageAdExtensions> ;
    sh:name "new image ad extensions" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/newLogoAdExtensions> ;
    sh:name "new logo ad extensions" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/newLeadFormAdExtensions> ;
    sh:name "new lead form ad extensions" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/newPageFeeds> ;
    sh:name "new page feeds" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/newAdCustomizerFeeds> ;
    sh:name "new ad customizer feeds" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/newBrandSuitability> ;
    sh:name "new brand suitability" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/newBrandListAssociations> ;
    sh:name "new brand list associations" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/newConversionGoals> ;
    sh:name "new conversion goals" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/newCarouselAd> ;
    sh:name "new carousel ad" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/newPortfolioBidStrategy> ;
    sh:name "new portfolio bid strategy" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/newAIMaxSettings> ;
    sh:name "new aimax settings" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/newSearchThemesForExistingAssetGroups> ;
    sh:name "new search themes for existing asset groups" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/updateEntities> ;
    sh:name "update entities" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/updateCampaignBudgets> ;
    sh:name "update campaign budgets" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/updateBids> ;
    sh:name "update bids" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/updateNegativeKeywordLists> ;
    sh:name "update negative keyword lists" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/updateAccountNegativeKeywords> ;
    sh:name "update account negative keywords" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/updateNegativeSites> ;
    sh:name "update negative sites" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/updateKeywordUrls> ;
    sh:name "update keyword urls" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/updateUrlOptions> ;
    sh:name "update url options" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/updateCampaignNames> ;
    sh:name "update campaign names" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/updateLabels> ;
    sh:name "update labels" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/updateProductFilters> ;
    sh:name "update product filters" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/updateConversionGoals> ;
    sh:name "update conversion goals" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/updateLocationTargets> ;
    sh:name "update location targets" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/updateAdSchedules> ;
    sh:name "update ad schedules" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/updateDeviceTargets> ;
    sh:name "update device targets" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/updateDemographicTargets> ;
    sh:name "update demographic targets" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/updateCampaignAdGroupLanguages> ;
    sh:name "update campaign ad group languages" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/updateAudienceTargets> ;
    sh:name "update audience targets" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/updateTopicTargets> ;
    sh:name "update topic targets" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/updateAppAdExtensions> ;
    sh:name "update app ad extensions" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/updateCallAdExtensions> ;
    sh:name "update call ad extensions" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/updateCalloutAdExtensions> ;
    sh:name "update callout ad extensions" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/updatePriceAdExtensions> ;
    sh:name "update price ad extensions" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/updateLocationAdExtensions> ;
    sh:name "update location ad extensions" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/updateReviewAdExtensions> ;
    sh:name "update review ad extensions" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/updateSitelinkAdExtensions> ;
    sh:name "update sitelink ad extensions" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/updateStructuredSnippetAdExtensions> ;
    sh:name "update structured snippet ad extensions" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/updatePromotionAdExtensions> ;
    sh:name "update promotion ad extensions" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/updateImageAdExtensions> ;
    sh:name "update image ad extensions" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/updateLogoAdExtensions> ;
    sh:name "update logo ad extensions" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/updateLeadFormAdExtensions> ;
    sh:name "update lead form ad extensions" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/updateStatusForCampaigns> ;
    sh:name "update status for campaigns" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/updateStatusForAdGroups> ;
    sh:name "update status for ad groups" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/updateStatusForAds> ;
    sh:name "update status for ads" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/updateStatusForKeywords> ;
    sh:name "update status for keywords" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/updateAdGroupNetwork> ;
    sh:name "update ad group network" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/updatePageFeeds> ;
    sh:name "update page feeds" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/updateAdCustomizerFeeds> ;
    sh:name "update ad customizer feeds" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/updateBrandSuitability> ;
    sh:name "update brand suitability" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/updateBrandListAssociations> ;
    sh:name "update brand list associations" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/updateAdCustomizerAttributes> ;
    sh:name "update ad customizer attributes" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/updateAIMaxSettings> ;
    sh:name "update aimax settings" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/updateAssetGroupsAsset> ;
    sh:name "update asset groups asset" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/enableCopilot> ;
    sh:name "enable copilot" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/deleteRemovedEntities> ;
    sh:name "delete removed entities" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/raiseBidsToMinimum> ;
    sh:name "raise bids to minimum" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/raiseCampaignBudgetsToMinimum> ;
    sh:name "raise campaign budgets to minimum" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/adjustmentForCampaignBudgets> ;
    sh:name "adjustment for campaign budgets" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/adjustmentForBids> ;
    sh:name "adjustment for bids" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/suffixForUrls> ;
    sh:name "suffix for urls" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/searchAndReplaceForUrls> ;
    sh:name "search and replace for urls" ;
    sh:node microsoftads:CampaignManagementImportSearchAndReplaceForStringPropertyShape ;
    sh:class microsoftads:CampaignManagementImportSearchAndReplaceForStringProperty ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/suffixForTrackingTemplates> ;
    sh:name "suffix for tracking templates" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/searchAndReplaceForTrackingTemplates> ;
    sh:name "search and replace for tracking templates" ;
    sh:node microsoftads:CampaignManagementImportSearchAndReplaceForStringPropertyShape ;
    sh:class microsoftads:CampaignManagementImportSearchAndReplaceForStringProperty ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/suffixForCampaignNames> ;
    sh:name "suffix for campaign names" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/searchAndReplaceForCampaignNames> ;
    sh:name "search and replace for campaign names" ;
    sh:node microsoftads:CampaignManagementImportSearchAndReplaceForStringPropertyShape ;
    sh:class microsoftads:CampaignManagementImportSearchAndReplaceForStringProperty ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/searchAndReplaceForCustomParameters> ;
    sh:name "search and replace for custom parameters" ;
    sh:node microsoftads:CampaignManagementImportSearchAndReplaceForStringPropertyShape ;
    sh:class microsoftads:CampaignManagementImportSearchAndReplaceForStringProperty ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/searchAndReplaceForFinalURLSuffix> ;
    sh:name "search and replace for final urlsuffix" ;
    sh:node microsoftads:CampaignManagementImportSearchAndReplaceForStringPropertyShape ;
    sh:class microsoftads:CampaignManagementImportSearchAndReplaceForStringProperty ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/pauseCampaignsWithoutSupportedLocations> ;
    sh:name "pause campaigns without supported locations" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/enableParentLocationMapping> ;
    sh:name "enable parent location mapping" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/associatedStoreId> ;
    sh:name "associated store id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/raiseProductGroupBidsToMinimum> ;
    sh:name "raise product group bids to minimum" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/searchAndDsaMixedCampaignAsSearchCampaign> ;
    sh:name "search and dsa mixed campaign as search campaign" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/accountUrlOptions> ;
    sh:name "account url options" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/enableAutoCurrencyConversion> ;
    sh:name "enable auto currency conversion" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/updateBiddingStrategies> ;
    sh:name "update bidding strategies" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/associatedUetTagId> ;
    sh:name "associated uet tag id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/autoDeviceBidOptimization> ;
    sh:name "auto device bid optimization" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/adScheduleUseSearcherTimezone> ;
    sh:name "ad schedule use searcher timezone" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/pauseAIMAdGroupIfAllAudienceCriterionNotImported> ;
    sh:name "pause aimad group if all audience criterion not imported" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/renameCampaignNameWithSuffix> ;
    sh:name "rename campaign name with suffix" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/updateAdUrls> ;
    sh:name "update ad urls" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/updateSitelinkUrls> ;
    sh:name "update sitelink urls" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/updateAssetAutomationCampaignSetting> ;
    sh:name "update asset automation campaign setting" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/imageAssetAutomationOptOut> ;
    sh:name "image asset automation opt out" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOption/importNCAGoalWithSystemGeneratedAudience> ;
    sh:name "import ncagoal with system generated audience" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Import Search And Replace For String Property
microsoftads:CampaignManagementImportSearchAndReplaceForStringPropertyShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementImportSearchAndReplaceForStringProperty ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportSearchAndReplaceForStringProperty/searchString> ;
    sh:name "search string" ;
    sh:description "The string to find. The case-insensitive search string does not support regular expressions." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportSearchAndReplaceForStringProperty/replaceString> ;
    sh:name "replace string" ;
    sh:description "The replacement string to use in place of the search string." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Campaign Ad Group Ids
microsoftads:CampaignManagementCampaignAdGroupIdsShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementCampaignAdGroupIds ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaignAdGroupIds/campaignId> ;
    sh:name "campaign id" ;
    sh:description "Identifies the campaign to import." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaignAdGroupIds/adGroupIds> ;
    sh:name "ad group ids" ;
    sh:description "Identifies the list of specific ad groups to import within the campaign. If this element is nil or empty, include all ad groups of the campaign. The ActiveAdGroupsOnly element determines whether to include paused ad groups or only import active ad groups." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaignAdGroupIds/activeAdGroupsOnly> ;
    sh:name "active ad groups only" ;
    sh:description "Determines whether to include paused ad groups or only import active ad groups. This element is not returned by default. To get this element, include the ActiveAdGroupsOnly value in the ReturnAdditionalFields element when you call the GetImportJobsByIds and GetImportResults service operations. If this element is true and if the AdGroupIds is not set, then only active ad groups from the campaign will be imported. Paused ad groups will not be imported. If this element is false or empty, then all of the campaign's ad groups will be imported. This element is ignored if specific ad groups are selected in the AdGroupIds element." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Add Import Jobs Response
microsoftads:CampaignManagementAddImportJobsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddImportJobsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddImportJobsResponse/importJobIds> ;
    sh:name "import job ids" ;
    sh:description "A list of unique system identifiers corresponding to the import jobs that were added. The list of identifiers corresponds directly to the list of import jobs in the request. Items of the list may be returned as null. For each list index where an import job was not added, the corresponding element will be null." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddImportJobsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "A list of BatchError objects that contain details for any list item requests that were not successful. The list of errors do not correspond directly to the list of items in the request. The list will be empty if there were no errors." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Add Keywords Request
microsoftads:CampaignManagementAddKeywordsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddKeywordsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddKeywordsRequest/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "The identifier of the ad group to add the keywords to." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddKeywordsRequest/keywords> ;
    sh:name "keywords" ;
    sh:description "The list of keywords to add to the ad group. You can add a maximum of 1,000 keywords to an ad group per service request." ;
    sh:node microsoftads:CampaignManagementKeywordShape ;
    sh:class microsoftads:CampaignManagementKeyword ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddKeywordsRequest/returnInheritedBidStrategyTypes> ;
    sh:name "return inherited bid strategy types" ;
    sh:description "Determines whether or not the service should return the bid strategy type that is inherited from the parent campaign or ad group. The default value is false, and the InheritedBidStrategyTypes element will only be returned if you set this element true." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddKeywordsRequest/assetGroupId> ;
    sh:name "asset group id" ;
    sh:description "The identifier of the asset group to add the keywords to." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Keyword
microsoftads:CampaignManagementKeywordShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementKeyword ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementKeyword/id> ;
    sh:name "id" ;
    sh:description "The system-generated identifier of the keyword. Add: Read-only Update: Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementKeyword/bid> ;
    sh:name "bid" ;
    sh:description "The maximum amount that you want to pay each time someone clicks your ad. You bid against other advertisers using the same keyword, so in general, higher bids help get your ad to display in more desirable locations on the search results page. Instead of using the default ad group level bid, you can set custom bids for each keyword. Custom bids for keywords override the ad group default bid for those specific keywords. With custom bids, you can focus your time and money on the most profitable keywords but will need to spend more time on managing the individual bids. If the keyword level bid is not set, the Ad Group CpcBid is used. For more information, see Budget and Bid Strategies. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. To delete the keyword bid and use the AdGroup default match type bid, set the Amount element of the Bid object to null." ;
    sh:node microsoftads:CampaignManagementBidShape ;
    sh:class microsoftads:CampaignManagementBid ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementKeyword/matchType> ;
    sh:name "match type" ;
    sh:description "The type of match to compare the keyword and the user's search term. Add: Required Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Exact" "Phrase" "Broad" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementKeyword/param1> ;
    sh:name "param1" ;
    sh:description "The string to use as the substitution value in an ad if the ad's title, text, display URL, or destination URL contains the {Param1} dynamic substitution string. Although you can use {Param1} to specify an ad's destination URL, you are encouraged not to. Instead, you should set the keyword's DestinationUrl element. The string can contain a maximum of 1,022 characters. The actual limit depends on the length of the element that references the substitution string. For example, the length of a text ad's title can contain a maximum of 25 characters. When implementing dynamic text in your ad copy you should provide a default string e.g. {Param1:default} that the system will use if Param1 for a keyword is null or empty, or if including the Param1 substitution value will cause the expanded string to exceed the element's limit; otherwise the ad will not serve with this keyword. For more information, see the Microsoft Advertising help article Automatically customize your ads with dynamic text parameters. Also note that if the ad group only has one ad, and if that ad uses {Param1} but does not provide a default string e.g. {Param1:default}, then you must supply a valid Param1 value for that substitution. Otherwise this keyword cannot be added or updated. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. If you set this element to an empty string (\"\"), the previous setting will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementKeyword/param2> ;
    sh:name "param2" ;
    sh:description "The string to use as the substitution value in an ad if the title, text, display URL, or destination URL contains the {Param2} dynamic substitution string. Typically, you use the {Param2} substitution string in the title or text (ad copy description) elements of an ad. The string can contain a maximum of 70 characters. The actual limit depends on the length of the element that references the substitution string. For example, the length of a text ad's title can contain a maximum of 25 characters. When implementing dynamic text in your ad copy you should provide a default string e.g. {Param2:default} that the system will use if Param2 for a keyword is null or empty, or if including the Param2 substitution value will cause the expanded string to exceed the element's limit; otherwise the ad will not serve with this keyword. For more information, see the Microsoft Advertising help article Automatically customize your ads with dynamic text parameters. Also note that if the ad group only has one ad, and if that ad uses {Param2} but does not provide a default string e.g. {Param2:default}, then you must supply a valid Param2 value for that substitution. Otherwise this keyword cannot be added or updated. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. If you set this element to an empty string (\"\"), the previous setting will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementKeyword/param3> ;
    sh:name "param3" ;
    sh:description "The string to use as the substitution value in an ad if the title, text, display URL, or destination URL contains the {Param3} dynamic substitution string. Typically, you use the {Param3} substitution string in the title or text (ad copy description) elements of an ad. The string can contain a maximum of 70 characters. The actual limit depends on the length of the element that references the substitution string. For example, the length of a text ad's title can contain a maximum of 25 characters. When implementing dynamic text in your ad copy you should provide a default string e.g. {Param3:default} that the system will use if Param3 for a keyword is null or empty, or if including the Param3 substitution value will cause the expanded string to exceed the element's limit; otherwise the ad will not serve with this keyword. For more information, see the Microsoft Advertising help article Automatically customize your ads with dynamic text parameters. Also note that if the ad group only has one ad, and if that ad uses {Param3} but does not provide a default string e.g. {Param3:default}, then you must supply a valid Param3 value for that substitution. Otherwise this keyword cannot be added or updated. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. If you set this element to an empty string (\"\"), the previous setting will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementKeyword/text> ;
    sh:name "text" ;
    sh:description "The keyword text. The text can contain a maximum of 100 characters. You should specify the keyword in the locale of the Language value that you specified for the ad group to which the keyword belongs. Add: Required Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementKeyword/status> ;
    sh:name "status" ;
    sh:description "The keyword's status. By default, the status is set to Active. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Paused" "Deleted" "Inactive" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementKeyword/editorialStatus> ;
    sh:name "editorial status" ;
    sh:description "The editorial review status of the keyword, which indicates whether the keyword is pending review, has been approved, or has been disapproved. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Disapproved" "Inactive" "ActiveLimited" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementKeyword/destinationUrl> ;
    sh:name "destination url" ;
    sh:description "The URL of the webpage to take the user to when they click the ad. The keyword's destination URL is used if specified; otherwise, the ad's destination URL is used. Important: As of November 2018 the keyword destination URL cannot be added or updated. You can use Final URLs instead. For more details see Migrating your keyword destination URLs to final URLs. Add: Not allowed Update: Not allowed" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementKeyword/trackingUrlTemplate> ;
    sh:name "tracking url template" ;
    sh:description "The tracking template to use as a default for all FinalUrls and FinalMobileUrls. The following validation rules apply to tracking templates. For more details about supported templates and parameters, see the Microsoft Advertising help article What tracking or URL parameters can I use? - Tracking templates defined for lower level entities e.g. ads override those set for higher level entities e.g. campaign. For more information, see Entity Limits. - The length of the tracking template is limited to 2,048 characters. The HTTP or HTTPS protocol string does count towards the 2,048 character limit. - The tracking template must be a well-formed URL beginning with one of the following: http://, https://, {lpurl}, or {unescapedlpurl}. - Microsoft Advertising does not validate whether custom parameters exist. If you use custom parameters in your tracking template and they do not exist, then the landing page URL will include the key and value placeholders of your custom parameters without substitution. For example, if your tracking template is https://tracker.example.com/?season={_season}&promocode={_promocode}&u={lpurl} and neither {_season} or {_promocode} are defined at the campaign, ad group, criterion, keyword, or ad level, then the landing page URL will be the same. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. If you set this element to an empty string (\"\"), the previous setting will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementKeyword/urlCustomParameters> ;
    sh:name "url custom parameters" ;
    sh:description "Your custom collection of key and value parameters for URL tracking. Microsoft Advertising will accept the first 8 CustomParameter objects that you include within the CustomParameters object, and if you include more than 8 custom parameters an error will be returned. Each CustomParameter includes Key and Value elements. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. Set the UrlCustomParameters element to null or empty to retain any existing custom parameters. To remove all custom parameters, set the Parameters element of the CustomParameters object to null or empty. To remove a subset of custom parameters, specify the custom parameters that you want to keep in the Parameters element of the CustomParameters object." ;
    sh:node microsoftads:CampaignManagementCustomParametersShape ;
    sh:class microsoftads:CampaignManagementCustomParameters ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementKeyword/finalUrls> ;
    sh:name "final urls" ;
    sh:description "The landing page URL. The keyword's final URL is used if specified; otherwise, the ad's final URL is used. The following validation rules apply to Final URLs and Final Mobile URLs. - The length of the URL is limited to 2,048 characters. The HTTP or HTTPS protocol string does count towards the 2,048 character limit. - You may specify up to 10 items for both FinalUrls and FinalMobileUrls; however, only the first item in each list is used for delivery. The service allows up to 10 for potential forward compatibility. - Usage of '{' and '}' is only allowed to delineate tags, for example {lpurl}. - Final URLs must each be a well-formed URL starting with either http:// or https://. - If you specify FinalMobileUrls, you must also specify FinalUrls. - You may not specify FinalMobileUrls if the device preference is set to mobile. Also note that if the TrackingUrlTemplate or UrlCustomParameters elements are set, then at least one final URL is required. For more information, see URL Tracking with Upgraded URLs. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementKeyword/finalMobileUrls> ;
    sh:name "final mobile urls" ;
    sh:description "The mobile landing page URL. The keyword's final mobile URL is used if specified; otherwise, the ad's final mobile URL is used. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementKeyword/finalAppUrls> ;
    sh:name "final app urls" ;
    sh:description "For future use." ;
    sh:node microsoftads:CampaignManagementAppUrlShape ;
    sh:class microsoftads:CampaignManagementAppUrl ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementKeyword/biddingScheme> ;
    sh:name "bidding scheme" ;
    sh:description "The bid strategy type for how you want to manage your bids. For details about supported bid strategies per campaign type, see Budget and Bid Strategies. NOTE: As of April 2021, you cannot set any bid strategies for ad groups or keywords. If you attempt to set bid strategies for ad groups or keywords, the request will be ignored without error. Ad groups and keywords will inherit their campaign's bid strategy. Add: Optional. If you do not set this element, then InheritFromParentBiddingScheme is used by default. Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBiddingSchemeShape ; sh:class microsoftads:CampaignManagementBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementBiddingSchemeBaseShape ; sh:class microsoftads:CampaignManagementBiddingSchemeBase ]
      [ sh:node microsoftads:CampaignManagementCommissionBiddingSchemeShape ; sh:class microsoftads:CampaignManagementCommissionBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementCostPerSaleBiddingSchemeShape ; sh:class microsoftads:CampaignManagementCostPerSaleBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementEnhancedCpcBiddingSchemeShape ; sh:class microsoftads:CampaignManagementEnhancedCpcBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementInheritFromParentBiddingSchemeShape ; sh:class microsoftads:CampaignManagementInheritFromParentBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementManualCpaBiddingSchemeShape ; sh:class microsoftads:CampaignManagementManualCpaBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementManualCpcBiddingSchemeShape ; sh:class microsoftads:CampaignManagementManualCpcBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementManualCpmBiddingSchemeShape ; sh:class microsoftads:CampaignManagementManualCpmBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementManualCpvBiddingSchemeShape ; sh:class microsoftads:CampaignManagementManualCpvBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementMaxClicksBiddingSchemeShape ; sh:class microsoftads:CampaignManagementMaxClicksBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementMaxConversionValueBiddingSchemeShape ; sh:class microsoftads:CampaignManagementMaxConversionValueBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementMaxConversionsBiddingSchemeShape ; sh:class microsoftads:CampaignManagementMaxConversionsBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementMaxRoasBiddingSchemeShape ; sh:class microsoftads:CampaignManagementMaxRoasBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementPercentCpcBiddingSchemeShape ; sh:class microsoftads:CampaignManagementPercentCpcBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementTargetCpaBiddingSchemeShape ; sh:class microsoftads:CampaignManagementTargetCpaBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementTargetImpressionShareBiddingSchemeShape ; sh:class microsoftads:CampaignManagementTargetImpressionShareBiddingScheme ]
      [ sh:node microsoftads:CampaignManagementTargetRoasBiddingSchemeShape ; sh:class microsoftads:CampaignManagementTargetRoasBiddingScheme ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementKeyword/finalUrlSuffix> ;
    sh:name "final url suffix" ;
    sh:description "The final URL suffix can include tracking parameters that will be appended to the end of your landing page URL. We recommend placing tracking parameters that your landing page requires in a final URL suffix so that your customers are always sent to your landing page. For more details and validation rules see Final URL Suffix in the technical guides. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. If you set this element to an empty string (\"\"), the previous setting will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementKeyword/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. Forward compatibility changes will be noted here in future releases. There are currently no forward compatibility changes for this object." ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Add Keywords Response
microsoftads:CampaignManagementAddKeywordsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddKeywordsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddKeywordsResponse/keywordIds> ;
    sh:name "keyword ids" ;
    sh:description "A list of unique system identifiers corresponding to the keywords that were added. The list of identifiers corresponds directly to the list of keywords in the request. Items of the list may be returned as null. For each list index where a keyword was not added, the corresponding element will be null." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddKeywordsResponse/inheritedBidStrategyTypes> ;
    sh:name "inherited bid strategy types" ;
    sh:description "The value of each string represents the type of bidding scheme or bid strategy type that is inherited from the parent campaign or ad group. Each string in the list is returned in the same order and corresponds to the keywords in the request message. If a keyword does not inherit from the ad group or campaign, the corresponding item in the list will be nil. This element is not returned by default. You must set ReturnInheritedBidStrategyTypes true in the request." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddKeywordsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Add Labels Request
microsoftads:CampaignManagementAddLabelsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddLabelsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddLabelsRequest/labels> ;
    sh:name "labels" ;
    sh:description "The list of labels to add to the account. The maximum size of the list is 100 items per service request." ;
    sh:node microsoftads:CampaignManagementLabelShape ;
    sh:class microsoftads:CampaignManagementLabel ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Label
microsoftads:CampaignManagementLabelShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementLabel ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLabel/name> ;
    sh:name "name" ;
    sh:description "The label name. The case-sensitive label name can be between 1 to 80 characters in length, and must be unique across all labels in the account. Add: Required Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLabel/description> ;
    sh:name "description" ;
    sh:description "The label description. The label description can be between 1 to 200 characters in length. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLabel/colorCode> ;
    sh:name "color code" ;
    sh:description "The label color as a hexadecimal code. The hexadecimal value must have the '#' prefix. For example you can use the value of #FFFFFF for a white label. The color can be viewed in the Microsoft Advertising web application. Your application can display the color or utilize the hexadecimal value to categorize a set of labels. Add: Optional. If you do not specify any color, the value will be assigned at random for each label. Update: Optional. If no value is set for the update, this setting is not changed. You can update the color code but cannot remove it." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLabel/id> ;
    sh:name "id" ;
    sh:description "The system-generated identifier of the label. Add: Read-only Update: Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Add Labels Response
microsoftads:CampaignManagementAddLabelsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddLabelsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddLabelsResponse/labelIds> ;
    sh:name "label ids" ;
    sh:description "A list of unique system identifiers corresponding to the labels that were added. The list of identifiers corresponds directly to the list of labels in the request. Items of the list may be returned as null. For each list index where a label was not added, the corresponding element will be null." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddLabelsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Add Linked In Segments Request
microsoftads:CampaignManagementAddLinkedInSegmentsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddLinkedInSegmentsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddLinkedInSegmentsRequest/linkedInSegments> ;
    sh:name "linked in segments" ;
    sh:description "Array of LinkedIn segments to add to the specified campaign." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementCompanyListShape ; sh:class microsoftads:CampaignManagementCompanyList ]
      [ sh:node microsoftads:CampaignManagementLinkedInSegmentShape ; sh:class microsoftads:CampaignManagementLinkedInSegment ]
      [ sh:node microsoftads:CampaignManagementLinkedInSegmentBaseShape ; sh:class microsoftads:CampaignManagementLinkedInSegmentBase ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Linked In Segment
microsoftads:CampaignManagementLinkedInSegmentShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementLinkedInSegment ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLinkedInSegment/id> ;
    sh:name "id" ;
    sh:description "The LinkedIn segment ID." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLinkedInSegment/name> ;
    sh:name "name" ;
    sh:description "The name of the LinkedIn segment." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLinkedInSegment/type> ;
    sh:name "type" ;
    sh:description "The type of the LinkedIn segment." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLinkedInSegment/status> ;
    sh:name "status" ;
    sh:description "The status of hte LinkedIn segment." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Building" "Ready" "ReachTooSmall" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLinkedInSegment/reach> ;
    sh:name "reach" ;
    sh:description "The reach of the LinkedIn segment." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLinkedInSegment/companyNames> ;
    sh:name "company names" ;
    sh:node microsoftads:CampaignManagementCompanyNameShape ;
    sh:class microsoftads:CampaignManagementCompanyName ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLinkedInSegment/total> ;
    sh:name "total" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLinkedInSegment/matched> ;
    sh:name "matched" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Company Name
microsoftads:CampaignManagementCompanyNameShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementCompanyName ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCompanyName/id> ;
    sh:name "id" ;
    sh:description "The company name ID." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCompanyName/name> ;
    sh:name "name" ;
    sh:description "The company name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCompanyName/status> ;
    sh:name "status" ;
    sh:description "The company name status." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "NotProcessed" "Matched" "NoMatch" ) ;
  ] .

# Shape for Campaign Management Add Linked In Segments Response
microsoftads:CampaignManagementAddLinkedInSegmentsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddLinkedInSegmentsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddLinkedInSegmentsResponse/linkedInSegmentIds> ;
    sh:name "linked in segment ids" ;
    sh:description "The LinkedIn segment IDs." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddLinkedInSegmentsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that weren't successful." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Add List Items To Shared List Request
microsoftads:CampaignManagementAddListItemsToSharedListRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddListItemsToSharedListRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddListItemsToSharedListRequest/listItems> ;
    sh:name "list items" ;
    sh:description "The negative keywords to add to the negative keyword list, or the negative sites to add to the website exclusion list. The list can contain a maximum of 5,000 items per service call." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBrandItemShape ; sh:class microsoftads:CampaignManagementBrandItem ]
      [ sh:node microsoftads:CampaignManagementNegativeKeywordShape ; sh:class microsoftads:CampaignManagementNegativeKeyword ]
      [ sh:node microsoftads:CampaignManagementNegativeSiteShape ; sh:class microsoftads:CampaignManagementNegativeSite ]
      [ sh:node microsoftads:CampaignManagementSharedListItemShape ; sh:class microsoftads:CampaignManagementSharedListItem ]
      [ sh:node microsoftads:CampaignManagementSharedListItemBaseShape ; sh:class microsoftads:CampaignManagementSharedListItemBase ]
      [ sh:node microsoftads:CampaignManagementSiteShape ; sh:class microsoftads:CampaignManagementSite ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddListItemsToSharedListRequest/sharedList> ;
    sh:name "shared list" ;
    sh:description "The negative keyword list or website exclusion list. If the SharedEntityScope is either empty or set to Account, and if the SharedList is a NegativeKeywordList or AccountNegativeKeywordList, then the ListItems must be negative keyword (NegativeKeyword) objects. If the SharedEntityScope is set to Customer, and if the SharedList is a PlacementExclusionList, then the ListItems must be negative site (NegativeSite) objects." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementAccountContentNegativeKeywordListShape ; sh:class microsoftads:CampaignManagementAccountContentNegativeKeywordList ]
      [ sh:node microsoftads:CampaignManagementAccountNegativeKeywordListShape ; sh:class microsoftads:CampaignManagementAccountNegativeKeywordList ]
      [ sh:node microsoftads:CampaignManagementAccountPlacementExclusionListShape ; sh:class microsoftads:CampaignManagementAccountPlacementExclusionList ]
      [ sh:node microsoftads:CampaignManagementAccountPlacementInclusionListShape ; sh:class microsoftads:CampaignManagementAccountPlacementInclusionList ]
      [ sh:node microsoftads:CampaignManagementBrandListShape ; sh:class microsoftads:CampaignManagementBrandList ]
      [ sh:node microsoftads:CampaignManagementNegativeKeywordListShape ; sh:class microsoftads:CampaignManagementNegativeKeywordList ]
      [ sh:node microsoftads:CampaignManagementPlacementExclusionListShape ; sh:class microsoftads:CampaignManagementPlacementExclusionList ]
      [ sh:node microsoftads:CampaignManagementSharedListShape ; sh:class microsoftads:CampaignManagementSharedList ]
      [ sh:node microsoftads:CampaignManagementSharedListBaseShape ; sh:class microsoftads:CampaignManagementSharedListBase ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddListItemsToSharedListRequest/sharedEntityScope> ;
    sh:name "shared entity scope" ;
    sh:description "Indicates whether the shared entity is available at the ad account (Account) or manager account (Customer) level. This element is optional and defaults to Account scope. The ad account scope is only applicable for negative keyword lists. Set this element to Customer to add negative sites to a website exclusion list in your manager account (customer) shared library." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Account" "Customer" ) ;
  ] .

# Shape for Campaign Management Shared List Item
microsoftads:CampaignManagementSharedListItemShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementSharedListItem ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSharedListItem/type> ;
    sh:name "type" ;
    sh:description "The type of the shared list item. For more information about shared list item types, see Remarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSharedListItem/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. Forward compatibility changes will be noted here in future releases. There are currently no forward compatibility changes for this object." ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSharedListItem/id> ;
    sh:name "id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSharedListItem/text> ;
    sh:name "text" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSharedListItem/matchType> ;
    sh:name "match type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Exact" "Phrase" "Broad" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSharedListItem/url> ;
    sh:name "url" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSharedListItem/brandId> ;
    sh:name "brand id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Shared List
microsoftads:CampaignManagementSharedListShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementSharedList ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSharedList/itemCount> ;
    sh:name "item count" ;
    sh:description "The number of SharedListItem objects that are added to this shared list. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSharedList/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier of the shared entity. Add: Read-only Update: Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSharedList/name> ;
    sh:name "name" ;
    sh:description "The name of the shared entity. The maximum string length is 255. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSharedList/type> ;
    sh:name "type" ;
    sh:description "The type of the shared entity. This value is NegativeKeywordList when you retrieve a NegativeKeywordList. This value is PlacementExclusionList when you retrieve a PlacementExclusionList. This value is AccountNegativeKeywordList when you retrieve an AccountNegativeKeywordList. For more information about shared entity types, see SharedEntity Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSharedList/associationCount> ;
    sh:name "association count" ;
    sh:description "The number of active associations between this shared entity and another entity such as campaign or ad account. For a NegativeKeywordList, the maximum number of active associations between the negative keyword list and campaign is 20. For a PlacementExclusionList, the maximum number of active associations between the website exclusion list and ad account is undefined. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSharedList/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. Forward compatibility changes will be noted here in future releases. There are currently no forward compatibility changes for this object." ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Add List Items To Shared List Response
microsoftads:CampaignManagementAddListItemsToSharedListResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddListItemsToSharedListResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddListItemsToSharedListResponse/listItemIds> ;
    sh:name "list item ids" ;
    sh:description "A list of long values that represents the identifiers for the list items that were added. Items of the list may be returned as null. For each list index where a list item was not added, the corresponding element will be null." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddListItemsToSharedListResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Add Media Request
microsoftads:CampaignManagementAddMediaRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddMediaRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddMediaRequest/accountId> ;
    sh:name "account id" ;
    sh:description "The identifier of the account that owns the asset library." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddMediaRequest/media> ;
    sh:name "media" ;
    sh:description "An array of Media to add to the account's asset library. You can add a maximum of 10 media in a single call." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementImageShape ; sh:class microsoftads:CampaignManagementImage ]
      [ sh:node microsoftads:CampaignManagementMediaShape ; sh:class microsoftads:CampaignManagementMedia ]
      [ sh:node microsoftads:CampaignManagementMediaBaseShape ; sh:class microsoftads:CampaignManagementMediaBase ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Media
microsoftads:CampaignManagementMediaShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementMedia ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementMedia/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier of the media. Add: Read-only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementMedia/mediaType> ;
    sh:name "media type" ;
    sh:description "The type of media to add to the media library. The recommended sub type is \"GenericImage\". For media that will be used with an ImageAdExtension, the supported values are GenericImage, Image16x9, Image15x10, Image4x3, and Image12x10. For media that will be used with a ResponsiveAd, the supported values are GenericImage, Image1x1, Image191x100, and Image4x1. For more information about supported aspect ratios, see the Image Data Object Remarks. Add: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementMedia/type> ;
    sh:name "type" ;
    sh:description "The media type. For more information about media types, see Remarks below. Add: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementMedia/text> ;
    sh:name "text" ;
    sh:description "The media text." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementMedia/data> ;
    sh:name "data" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Add Media Response
microsoftads:CampaignManagementAddMediaResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddMediaResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddMediaResponse/mediaIds> ;
    sh:name "media ids" ;
    sh:description "The identifiers of the media that you added to the library. You use the identifier to set the appropriate media ID field in the ImageAdExtension or ResponsiveAd object. You can get the media indentifiers for image ad extensions and responsive ads with the GetMediaMetaDataByAccountId and GetMediaMetaDataByIds operations." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Campaign Management Add Negative Keywords To Entities Request
microsoftads:CampaignManagementAddNegativeKeywordsToEntitiesRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddNegativeKeywordsToEntitiesRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddNegativeKeywordsToEntitiesRequest/entityNegativeKeywords> ;
    sh:name "entity negative keywords" ;
    sh:description "An array of negative keyword with associated entity such as a campaign or ad group. The specified negative keywords will be appended to any existing negative keywords if the limit of 20,000 negative keywords per associated campaign or ad group would not be exceeded. The EntityType specified within each EntityNegativeKeyword must be set to the same value. This array can contain a maximum of 1 EntityNegativeKeyword element, which contains up to 20,000 negative keywords." ;
    sh:node microsoftads:CampaignManagementEntityNegativeKeywordShape ;
    sh:class microsoftads:CampaignManagementEntityNegativeKeyword ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Entity Negative Keyword
microsoftads:CampaignManagementEntityNegativeKeywordShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementEntityNegativeKeyword ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEntityNegativeKeyword/entityId> ;
    sh:name "entity id" ;
    sh:description "The system-generated identifier of a campaign or ad group that is associated with the negative keywords." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEntityNegativeKeyword/entityType> ;
    sh:name "entity type" ;
    sh:description "The type of entity such as a campaign that is associated with the negative keywords. The possible values are AdGroup and Campaign." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEntityNegativeKeyword/negativeKeywords> ;
    sh:name "negative keywords" ;
    sh:description "An array of negative keywords that are associated with the corresponding campaign or ad group." ;
    sh:node microsoftads:CampaignManagementNegativeKeywordShape ;
    sh:class microsoftads:CampaignManagementNegativeKeyword ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Negative Keyword
microsoftads:CampaignManagementNegativeKeywordShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementNegativeKeyword ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementNegativeKeyword/type> ;
    sh:name "type" ;
    sh:description "The type of the shared list item. This value is NegativeKeyword when you retrieve a negative keyword. For more information about shared list item types, see SharedListItem Data Object Remarks. Add: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementNegativeKeyword/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. Forward compatibility changes will be noted here in future releases. There are currently no forward compatibility changes for this object." ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementNegativeKeyword/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier of the negative keyword. Add: Read-only Delete: Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementNegativeKeyword/text> ;
    sh:name "text" ;
    sh:description "The negative keyword text. The text can contain a maximum of 100 characters. Add: Required Delete: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementNegativeKeyword/matchType> ;
    sh:name "match type" ;
    sh:description "The type of match to compare the negative keyword and the user's search term. The supported values for a negative keyword are Exact and Phrase. Add: Required Delete: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Exact" "Phrase" "Broad" ) ;
  ] .

# Shape for Campaign Management Add Negative Keywords To Entities Response
microsoftads:CampaignManagementAddNegativeKeywordsToEntitiesResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddNegativeKeywordsToEntitiesResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddNegativeKeywordsToEntitiesResponse/nestedPartialErrors> ;
    sh:name "nested partial errors" ;
    sh:description "An array of BatchErrorCollection objects that contain details for any negative keyword that were not successfully added. The top level error within each BatchErrorCollection object corresponds to potential campaign or ad group errors. The nested list of BatchError objects would include any errors specific to the negative keywords that you attempted to add to the campaign or ad group. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorCollectionShape ; sh:class microsoftads:CampaignManagementBatchErrorCollection ]
      [ sh:node microsoftads:CampaignManagementBatchErrorCollectionBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorCollectionBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorCollectionShape ; sh:class microsoftads:CampaignManagementEditorialErrorCollection ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddNegativeKeywordsToEntitiesResponse/negativeKeywordIds> ;
    sh:name "negative keyword ids" ;
    sh:description "A list of IdCollection corresponding to the negative keywords that were added for the corresponding entity. Within an IdCollection, the list of Ids corresponds directly to the list of negative keywords in the request. Items of the list may be returned as null. For each list index where a negative keyword was not added, the corresponding element will be null." ;
    sh:node microsoftads:CampaignManagementIdCollectionShape ;
    sh:class microsoftads:CampaignManagementIdCollection ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Id Collection
microsoftads:CampaignManagementIdCollectionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementIdCollection ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementIdCollection/ids> ;
    sh:name "ids" ;
    sh:description "A list of entity identifiers." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Campaign Management Add New Customer Acquisition Goals Request
microsoftads:CampaignManagementAddNewCustomerAcquisitionGoalsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddNewCustomerAcquisitionGoalsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddNewCustomerAcquisitionGoalsRequest/newCustomerAcquisitionGoals> ;
    sh:name "new customer acquisition goals" ;
    sh:description "Reserved." ;
    sh:node microsoftads:CampaignManagementNewCustomerAcquisitionGoalShape ;
    sh:class microsoftads:CampaignManagementNewCustomerAcquisitionGoal ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management New Customer Acquisition Goal
microsoftads:CampaignManagementNewCustomerAcquisitionGoalShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementNewCustomerAcquisitionGoal ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementNewCustomerAcquisitionGoal/id> ;
    sh:name "id" ;
    sh:description "Reserved." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementNewCustomerAcquisitionGoal/additionalValue> ;
    sh:name "additional value" ;
    sh:description "Reserved." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementNewCustomerAcquisitionGoal/audiences> ;
    sh:name "audiences" ;
    sh:description "Reserved." ;
    sh:node microsoftads:CampaignManagementAudienceIdNameShape ;
    sh:class microsoftads:CampaignManagementAudienceIdName ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Audience Id Name
microsoftads:CampaignManagementAudienceIdNameShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAudienceIdName ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudienceIdName/id> ;
    sh:name "id" ;
    sh:description "Reserved." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudienceIdName/name> ;
    sh:name "name" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Add New Customer Acquisition Goals Response
microsoftads:CampaignManagementAddNewCustomerAcquisitionGoalsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddNewCustomerAcquisitionGoalsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddNewCustomerAcquisitionGoalsResponse/newCustomerAcquisitionGoalIds> ;
    sh:name "new customer acquisition goal ids" ;
    sh:description "Reserved." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddNewCustomerAcquisitionGoalsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "Reserved." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Add Seasonality Adjustments Request
microsoftads:CampaignManagementAddSeasonalityAdjustmentsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddSeasonalityAdjustmentsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddSeasonalityAdjustmentsRequest/accountId> ;
    sh:name "account id" ;
    sh:description "The account ID." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddSeasonalityAdjustmentsRequest/seasonalityAdjustments> ;
    sh:name "seasonality adjustments" ;
    sh:description "The seasonality adjustments to add." ;
    sh:node microsoftads:CampaignManagementSeasonalityAdjustmentShape ;
    sh:class microsoftads:CampaignManagementSeasonalityAdjustment ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Seasonality Adjustment
microsoftads:CampaignManagementSeasonalityAdjustmentShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementSeasonalityAdjustment ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSeasonalityAdjustment/id> ;
    sh:name "id" ;
    sh:description "The seasonality adjustment ID." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSeasonalityAdjustment/name> ;
    sh:name "name" ;
    sh:description "The name of the seasonality adjustment." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSeasonalityAdjustment/description> ;
    sh:name "description" ;
    sh:description "A description for the seasonality adjustment." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSeasonalityAdjustment/adjustmentPercentage> ;
    sh:name "adjustment percentage" ;
    sh:description "The percentage of the conversion rate adjustment." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSeasonalityAdjustment/startDate> ;
    sh:name "start date" ;
    sh:description "The start date. Important: The value must be in your account time zone. This differs from the time zone options when you upload offline conversions in the Microsoft Advertising web application. For information about the format of the date and time, see the dateTime entry in Primitive XML Data Types." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSeasonalityAdjustment/endDate> ;
    sh:name "end date" ;
    sh:description "The end date. Important: The value must be in your account time zone. This differs from the time zone options when you upload offline conversions in the Microsoft Advertising web application. For information about the format of the date and time, see the dateTime entry in Primitive XML Data Types." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSeasonalityAdjustment/deviceTypeFilter> ;
    sh:name "device type filter" ;
    sh:description "Make the seasonality adjustment to these device types." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSeasonalityAdjustment/campaignTypeFilter> ;
    sh:name "campaign type filter" ;
    sh:description "Make the seasonality adjustment to these campaign types." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSeasonalityAdjustment/campaignAssociations> ;
    sh:name "campaign associations" ;
    sh:description "Make the seasonality adjustment to these campaigns." ;
    sh:node microsoftads:CampaignManagementCampaignAssociationShape ;
    sh:class microsoftads:CampaignManagementCampaignAssociation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Add Seasonality Adjustments Response
microsoftads:CampaignManagementAddSeasonalityAdjustmentsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddSeasonalityAdjustmentsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddSeasonalityAdjustmentsResponse/seasonalityAdjustmentIds> ;
    sh:name "seasonality adjustment ids" ;
    sh:description "The seasonality adjustment IDs." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddSeasonalityAdjustmentsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array BatchError that contains details for any request items that were not successful. The list of errors does not correspond directly to the list of items in the request. The list can be empty if there were no errors, or it can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Add Shared Entity Request
microsoftads:CampaignManagementAddSharedEntityRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddSharedEntityRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddSharedEntityRequest/sharedEntity> ;
    sh:name "shared entity" ;
    sh:description "The negative keyword list or website exclusion list. If the SharedEntityScope is either empty or set to Account, and if the SharedEntity is a NegativeKeywordList, then the ListItems must be negative keyword (NegativeKeyword) objects. If the SharedEntityScope is set to Customer, and if the SharedEntity is a PlacementExclusionList, then the ListItems must be negative site (NegativeSite) objects." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementAccountContentNegativeKeywordListShape ; sh:class microsoftads:CampaignManagementAccountContentNegativeKeywordList ]
      [ sh:node microsoftads:CampaignManagementAccountNegativeKeywordListShape ; sh:class microsoftads:CampaignManagementAccountNegativeKeywordList ]
      [ sh:node microsoftads:CampaignManagementAccountPlacementExclusionListShape ; sh:class microsoftads:CampaignManagementAccountPlacementExclusionList ]
      [ sh:node microsoftads:CampaignManagementAccountPlacementInclusionListShape ; sh:class microsoftads:CampaignManagementAccountPlacementInclusionList ]
      [ sh:node microsoftads:CampaignManagementBrandListShape ; sh:class microsoftads:CampaignManagementBrandList ]
      [ sh:node microsoftads:CampaignManagementNegativeKeywordListShape ; sh:class microsoftads:CampaignManagementNegativeKeywordList ]
      [ sh:node microsoftads:CampaignManagementPlacementExclusionListShape ; sh:class microsoftads:CampaignManagementPlacementExclusionList ]
      [ sh:node microsoftads:CampaignManagementSharedEntityShape ; sh:class microsoftads:CampaignManagementSharedEntity ]
      [ sh:node microsoftads:CampaignManagementSharedListShape ; sh:class microsoftads:CampaignManagementSharedList ]
      [ sh:node microsoftads:CampaignManagementSharedListBaseShape ; sh:class microsoftads:CampaignManagementSharedListBase ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddSharedEntityRequest/listItems> ;
    sh:name "list items" ;
    sh:description "The negative keywords (5,000 total maximum) to include with the new negative keyword list, or negative sites (10,000 total maximum) to include with the new website exclusion list. The list can contain a maximum of 5,000 items per service call. To add more list items, call the AddListItemsToSharedList operation." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBrandItemShape ; sh:class microsoftads:CampaignManagementBrandItem ]
      [ sh:node microsoftads:CampaignManagementNegativeKeywordShape ; sh:class microsoftads:CampaignManagementNegativeKeyword ]
      [ sh:node microsoftads:CampaignManagementNegativeSiteShape ; sh:class microsoftads:CampaignManagementNegativeSite ]
      [ sh:node microsoftads:CampaignManagementSharedListItemShape ; sh:class microsoftads:CampaignManagementSharedListItem ]
      [ sh:node microsoftads:CampaignManagementSharedListItemBaseShape ; sh:class microsoftads:CampaignManagementSharedListItemBase ]
      [ sh:node microsoftads:CampaignManagementSiteShape ; sh:class microsoftads:CampaignManagementSite ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddSharedEntityRequest/sharedEntityScope> ;
    sh:name "shared entity scope" ;
    sh:description "Indicates whether the shared entity is available at the ad account (Account) or manager account (Customer) level. This element is optional and defaults to Account scope. The ad account scope is only applicable for negative keyword lists. Set this element to Customer to add a website exclusion list in your manager account (customer) shared library." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Account" "Customer" ) ;
  ] .

# Shape for Campaign Management Shared Entity
microsoftads:CampaignManagementSharedEntityShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementSharedEntity .

# Shape for Campaign Management Add Shared Entity Response
microsoftads:CampaignManagementAddSharedEntityResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddSharedEntityResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddSharedEntityResponse/sharedEntityId> ;
    sh:name "shared entity id" ;
    sh:description "The identifier for the shared entity that was added." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddSharedEntityResponse/listItemIds> ;
    sh:name "list item ids" ;
    sh:description "A list of long values that represents the identifiers for the list items that were added. Items of the list may be returned as null. For each list index where a list item was not added, the corresponding element will be null." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddSharedEntityResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Add Uet Tags Request
microsoftads:CampaignManagementAddUetTagsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddUetTagsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddUetTagsRequest/uetTags> ;
    sh:name "uet tags" ;
    sh:description "An array of UetTag objects to add to the customer's shared UET tag library. The customer is determined by the required CustomerId header element. You can add a maximum of 100 UET tags in a single call, although please note that you can use one UET tag with all of your conversion goals and remarketing lists. Before you create multiple UET tags, see Reasons for creating more than one UET tag. If the call is successful, the tracking script that you should add to your website is included in a corresponding UetTag within the response message." ;
    sh:node microsoftads:CampaignManagementUetTagShape ;
    sh:class microsoftads:CampaignManagementUetTag ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Uet Tag
microsoftads:CampaignManagementUetTagShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUetTag ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUetTag/name> ;
    sh:name "name" ;
    sh:description "The UET tag name. The maximum length of the name is 100, and the name must be unique among all UET tags belonging to the same customer. Add: Required Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUetTag/description> ;
    sh:name "description" ;
    sh:description "Text to help you identify the UET tag. We recommend that you set this to the related website page name or URL. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUetTag/trackingScript> ;
    sh:name "tracking script" ;
    sh:description "The tracking script that you can add to your website to allow Microsoft Advertising to collect actions people take on your website. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUetTag/trackingNoScript> ;
    sh:name "tracking no script" ;
    sh:description "If your website doesn't support JavaScript, you can use this Non-JavaScript representation of the UET tag. If you use Non-JavaScript, you can't track custom events or variable revenue. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUetTag/trackingStatus> ;
    sh:name "tracking status" ;
    sh:description "The system-determined status values of a UET tag, for example the system sets the status to Unverified if the UET tag has not yet been verified. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unverified" "Active" "Inactive" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUetTag/customerShare> ;
    sh:name "customer share" ;
    sh:description "Determines the list of customers that share the UET tag. Details include UET tag to audience association counts. Shared UET tags and audiences are only available for pilot customers. For an overview of sharing audiences and UET tags in a customer hierarchy, see the Share Audiences and UET Tags technical guide. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. Set this element to null or empty to retain any existing customer account shares. To remove all customer account shares, set the CustomerAccountShares element of the CustomerShare object to null or empty. To remove a subset of customer account shares, specify the customer account shares that you want to keep in the CustomerAccountShares element of the CustomerShare object." ;
    sh:node microsoftads:CampaignManagementCustomerShareShape ;
    sh:class microsoftads:CampaignManagementCustomerShare ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUetTag/industry> ;
    sh:name "industry" ;
    sh:description "The industry of the website associated with your UET tag. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "AdultGambling" "Autos" "B2BServices" "B2CServices" "CPG" "CareersEducation" "CommunitySocialCharitableGroups" "Entertainment" "FinancialServicesInsurance" "Government" "HealthWellness" "RealEstate" "RestaurantsFood" "Retail" "ScienceSocialScienceOthers" "TechnologyTelecommunications" "TravelTransportation" "Other" "Unknown" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUetTag/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier of the UET tag. Add: Read-only Update: Required and Read-only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Add Uet Tags Response
microsoftads:CampaignManagementAddUetTagsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddUetTagsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddUetTagsResponse/uetTags> ;
    sh:name "uet tags" ;
    sh:description "An array of UetTag objects to add to the customer's shared UET tag library. The customer is determined by the required CustomerId header element. You can add a maximum of 100 UET tags in a single call, although please note that you can use one UET tag with all of your conversion goals and remarketing lists. Before you create multiple UET tags, see Reasons for creating more than one UET tag. If the call is successful, the tracking script that you should add to your website is included in a corresponding UetTag within the response message." ;
    sh:node microsoftads:CampaignManagementUetTagShape ;
    sh:class microsoftads:CampaignManagementUetTag ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddUetTagsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Add Videos Request
microsoftads:CampaignManagementAddVideosRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddVideosRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddVideosRequest/videos> ;
    sh:name "videos" ;
    sh:description "The list of videos to add to the account. The maximum size of the list is 100 items per service request." ;
    sh:node microsoftads:CampaignManagementVideoShape ;
    sh:class microsoftads:CampaignManagementVideo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Video
microsoftads:CampaignManagementVideoShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementVideo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideo/description> ;
    sh:name "description" ;
    sh:description "The description of the video asset. Add: Supported Update: Supported" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideo/thumbnailUrl> ;
    sh:name "thumbnail url" ;
    sh:description "The thumbnail URL of the video asset. Add: Unsupported Update: Unsupported" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideo/sourceUrl> ;
    sh:name "source url" ;
    sh:description "The original URL of the video. Note: SourceUrl must be a direct download URL. Add: Supported and Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideo/url> ;
    sh:name "url" ;
    sh:description "The URL where the video is hosted. Note: URL is reserved for internal usage. Add: Supported Update: Supported" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideo/aspectRatio> ;
    sh:name "aspect ratio" ;
    sh:description "The video's aspect ratio. Possible values are 16:9, 9:16, 4:3, 3:4, 1:1, 5:4, and 4:5." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideo/durationInMilliseconds> ;
    sh:name "duration in milliseconds" ;
    sh:description "The duration in milliseconds of the video asset. Add: Unsupported Update: Unsupported" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideo/status> ;
    sh:name "status" ;
    sh:description "The status of the video asset. The status can be Draft, Active, Deleted or Failed. Add: Unsupported Update: Supported" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideo/createdDateTimeInUTC> ;
    sh:name "created date time in utc" ;
    sh:description "The date and time the video was created, in Coordinated Universal Time." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideo/modifiedDateTimeInUTC> ;
    sh:name "modified date time in utc" ;
    sh:description "The date and time the video was last modified, in Coordinated Universal Time." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideo/failureCode> ;
    sh:name "failure code" ;
    sh:description "Read the description for each possible error code below. AssetDataInvalid: The file downloaded from the URL is not a video. VideoDownloadError: The provided URL is not accessible. AssetDataInvalidWidth: The video frame width is less than 120 pixels. AssetDataInvalidHeight: The video frame height is less than 120 pixels. InvalidDuration: The video duration is less than 6 seconds. VideoOverweight: The video file size is greater than 2 GB. VideoTranscodingError: A general failure code that represents a transcoding issue. This is controlled by Azure Media Service. Learn more about encoding video and JobErrorCode." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideo/id> ;
    sh:name "id" ;
    sh:description "The identifier of the video." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Add Videos Response
microsoftads:CampaignManagementAddVideosResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAddVideosResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddVideosResponse/videoIds> ;
    sh:name "video ids" ;
    sh:description "A list of unique system identifiers corresponding to the videos that were added. The list of identifiers corresponds directly to the list of videos in the request. Items of the list may be returned as null. For each list index where a video was not added, the corresponding element will be null." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAddVideosResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Ad Extension Association
microsoftads:CampaignManagementAdExtensionAssociationShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAdExtensionAssociation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtensionAssociation/entityId> ;
    sh:name "entity id" ;
    sh:description "The identifier of an entity associated with the ad extension. Add: Required Update: Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtensionAssociation/associationType> ;
    sh:name "association type" ;
    sh:description "The type of entity associated with the ad extension. Add: Required Update: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Campaign" "AdGroup" "Account" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtensionAssociation/adExtension> ;
    sh:name "ad extension" ;
    sh:description "The ad extension associated with a supported entity. Add: Required Update: Required" ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementActionAdExtensionShape ; sh:class microsoftads:CampaignManagementActionAdExtension ]
      [ sh:node microsoftads:CampaignManagementAdExtensionShape ; sh:class microsoftads:CampaignManagementAdExtension ]
      [ sh:node microsoftads:CampaignManagementAdExtensionBaseShape ; sh:class microsoftads:CampaignManagementAdExtensionBase ]
      [ sh:node microsoftads:CampaignManagementAppAdExtensionShape ; sh:class microsoftads:CampaignManagementAppAdExtension ]
      [ sh:node microsoftads:CampaignManagementCallAdExtensionShape ; sh:class microsoftads:CampaignManagementCallAdExtension ]
      [ sh:node microsoftads:CampaignManagementCalloutAdExtensionShape ; sh:class microsoftads:CampaignManagementCalloutAdExtension ]
      [ sh:node microsoftads:CampaignManagementDataTableAdExtensionShape ; sh:class microsoftads:CampaignManagementDataTableAdExtension ]
      [ sh:node microsoftads:CampaignManagementDisclaimerAdExtensionShape ; sh:class microsoftads:CampaignManagementDisclaimerAdExtension ]
      [ sh:node microsoftads:CampaignManagementFilterLinkAdExtensionShape ; sh:class microsoftads:CampaignManagementFilterLinkAdExtension ]
      [ sh:node microsoftads:CampaignManagementFlyerAdExtensionShape ; sh:class microsoftads:CampaignManagementFlyerAdExtension ]
      [ sh:node microsoftads:CampaignManagementImageAdExtensionShape ; sh:class microsoftads:CampaignManagementImageAdExtension ]
      [ sh:node microsoftads:CampaignManagementLeadFormAdExtensionShape ; sh:class microsoftads:CampaignManagementLeadFormAdExtension ]
      [ sh:node microsoftads:CampaignManagementLocationAdExtensionShape ; sh:class microsoftads:CampaignManagementLocationAdExtension ]
      [ sh:node microsoftads:CampaignManagementLogoAdExtensionShape ; sh:class microsoftads:CampaignManagementLogoAdExtension ]
      [ sh:node microsoftads:CampaignManagementNewsAdExtensionShape ; sh:class microsoftads:CampaignManagementNewsAdExtension ]
      [ sh:node microsoftads:CampaignManagementPriceAdExtensionShape ; sh:class microsoftads:CampaignManagementPriceAdExtension ]
      [ sh:node microsoftads:CampaignManagementPromotionAdExtensionShape ; sh:class microsoftads:CampaignManagementPromotionAdExtension ]
      [ sh:node microsoftads:CampaignManagementReviewAdExtensionShape ; sh:class microsoftads:CampaignManagementReviewAdExtension ]
      [ sh:node microsoftads:CampaignManagementSitelinkAdExtensionShape ; sh:class microsoftads:CampaignManagementSitelinkAdExtension ]
      [ sh:node microsoftads:CampaignManagementStructuredSnippetAdExtensionShape ; sh:class microsoftads:CampaignManagementStructuredSnippetAdExtension ]
      [ sh:node microsoftads:CampaignManagementVideoAdExtensionShape ; sh:class microsoftads:CampaignManagementVideoAdExtension ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtensionAssociation/editorialStatus> ;
    sh:name "editorial status" ;
    sh:description "The editorial status of the ad extension. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Disapproved" "Inactive" "ActiveLimited" ) ;
  ] .

# Shape for Campaign Management Ad Extension Association Collection
microsoftads:CampaignManagementAdExtensionAssociationCollectionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAdExtensionAssociationCollection ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtensionAssociationCollection/adExtensionAssociations> ;
    sh:name "ad extension associations" ;
    sh:description "An array of objects that associate an ad extension and its editorial status to an account, campaign, or ad group. Add: Required Update: Required" ;
    sh:node microsoftads:CampaignManagementAdExtensionAssociationShape ;
    sh:class microsoftads:CampaignManagementAdExtensionAssociation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Ad Extension Base
microsoftads:CampaignManagementAdExtensionBaseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAdExtensionBase ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtensionBase/status> ;
    sh:name "status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Deleted" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtensionBase/scheduling> ;
    sh:name "scheduling" ;
    sh:node microsoftads:CampaignManagementScheduleShape ;
    sh:class microsoftads:CampaignManagementSchedule ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtensionBase/devicePreference> ;
    sh:name "device preference" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtensionBase/id> ;
    sh:name "id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtensionBase/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtensionBase/version> ;
    sh:name "version" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Ad Extension Editorial Reason
microsoftads:CampaignManagementAdExtensionEditorialReasonShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAdExtensionEditorialReason ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtensionEditorialReason/reasonCode> ;
    sh:name "reason code" ;
    sh:description "A code that identifies the reason for the failure. For a list of possible reason codes, see Editorial Reason Codes." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtensionEditorialReason/location> ;
    sh:name "location" ;
    sh:description "The component of the ad extension that failed editorial review." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtensionEditorialReason/term> ;
    sh:name "term" ;
    sh:description "The term that failed editorial review. This element will not be set if a combination of terms caused the failure or if the failure was based on a policy violation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtensionEditorialReason/publisherCountries> ;
    sh:name "publisher countries" ;
    sh:description "The list of publisher countries or regions whose editorial guidelines do not allow the specified term." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Campaign Management Ad Extension Editorial Reason Collection
microsoftads:CampaignManagementAdExtensionEditorialReasonCollectionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAdExtensionEditorialReasonCollection ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtensionEditorialReasonCollection/adExtensionId> ;
    sh:name "ad extension id" ;
    sh:description "The identifier of the ad extension that failed editorial review." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtensionEditorialReasonCollection/reasons> ;
    sh:name "reasons" ;
    sh:description "A list of AdExtensionEditorialReason objects that identify the component of an ad extension that failed editorial review, and the reason for the failure." ;
    sh:node microsoftads:CampaignManagementAdExtensionEditorialReasonShape ;
    sh:class microsoftads:CampaignManagementAdExtensionEditorialReason ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Ad Extension Id To Entity Id Association
microsoftads:CampaignManagementAdExtensionIdToEntityIdAssociationShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAdExtensionIdToEntityIdAssociation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtensionIdToEntityIdAssociation/adExtensionId> ;
    sh:name "ad extension id" ;
    sh:description "The system-generated identifier of the ad extension." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdExtensionIdToEntityIdAssociation/entityId> ;
    sh:name "entity id" ;
    sh:description "The identifier of an entity associated with the ad extension." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Ad Group Criterion Action
microsoftads:CampaignManagementAdGroupCriterionActionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAdGroupCriterionAction ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdGroupCriterionAction/action> ;
    sh:name "action" ;
    sh:description "The action to be applied for the AdGroupCriterion." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Add" "Delete" "Update" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdGroupCriterionAction/adGroupCriterion> ;
    sh:name "ad group criterion" ;
    sh:description "The BiddableAdGroupCriterion or NegativeAdGroupCriterion, either of which must contain a ProductPartition criterion. For the Update action, only the CriterionBid and DestinationUrl elements of the AdGroupCriterion are mutable. To update the order or structure of the product group, you cannot use the update action. You must delete ad group criterions and then add new product partitions instead." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementAdGroupCriterionShape ; sh:class microsoftads:CampaignManagementAdGroupCriterion ]
      [ sh:node microsoftads:CampaignManagementAdGroupCriterionBaseShape ; sh:class microsoftads:CampaignManagementAdGroupCriterionBase ]
      [ sh:node microsoftads:CampaignManagementBiddableAdGroupCriterionShape ; sh:class microsoftads:CampaignManagementBiddableAdGroupCriterion ]
      [ sh:node microsoftads:CampaignManagementNegativeAdGroupCriterionShape ; sh:class microsoftads:CampaignManagementNegativeAdGroupCriterion ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Ad Group Criterion Base
microsoftads:CampaignManagementAdGroupCriterionBaseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAdGroupCriterionBase ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdGroupCriterionBase/adGroupId> ;
    sh:name "ad group id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdGroupCriterionBase/status> ;
    sh:name "status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Paused" "Deleted" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdGroupCriterionBase/criterion> ;
    sh:name "criterion" ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementAgeCriterionShape ; sh:class microsoftads:CampaignManagementAgeCriterion ]
      [ sh:node microsoftads:CampaignManagementAudienceCriterionShape ; sh:class microsoftads:CampaignManagementAudienceCriterion ]
      [ sh:node microsoftads:CampaignManagementChannelPlacementCriterionShape ; sh:class microsoftads:CampaignManagementChannelPlacementCriterion ]
      [ sh:node microsoftads:CampaignManagementCriterionShape ; sh:class microsoftads:CampaignManagementCriterion ]
      [ sh:node microsoftads:CampaignManagementCriterionBaseShape ; sh:class microsoftads:CampaignManagementCriterionBase ]
      [ sh:node microsoftads:CampaignManagementCustomLinkedInCriterionShape ; sh:class microsoftads:CampaignManagementCustomLinkedInCriterion ]
      [ sh:node microsoftads:CampaignManagementDayTimeCriterionShape ; sh:class microsoftads:CampaignManagementDayTimeCriterion ]
      [ sh:node microsoftads:CampaignManagementDealCriterionShape ; sh:class microsoftads:CampaignManagementDealCriterion ]
      [ sh:node microsoftads:CampaignManagementDeviceCriterionShape ; sh:class microsoftads:CampaignManagementDeviceCriterion ]
      [ sh:node microsoftads:CampaignManagementGenderCriterionShape ; sh:class microsoftads:CampaignManagementGenderCriterion ]
      [ sh:node microsoftads:CampaignManagementGenreCriterionShape ; sh:class microsoftads:CampaignManagementGenreCriterion ]
      [ sh:node microsoftads:CampaignManagementHotelAdvanceBookingWindowCriterionShape ; sh:class microsoftads:CampaignManagementHotelAdvanceBookingWindowCriterion ]
      [ sh:node microsoftads:CampaignManagementHotelCheckInDateCriterionShape ; sh:class microsoftads:CampaignManagementHotelCheckInDateCriterion ]
      [ sh:node microsoftads:CampaignManagementHotelCheckInDayCriterionShape ; sh:class microsoftads:CampaignManagementHotelCheckInDayCriterion ]
      [ sh:node microsoftads:CampaignManagementHotelDateSelectionTypeCriterionShape ; sh:class microsoftads:CampaignManagementHotelDateSelectionTypeCriterion ]
      [ sh:node microsoftads:CampaignManagementHotelGroupShape ; sh:class microsoftads:CampaignManagementHotelGroup ]
      [ sh:node microsoftads:CampaignManagementHotelLengthOfStayCriterionShape ; sh:class microsoftads:CampaignManagementHotelLengthOfStayCriterion ]
      [ sh:node microsoftads:CampaignManagementLocationCriterionShape ; sh:class microsoftads:CampaignManagementLocationCriterion ]
      [ sh:node microsoftads:CampaignManagementLocationIntentCriterionShape ; sh:class microsoftads:CampaignManagementLocationIntentCriterion ]
      [ sh:node microsoftads:CampaignManagementPlacementCriterionShape ; sh:class microsoftads:CampaignManagementPlacementCriterion ]
      [ sh:node microsoftads:CampaignManagementProductPartitionShape ; sh:class microsoftads:CampaignManagementProductPartition ]
      [ sh:node microsoftads:CampaignManagementProductScopeShape ; sh:class microsoftads:CampaignManagementProductScope ]
      [ sh:node microsoftads:CampaignManagementProfileCriterionShape ; sh:class microsoftads:CampaignManagementProfileCriterion ]
      [ sh:node microsoftads:CampaignManagementRadiusCriterionShape ; sh:class microsoftads:CampaignManagementRadiusCriterion ]
      [ sh:node microsoftads:CampaignManagementStoreCriterionShape ; sh:class microsoftads:CampaignManagementStoreCriterion ]
      [ sh:node microsoftads:CampaignManagementTopicCriterionShape ; sh:class microsoftads:CampaignManagementTopicCriterion ]
      [ sh:node microsoftads:CampaignManagementWebpageShape ; sh:class microsoftads:CampaignManagementWebpage ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdGroupCriterionBase/id> ;
    sh:name "id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdGroupCriterionBase/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Ad Group Negative Sites
microsoftads:CampaignManagementAdGroupNegativeSitesShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAdGroupNegativeSites ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdGroupNegativeSites/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "The identifier of the ad group to which the negative site URLs belong." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdGroupNegativeSites/negativeSites> ;
    sh:name "negative sites" ;
    sh:description "A list of URLs of the websites where you do not want your ads displayed. This element can include a maximum of 2,500 URLs. Each URL must specify the domain name e.g., contoso.com which can include up to three subdomains and two subdirectories. The subdomain count includes the www prefix. For example one.two.three.contoso.com/1/2, www.two.three.contoso.com/1/2, and one.two.contoso.co.uk/1/2 are valid URLs, whereas one.two.three.contoso.co.uk/1/2 (too many subdomains) and one.two.three.contoso.com/1/2/3 (too many subdirectories) are not. Duplicate URLs in the list are not added. You can only exclude websites for syndicated search websites. The ad group's network must be set to OwnedAndOperatedAndSyndicatedSearch. For more information about network distribution, see Network. Note: You can exclude Yahoo and Microsoft sites (e.g., MSN.com) from Microsoft Audience Network (MSAN) ads, but not search ads. Negative site URLs specified at the ad group level are used instead of any negative site URLs specified at the campaign level. If you associate any website exclusion lists (Placement Exclusion List or Account Placement Exclusion List) with an ad account, the list of negative sites are used in addition to the campaign negative sites or ad group negative sites. To remove ad group negative site URLs, set this element to null." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Campaign Management Ad Recommendation Customized Property
microsoftads:CampaignManagementAdRecommendationCustomizedPropertyShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAdRecommendationCustomizedProperty ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdRecommendationCustomizedProperty/assetTypeName> ;
    sh:name "asset type name" ;
    sh:description "The asset type name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdRecommendationCustomizedProperty/propertyName> ;
    sh:name "property name" ;
    sh:description "The property name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdRecommendationCustomizedProperty/propertyValue> ;
    sh:name "property value" ;
    sh:description "The property value." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Ad Recommendation Image Asset Property
microsoftads:CampaignManagementAdRecommendationImageAssetPropertyShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAdRecommendationImageAssetProperty ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdRecommendationImageAssetProperty/imageField> ;
    sh:name "image field" ;
    sh:description "The image field for the ad recommendation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Image" "Logo" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdRecommendationImageAssetProperty/imageUrl> ;
    sh:name "image url" ;
    sh:description "The URL of the image." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdRecommendationImageAssetProperty/cropX> ;
    sh:name "crop x" ;
    sh:description "Where to crop along the x-axis in pixels." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdRecommendationImageAssetProperty/cropY> ;
    sh:name "crop y" ;
    sh:description "Where to crop along the y-axis in pixels." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdRecommendationImageAssetProperty/cropWidth> ;
    sh:name "crop width" ;
    sh:description "The crop width in pixels." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdRecommendationImageAssetProperty/cropHeight> ;
    sh:name "crop height" ;
    sh:description "The crop height in pixels." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Ad Recommendation Image Refine Operation
microsoftads:CampaignManagementAdRecommendationImageRefineOperationShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAdRecommendationImageRefineOperation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdRecommendationImageRefineOperation/imageRefineType> ;
    sh:name "image refine type" ;
    sh:description "The image refine type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "BackgroundChange" "RefineDisplay" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdRecommendationImageRefineOperation/imageIndex> ;
    sh:name "image index" ;
    sh:description "Index of the image to be refined." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdRecommendationImageRefineOperation/prompt> ;
    sh:name "prompt" ;
    sh:description "Description of image background change." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Ad Recommendation Image Suggestion
microsoftads:CampaignManagementAdRecommendationImageSuggestionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAdRecommendationImageSuggestion ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdRecommendationImageSuggestion/image> ;
    sh:name "image" ;
    sh:description "The suggsted image." ;
    sh:node microsoftads:CampaignManagementImageShape ;
    sh:class microsoftads:CampaignManagementImage ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdRecommendationImageSuggestion/imageUrl> ;
    sh:name "image url" ;
    sh:description "The URL of the suggested image." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdRecommendationImageSuggestion/assetLink> ;
    sh:name "asset link" ;
    sh:description "Defines the relationship of an asset to an ad." ;
    sh:node microsoftads:CampaignManagementAssetLinkShape ;
    sh:class microsoftads:CampaignManagementAssetLink ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdRecommendationImageSuggestion/imageMetadata> ;
    sh:name "image metadata" ;
    sh:description "The ad recommendation image suggestion metadata data object." ;
    sh:node microsoftads:CampaignManagementAdRecommendationImageSuggestionMetadataShape ;
    sh:class microsoftads:CampaignManagementAdRecommendationImageSuggestionMetadata ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdRecommendationImageSuggestion/internalTemplate> ;
    sh:name "internal template" ;
    sh:node microsoftads:CampaignManagementRecommendationTemplateShape ;
    sh:class microsoftads:CampaignManagementRecommendationTemplate ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Image
microsoftads:CampaignManagementImageShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementImage ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImage/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier of the media. Add: Read-only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImage/mediaType> ;
    sh:name "media type" ;
    sh:description "The type of media to add to the library. The recommended media type is \"GenericImage\". For media that will be used with an ImageAdExtension, the supported values are GenericImage, Image16x9, Image15x10, Image4x3, and Image12x10. For media that will be used with a ResponsiveAd, the supported values are GenericImage, Image1x1, Image191x100, and Image4x1. For more information about supported aspect ratios, see the Remarks section below. Add: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImage/type> ;
    sh:name "type" ;
    sh:description "The media type. For more information about media types, see the Media Data Object Remarks. Add: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImage/text> ;
    sh:name "text" ;
    sh:description "The image alt text." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImage/data> ;
    sh:name "data" ;
    sh:description "A base64 string that represents the image or icon to add to the library. The base64 string can contain a maximum of 102,400 characters. For information about restrictions and supported data types, see Remarks below." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Ad Recommendation Image Suggestion Metadata
microsoftads:CampaignManagementAdRecommendationImageSuggestionMetadataShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAdRecommendationImageSuggestionMetadata ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdRecommendationImageSuggestionMetadata/templateId> ;
    sh:name "template id" ;
    sh:description "The identifier of the template." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdRecommendationImageSuggestionMetadata/templateVersion> ;
    sh:name "template version" ;
    sh:description "The version of the template." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdRecommendationImageSuggestionMetadata/textAssetProperties> ;
    sh:name "text asset properties" ;
    sh:description "The text asset properties for the ad recommendation." ;
    sh:node microsoftads:CampaignManagementAdRecommendationTextAssetPropertyShape ;
    sh:class microsoftads:CampaignManagementAdRecommendationTextAssetProperty ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdRecommendationImageSuggestionMetadata/imageAssetProperties> ;
    sh:name "image asset properties" ;
    sh:description "The image asset properties for the ad recommendation." ;
    sh:node microsoftads:CampaignManagementAdRecommendationImageAssetPropertyShape ;
    sh:class microsoftads:CampaignManagementAdRecommendationImageAssetProperty ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdRecommendationImageSuggestionMetadata/customizedProperties> ;
    sh:name "customized properties" ;
    sh:description "The customized properties for the ad recommendation." ;
    sh:node microsoftads:CampaignManagementAdRecommendationCustomizedPropertyShape ;
    sh:class microsoftads:CampaignManagementAdRecommendationCustomizedProperty ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Ad Recommendation Text Asset Property
microsoftads:CampaignManagementAdRecommendationTextAssetPropertyShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAdRecommendationTextAssetProperty ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdRecommendationTextAssetProperty/textField> ;
    sh:name "text field" ;
    sh:description "The type of text." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Headline" "LongHeadline" "Description" "CallToAction" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdRecommendationTextAssetProperty/text> ;
    sh:name "text" ;
    sh:description "The text." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Recommendation Template
microsoftads:CampaignManagementRecommendationTemplateShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementRecommendationTemplate ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationTemplate/style> ;
    sh:name "style" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationTemplate/templateId> ;
    sh:name "template id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationTemplate/templateName> ;
    sh:name "template name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationTemplate/version> ;
    sh:name "version" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationTemplate/image> ;
    sh:name "image" ;
    sh:node microsoftads:CampaignManagementRecommendationImageShape ;
    sh:class microsoftads:CampaignManagementRecommendationImage ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationTemplate/logo> ;
    sh:name "logo" ;
    sh:node microsoftads:CampaignManagementRecommendationImageShape ;
    sh:class microsoftads:CampaignManagementRecommendationImage ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationTemplate/businessName> ;
    sh:name "business name" ;
    sh:node microsoftads:CampaignManagementRecommendationTextShape ;
    sh:class microsoftads:CampaignManagementRecommendationText ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationTemplate/shortHeadline> ;
    sh:name "short headline" ;
    sh:node microsoftads:CampaignManagementRecommendationTextShape ;
    sh:class microsoftads:CampaignManagementRecommendationText ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationTemplate/longHeadline> ;
    sh:name "long headline" ;
    sh:node microsoftads:CampaignManagementRecommendationTextShape ;
    sh:class microsoftads:CampaignManagementRecommendationText ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationTemplate/description> ;
    sh:name "description" ;
    sh:node microsoftads:CampaignManagementRecommendationTextShape ;
    sh:class microsoftads:CampaignManagementRecommendationText ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationTemplate/cta> ;
    sh:name "cta" ;
    sh:node microsoftads:CampaignManagementRecommendationTextShape ;
    sh:class microsoftads:CampaignManagementRecommendationText ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationTemplate/assetProperties> ;
    sh:name "asset properties" ;
    sh:node microsoftads:CampaignManagementRecommendationAssetPropertyShape ;
    sh:class microsoftads:CampaignManagementRecommendationAssetProperty ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationTemplate/background> ;
    sh:name "background" ;
    sh:node microsoftads:CampaignManagementRecommendationBackgroundShape ;
    sh:class microsoftads:CampaignManagementRecommendationBackground ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationTemplate/color> ;
    sh:name "color" ;
    sh:node microsoftads:CampaignManagementRecommendationColorShape ;
    sh:class microsoftads:CampaignManagementRecommendationColor ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Recommendation Image
microsoftads:CampaignManagementRecommendationImageShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementRecommendationImage ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationImage/assetId> ;
    sh:name "asset id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationImage/url> ;
    sh:name "url" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationImage/editable> ;
    sh:name "editable" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationImage/source> ;
    sh:name "source" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationImage/recommendationId> ;
    sh:name "recommendation id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationImage/imageSize> ;
    sh:name "image size" ;
    sh:node microsoftads:CampaignManagementRecommendationImageSizeShape ;
    sh:class microsoftads:CampaignManagementRecommendationImageSize ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationImage/cropSetting> ;
    sh:name "crop setting" ;
    sh:node microsoftads:CampaignManagementRecommendationCropSettingShape ;
    sh:class microsoftads:CampaignManagementRecommendationCropSetting ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Recommendation Image Size
microsoftads:CampaignManagementRecommendationImageSizeShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementRecommendationImageSize ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationImageSize/width> ;
    sh:name "width" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationImageSize/height> ;
    sh:name "height" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Recommendation Crop Setting
microsoftads:CampaignManagementRecommendationCropSettingShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementRecommendationCropSetting ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationCropSetting/sourceX> ;
    sh:name "source x" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationCropSetting/sourceY> ;
    sh:name "source y" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationCropSetting/sourceWidth> ;
    sh:name "source width" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationCropSetting/sourceHeight> ;
    sh:name "source height" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationCropSetting/aspectRatio> ;
    sh:name "aspect ratio" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Recommendation Text
microsoftads:CampaignManagementRecommendationTextShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementRecommendationText ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationText/text> ;
    sh:name "text" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationText/editable> ;
    sh:name "editable" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationText/source> ;
    sh:name "source" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationText/recommendationId> ;
    sh:name "recommendation id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationText/minLengthInChar> ;
    sh:name "min length in char" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationText/maxLengthInChar> ;
    sh:name "max length in char" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Recommendation Asset Property
microsoftads:CampaignManagementRecommendationAssetPropertyShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementRecommendationAssetProperty ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationAssetProperty/assetName> ;
    sh:name "asset name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationAssetProperty/assetProperty> ;
    sh:name "asset property" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationAssetProperty/value> ;
    sh:name "value" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Recommendation Background
microsoftads:CampaignManagementRecommendationBackgroundShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementRecommendationBackground ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationBackground/editable> ;
    sh:name "editable" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Recommendation Color
microsoftads:CampaignManagementRecommendationColorShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementRecommendationColor ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationColor/elementName> ;
    sh:name "element name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationColor/suffix> ;
    sh:name "suffix" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationColor/editable> ;
    sh:name "editable" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationColor/color> ;
    sh:name "color" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Ad Recommendation Job Info
microsoftads:CampaignManagementAdRecommendationJobInfoShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAdRecommendationJobInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdRecommendationJobInfo/jobId> ;
    sh:name "job id" ;
    sh:description "The unique identifier of the job." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdRecommendationJobInfo/jobStatus> ;
    sh:name "job status" ;
    sh:description "The status of the current job. Possible values are: Completed, InProgress, Failed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdRecommendationJobInfo/errorCode> ;
    sh:name "error code" ;
    sh:description "The error code when the JobStatus is Failed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdRecommendationJobInfo/errorMessage> ;
    sh:name "error message" ;
    sh:description "The error message when the JobStatus is Failed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Ad Recommendation Media Refine Result
microsoftads:CampaignManagementAdRecommendationMediaRefineResultShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAdRecommendationMediaRefineResult ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdRecommendationMediaRefineResult/mediaList> ;
    sh:name "media list" ;
    sh:description "List of ad recommendation refined media." ;
    sh:node microsoftads:CampaignManagementAdRecommendationRefinedMediaShape ;
    sh:class microsoftads:CampaignManagementAdRecommendationRefinedMedia ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdRecommendationMediaRefineResult/errors> ;
    sh:name "errors" ;
    sh:description "An array of OperationError objects that contains the details that explain why the service operation failed." ;
    sh:node microsoftads:CampaignManagementOperationErrorShape ;
    sh:class microsoftads:CampaignManagementOperationError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Ad Recommendation Refined Media
microsoftads:CampaignManagementAdRecommendationRefinedMediaShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAdRecommendationRefinedMedia ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdRecommendationRefinedMedia/mediaUrl> ;
    sh:name "media url" ;
    sh:description "The media URL." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Operation Error
microsoftads:CampaignManagementOperationErrorShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementOperationError ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOperationError/code> ;
    sh:name "code" ;
    sh:description "A numeric error code that identifies the error." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOperationError/errorCode> ;
    sh:name "error code" ;
    sh:description "A symbolic string constant that identifies the error. For example, UserIsNotAuthorized." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOperationError/details> ;
    sh:name "details" ;
    sh:description "A message that provides additional details about the error. This string can be empty." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOperationError/message> ;
    sh:name "message" ;
    sh:description "A message that describes the error. For more information about troubleshooting and error handling, see Handling Service Errors and Exceptions and Operation Error Codes." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Ad Recommendation Text Refine Operation
microsoftads:CampaignManagementAdRecommendationTextRefineOperationShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAdRecommendationTextRefineOperation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdRecommendationTextRefineOperation/textField> ;
    sh:name "text field" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Headline" "LongHeadline" "Description" "CallToAction" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdRecommendationTextRefineOperation/textFieldIndex> ;
    sh:name "text field index" ;
    sh:description "Reserved." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdRecommendationTextRefineOperation/textTone> ;
    sh:name "text tone" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Friendly" "Persuasive" "Cute" "Inspiring" ) ;
  ] .

# Shape for Campaign Management Ad Recommendation Text Refine Result
microsoftads:CampaignManagementAdRecommendationTextRefineResultShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAdRecommendationTextRefineResult ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdRecommendationTextRefineResult/textAssetLinks> ;
    sh:name "text asset links" ;
    sh:description "List of text asset links." ;
    sh:node microsoftads:CampaignManagementAssetLinkShape ;
    sh:class microsoftads:CampaignManagementAssetLink ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdRecommendationTextRefineResult/errors> ;
    sh:name "errors" ;
    sh:description "An array of OperationError objects that contains the details that explain why the service operation failed." ;
    sh:node microsoftads:CampaignManagementOperationErrorShape ;
    sh:class microsoftads:CampaignManagementOperationError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Ad Recommendation Video Suggestion
microsoftads:CampaignManagementAdRecommendationVideoSuggestionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAdRecommendationVideoSuggestion ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdRecommendationVideoSuggestion/video> ;
    sh:name "video" ;
    sh:description "Reserved." ;
    sh:node microsoftads:CampaignManagementVideoShape ;
    sh:class microsoftads:CampaignManagementVideo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAdRecommendationVideoSuggestion/internalTemplate> ;
    sh:name "internal template" ;
    sh:node microsoftads:CampaignManagementRecommendationTemplateVideoShape ;
    sh:class microsoftads:CampaignManagementRecommendationTemplateVideo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Recommendation Template Video
microsoftads:CampaignManagementRecommendationTemplateVideoShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementRecommendationTemplateVideo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationTemplateVideo/templateId> ;
    sh:name "template id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationTemplateVideo/logo> ;
    sh:name "logo" ;
    sh:node microsoftads:CampaignManagementRecommendationLogoShape ;
    sh:class microsoftads:CampaignManagementRecommendationLogo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationTemplateVideo/businessName> ;
    sh:name "business name" ;
    sh:node microsoftads:CampaignManagementRecommendationBusinessNameShape ;
    sh:class microsoftads:CampaignManagementRecommendationBusinessName ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationTemplateVideo/duration> ;
    sh:name "duration" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationTemplateVideo/audio> ;
    sh:name "audio" ;
    sh:node microsoftads:CampaignManagementRecommendationAudioShape ;
    sh:class microsoftads:CampaignManagementRecommendationAudio ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationTemplateVideo/width> ;
    sh:name "width" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationTemplateVideo/height> ;
    sh:name "height" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationTemplateVideo/backgroundColor> ;
    sh:name "background color" ;
    sh:node microsoftads:CampaignManagementSolidBackgroundAssetShape ;
    sh:class microsoftads:CampaignManagementSolidBackgroundAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationTemplateVideo/scenes> ;
    sh:name "scenes" ;
    sh:node microsoftads:CampaignManagementRecommendationSceneShape ;
    sh:class microsoftads:CampaignManagementRecommendationScene ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Recommendation Logo
microsoftads:CampaignManagementRecommendationLogoShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementRecommendationLogo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationLogo/url> ;
    sh:name "url" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationLogo/display> ;
    sh:name "display" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Recommendation Business Name
microsoftads:CampaignManagementRecommendationBusinessNameShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementRecommendationBusinessName ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationBusinessName/text> ;
    sh:name "text" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationBusinessName/display> ;
    sh:name "display" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Recommendation Audio
microsoftads:CampaignManagementRecommendationAudioShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementRecommendationAudio ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationAudio/category> ;
    sh:name "category" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationAudio/fileName> ;
    sh:name "file name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationAudio/audioName> ;
    sh:name "audio name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Solid Background Asset
microsoftads:CampaignManagementSolidBackgroundAssetShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementSolidBackgroundAsset ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSolidBackgroundAsset/color> ;
    sh:name "color" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Recommendation Scene
microsoftads:CampaignManagementRecommendationSceneShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementRecommendationScene ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationScene/image> ;
    sh:name "image" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationScene/images> ;
    sh:name "images" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationScene/imageData> ;
    sh:name "image data" ;
    sh:node microsoftads:CampaignManagementVideoRecommendationImageDataShape ;
    sh:class microsoftads:CampaignManagementVideoRecommendationImageData ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationScene/text> ;
    sh:name "text" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationScene/textData> ;
    sh:name "text data" ;
    sh:node microsoftads:CampaignManagementVideoRecommendationTextDataShape ;
    sh:class microsoftads:CampaignManagementVideoRecommendationTextData ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationScene/logos> ;
    sh:name "logos" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationScene/logoData> ;
    sh:name "logo data" ;
    sh:node microsoftads:CampaignManagementVideoRecommendationImageDataShape ;
    sh:class microsoftads:CampaignManagementVideoRecommendationImageData ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationScene/keyFrame> ;
    sh:name "key frame" ;
    sh:node microsoftads:CampaignManagementKeyFrameShape ;
    sh:class microsoftads:CampaignManagementKeyFrame ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationScene/colors> ;
    sh:name "colors" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRecommendationScene/colorData> ;
    sh:name "color data" ;
    sh:node microsoftads:CampaignManagementVideoRecommendationColorDataShape ;
    sh:class microsoftads:CampaignManagementVideoRecommendationColorData ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Video Recommendation Image Data
microsoftads:CampaignManagementVideoRecommendationImageDataShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementVideoRecommendationImageData ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideoRecommendationImageData/width> ;
    sh:name "width" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideoRecommendationImageData/height> ;
    sh:name "height" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideoRecommendationImageData/itemId> ;
    sh:name "item id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideoRecommendationImageData/croppedImageUrl> ;
    sh:name "cropped image url" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideoRecommendationImageData/videoClipUrl> ;
    sh:name "video clip url" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideoRecommendationImageData/isVideoFeasible> ;
    sh:name "is video feasible" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Video Recommendation Text Data
microsoftads:CampaignManagementVideoRecommendationTextDataShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementVideoRecommendationTextData ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideoRecommendationTextData/font> ;
    sh:name "font" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideoRecommendationTextData/fontWeight> ;
    sh:name "font weight" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideoRecommendationTextData/color> ;
    sh:name "color" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideoRecommendationTextData/maxLength> ;
    sh:name "max length" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideoRecommendationTextData/itemId> ;
    sh:name "item id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideoRecommendationTextData/hint> ;
    sh:name "hint" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Key Frame
microsoftads:CampaignManagementKeyFrameShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementKeyFrame ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementKeyFrame/templateId> ;
    sh:name "template id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementKeyFrame/url> ;
    sh:name "url" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementKeyFrame/keyframeTimestamp> ;
    sh:name "keyframe timestamp" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Video Recommendation Color Data
microsoftads:CampaignManagementVideoRecommendationColorDataShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementVideoRecommendationColorData ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideoRecommendationColorData/color> ;
    sh:name "color" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideoRecommendationColorData/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Age Criterion
microsoftads:CampaignManagementAgeCriterionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAgeCriterion ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAgeCriterion/type> ;
    sh:name "type" ;
    sh:description "The type of the criterion. This value is Age when you retrieve an age criterion. For more information about criterion types, see the Criterion Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAgeCriterion/ageRange> ;
    sh:name "age range" ;
    sh:description "The age range of the people you want to see your ads. Add: Required Update: Not allowed. If you specify this element it must match the existing setting." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unknown" "EighteenToTwentyFour" "TwentyFiveToThirtyFour" "ThirtyFiveToFourtyNine" "FiftyToSixtyFour" "SixtyFiveAndAbove" "ThirtyFiveToFiftyFour" "FiftyFiveAndAbove" ) ;
  ] .

# Shape for Campaign Management Age Dimension
microsoftads:CampaignManagementAgeDimensionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAgeDimension ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAgeDimension/type> ;
    sh:name "type" ;
    sh:description "The type of audience dimensions, the following dimension types are supported as of now: Age, Gender, Audience. Add: For more information about audience types, see the Remarks. Update: For more information about audience types, see the Remarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Age" "Gender" "Audience" "Profile" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAgeDimension/ageRanges> ;
    sh:name "age ranges" ;
    sh:description "A list of age ranges. To remove existing values, set AgeRanges to null or empty. To remove a subset of age ranges, specify the age ranges that you want to keep and the existing age ranges will be replaced. Add: Required Update: Optional." ;
    sh:datatype xsd:string ;
    sh:in ( "Unknown" "EighteenToTwentyFour" "TwentyFiveToThirtyFour" "ThirtyFiveToFourtyNine" "FiftyToSixtyFour" "SixtyFiveAndAbove" "ThirtyFiveToFiftyFour" "FiftyFiveAndAbove" ) ;
  ] .

# Shape for Campaign Management AISearch Setting
microsoftads:CampaignManagementAISearchSettingShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAISearchSetting ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAISearchSetting/type> ;
    sh:name "type" ;
    sh:description "The type of setting. For more information, see Setting Data Object Remarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAISearchSetting/finalUrlExpansionOptOut> ;
    sh:name "final url expansion opt out" ;
    sh:description "Opt out of final URL expansion." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAISearchSetting/autoGeneratedTextOptOut> ;
    sh:name "auto generated text opt out" ;
    sh:description "Opt out of auto-generated text." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAISearchSetting/autoGeneratedImageOptOut> ;
    sh:name "auto generated image opt out" ;
    sh:description "Opt out of auto-generated images." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAISearchSetting/searchTermMatchingOptOut> ;
    sh:name "search term matching opt out" ;
    sh:description "Opt out of search term matching." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAISearchSetting/aISearchEnabled> ;
    sh:name "a isearch enabled" ;
    sh:description "Enable AI search." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAISearchSetting/pageFeedIds> ;
    sh:name "page feed ids" ;
    sh:description "The page feed IDs." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Campaign Management Annotation Opt Out
microsoftads:CampaignManagementAnnotationOptOutShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAnnotationOptOut ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAnnotationOptOut/customerId> ;
    sh:name "customer id" ;
    sh:description "The customer ID." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAnnotationOptOut/accountId> ;
    sh:name "account id" ;
    sh:description "The account ID." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAnnotationOptOut/isOptOut> ;
    sh:name "is opt out" ;
    sh:description "Whether or not the entity is opted out." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAnnotationOptOut/annotationGroupId> ;
    sh:name "annotation group id" ;
    sh:description "The annotation group ID. The possible values are: 17000 - Dynamic Locations17001 - Consumer Ratings17002 - Dynamic Ad Enhancements 17003 - Dynamic Callouts17004 - Dynamic Partner Data enhancements17005 - Dynamic Sitelink17006 - Dynamic Structured Snippets17007 - Longer Ad Headlines17008 - Previous Visit17009 - Seller Ratings17011 - Dynamic Multimedia Extensions17013 - Syndication Only Decorations 17014 - Business Logo" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Api Fault Detail
microsoftads:CampaignManagementApiFaultDetailShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementApiFaultDetail ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementApiFaultDetail/trackingId> ;
    sh:name "tracking id" ;
    sh:description "The identifier of the log entry that contains the details of the API call." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementApiFaultDetail/batchErrors> ;
    sh:name "batch errors" ;
    sh:description "An array of batch errors that identifies the items in the batch of items in the request message that caused the operation to fail. Each object contains the details that explain why the item caused the failure." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementApiFaultDetail/operationErrors> ;
    sh:name "operation errors" ;
    sh:description "An array of operation errors that contains the reasons that explain why the service operation failed when the error is not related to a specific item in the batch of items." ;
    sh:node microsoftads:CampaignManagementOperationErrorShape ;
    sh:class microsoftads:CampaignManagementOperationError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementApiFaultDetail/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management App Ad Extension
microsoftads:CampaignManagementAppAdExtensionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAppAdExtension ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppAdExtension/status> ;
    sh:name "status" ;
    sh:description "The status of the ad extension. The value will always be Active because the Campaign Management service does not return deleted ad extensions. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Deleted" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppAdExtension/scheduling> ;
    sh:name "scheduling" ;
    sh:description "Determines the calendar day and time ranges when the ad extension is eligible to be shown in ads. Add: Optional Update: Optional. If you set this element null, any existing scheduling set for the ad extension will remain unchanged. If you set this to any non-null Schedule object, you are effectively replacing existing scheduling settings for the ad extension. To remove all scheduling set this element to an empty Schedule object." ;
    sh:node microsoftads:CampaignManagementScheduleShape ;
    sh:class microsoftads:CampaignManagementSchedule ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppAdExtension/devicePreference> ;
    sh:name "device preference" ;
    sh:description "This element determines whether the preference is for the ad extension to be displayed on mobile devices or all devices. To specify a preference for mobile devices, set this element to 30001. To specify all devices, set this element to 0 (zero) or leave the element nil. By default, this element will be nil. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppAdExtension/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier of the ad extension. Add: Read-only Update: Read-only and Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppAdExtension/type> ;
    sh:name "type" ;
    sh:description "The type of the ad extension. This value is AppAdExtension when you retrieve an app ad extension. Add: Read-only Update: Read-only For more information about ad extension types, see the Ad Extension Data Object Remarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppAdExtension/version> ;
    sh:name "version" ;
    sh:description "Tracks the number of times the ad extension has been updated. The version is set to 1 when the ad extension is created, and increments by one after each update. Add: Not allowed Update: Not allowed" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppAdExtension/appPlatform> ;
    sh:name "app platform" ;
    sh:description "The application platform. Possible values include iOS, Android, and Windows. Add: Required Update: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppAdExtension/appStoreId> ;
    sh:name "app store id" ;
    sh:description "The application identifier provided by the app store. If the application is new, please expect to wait 4-7 days before the ad will be eligible to deliver. Add: Required Update: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppAdExtension/displayText> ;
    sh:name "display text" ;
    sh:description "The text displayed in the app ad extension. The text can contain a maximum of 35 characters. Add: Required Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppAdExtension/destinationUrl> ;
    sh:name "destination url" ;
    sh:description "The URL of the app store download webpage that users are taken to when they click the app extension link. The URL can contain dynamic text strings such as {keyword}. For a list of supported parameters, see the Available parameters section within the Microsoft Advertising help article What tracking or URL parameters can I use?. The URL can contain a maximum of 1,024 characters. If the URL does not specify a protocol, the system uses the HTTP protocol when a user clicks the ad. If the URL specifies the HTTP protocol when you add an ad, the service will remove the http:// protocol string (the HTTP protocol string does not count against the 1,024 character limit); however, the service will not remove an HTTPS protocol string (https://) from the URL. Add: Required Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppAdExtension/trackingUrlTemplate> ;
    sh:name "tracking url template" ;
    sh:description "Reserved for future use." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppAdExtension/finalUrlSuffix> ;
    sh:name "final url suffix" ;
    sh:description "Reserved for future use." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppAdExtension/urlCustomParameters> ;
    sh:name "url custom parameters" ;
    sh:description "Reserved for future use." ;
    sh:node microsoftads:CampaignManagementCustomParametersShape ;
    sh:class microsoftads:CampaignManagementCustomParameters ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppAdExtension/finalUrls> ;
    sh:name "final urls" ;
    sh:description "Reserved for future use." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppAdExtension/finalMobileUrls> ;
    sh:name "final mobile urls" ;
    sh:description "Reserved for future use." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppAdExtension/finalAppUrls> ;
    sh:name "final app urls" ;
    sh:description "For future use." ;
    sh:node microsoftads:CampaignManagementAppUrlShape ;
    sh:class microsoftads:CampaignManagementAppUrl ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppAdExtension/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. There are currently no forward compatibility changes for the AdExtension object. Add: Read-only Update: Read-only" ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management App Download Goal
microsoftads:CampaignManagementAppDownloadGoalShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAppDownloadGoal ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppDownloadGoal/name> ;
    sh:name "name" ;
    sh:description "The conversion goal name. The maximum length of the name is 100, and the name must be unique among all conversion goals belonging to the same customer. Add: Required Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppDownloadGoal/status> ;
    sh:name "status" ;
    sh:description "Defines the possible user-determined status values of a conversion goal. These are the status values that a user can decide to set, for example a goal can be set to Paused if you no longer wish to track conversions for that goal. For status values that can be set by the system, see the TrackingStatus element. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Paused" "Deleted" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppDownloadGoal/scope> ;
    sh:name "scope" ;
    sh:description "Determines if the goal applies to all accounts or only the account specified in the required CustomerAccountId header element. If you have multiple Microsoft Advertising accounts, you can track conversions across all of those accounts. If you associate a goal with one account, conversions will be tracked for that account only. For app install goals the Account level scope is not supported. You can set this element to Customer or leave it nil. If not specified, the scope will be set to Customer by default. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Account" "Customer" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppDownloadGoal/countType> ;
    sh:name "count type" ;
    sh:description "Not applicable for app install goals." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "All" "Unique" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppDownloadGoal/revenue> ;
    sh:name "revenue" ;
    sh:description "Determines how much each conversion is worth to your business. When adding a conversion goal if you do not specify any revenue tracking preferences, then each ConversionGoalRevenue will be set to their respective default values. When updating a conversion goal, if the Revenue element is nil or empty then none of the nested properties will be updated. However, if this element is not nil or empty then you are effectively replacing any existing revenue properties. The VariableValue option is not available for app install conversion goals. Add: Optional Update: Optional" ;
    sh:node microsoftads:CampaignManagementConversionGoalRevenueShape ;
    sh:class microsoftads:CampaignManagementConversionGoalRevenue ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppDownloadGoal/conversionWindowInMinutes> ;
    sh:name "conversion window in minutes" ;
    sh:description "The conversion window is the length of time in minutes after a click that you want to track conversions. If you set this value to 43200 minutes (30 days), then conversions that happen within 30 days after a click are tracked. Past conversions aren't affected. The minimum value supported is 1 minute, although keep in mind that a shorter conversion window will reduce the number of conversions your account records. The maximum value supported is 129600 minutes (90 days). Add: Optional Update: Optional" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppDownloadGoal/tagId> ;
    sh:name "tag id" ;
    sh:description "Not applicable for app install goals." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppDownloadGoal/trackingStatus> ;
    sh:name "tracking status" ;
    sh:description "Defines the possible system-determined status values of a conversion goal. These are the status values that can be set by the system, for example the system sets the status to RecordingConversions if we have recorded conversions within the last 7 days. Only the NoRecentConversions and RecordingConversions statuses are applicable for app install conversion goals. For status values that a user can decide to set, for example setting the status to Paused if you no longer wish to track conversions for that goal, see the Status element. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "TagUnverified" "NoRecentConversions" "RecordingConversions" "TagInactive" "InactiveDueToTagUnavailable" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppDownloadGoal/excludeFromBidding> ;
    sh:name "exclude from bidding" ;
    sh:description "Determines whether or not to exclude data otherwise related to this conversion goal from a subset of performance report columns. This element is only available for customers who are enabled for the Include in Conversions feature (GetCustomerPilotFeatures returns 574). If this element is set to true, data otherwise related to this conversion goal will be excluded from the Conversions, ConversionRate, CostPerConversion, ReturnOnAdSpend, RevenuePerConversion, and Revenue report columns. Also, if you use an automated bidding bid strategy, setting this property true will result in the goal's conversions no longer factoring into automated bidding calculations. Setting this property \"true\" is effectively the same as unchecking \"Include in Conversions\" in the Microsoft Advertising web application. Regardless of this element value, the AllConversions, AllConversionRate, AllCostPerConversion, AllReturnOnAdSpend, AllRevenuePerConversion, and AllRevenue report columns will include data for all conversion goals. By default this element is false, and data related to this conversion goal are included in all report columns. For more information, see Report Attributes and Performance Statistics and the help article Conversion goals: \"Conversions\" versus \"All conversions\". Add: Optional Update: Optional" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppDownloadGoal/viewThroughConversionWindowInMinutes> ;
    sh:name "view through conversion window in minutes" ;
    sh:description "Not applicable for app install goals." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppDownloadGoal/goalCategory> ;
    sh:name "goal category" ;
    sh:description "The category used to segment the conversion goal. Categorize your conversion goals however makes sense for your business. Goal categories don't affect performance - they are here to help you segment your goals and their performance metrics. The supported category values vary by conversion goal type. App install goals only support the Download category. Add: Optional. If you leave this element nil or empty, the default category will be set to Download. Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unknown" "None" "Purchase" "AddToCart" "BeginCheckout" "Subscribe" "SubmitLeadForm" "BookAppointment" "Signup" "RequestQuote" "GetDirections" "OutboundClick" "Contact" "PageView" "Download" "Other" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppDownloadGoal/attributionModelType> ;
    sh:name "attribution model type" ;
    sh:description "Not applicable for app install goals." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "LastClick" "LastTouch" "DataDriven" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppDownloadGoal/isEnhancedConversionsEnabled> ;
    sh:name "is enhanced conversions enabled" ;
    sh:description "Determines whether enhanced conversions are enabled for a conversion goal." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppDownloadGoal/isAutoGoal> ;
    sh:name "is auto goal" ;
    sh:description "Only available for event goal." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppDownloadGoal/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier for the conversion goal. Add: Read-only Update: Required and Read-Only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppDownloadGoal/type> ;
    sh:name "type" ;
    sh:description "The type of the conversion goal. This value is AppInstall when you retrieve an app install goal. For more information about conversion goal types, see the ConversionGoal Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppDownloadGoal/appPlatform> ;
    sh:name "app platform" ;
    sh:description "The application platform. Possible values include Android, iOS, Windows and WindowsPhone. Add: Required Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppDownloadGoal/appStoreId> ;
    sh:name "app store id" ;
    sh:description "The application identifier provided by the app store. Add: Required Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Appeal Editorial Rejections Request
microsoftads:CampaignManagementAppealEditorialRejectionsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAppealEditorialRejectionsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppealEditorialRejectionsRequest/entityIdToParentIdAssociations> ;
    sh:name "entity id to parent id associations" ;
    sh:description "A list of unique identifiers of the ads or keywords that failed editorial review. The list can contain a maximum of 1,000 EntityIdToParentIdAssociation objects. You submit each ad or keyword identifier with their respective ad group parent identifier in a EntityIdToParentIdAssociation object. The list of EntityIdToParentIdAssociation must include either ad identifiers or keyword identifiers. The list cannot include a mix ad and keyword entity identifiers. If an entity in the list has already been approved, the entity is ignored. If an entity in the list is not appealable, the call fails. If an entity in the list has an appeal pending, this request supersedes the pending request. Note: To support AssetGroups, EntityId = AssetGroupId and ParentId = CampaignId. For asset group appeals, we limit the amount of objects to 100 instead of 1,000." ;
    sh:node microsoftads:CampaignManagementEntityIdToParentIdAssociationShape ;
    sh:class microsoftads:CampaignManagementEntityIdToParentIdAssociation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppealEditorialRejectionsRequest/entityType> ;
    sh:name "entity type" ;
    sh:description "The type of entity that the entity to parent list contains. The supported entity type values are Ad, AdGroup, AssetGroup, Campaign, ImageAsset, Keyword, and TextAsset." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "None" "Campaign" "AdGroup" "Ad" "Keyword" "AssetGroup" "TextAsset" "ImageAsset" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppealEditorialRejectionsRequest/justificationText> ;
    sh:name "justification text" ;
    sh:description "The justification for the appeal. The string can contain a maximum of 1,000 characters. The justification applies to all of the specified entities. A useful justification should include reasons why the ad or keyword is compliant with editorial policy for example, JustificationText = \"my ads for paint guns are not firearms, they are painting tools\"." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Entity Id To Parent Id Association
microsoftads:CampaignManagementEntityIdToParentIdAssociationShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementEntityIdToParentIdAssociation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEntityIdToParentIdAssociation/entityId> ;
    sh:name "entity id" ;
    sh:description "The system-generated unique identifier of an entity such as ad or keyword." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEntityIdToParentIdAssociation/parentId> ;
    sh:name "parent id" ;
    sh:description "The identifier of the entity's parent. An ad group is the parent of an ad or keyword." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Appeal Editorial Rejections Response
microsoftads:CampaignManagementAppealEditorialRejectionsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAppealEditorialRejectionsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppealEditorialRejectionsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any appeals that were not successfully submitted. The list of errors corresponds directly to the list of EntityIdToParentIdAssociation in the request. Items of the list may be returned as null. For each list index where an appeal was successfully submitted, the corresponding error element will be null. Ideally all appeals are submitted successfully and all elements in this list are null." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management App Install Ad
microsoftads:CampaignManagementAppInstallAdShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAppInstallAd ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppInstallAd/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier for the ad. Add: Read-only Update: Required and Read-only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppInstallAd/type> ;
    sh:name "type" ;
    sh:description "The type of the ad. This value is AppInstall when you retrieve an app install ad. For more information about ad types, see the Ad Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Text" "Image" "Product" "AppInstall" "ExpandedText" "DynamicSearch" "ResponsiveAd" "ResponsiveSearch" "Hotel" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppInstallAd/status> ;
    sh:name "status" ;
    sh:description "The status of the ad. You can set the ad status to Active or Paused. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Inactive" "Active" "Paused" "Deleted" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppInstallAd/editorialStatus> ;
    sh:name "editorial status" ;
    sh:description "The editorial review status of the ad, which indicates whether the ad is pending review, has been approved, or has been disapproved. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Disapproved" "Inactive" "ActiveLimited" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppInstallAd/devicePreference> ;
    sh:name "device preference" ;
    sh:description "This element determines whether the preference is for app install ads to be displayed on mobile and tablet devices or only on mobile devices. (App install ads are not currently supported on desktop computers.) To specify a preference for mobile devices only (i.e. excluding tablets), set this element to 30001. To specify a preference for both mobile and tablet devices, set this element to 0 (zero) or leave the element nil. By default, this element will be nil. Add: Optional Update: Optional" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppInstallAd/adFormatPreference> ;
    sh:name "ad format preference" ;
    sh:description "Not supported for this ad type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppInstallAd/trackingUrlTemplate> ;
    sh:name "tracking url template" ;
    sh:description "The tracking template to use as a default for the URL specified with FinalUrls. The following validation rules apply to tracking templates. For more details about supported templates and parameters, see the Microsoft Advertising help article What tracking or URL parameters can I use? - Tracking templates defined for lower level entities e.g. ads override those set for higher level entities e.g. campaign. For more information, see Entity Limits. - The length of the tracking template is limited to 2,048 characters. The HTTP or HTTPS protocol string does count towards the 2,048 character limit. - The tracking template must be a well-formed URL beginning with one of the following: http://, https://, {lpurl}, or {unescapedlpurl}. - Microsoft Advertising does not validate whether custom parameters exist. If you use custom parameters in your tracking template and they do not exist, then the landing page URL will include the key and value placeholders of your custom parameters without substitution. For example, if your tracking template is https://tracker.example.com/?season={_season}&promocode={_promocode}&u={lpurl} and neither {_season} or {_promocode} are defined at the campaign, ad group, criterion, keyword, or ad level, then the landing page URL will be the same. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. If you set this element to an empty string (\"\"), the previous setting will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppInstallAd/finalUrlSuffix> ;
    sh:name "final url suffix" ;
    sh:description "The final URL suffix can include tracking parameters that will be appended to the end of your landing page URL. We recommend placing tracking parameters that your landing page requires in a final URL suffix so that your customers are always sent to your landing page. For more details and validation rules see Final URL Suffix in the technical guides. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. If you set this element to an empty string (\"\"), the previous setting will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppInstallAd/urlCustomParameters> ;
    sh:name "url custom parameters" ;
    sh:description "Your custom collection of key and value parameters for URL tracking. Microsoft Advertising will accept the first 8 CustomParameter objects that you include within the CustomParameters object, and if you include more than 8 custom parameters an error will be returned. Each CustomParameter includes Key and Value elements. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. Set the UrlCustomParameters element to null or empty to retain any existing custom parameters. To remove all custom parameters, set the Parameters element of the CustomParameters object to null or empty. To remove a subset of custom parameters, specify the custom parameters that you want to keep in the Parameters element of the CustomParameters object." ;
    sh:node microsoftads:CampaignManagementCustomParametersShape ;
    sh:class microsoftads:CampaignManagementCustomParameters ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppInstallAd/finalUrls> ;
    sh:name "final urls" ;
    sh:description "The URL where a search user lands and can choose to install an app. Add: Required Update: Optional" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppInstallAd/finalMobileUrls> ;
    sh:name "final mobile urls" ;
    sh:description "Not supported for app install ads." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppInstallAd/finalAppUrls> ;
    sh:name "final app urls" ;
    sh:description "Not supported for app install ads." ;
    sh:node microsoftads:CampaignManagementAppUrlShape ;
    sh:class microsoftads:CampaignManagementAppUrl ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppInstallAd/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. There are currently not any ForwardCompatibilityMap key and value pairs that are applicable for this object." ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppInstallAd/appPlatform> ;
    sh:name "app platform" ;
    sh:description "The application platform. Possible values include iOS and Android. Add: Required Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppInstallAd/appStoreId> ;
    sh:name "app store id" ;
    sh:description "The application identifier provided by the app store. If the application is new, please expect to wait 4-7 days before the ad will be eligible to deliver. Add: Required Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppInstallAd/title> ;
    sh:name "title" ;
    sh:description "The title of the ad. The title must contain at least one word. The ad's copy and title combined must total at least three words. The title cannot contain dynamic text strings such as {keyword}. The maximum input length of the title is 25 characters. Note that for ad groups that use Traditional Chinese, the title is limited to 15 characters. The title cannot contain the newline (\\n) character. Add: Required Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppInstallAd/text> ;
    sh:name "text" ;
    sh:description "The ad copy. The copy must contain at least one word. The ad's copy and title combined must total at least three words. The ad copy cannot contain dynamic text strings such as {keyword}. The maximum input length of the copy is 71 characters. Note that for ad groups that use Traditional Chinese, the text is limited to 38 characters. The ad copy cannot contain the newline (\\n) character. Add: Required Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management App Install Goal
microsoftads:CampaignManagementAppInstallGoalShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAppInstallGoal ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppInstallGoal/name> ;
    sh:name "name" ;
    sh:description "The conversion goal name. The maximum length of the name is 100, and the name must be unique among all conversion goals belonging to the same customer. Add: Required Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppInstallGoal/status> ;
    sh:name "status" ;
    sh:description "Defines the possible user-determined status values of a conversion goal. These are the status values that a user can decide to set, for example a goal can be set to Paused if you no longer wish to track conversions for that goal. For status values that can be set by the system, see the TrackingStatus element. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Paused" "Deleted" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppInstallGoal/scope> ;
    sh:name "scope" ;
    sh:description "Determines if the goal applies to all accounts or only the account specified in the required CustomerAccountId header element. If you have multiple Microsoft Advertising accounts, you can track conversions across all of those accounts. If you associate a goal with one account, conversions will be tracked for that account only. For app install goals the Account level scope is not supported. You can set this element to Customer or leave it nil. If not specified, the scope will be set to Customer by default. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Account" "Customer" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppInstallGoal/countType> ;
    sh:name "count type" ;
    sh:description "Not applicable for app install goals." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "All" "Unique" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppInstallGoal/revenue> ;
    sh:name "revenue" ;
    sh:description "Determines how much each conversion is worth to your business. When adding a conversion goal if you do not specify any revenue tracking preferences, then each ConversionGoalRevenue will be set to their respective default values. When updating a conversion goal, if the Revenue element is nil or empty then none of the nested properties will be updated. However, if this element is not nil or empty then you are effectively replacing any existing revenue properties. The VariableValue option is not available for app install conversion goals. Add: Optional Update: Optional" ;
    sh:node microsoftads:CampaignManagementConversionGoalRevenueShape ;
    sh:class microsoftads:CampaignManagementConversionGoalRevenue ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppInstallGoal/conversionWindowInMinutes> ;
    sh:name "conversion window in minutes" ;
    sh:description "The conversion window is the length of time in minutes after a click that you want to track conversions. If you set this value to 43200 minutes (30 days), then conversions that happen within 30 days after a click are tracked. Past conversions aren't affected. The minimum value supported is 1 minute, although keep in mind that a shorter conversion window will reduce the number of conversions your account records. The maximum value supported is 129600 minutes (90 days). Add: Optional Update: Optional" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppInstallGoal/tagId> ;
    sh:name "tag id" ;
    sh:description "Not applicable for app install goals." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppInstallGoal/trackingStatus> ;
    sh:name "tracking status" ;
    sh:description "Defines the possible system-determined status values of a conversion goal. These are the status values that can be set by the system, for example the system sets the status to RecordingConversions if we have recorded conversions within the last 7 days. Only the NoRecentConversions and RecordingConversions statuses are applicable for app install conversion goals. For status values that a user can decide to set, for example setting the status to Paused if you no longer wish to track conversions for that goal, see the Status element. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "TagUnverified" "NoRecentConversions" "RecordingConversions" "TagInactive" "InactiveDueToTagUnavailable" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppInstallGoal/excludeFromBidding> ;
    sh:name "exclude from bidding" ;
    sh:description "Determines whether or not to exclude data otherwise related to this conversion goal from a subset of performance report columns. This element is only available for customers who are enabled for the Include in Conversions feature (GetCustomerPilotFeatures returns 574). If this element is set to true, data otherwise related to this conversion goal will be excluded from the Conversions, ConversionRate, CostPerConversion, ReturnOnAdSpend, RevenuePerConversion, and Revenue report columns. Also, if you use an automated bidding bid strategy, setting this property true will result in the goal's conversions no longer factoring into automated bidding calculations. Setting this property \"true\" is effectively the same as unchecking \"Include in Conversions\" in the Microsoft Advertising web application. Regardless of this element value, the AllConversions, AllConversionRate, AllCostPerConversion, AllReturnOnAdSpend, AllRevenuePerConversion, and AllRevenue report columns will include data for all conversion goals. By default this element is false, and data related to this conversion goal are included in all report columns. For more information, see Report Attributes and Performance Statistics and the help article Conversion goals: \"Conversions\" versus \"All conversions\". Add: Optional Update: Optional" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppInstallGoal/viewThroughConversionWindowInMinutes> ;
    sh:name "view through conversion window in minutes" ;
    sh:description "Not applicable for app install goals." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppInstallGoal/goalCategory> ;
    sh:name "goal category" ;
    sh:description "The category used to segment the conversion goal. Categorize your conversion goals however makes sense for your business. Goal categories don't affect performance - they are here to help you segment your goals and their performance metrics. The supported category values vary by conversion goal type. App install goals only support the Download category. Add: Optional. If you leave this element nil or empty, the default category will be set to Download. Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unknown" "None" "Purchase" "AddToCart" "BeginCheckout" "Subscribe" "SubmitLeadForm" "BookAppointment" "Signup" "RequestQuote" "GetDirections" "OutboundClick" "Contact" "PageView" "Download" "Other" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppInstallGoal/attributionModelType> ;
    sh:name "attribution model type" ;
    sh:description "Not applicable for app install goals." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "LastClick" "LastTouch" "DataDriven" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppInstallGoal/isEnhancedConversionsEnabled> ;
    sh:name "is enhanced conversions enabled" ;
    sh:description "Determines whether enhanced conversions are enabled for a conversion goal." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppInstallGoal/isAutoGoal> ;
    sh:name "is auto goal" ;
    sh:description "Only available for event goal." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppInstallGoal/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier for the conversion goal. Add: Read-only Update: Required and Read-Only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppInstallGoal/type> ;
    sh:name "type" ;
    sh:description "The type of the conversion goal. This value is AppInstall when you retrieve an app install goal. For more information about conversion goal types, see the ConversionGoal Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppInstallGoal/appPlatform> ;
    sh:name "app platform" ;
    sh:description "The application platform. Possible values include Android, iOS, Windows and WindowsPhone. Add: Required Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppInstallGoal/appStoreId> ;
    sh:name "app store id" ;
    sh:description "The application identifier provided by the app store. Add: Required Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Application Fault
microsoftads:CampaignManagementApplicationFaultShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementApplicationFault ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementApplicationFault/trackingId> ;
    sh:name "tracking id" ;
    sh:description "The identifier of the log entry that contains the details of the API call." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementApplicationFault/errors> ;
    sh:name "errors" ;
    sh:node microsoftads:CampaignManagementAdApiErrorShape ;
    sh:class microsoftads:CampaignManagementAdApiError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementApplicationFault/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementApplicationFault/editorialErrors> ;
    sh:name "editorial errors" ;
    sh:node microsoftads:CampaignManagementEditorialErrorShape ;
    sh:class microsoftads:CampaignManagementEditorialError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementApplicationFault/batchErrors> ;
    sh:name "batch errors" ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementApplicationFault/operationErrors> ;
    sh:name "operation errors" ;
    sh:node microsoftads:CampaignManagementOperationErrorShape ;
    sh:class microsoftads:CampaignManagementOperationError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementApplicationFault/errorMessage> ;
    sh:name "error message" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementApplicationFault/mTServerName> ;
    sh:name "m tserver name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementApplicationFault/faultingLayer> ;
    sh:name "faulting layer" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "MiddleTier" "Database" "Editorial" "Authentication" "Authorization" "Publisher" "AudienceInteligence" "Cam" "Dam" "FlexTag" "BingMerchantCenter" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementApplicationFault/errorSourceSystem> ;
    sh:name "error source system" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementApplicationFault/errorCode> ;
    sh:name "error code" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "NoCredential" "InvalidCustomerId" "InvalidSecurityTicket" ) ;
  ] .

# Shape for Campaign Management Editorial Error
microsoftads:CampaignManagementEditorialErrorShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementEditorialError ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEditorialError/index> ;
    sh:name "index" ;
    sh:description "The zero-based index of the item in the batch of items in the request message that failed." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEditorialError/disapprovedText> ;
    sh:name "disapproved text" ;
    sh:description "The text that caused the entity to be disapproved. For text length violations, this element specifies the number of characters by which the specified text exceeds the maximum." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEditorialError/reasonCode> ;
    sh:name "reason code" ;
    sh:description "A numeric code that identifies the error. For more information, see Editorial Reason Codes." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEditorialError/location> ;
    sh:name "location" ;
    sh:description "The element or property of the entity that caused the entity to be disapproved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEditorialError/publisherCountry> ;
    sh:name "publisher country" ;
    sh:description "The corresponding country or region for the flagged editorial issue." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEditorialError/fieldPath> ;
    sh:name "field path" ;
    sh:description "The name of the data object's element where the error occurred. For example if the TrackingUrlTemplate of a Campaign contains invalid text, the value of this FieldPath element is TrackingUrlTemplate. This value is subject to change, so you should not take a dependency on the current string format. This element is not supported for all errors. The field path is supported for errors related to FinalMobileUrls, FinalUrls, TrackingUrlTemplate, and UrlCustomParameters elements of the respective Campaign, AdGroup, TextAd, ProductAd, BiddableAdGroupCriterion, and Keyword objects. It is also supported for errors related to all fields of the CalloutAdExtension and ReviewAdExtension objects." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEditorialError/errorCode> ;
    sh:name "error code" ;
    sh:description "A symbolic string constant that identifies the error. For example, UserIsNotAuthorized." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEditorialError/message> ;
    sh:name "message" ;
    sh:description "A message that describes the error. For more information about troubleshooting and error handling, see Handling Service Errors and Exceptions and Operation Error Codes." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEditorialError/code> ;
    sh:name "code" ;
    sh:description "A numeric error code that identifies the error." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEditorialError/details> ;
    sh:name "details" ;
    sh:description "A message that provides additional details about the batch error. This string can be empty." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEditorialError/type> ;
    sh:name "type" ;
    sh:description "Reserved for internal use." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEditorialError/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. Forward compatibility changes will be noted here in future releases. There are currently no forward compatibility changes for this data object." ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEditorialError/appealable> ;
    sh:name "appealable" ;
    sh:description "Reserved for future use." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Application Fault Base
microsoftads:CampaignManagementApplicationFaultBaseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementApplicationFaultBase ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementApplicationFaultBase/trackingId> ;
    sh:name "tracking id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Apply Asset Group Listing Group Actions Request
microsoftads:CampaignManagementApplyAssetGroupListingGroupActionsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementApplyAssetGroupListingGroupActionsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementApplyAssetGroupListingGroupActionsRequest/listingGroupActions> ;
    sh:name "listing group actions" ;
    sh:description "A list of AssetGroupListingGroupAction objects that each contain an Action element and a ListingGroup element. All of the asset group listing group actions must be for the same asset group. You can pass 5,000 AssetGroupListingGroupAction per call and apply a maximum of 20,000 listing groups to each asset group." ;
    sh:node microsoftads:CampaignManagementAssetGroupListingGroupActionShape ;
    sh:class microsoftads:CampaignManagementAssetGroupListingGroupAction ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Asset Group Listing Group Action
microsoftads:CampaignManagementAssetGroupListingGroupActionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAssetGroupListingGroupAction ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroupListingGroupAction/action> ;
    sh:name "action" ;
    sh:description "The action to be applied for the AssetGroupListingGroup." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Add" "Delete" "Update" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroupListingGroupAction/listingGroup> ;
    sh:name "listing group" ;
    sh:description "The AssetGroupListingGroup to apply action to. Update is not supported for listing group, To update the order or structure of the listing group, you cannot use the update action. You must delete existing listing groups and then add new listing groups instead." ;
    sh:node microsoftads:CampaignManagementAssetGroupListingGroupShape ;
    sh:class microsoftads:CampaignManagementAssetGroupListingGroup ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Asset Group Listing Group
microsoftads:CampaignManagementAssetGroupListingGroupShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAssetGroupListingGroup ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroupListingGroup/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier of the AssetGroupListingGroup. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroupListingGroup/assetGroupId> ;
    sh:name "asset group id" ;
    sh:description "The identifier of the asset group this listing group belongs to. Add: Required Update: Not supported Delete: Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroupListingGroup/assetGroupListingType> ;
    sh:name "asset group listing type" ;
    sh:description "The type of listing group, e.g., Subdivision or Unit. Add: Required Update: Not supported Delete: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Subdivision" "Unit" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroupListingGroup/parentListingGroupId> ;
    sh:name "parent listing group id" ;
    sh:description "The identifier of the parent listing group. This element must be set to null if the listing group node represents the root node of a listing group tree. Add: Required Update: Not supported Delete: Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroupListingGroup/dimension> ;
    sh:name "dimension" ;
    sh:description "A condition that helps determine whether a product from the Microsoft Merchant Center store gets served as an ad. Multiple product conditions can be specified by creating a tree of AssetGroupListingGroup objects using ApplyAssetGroupListingGroupActions. For a catalog item to be served as an ad, it must meet all conditions. Add: Required Update: Not supported Delete: Optional" ;
    sh:node microsoftads:CampaignManagementProductConditionShape ;
    sh:class microsoftads:CampaignManagementProductCondition ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroupListingGroup/isExcluded> ;
    sh:name "is excluded" ;
    sh:description "Set to true If you want to exclude products specified by current. Otherwise, the products will be included. Default value is false. Add: Optional Update: Not supported Delete: Optional" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroupListingGroup/listingGroupPath> ;
    sh:name "listing group path" ;
    sh:description "The path of a listing group node. Add: Read-only Update: Read-only Delete: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Apply Asset Group Listing Group Actions Response
microsoftads:CampaignManagementApplyAssetGroupListingGroupActionsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementApplyAssetGroupListingGroupActionsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementApplyAssetGroupListingGroupActionsResponse/assetGroupListingGroupIds> ;
    sh:name "asset group listing group ids" ;
    sh:description "A list of IDs that for the listing groups that had the action applied. The list of IDs corresponds directly to the list of listing groups in the request. If any listing group action failed, then all remaining listing group actions will fail and all elements in this list will be null." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementApplyAssetGroupListingGroupActionsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that weren't successful." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Apply Customer List Items Request
microsoftads:CampaignManagementApplyCustomerListItemsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementApplyCustomerListItemsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementApplyCustomerListItemsRequest/customerListAudience> ;
    sh:name "customer list audience" ;
    sh:description "The customer list associated with the audience." ;
    sh:node microsoftads:CampaignManagementCustomerListShape ;
    sh:class microsoftads:CampaignManagementCustomerList ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Customer List
microsoftads:CampaignManagementCustomerListShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementCustomerList ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomerList/scope> ;
    sh:name "scope" ;
    sh:description "Scope defines what accounts can use this audience. If scope is set to Account, the audience can only be associated with campaigns and ad groups in one account i.e., via the ParentId. If scope is set to Customer, the audience can be associated with campaigns and ad groups in all of the customer's accounts. Add: Required Update: Optional. You can change the scope from Account to Customer, but you cannot change the scope from Customer to Account." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Account" "Customer" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomerList/membershipDuration> ;
    sh:name "membership duration" ;
    sh:description "When you create an audience, you can specify how far back in time Microsoft Advertising should look for actions that match your audience definition. The minimum duration is 1 day and the maximum duration allowed is 390 days. You can also set the duration to -1 for no expiration. Add: Optional. If not specified, the membership duration will be set to 30 by default. Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomerList/searchSize> ;
    sh:name "search size" ;
    sh:description "The total number of people who are active members of this audience in the Search network. This gives you an idea of how many search users you can target. The audience needs to have at least 300 people before Microsoft Advertising will use it for optimizations. This property will be nil or empty for up to 48 hours while the audience is being built, for example if you add or update the customer list membership duration. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomerList/audienceNetworkSize> ;
    sh:name "audience network size" ;
    sh:description "The total number of people who are active members of this audience in the Audience network. This gives you an idea of how many Audience network users you can target. The audience needs to have at least 300 people before Microsoft Advertising will use it for optimizations. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomerList/supportedCampaignTypes> ;
    sh:name "supported campaign types" ;
    sh:description "The list of campaign types that support this audience. Supported values are Audience, DynamicSearchAds, Search, and Shopping. New campaign types might be added in the future, so you should not take any dependency on a fixed set of values. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomerList/customerShare> ;
    sh:name "customer share" ;
    sh:description "Determines the list of customers and accounts that share the audience. Details include audience association counts. Shared UET tags and audiences are only available for pilot customers. For an overview of sharing audiences and UET tags in a customer hierarchy, see the Share Audiences and UET Tags technical guide. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. Set this element to null or empty to retain any existing customer account shares. To remove all customer account shares, set the CustomerAccountShares element of the CustomerShare object to null or empty. To remove a subset of customer account shares, specify the customer account shares that you want to keep in the CustomerAccountShares element of the CustomerShare object." ;
    sh:node microsoftads:CampaignManagementCustomerShareShape ;
    sh:class microsoftads:CampaignManagementCustomerShare ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomerList/id> ;
    sh:name "id" ;
    sh:description "The Microsoft Advertising identifier of the audience. Add: Read-only Update: Required and read-only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomerList/name> ;
    sh:name "name" ;
    sh:description "The name of the audience. The name can contain a maximum of 128 characters. Add: Required Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomerList/description> ;
    sh:name "description" ;
    sh:description "The description of the audience. Use a description to help you remember what audience you are targeting. The description can contain a maximum of 1,024 characters. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomerList/type> ;
    sh:name "type" ;
    sh:description "The type of the audience. This value is CustomerList when you retrieve a customer list audience. For more information about audience types, see the Audience Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomerList/parentId> ;
    sh:name "parent id" ;
    sh:description "The Microsoft Advertising identifier of the account or customer. If the Scope is set to Account, this is the account ID, and otherwise it is the customer ID. Add: Required Update: Read-only. You cannot change the parent ID." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomerList/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. Forward compatibility changes will be noted here in future releases. There are currently no forward compatibility changes for the Audience object." ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Apply Customer List Items Response
microsoftads:CampaignManagementApplyCustomerListItemsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementApplyCustomerListItemsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementApplyCustomerListItemsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that weren't successful." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Apply Customer List User Data Request
microsoftads:CampaignManagementApplyCustomerListUserDataRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementApplyCustomerListUserDataRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementApplyCustomerListUserDataRequest/customerListUserData> ;
    sh:name "customer list user data" ;
    sh:description "Defines the CustomerListUserData data object. You can specify one user data type in CustomerListItemSubtype. Use CustomerListActionType to specify the action type. Note: The maximum user data for CustomerListItems is 1000." ;
    sh:node microsoftads:CampaignManagementCustomerListUserDataShape ;
    sh:class microsoftads:CampaignManagementCustomerListUserData ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Customer List User Data
microsoftads:CampaignManagementCustomerListUserDataShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementCustomerListUserData ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomerListUserData/audienceId> ;
    sh:name "audience id" ;
    sh:description "The Microsoft Advertising assigned identifier of an audience, for example the customer list ID." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomerListUserData/customerListItems> ;
    sh:name "customer list items" ;
    sh:description "An array of customer list items. When CustomerListItemSubType is \"Email\", each item must be a SHA-256 hashed email address (lowercase hexadecimal string of 64 characters). For example, the email test`@contoso`.com should be hashed as a8e34c39d390c30c3ff245256c46c7076cecb7dfcfd60f7534d1037e901fad76." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomerListUserData/customerListItemSubType> ;
    sh:name "customer list item sub type" ;
    sh:description "The user data type of the customer list item." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Email" "CRM" "Phone" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomerListUserData/actionType> ;
    sh:name "action type" ;
    sh:description "The action type when uploading user data." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "None" "Add" "Remove" "Replace" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomerListUserData/acceptCustomerMatchTerm> ;
    sh:name "accept customer match term" ;
    sh:description "Optional flag to accept Customer Match terms for this request. - true: Accept terms and process customer data - false: Reject terms and return error 8003 (CustomerListTermsAndConditionsNotAccepted) - Not set: Fallback to previous behavior in which to accept terms through the Microsoft Advertising UI Add: Optional Update: Optional" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Apply Customer List User Data Response
microsoftads:CampaignManagementApplyCustomerListUserDataResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementApplyCustomerListUserDataResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementApplyCustomerListUserDataResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that weren't successful." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Apply Hotel Group Actions Request
microsoftads:CampaignManagementApplyHotelGroupActionsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementApplyHotelGroupActionsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementApplyHotelGroupActionsRequest/criterionActions> ;
    sh:name "criterion actions" ;
    sh:description "A list of up to 5,000 AdGroupCriterionAction objects that each contain an Action element and a BiddableAdGroupCriterion. All of the ad group criterion actions must be for the same ad group. For more information including validation rules, please see Create a Microsoft Shopping campaign with the Campaign Management Service." ;
    sh:node microsoftads:CampaignManagementAdGroupCriterionActionShape ;
    sh:class microsoftads:CampaignManagementAdGroupCriterionAction ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Apply Hotel Group Actions Response
microsoftads:CampaignManagementApplyHotelGroupActionsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementApplyHotelGroupActionsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementApplyHotelGroupActionsResponse/adGroupCriterionIds> ;
    sh:name "ad group criterion ids" ;
    sh:description "A list of identifiers that identify the criterion that had the action applied. The list of identifiers corresponds directly to the list of criterion in the request. If any criterion action failed, then all remaining criterion actions will fail, and all elements in this list will be null." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementApplyHotelGroupActionsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request. For criterion which failed due to user error, an actionable error code will be returned. If any criterion action failed, then all remaining criterion actions will fail, and none of the elements in this list will be null. For criterion that might have otherwise succeeded, a generic error will be returned which explains that a related entity failed." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Apply Offline Conversion Adjustments Request
microsoftads:CampaignManagementApplyOfflineConversionAdjustmentsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementApplyOfflineConversionAdjustmentsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementApplyOfflineConversionAdjustmentsRequest/offlineConversionAdjustments> ;
    sh:name "offline conversion adjustments" ;
    sh:description "The offline conversion adjustments to apply." ;
    sh:node microsoftads:CampaignManagementOfflineConversionAdjustmentShape ;
    sh:class microsoftads:CampaignManagementOfflineConversionAdjustment ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Offline Conversion Adjustment
microsoftads:CampaignManagementOfflineConversionAdjustmentShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementOfflineConversionAdjustment ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOfflineConversionAdjustment/microsoftClickId> ;
    sh:name "microsoft click id" ;
    sh:description "The MSCLKID for the offline conversion. To ensure that auto-tagging is enabled for Microsoft click ID tracking, use the GetAccountProperties and SetAccountProperties operations. Apply: Optional Note: The MSCLKID is optional when you provide a hashed email address or phone number for enhanced conversions." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOfflineConversionAdjustment/conversionName> ;
    sh:name "conversion name" ;
    sh:description "The conversion goal name. This name must match an existing conversion goal name, otherwise the offline conversion goal data will not be applied. Apply: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOfflineConversionAdjustment/conversionTime> ;
    sh:name "conversion time" ;
    sh:description "The date and time when the original offline conversion occurred. The date and time must be within the last 90 days, otherwise the operation will fail when you attempt to send Microsoft Advertising the offline conversion data. To be counted by Microsoft Advertising as an offline conversion after successful upload, the following additional requirements must be met: - The date and time of the conversion must be set later than the date and time of the recorded click. - The date and time must be within the conversion window. The ConversionWindowInMinutes property of the OfflineConversionGoal determines the maximum length of time in minutes after a click that conversions will be tracked. For example if three clicks were recorded on April 30th, if the ConversionWindowInMinutes of the OfflineConversionGoal is equal to 30 days (43200 minutes), and if you send Microsoft Advertising the following offline conversions on July 31st, then Microsoft Advertising will only count the one with MicrosoftClickId=2 as an offline conversion. - MicrosoftClickId=1; ConversionTime=2020-04-30T17:02:35.6853793Z - MicrosoftClickId=2; ConversionTime=2020-05-15T17:02:35.6853793Z - MicrosoftClickId=3; ConversionTime=2020-06-15T17:02:35.6853793Z The offline conversion data with MicrosoftClickId=1 will not be uploaded since the conversion date and time is more than 90 days ago, and the offline conversion data with MicrosoftClickId=3 will not be counted because it does not fall within the conversion window (April 30 through May 29). Important: The value must be in Coordinated Universal Time (UTC). This differs from the time zone options when you upload offline conversions in the Microsoft Advertising web application. For information about the format of the date and time, see the dateTime entry in Primitive XML Data Types. Apply: Required" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOfflineConversionAdjustment/adjustmentTime> ;
    sh:name "adjustment time" ;
    sh:description "The date and time when the adjustment occurred. The adjustment time cannot be earlier than the original offline conversion date and time. Important: The value must be in Coordinated Universal Time (UTC). This differs from the time zone options when you upload offline conversions in the Microsoft Advertising web application. For information about the format of the date and time, see the dateTime entry in Primitive XML Data Types. Apply: Required" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOfflineConversionAdjustment/adjustmentType> ;
    sh:name "adjustment type" ;
    sh:description "Determines whether to retract or restate the offline conversion. If this value is \"Restate\", the offline conversion previously attributed to the specified MicrosoftClickId will be adjusted according to the new AdjustmentCurrencyCode, AdjustmentTime, and AdjustmentValue. If this value is \"Retract\", the offline conversion previously attributed to the specified MicrosoftClickId will be retracted or deleted. Apply: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOfflineConversionAdjustment/adjustmentValue> ;
    sh:name "adjustment value" ;
    sh:description "The adjusted offline conversion value. Apply: Required if AdjustmentType is set to \"Restate\", and otherwise this field should not be set." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOfflineConversionAdjustment/adjustmentCurrencyCode> ;
    sh:name "adjustment currency code" ;
    sh:description "The currency code for the restated offline conversion. For more information, see Currencies. Apply: Required if AdjustmentType is set to \"Restate\", and otherwise this field is ignored. If you do not specify an adjustment currency code with the restatement, then the CurrencyCode element of the goal's ConversionGoalRevenue is used." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOfflineConversionAdjustment/hashedEmailAddress> ;
    sh:name "hashed email address" ;
    sh:description "The hashed email address using the SHA-256 algorithm for use with enhanced conversions." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOfflineConversionAdjustment/hashedPhoneNumber> ;
    sh:name "hashed phone number" ;
    sh:description "The hashed phone number according to the E.164 standard for use with enhanced conversions." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Apply Offline Conversion Adjustments Response
microsoftads:CampaignManagementApplyOfflineConversionAdjustmentsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementApplyOfflineConversionAdjustmentsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementApplyOfflineConversionAdjustmentsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Apply Offline Conversions Request
microsoftads:CampaignManagementApplyOfflineConversionsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementApplyOfflineConversionsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementApplyOfflineConversionsRequest/offlineConversions> ;
    sh:name "offline conversions" ;
    sh:description "The list of offline conversions for the account. You can add a maximum of 1,000 offline conversions per service request. Each offline conversion can be split across multiple click IDs. A single click ID can, however, be associated with multiple conversion goals and also be associated with the same goal multiple times, as long as the conversion time is different. Also, the same conversion can't be applied more than once. If you send Microsoft Advertising duplicates, the first instance will be used and the others will be ignored." ;
    sh:node microsoftads:CampaignManagementOfflineConversionShape ;
    sh:class microsoftads:CampaignManagementOfflineConversion ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Offline Conversion
microsoftads:CampaignManagementOfflineConversionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementOfflineConversion ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOfflineConversion/microsoftClickId> ;
    sh:name "microsoft click id" ;
    sh:description "The MSCLKID for the offline conversion. To ensure that auto-tagging is enabled for Microsoft click ID tracking, use the GetAccountProperties and SetAccountProperties operations. Apply: Optional Note: The MSCLKID is optional when you provide a hashed email address or phone number for enhanced conversions." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOfflineConversion/conversionName> ;
    sh:name "conversion name" ;
    sh:description "The conversion goal name. This name must match an existing conversion goal name, otherwise the offline conversion goal data will not be applied. Apply: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOfflineConversion/conversionTime> ;
    sh:name "conversion time" ;
    sh:description "The date and time when the offline conversion occurred. The date and time must be within the last 90 days, otherwise the operation will fail when you attempt to send Microsoft Advertising the offline conversion data. To be counted by Microsoft Advertising as an offline conversion after successful upload, the following additional requirements must be met: - The date and time of the conversion must be set later than the date and time of the recorded click. - The date and time must be within the conversion window. The ConversionWindowInMinutes property of the OfflineConversionGoal determines the maximum length of time in minutes after a click that conversions will be tracked. For example if three clicks were recorded on April 30th, if the ConversionWindowInMinutes of the OfflineConversionGoal is equal to 30 days (43200 minutes), and if you send Microsoft Advertising the following offline conversions on July 31st, then Microsoft Advertising will only count the one with MicrosoftClickId=2 as an offline conversion. - MicrosoftClickId=1; ConversionTime=2020-04-30T17:02:35.6853793Z - MicrosoftClickId=2; ConversionTime=2020-05-15T17:02:35.6853793Z - MicrosoftClickId=3; ConversionTime=2020-06-15T17:02:35.6853793Z The offline conversion data with MicrosoftClickId=1 will not be uploaded since the conversion date and time is more than 90 days ago, and the offline conversion data with MicrosoftClickId=3 will not be counted because it does not fall within the conversion window (April 30 through May 29). Important: The value must be in Coordinated Universal Time (UTC). This differs from the time zone options when you upload offline conversions in the Microsoft Advertising web application. For information about the format of the date and time, see the dateTime entry in Primitive XML Data Types. Apply: Required" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOfflineConversion/conversionValue> ;
    sh:name "conversion value" ;
    sh:description "The offline conversion value. Apply: Optional. If you do not specify an offline conversion value, then the Value element of the goal's ConversionGoalRevenue is used." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOfflineConversion/conversionCurrencyCode> ;
    sh:name "conversion currency code" ;
    sh:description "The currency code for the offline conversion. For more information, see Currencies. Apply: Optional. If you do not specify an offline conversion currency code, then the CurrencyCode element of the goal's ConversionGoalRevenue is used." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOfflineConversion/externalAttributionCredit> ;
    sh:name "external attribution credit" ;
    sh:description "This field can only be set for conversions actions which use external attribution. It represents the fraction of the conversion that is attributed to each click. Its value must be greater than 0 and less than or equal to 1. A GoalNotEligibleForExternalAttribution error will be returned if this field is used with a non-externally attributed conversion action. Apply: Optional" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOfflineConversion/externalAttributionModel> ;
    sh:name "external attribution model" ;
    sh:description "This field can only be set for conversions actions which use external attribution. It specifies the attribution model name. A GoalNotEligibleForExternalAttribution error will be returned if this field is used with a non-externally attributed conversion action. Apply: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOfflineConversion/hashedEmailAddress> ;
    sh:name "hashed email address" ;
    sh:description "The hashed email address using the SHA-256 algorithm for use with enhanced conversions." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOfflineConversion/hashedPhoneNumber> ;
    sh:name "hashed phone number" ;
    sh:description "The hashed phone number according to the E.164 standard for use with enhanced conversions." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Apply Offline Conversions Response
microsoftads:CampaignManagementApplyOfflineConversionsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementApplyOfflineConversionsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementApplyOfflineConversionsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Apply Online Conversion Adjustments Request
microsoftads:CampaignManagementApplyOnlineConversionAdjustmentsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementApplyOnlineConversionAdjustmentsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementApplyOnlineConversionAdjustmentsRequest/onlineConversionAdjustments> ;
    sh:name "online conversion adjustments" ;
    sh:description "The online conversion adjustments to apply." ;
    sh:node microsoftads:CampaignManagementOnlineConversionAdjustmentShape ;
    sh:class microsoftads:CampaignManagementOnlineConversionAdjustment ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Online Conversion Adjustment
microsoftads:CampaignManagementOnlineConversionAdjustmentShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementOnlineConversionAdjustment ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOnlineConversionAdjustment/transactionId> ;
    sh:name "transaction id" ;
    sh:description "The ID for this transaction." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOnlineConversionAdjustment/conversionName> ;
    sh:name "conversion name" ;
    sh:description "The conversion goal name. This name must match an existing conversion goal name, otherwise the online conversion goal data will not be applied. Apply: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOnlineConversionAdjustment/adjustmentTime> ;
    sh:name "adjustment time" ;
    sh:description "The date and time when the adjustment occurred. The adjustment time cannot be earlier than the original offline conversion date and time. Important: The value must be in Coordinated Universal Time (UTC). This differs from the time zone options when you upload offline conversions in the Microsoft Advertising web application. For information about the format of the date and time, see the dateTime entry in Primitive XML Data Types. Apply: Required" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOnlineConversionAdjustment/adjustmentType> ;
    sh:name "adjustment type" ;
    sh:description "Determines whether to retract or restate the online conversion. If this value is \"Restate\", the offline conversion previously attributed to the specified MicrosoftClickId will be adjusted according to the new AdjustmentCurrencyCode, AdjustmentTime, and AdjustmentValue. If this value is \"Retract\", the offline conversion previously attributed to the specified MicrosoftClickId will be retracted or deleted. Apply: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOnlineConversionAdjustment/adjustmentValue> ;
    sh:name "adjustment value" ;
    sh:description "The adjusted online conversion value. Apply: Required if AdjustmentType is set to \"Restate\", and otherwise this field should not be set." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOnlineConversionAdjustment/adjustmentCurrencyCode> ;
    sh:name "adjustment currency code" ;
    sh:description "The currency code for the restated online conversion. For more information, see Currencies. Apply: Required if AdjustmentType is set to \"Restate\", and otherwise this field is ignored. If you do not specify an adjustment currency code with the restatement, then the CurrencyCode element of the goal's ConversionGoalRevenue is used." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Apply Online Conversion Adjustments Response
microsoftads:CampaignManagementApplyOnlineConversionAdjustmentsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementApplyOnlineConversionAdjustmentsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementApplyOnlineConversionAdjustmentsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Apply Product Partition Actions Request
microsoftads:CampaignManagementApplyProductPartitionActionsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementApplyProductPartitionActionsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementApplyProductPartitionActionsRequest/criterionActions> ;
    sh:name "criterion actions" ;
    sh:description "A list of up to 5,000 AdGroupCriterionAction objects that each contain an Action element and either a BiddableAdGroupCriterion or NegativeAdGroupCriterion. All of the ad group criterion actions must be for the same ad group. For more information including validation rules, please see Create a Microsoft Shopping campaign with the Campaign Management Service." ;
    sh:node microsoftads:CampaignManagementAdGroupCriterionActionShape ;
    sh:class microsoftads:CampaignManagementAdGroupCriterionAction ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Apply Product Partition Actions Response
microsoftads:CampaignManagementApplyProductPartitionActionsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementApplyProductPartitionActionsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementApplyProductPartitionActionsResponse/adGroupCriterionIds> ;
    sh:name "ad group criterion ids" ;
    sh:description "A list of identifiers that identify the criterion that had the action applied. The list of identifiers corresponds directly to the list of criterion in the request. If any criterion action failed, then all remaining criterion actions will fail, and all elements in this list will be null." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementApplyProductPartitionActionsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request. For criterion which failed due to user error, an actionable error code will be returned. If any criterion action failed, then all remaining criterion actions will fail, and none of the elements in this list will be null. For criterion that might have otherwise succeeded, a generic error will be returned which explains that a related entity failed." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management App Setting
microsoftads:CampaignManagementAppSettingShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAppSetting ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppSetting/type> ;
    sh:name "type" ;
    sh:description "The type of setting. For more information, see Setting Data Object Remarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppSetting/appStore> ;
    sh:name "app store" ;
    sh:description "The app store where the app is distributed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAppSetting/appId> ;
    sh:name "app id" ;
    sh:description "The unique identifier of the mobile app." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Asset Base
microsoftads:CampaignManagementAssetBaseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAssetBase ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetBase/id> ;
    sh:name "id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetBase/name> ;
    sh:name "name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetBase/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Asset Group Editorial Reason
microsoftads:CampaignManagementAssetGroupEditorialReasonShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAssetGroupEditorialReason ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroupEditorialReason/reasonCode> ;
    sh:name "reason code" ;
    sh:description "A code that identifies the reason for the failure. For a list of possible reason codes, see Editorial Reason Codes." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroupEditorialReason/location> ;
    sh:name "location" ;
    sh:description "The component of the asset group that failed editorial review." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroupEditorialReason/term> ;
    sh:name "term" ;
    sh:description "The term that failed editorial review. This element will not be set if a combination of terms caused the failure or if the failure was based on a policy violation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroupEditorialReason/publisherCountries> ;
    sh:name "publisher countries" ;
    sh:description "The list of publisher countries or regions whose editorial guidelines do not allow the specified term." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Campaign Management Asset Group Editorial Reason Collection
microsoftads:CampaignManagementAssetGroupEditorialReasonCollectionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAssetGroupEditorialReasonCollection ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroupEditorialReasonCollection/assetGroupId> ;
    sh:name "asset group id" ;
    sh:description "The identifier of the asset group that failed editorial review." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroupEditorialReasonCollection/campaignId> ;
    sh:name "campaign id" ;
    sh:description "The identifier of the associated campaign." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroupEditorialReasonCollection/reasons> ;
    sh:name "reasons" ;
    sh:description "A list of AssetGroupEditorialReason objects that identify the component of an asset group that failed editorial review, and the reason for the failure." ;
    sh:node microsoftads:CampaignManagementAssetGroupEditorialReasonShape ;
    sh:class microsoftads:CampaignManagementAssetGroupEditorialReason ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAssetGroupEditorialReasonCollection/appealStatus> ;
    sh:name "appeal status" ;
    sh:description "A value that determines whether you can appeal the issues found by the editorial review." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "None" "Appealable" "AppealPending" "NotAppealable" ) ;
  ] .

# Shape for Campaign Management Audience Base
microsoftads:CampaignManagementAudienceBaseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAudienceBase ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudienceBase/scope> ;
    sh:name "scope" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Account" "Customer" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudienceBase/membershipDuration> ;
    sh:name "membership duration" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudienceBase/searchSize> ;
    sh:name "search size" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudienceBase/audienceNetworkSize> ;
    sh:name "audience network size" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudienceBase/supportedCampaignTypes> ;
    sh:name "supported campaign types" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudienceBase/customerShare> ;
    sh:name "customer share" ;
    sh:node microsoftads:CampaignManagementCustomerShareShape ;
    sh:class microsoftads:CampaignManagementCustomerShare ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudienceBase/id> ;
    sh:name "id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudienceBase/name> ;
    sh:name "name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudienceBase/description> ;
    sh:name "description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudienceBase/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudienceBase/parentId> ;
    sh:name "parent id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudienceBase/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Audience Criterion
microsoftads:CampaignManagementAudienceCriterionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAudienceCriterion ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudienceCriterion/type> ;
    sh:name "type" ;
    sh:description "The type of the criterion. This value is Audience when you retrieve an audience criterion. For more information about criterion types, see the Criterion Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudienceCriterion/audienceId> ;
    sh:name "audience id" ;
    sh:description "The Microsoft Advertising identifier of the Audience. Add: Required Update: Read-only. You must leave this element null or the audience must already be associated with the specified entity. To associate a different audience with the entity, you must add a new audience criterion and optionally delete any existing audience criteria." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudienceCriterion/audienceType> ;
    sh:name "audience type" ;
    sh:description "The audience type. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Audience Dimension
microsoftads:CampaignManagementAudienceDimensionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAudienceDimension ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudienceDimension/type> ;
    sh:name "type" ;
    sh:description "The type of audience. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Age" "Gender" "Audience" "Profile" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudienceDimension/audiences> ;
    sh:name "audiences" ;
    sh:description "A list of audiences. The supported audience types are: - CombinedList - CustomAudience - InMarketAudience - ProductAudience - RemarketingList - SimilarRemarketingList - CustomerList There is a maximum of 2,000 audiences in an AudienceDimension. Add: Required Update: Optional. To remove existing values, set it to null or empty; to remove a subset of audience segments, specify the audience segments that you want to keep and it will replace the existing audience segments." ;
    sh:node microsoftads:CampaignManagementAudienceInfoShape ;
    sh:class microsoftads:CampaignManagementAudienceInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Audience Group Asset Group Association
microsoftads:CampaignManagementAudienceGroupAssetGroupAssociationShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAudienceGroupAssetGroupAssociation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudienceGroupAssetGroupAssociation/assetGroupId> ;
    sh:name "asset group id" ;
    sh:description "The ID of the asset group. Set: Required Delete: Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudienceGroupAssetGroupAssociation/audienceGroupId> ;
    sh:name "audience group id" ;
    sh:description "The ID of the audience group. Set: Required Delete: Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Audience Group Dimension Base
microsoftads:CampaignManagementAudienceGroupDimensionBaseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAudienceGroupDimensionBase ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudienceGroupDimensionBase/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Age" "Gender" "Audience" "Profile" ) ;
  ] .

# Shape for Campaign Management Audio Filter
microsoftads:CampaignManagementAudioFilterShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAudioFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudioFilter/categories> ;
    sh:name "categories" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAudioFilter/audioNames> ;
    sh:name "audio names" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Campaign Management Audit Point Result
microsoftads:CampaignManagementAuditPointResultShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementAuditPointResult ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAuditPointResult/key> ;
    sh:name "key" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAuditPointResult/severity> ;
    sh:name "severity" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAuditPointResult/description> ;
    sh:name "description" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAuditPointResult/timestamp> ;
    sh:name "timestamp" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAuditPointResult/details> ;
    sh:name "details" ;
    sh:description "Reserved." ;
    sh:node <https://relay.inferal.com/ontology/microsoftads/record/Microsoftads.CampaignManagementAuditPointResult/details/ContainerShape> ;
    sh:class <https://relay.inferal.com/ontology/microsoftads/record/Microsoftads.CampaignManagementAuditPointResult/details/Container> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Base Domain Setting
microsoftads:CampaignManagementBaseDomainSettingShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementBaseDomainSetting ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBaseDomainSetting/type> ;
    sh:name "type" ;
    sh:description "The type of setting. This value is BaseDomainSetting when you retrieve the setting. For more information, see Setting Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBaseDomainSetting/baseDomain> ;
    sh:name "base domain" ;
    sh:description "The fundamental part of the URL (e.g., contoso.com). Note: BaseDomain is initially set automatically, you can't set it. Add: Read only. Update: Read only." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Batch Error Base
microsoftads:CampaignManagementBatchErrorBaseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementBatchErrorBase ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBatchErrorBase/fieldPath> ;
    sh:name "field path" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBatchErrorBase/errorCode> ;
    sh:name "error code" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBatchErrorBase/message> ;
    sh:name "message" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBatchErrorBase/code> ;
    sh:name "code" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBatchErrorBase/details> ;
    sh:name "details" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBatchErrorBase/index> ;
    sh:name "index" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBatchErrorBase/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBatchErrorBase/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Batch Error Collection Base
microsoftads:CampaignManagementBatchErrorCollectionBaseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementBatchErrorCollectionBase ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBatchErrorCollectionBase/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBatchErrorCollectionBase/fieldPath> ;
    sh:name "field path" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBatchErrorCollectionBase/batchErrors> ;
    sh:name "batch errors" ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBatchErrorCollectionBase/message> ;
    sh:name "message" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBatchErrorCollectionBase/errorCode> ;
    sh:name "error code" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBatchErrorCollectionBase/code> ;
    sh:name "code" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBatchErrorCollectionBase/details> ;
    sh:name "details" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBatchErrorCollectionBase/index> ;
    sh:name "index" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBatchErrorCollectionBase/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Biddable Ad Group Criterion
microsoftads:CampaignManagementBiddableAdGroupCriterionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementBiddableAdGroupCriterion ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBiddableAdGroupCriterion/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "The identifier of the ad group to apply the criterion to. Add: Required Update: Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBiddableAdGroupCriterion/status> ;
    sh:name "status" ;
    sh:description "A status value that determines whether the criterion applies for the ad group. For most biddable ad group criterions the only supported status value is Active. For exceptions, see Webpage Usage below. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Paused" "Deleted" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBiddableAdGroupCriterion/criterion> ;
    sh:name "criterion" ;
    sh:description "The criterion to apply to the ad group. The criterion helps determine whether ads in the ad group are served. For a list of available criterion types, see AdGroupCriterionType. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementAgeCriterionShape ; sh:class microsoftads:CampaignManagementAgeCriterion ]
      [ sh:node microsoftads:CampaignManagementAudienceCriterionShape ; sh:class microsoftads:CampaignManagementAudienceCriterion ]
      [ sh:node microsoftads:CampaignManagementChannelPlacementCriterionShape ; sh:class microsoftads:CampaignManagementChannelPlacementCriterion ]
      [ sh:node microsoftads:CampaignManagementCriterionShape ; sh:class microsoftads:CampaignManagementCriterion ]
      [ sh:node microsoftads:CampaignManagementCriterionBaseShape ; sh:class microsoftads:CampaignManagementCriterionBase ]
      [ sh:node microsoftads:CampaignManagementCustomLinkedInCriterionShape ; sh:class microsoftads:CampaignManagementCustomLinkedInCriterion ]
      [ sh:node microsoftads:CampaignManagementDayTimeCriterionShape ; sh:class microsoftads:CampaignManagementDayTimeCriterion ]
      [ sh:node microsoftads:CampaignManagementDealCriterionShape ; sh:class microsoftads:CampaignManagementDealCriterion ]
      [ sh:node microsoftads:CampaignManagementDeviceCriterionShape ; sh:class microsoftads:CampaignManagementDeviceCriterion ]
      [ sh:node microsoftads:CampaignManagementGenderCriterionShape ; sh:class microsoftads:CampaignManagementGenderCriterion ]
      [ sh:node microsoftads:CampaignManagementGenreCriterionShape ; sh:class microsoftads:CampaignManagementGenreCriterion ]
      [ sh:node microsoftads:CampaignManagementHotelAdvanceBookingWindowCriterionShape ; sh:class microsoftads:CampaignManagementHotelAdvanceBookingWindowCriterion ]
      [ sh:node microsoftads:CampaignManagementHotelCheckInDateCriterionShape ; sh:class microsoftads:CampaignManagementHotelCheckInDateCriterion ]
      [ sh:node microsoftads:CampaignManagementHotelCheckInDayCriterionShape ; sh:class microsoftads:CampaignManagementHotelCheckInDayCriterion ]
      [ sh:node microsoftads:CampaignManagementHotelDateSelectionTypeCriterionShape ; sh:class microsoftads:CampaignManagementHotelDateSelectionTypeCriterion ]
      [ sh:node microsoftads:CampaignManagementHotelGroupShape ; sh:class microsoftads:CampaignManagementHotelGroup ]
      [ sh:node microsoftads:CampaignManagementHotelLengthOfStayCriterionShape ; sh:class microsoftads:CampaignManagementHotelLengthOfStayCriterion ]
      [ sh:node microsoftads:CampaignManagementLocationCriterionShape ; sh:class microsoftads:CampaignManagementLocationCriterion ]
      [ sh:node microsoftads:CampaignManagementLocationIntentCriterionShape ; sh:class microsoftads:CampaignManagementLocationIntentCriterion ]
      [ sh:node microsoftads:CampaignManagementPlacementCriterionShape ; sh:class microsoftads:CampaignManagementPlacementCriterion ]
      [ sh:node microsoftads:CampaignManagementProductPartitionShape ; sh:class microsoftads:CampaignManagementProductPartition ]
      [ sh:node microsoftads:CampaignManagementProductScopeShape ; sh:class microsoftads:CampaignManagementProductScope ]
      [ sh:node microsoftads:CampaignManagementProfileCriterionShape ; sh:class microsoftads:CampaignManagementProfileCriterion ]
      [ sh:node microsoftads:CampaignManagementRadiusCriterionShape ; sh:class microsoftads:CampaignManagementRadiusCriterion ]
      [ sh:node microsoftads:CampaignManagementStoreCriterionShape ; sh:class microsoftads:CampaignManagementStoreCriterion ]
      [ sh:node microsoftads:CampaignManagementTopicCriterionShape ; sh:class microsoftads:CampaignManagementTopicCriterion ]
      [ sh:node microsoftads:CampaignManagementWebpageShape ; sh:class microsoftads:CampaignManagementWebpage ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBiddableAdGroupCriterion/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier for the ad group criterion. Add: Read-only Update: Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBiddableAdGroupCriterion/type> ;
    sh:name "type" ;
    sh:description "The type of the ad group criterion. This value is BiddableAdGroupCriterion when you retrieve a biddable ad group criterion. For more information about ad group criterion types, see the AdGroupCriterion Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBiddableAdGroupCriterion/criterionBid> ;
    sh:name "criterion bid" ;
    sh:description "The bid to use in the auction. If the inherited Criterion is a Webpage criterion, then you must use a FixedBid. If the inherited Criterion is a ProductPartition, then you must use a FixedBid unless the Sponsored Products BidOption is set to BidBoost (for details see ProductPartition Usage below). For all other biddable ad group criterions use the BidMultiplier. If you do not use the correct object type, then your requested bid will be ignored: If the bid is required, the operation will fail; If the bid is optional, the default bid will be used. Add: Requirements vary depending on the inherited Criterion type. The bid is optional and will be set to the default of 0 if not included for AgeCriterion, DayTimeCriterion, DeviceCriterion, GenderCriterion, LocationCriterion, ProfileCriterion, RadiusCriterion, AudienceCriterion, and Webpage criterions. The bid is not applicable for LocationIntentCriterion (The service will not return any error and the bid will be ignored even if you include it). When you add a ProductPartition with the ApplyProductPartitionActions operation the bid is required unless the product partition type is Subdivision, in which case the bid is not allowed. Update: Requirements vary depending on the inherited Criterion type. The bid is required for AgeCriterion, DayTimeCriterion, DeviceCriterion, GenderCriterion, LocationCriterion, ProfileCriterion, and RadiusCriterion. The bid is not applicable for LocationIntentCriterion (The service will not return any error and the bid will be ignored even if you include it). For AudienceCriterion and Webpage criterions the bid is optional, and If no value is set for the update, this setting is not changed. When you update a ProductPartition with the ApplyProductPartitionActions operation the bid is optional, and If no value is set for the update, this setting is not changed." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBidMultiplierShape ; sh:class microsoftads:CampaignManagementBidMultiplier ]
      [ sh:node microsoftads:CampaignManagementCriterionBidShape ; sh:class microsoftads:CampaignManagementCriterionBid ]
      [ sh:node microsoftads:CampaignManagementCriterionBidBaseShape ; sh:class microsoftads:CampaignManagementCriterionBidBase ]
      [ sh:node microsoftads:CampaignManagementFixedBidShape ; sh:class microsoftads:CampaignManagementFixedBid ]
      [ sh:node microsoftads:CampaignManagementRateBidShape ; sh:class microsoftads:CampaignManagementRateBid ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBiddableAdGroupCriterion/destinationUrl> ;
    sh:name "destination url" ;
    sh:description "The URL of the webpage that the user is taken to when they click the ad. This element is only used if the inherited Criterion is a ProductPartition criterion. For details see ProductPartition Usage below." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBiddableAdGroupCriterion/trackingUrlTemplate> ;
    sh:name "tracking url template" ;
    sh:description "Tracking templates are where you can specify URL tracking parameters that are used in tandem with your final URL or landing page. We recommend that you add the tracking template at the account level and then it will be applied to all URLs for lower level entities such as campaigns, ad groups, and ads. To learn more, see the Microsoft Advertising help articles URL Tracking with Upgraded URLs. This element is only used if the inherited Criterion is either a ProductPartition or Webpage criterion. For details see ProductPartition Usage and Webpage Usage below." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBiddableAdGroupCriterion/finalUrlSuffix> ;
    sh:name "final url suffix" ;
    sh:description "The final URL suffix can include tracking parameters that will be appended to the end of your landing page URL. We recommend placing tracking parameters that your landing page requires in a final URL suffix so that your customers are always sent to your landing page. For more details and validation rules see Final URL Suffix in the technical guides. This element is only used if the inherited Criterion is either a ProductPartition or Webpage criterion. For details see ProductPartition Usage and Webpage Usage below." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBiddableAdGroupCriterion/urlCustomParameters> ;
    sh:name "url custom parameters" ;
    sh:description "Your custom collection of key and value parameters for URL tracking. This element is only used if the inherited Criterion is either a ProductPartition or Webpage criterion. For details see ProductPartition Usage and Webpage Usage below." ;
    sh:node microsoftads:CampaignManagementCustomParametersShape ;
    sh:class microsoftads:CampaignManagementCustomParameters ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBiddableAdGroupCriterion/finalUrls> ;
    sh:name "final urls" ;
    sh:description "For future use." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBiddableAdGroupCriterion/finalMobileUrls> ;
    sh:name "final mobile urls" ;
    sh:description "For future use." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBiddableAdGroupCriterion/finalAppUrls> ;
    sh:name "final app urls" ;
    sh:description "For future use." ;
    sh:node microsoftads:CampaignManagementAppUrlShape ;
    sh:class microsoftads:CampaignManagementAppUrl ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBiddableAdGroupCriterion/editorialStatus> ;
    sh:name "editorial status" ;
    sh:description "For future use." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Disapproved" "Inactive" "ActiveLimited" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBiddableAdGroupCriterion/criterionCashback> ;
    sh:name "criterion cashback" ;
    sh:description "Defines the CriterionCashback data object." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementCashbackAdjustmentShape ; sh:class microsoftads:CampaignManagementCashbackAdjustment ]
      [ sh:node microsoftads:CampaignManagementCriterionCashbackShape ; sh:class microsoftads:CampaignManagementCriterionCashback ]
      [ sh:node microsoftads:CampaignManagementCriterionCashbackBaseShape ; sh:class microsoftads:CampaignManagementCriterionCashbackBase ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Biddable Campaign Criterion
microsoftads:CampaignManagementBiddableCampaignCriterionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementBiddableCampaignCriterion ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBiddableCampaignCriterion/campaignId> ;
    sh:name "campaign id" ;
    sh:description "The identifier of the campaign to apply the criterion to. Add: Required Update: Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBiddableCampaignCriterion/criterion> ;
    sh:name "criterion" ;
    sh:description "The criterion to apply to the campaign. The criterion helps determine whether ads in the campaign are served. For a list of available criterion types, see CampaignCriterionType. Add: Required Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementAgeCriterionShape ; sh:class microsoftads:CampaignManagementAgeCriterion ]
      [ sh:node microsoftads:CampaignManagementAudienceCriterionShape ; sh:class microsoftads:CampaignManagementAudienceCriterion ]
      [ sh:node microsoftads:CampaignManagementChannelPlacementCriterionShape ; sh:class microsoftads:CampaignManagementChannelPlacementCriterion ]
      [ sh:node microsoftads:CampaignManagementCriterionShape ; sh:class microsoftads:CampaignManagementCriterion ]
      [ sh:node microsoftads:CampaignManagementCriterionBaseShape ; sh:class microsoftads:CampaignManagementCriterionBase ]
      [ sh:node microsoftads:CampaignManagementCustomLinkedInCriterionShape ; sh:class microsoftads:CampaignManagementCustomLinkedInCriterion ]
      [ sh:node microsoftads:CampaignManagementDayTimeCriterionShape ; sh:class microsoftads:CampaignManagementDayTimeCriterion ]
      [ sh:node microsoftads:CampaignManagementDealCriterionShape ; sh:class microsoftads:CampaignManagementDealCriterion ]
      [ sh:node microsoftads:CampaignManagementDeviceCriterionShape ; sh:class microsoftads:CampaignManagementDeviceCriterion ]
      [ sh:node microsoftads:CampaignManagementGenderCriterionShape ; sh:class microsoftads:CampaignManagementGenderCriterion ]
      [ sh:node microsoftads:CampaignManagementGenreCriterionShape ; sh:class microsoftads:CampaignManagementGenreCriterion ]
      [ sh:node microsoftads:CampaignManagementHotelAdvanceBookingWindowCriterionShape ; sh:class microsoftads:CampaignManagementHotelAdvanceBookingWindowCriterion ]
      [ sh:node microsoftads:CampaignManagementHotelCheckInDateCriterionShape ; sh:class microsoftads:CampaignManagementHotelCheckInDateCriterion ]
      [ sh:node microsoftads:CampaignManagementHotelCheckInDayCriterionShape ; sh:class microsoftads:CampaignManagementHotelCheckInDayCriterion ]
      [ sh:node microsoftads:CampaignManagementHotelDateSelectionTypeCriterionShape ; sh:class microsoftads:CampaignManagementHotelDateSelectionTypeCriterion ]
      [ sh:node microsoftads:CampaignManagementHotelGroupShape ; sh:class microsoftads:CampaignManagementHotelGroup ]
      [ sh:node microsoftads:CampaignManagementHotelLengthOfStayCriterionShape ; sh:class microsoftads:CampaignManagementHotelLengthOfStayCriterion ]
      [ sh:node microsoftads:CampaignManagementLocationCriterionShape ; sh:class microsoftads:CampaignManagementLocationCriterion ]
      [ sh:node microsoftads:CampaignManagementLocationIntentCriterionShape ; sh:class microsoftads:CampaignManagementLocationIntentCriterion ]
      [ sh:node microsoftads:CampaignManagementPlacementCriterionShape ; sh:class microsoftads:CampaignManagementPlacementCriterion ]
      [ sh:node microsoftads:CampaignManagementProductPartitionShape ; sh:class microsoftads:CampaignManagementProductPartition ]
      [ sh:node microsoftads:CampaignManagementProductScopeShape ; sh:class microsoftads:CampaignManagementProductScope ]
      [ sh:node microsoftads:CampaignManagementProfileCriterionShape ; sh:class microsoftads:CampaignManagementProfileCriterion ]
      [ sh:node microsoftads:CampaignManagementRadiusCriterionShape ; sh:class microsoftads:CampaignManagementRadiusCriterion ]
      [ sh:node microsoftads:CampaignManagementStoreCriterionShape ; sh:class microsoftads:CampaignManagementStoreCriterion ]
      [ sh:node microsoftads:CampaignManagementTopicCriterionShape ; sh:class microsoftads:CampaignManagementTopicCriterion ]
      [ sh:node microsoftads:CampaignManagementWebpageShape ; sh:class microsoftads:CampaignManagementWebpage ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBiddableCampaignCriterion/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version." ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBiddableCampaignCriterion/status> ;
    sh:name "status" ;
    sh:description "A status value that determines whether the criterion applies for the campaign. Currently the only supported status for biddable campaign criterions is Active. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Paused" "Deleted" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBiddableCampaignCriterion/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier for the campaign criterion. Add: Read-only Update: Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBiddableCampaignCriterion/type> ;
    sh:name "type" ;
    sh:description "The type of the campaign criterion. This value is BiddableCampaignCriterion when you retrieve a biddable campaign criterion. For more information about campaign criterion types, see the CampaignCriterion Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBiddableCampaignCriterion/criterionBid> ;
    sh:name "criterion bid" ;
    sh:description "The bid to use in the auction. If the inherited Criterion is a ProductScope criterion, then you can use a FixedBid. For all other biddable campaign criterions use the BidMultiplier. If you do not use the correct object type, then your requested bid will be ignored: If the bid is required, the operation will fail; If the bid is optional, the default bid will be used. Add: Requirements vary depending on the inherited Criterion type. The bid is optional and will be set to the default of 0 if not included for AgeCriterion, DayTimeCriterion, DeviceCriterion, GenderCriterion, LocationCriterion, ProfileCriterion, and RadiusCriterion. The bid is not applicable for LocationIntentCriterion and ProductScope (The service will not return any error and the bid will be ignored even if you include it). Update: Requirements vary depending on the inherited Criterion type. The bid is required for AgeCriterion, DayTimeCriterion, DeviceCriterion, GenderCriterion, LocationCriterion, ProfileCriterion, and RadiusCriterion. The bid is not applicable for LocationIntentCriterion and ProductScope (The service will not return any error and the bid will be ignored even if you include it)." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBidMultiplierShape ; sh:class microsoftads:CampaignManagementBidMultiplier ]
      [ sh:node microsoftads:CampaignManagementCriterionBidShape ; sh:class microsoftads:CampaignManagementCriterionBid ]
      [ sh:node microsoftads:CampaignManagementCriterionBidBaseShape ; sh:class microsoftads:CampaignManagementCriterionBidBase ]
      [ sh:node microsoftads:CampaignManagementFixedBidShape ; sh:class microsoftads:CampaignManagementFixedBid ]
      [ sh:node microsoftads:CampaignManagementRateBidShape ; sh:class microsoftads:CampaignManagementRateBid ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBiddableCampaignCriterion/criterionCashback> ;
    sh:name "criterion cashback" ;
    sh:description "Defines the CriterionCashback data object." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementCashbackAdjustmentShape ; sh:class microsoftads:CampaignManagementCashbackAdjustment ]
      [ sh:node microsoftads:CampaignManagementCriterionCashbackShape ; sh:class microsoftads:CampaignManagementCriterionCashback ]
      [ sh:node microsoftads:CampaignManagementCriterionCashbackBaseShape ; sh:class microsoftads:CampaignManagementCriterionCashbackBase ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Bidding Scheme Base
microsoftads:CampaignManagementBiddingSchemeBaseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementBiddingSchemeBase ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBiddingSchemeBase/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Bid Multiplier
microsoftads:CampaignManagementBidMultiplierShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementBidMultiplier ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBidMultiplier/type> ;
    sh:name "type" ;
    sh:description "The type of the criterion bid. This value is BidMultiplier when you retrieve a bid multiplier. For more information about criterion types, see the CriterionBid Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBidMultiplier/multiplier> ;
    sh:name "multiplier" ;
    sh:description "The percentage amount that you want to adjust the bid for the corresponding criterion. If the campaign uses MaxClicks, MaxConversions, TargetCpa, or TargetRoas bid strategy types, then the multiplier will inform rather than directly modify or override the automated bid. For most criterion types the valid bid multiplier range is -90 through 900. For exceptions, see DeviceCriterion Usage and LocationIntentCriterion Usage below. Although this element supports a double data type, you should use whole integer values i.e., -90 through 900, for parity with the web application. Add: Required Update: Required" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management BMCStore
microsoftads:CampaignManagementBMCStoreShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementBMCStore ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBMCStore/id> ;
    sh:name "id" ;
    sh:description "The unique identifier for the Microsoft Merchant Center store." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBMCStore/name> ;
    sh:name "name" ;
    sh:description "Defines the name of the store as defined in the Microsoft Merchant Center." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBMCStore/isActive> ;
    sh:name "is active" ;
    sh:description "Value will be true if the store is active, and otherwise the value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBMCStore/isProductAdsEnabled> ;
    sh:name "is product ads enabled" ;
    sh:description "Reserved for internal use." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBMCStore/hasCatalog> ;
    sh:name "has catalog" ;
    sh:description "Value will be true if the store has a catalog of items, and otherwise the value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBMCStore/subType> ;
    sh:name "sub type" ;
    sh:description "The Microsoft Merchant Center store sub type. This element is only applicable for Microsoft Merchant Center stores that support Shopping Campaigns for Brands, and will be nil for all other stores. If the subtype is set to CoOp, then you have linked from a partner's store via Shopping Campaigns for Brands. When your partner retrieves the same store via GetBMCStoresByCustomerId the subtype would be nil, since from their perspective the store is not restricted to Shopping Campaigns for Brands. If the subtype is set to GlobalStore, then it is the global store to use for all Shopping Campaigns for Brands under the current manager account." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "CoOp" "GlobalStore" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBMCStore/storeUrl> ;
    sh:name "store url" ;
    sh:description "The store's destination URL. The destination URL is the web page where people are directed to when they click your ad." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Brand Item
microsoftads:CampaignManagementBrandItemShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementBrandItem ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBrandItem/type> ;
    sh:name "type" ;
    sh:description "The type of the shared list item. This value is NegativeKeyword when you retrieve a negative keyword. For more information about shared list item types, see SharedListItem Data Object Remarks. Add: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBrandItem/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. Forward compatibility changes will be noted here in future releases. There are currently no forward compatibility changes for this object." ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBrandItem/brandId> ;
    sh:name "brand id" ;
    sh:description "The ID of the brand." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Brand List
microsoftads:CampaignManagementBrandListShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementBrandList ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBrandList/itemCount> ;
    sh:name "item count" ;
    sh:description "The number of SharedListItem objects that are added to this shared list. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBrandList/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier of the shared entity. Add: Read-only Update: Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBrandList/name> ;
    sh:name "name" ;
    sh:description "The name of the shared entity. The maximum string length is 255. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBrandList/type> ;
    sh:name "type" ;
    sh:description "The type of the shared entity. This value is NegativeKeywordList when you retrieve a NegativeKeywordList. This value is PlacementExclusionList when you retrieve a PlacementExclusionList. This value is AccountNegativeKeywordList when you retrieve an AccountNegativeKeywordList. For more information about shared entity types, see SharedEntity Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBrandList/associationCount> ;
    sh:name "association count" ;
    sh:description "The number of active associations between this shared entity and another entity such as campaign or ad account. For a NegativeKeywordList, the maximum number of active associations between the negative keyword list and campaign is 20. For a PlacementExclusionList, the maximum number of active associations between the website exclusion list and ad account is undefined. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementBrandList/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. Forward compatibility changes will be noted here in future releases. There are currently no forward compatibility changes for this object." ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Call Ad Extension
microsoftads:CampaignManagementCallAdExtensionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementCallAdExtension ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCallAdExtension/status> ;
    sh:name "status" ;
    sh:description "The status of the ad extension. The value will always be Active because the Campaign Management service does not return deleted ad extensions. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Deleted" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCallAdExtension/scheduling> ;
    sh:name "scheduling" ;
    sh:description "Determines the calendar day and time ranges when the ad extension is eligible to be shown in ads. Add: Optional Update: Optional. If you set this element null, any existing scheduling set for the ad extension will remain unchanged. If you set this to any non-null Schedule object, you are effectively replacing existing scheduling settings for the ad extension. To remove all scheduling set this element to an empty Schedule object." ;
    sh:node microsoftads:CampaignManagementScheduleShape ;
    sh:class microsoftads:CampaignManagementSchedule ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCallAdExtension/devicePreference> ;
    sh:name "device preference" ;
    sh:description "Not supported for this ad extension type." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCallAdExtension/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier of the ad extension. Add: Read-only Update: Read-only and Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCallAdExtension/type> ;
    sh:name "type" ;
    sh:description "The type of the ad extension. This value is CallAdExtension when you retrieve a call ad extension. Add: Read-only Update: Read-only For more information about ad extension types, see the Ad Extension Data Object Remarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCallAdExtension/version> ;
    sh:name "version" ;
    sh:description "Tracks the number of times the ad extension has been updated. The version is set to 1 when the ad extension is created, and increments by one after each update. Add: Not allowed Update: Not allowed" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCallAdExtension/phoneNumber> ;
    sh:name "phone number" ;
    sh:description "The clickable phone number to include in the ad. The phone number can contain a maximum of 35 characters and must be valid for the specified country or region. If the campaign includes call and location ad extensions, this phone number will override the phone number specified in the location ad extensions. Note that the phone number may be reformatted. For example, if you set phone number to 4255551212, it would be reformatted to (425) 555-1212. Add: Required Update: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCallAdExtension/countryCode> ;
    sh:name "country code" ;
    sh:description "The country code where the phone number is registered. The country code must contain a 2 character country code. The supported country code values include AR, AT, AU, BR, CA, CH, CL, CO, DE, DK, ES, FI, FR, GB, HK, ID, IE, IN, IT, MX, MY, NL, NZ, NO, PE, PH, SE, SG, TH, TW, US, VE, and VN. Add: Required Update: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCallAdExtension/isCallOnly> ;
    sh:name "is call only" ;
    sh:description "The option to show both your phone number and website, or just your phone number, to people seeing your ads on a smartphone. You might want to show only your phone number if your business requires that you talk to each customer. Set this property to true if you want the ad extension to only show the phone number without a link to your website, and otherwise if you want the ad extension include a link to your website in addition to the phone number set it to false. Add: Optional. If you do not specify this element or leave it empty, the default value of false will be set and the ad extension will include a link to your website in addition to the phone number. Update: Optional" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCallAdExtension/isCallTrackingEnabled> ;
    sh:name "is call tracking enabled" ;
    sh:description "Determines whether call tracking is enabled for the call ad extension. Call tracking is only supported in the United States and United Kingdom. Set this property to true to enable call tracking, and otherwise set it to false. Add: Optional. If you do not specify this element or leave it empty, the default value of false will be set. Update: Optional" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCallAdExtension/requireTollFreeTrackingNumber> ;
    sh:name "require toll free tracking number" ;
    sh:description "You can either use your own phone number or use a Microsoft Advertising forwarding phone number. A Microsoft Advertising forwarding phone number is a unique phone number that is routed to your business phone number. With a Microsoft Advertising forwarding number, you can track all calls from your ad so that you can analyze the ad's performance. This element determines whether a toll-free Microsoft Advertising forwarding phone number should be created for call tracking. This element can only be set if IsCallTrackingEnabled is also true. Prior to August 2017, clients could set this property to true if a Microsoft Advertising forwarding phone number should be created for call tracking. Since August 2017, clients can no longer create a new toll-free Microsoft Advertising forwarding phone number. If you set this value true then the operation will succeed; however, a toll-free number will not be created and when you retrieve the call ad extension this property will be set to false. If a toll-free forwarding number was provisioned prior to August 2017 then this property will be true if the number is still active when you retrieve the call ad extension. Add: Optional. If you do not specify this element or leave it empty, the default value of false will be set. Update: Optional" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCallAdExtension/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. There are currently no forward compatibility changes for the AdExtension object. Add: Read-only Update: Read-only" ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Callout Ad Extension
microsoftads:CampaignManagementCalloutAdExtensionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementCalloutAdExtension ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCalloutAdExtension/status> ;
    sh:name "status" ;
    sh:description "The status of the ad extension. The value will always be Active because the Campaign Management service does not return deleted ad extensions. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Deleted" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCalloutAdExtension/scheduling> ;
    sh:name "scheduling" ;
    sh:description "Determines the calendar day and time ranges when the ad extension is eligible to be shown in ads. Add: Optional Update: Optional. If you set this element null, any existing scheduling set for the ad extension will remain unchanged. If you set this to any non-null Schedule object, you are effectively replacing existing scheduling settings for the ad extension. To remove all scheduling set this element to an empty Schedule object." ;
    sh:node microsoftads:CampaignManagementScheduleShape ;
    sh:class microsoftads:CampaignManagementSchedule ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCalloutAdExtension/devicePreference> ;
    sh:name "device preference" ;
    sh:description "Not supported for this ad extension type." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCalloutAdExtension/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier of the ad extension. Add: Read-only Update: Read-only and Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCalloutAdExtension/type> ;
    sh:name "type" ;
    sh:description "The type of the ad extension. This value is CalloutAdExtension when you retrieve a callout ad extension. Add: Read-only Update: Read-only For more information about ad extension types, see the Ad Extension Data Object Remarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCalloutAdExtension/version> ;
    sh:name "version" ;
    sh:description "Tracks the number of times the ad extension has been updated. The version is set to 1 when the ad extension is created, and increments by one after each update. Add: Not allowed Update: Not allowed" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCalloutAdExtension/text> ;
    sh:name "text" ;
    sh:description "Additional callout text about your business, products, or services to include in a text ad. The callout extension text must be different than the text of your ad. The length of this string must be between 1 and 25 characters. Note that for Traditional Chinese characters, the length of this string must be between 1 and 12 characters. Add: Required Update: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCalloutAdExtension/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. There are currently no forward compatibility changes for the AdExtension object. Add: Read-only Update: Read-only" ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Call To Action Setting
microsoftads:CampaignManagementCallToActionSettingShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementCallToActionSetting ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCallToActionSetting/type> ;
    sh:name "type" ;
    sh:description "The type of setting. This value is CallToActionSetting when you retrieve the setting. For more information, see Setting Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCallToActionSetting/automatedCallToActionOptOut> ;
    sh:name "automated call to action opt out" ;
    sh:description "Determines whether to opt out of automatic selection of call to action ad asset for the multimedia ads in the campaign. When opted in, we will use artificial intelligence during ad delivery to choose the call to action asset and ignore the ad's call to action setting. Note: Not everyone has this feature yet. If you don't, don't worry - it's coming soon! Add: Optional. The default value of false will be set if not otherwise specified. Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCallToActionSetting/callToActionOptOut> ;
    sh:name "call to action opt out" ;
    sh:description "Determines whether to opt out of call to action ad asset for the audience ads in the campaign. Add: Optional. The default value of false will be set if not otherwise specified. Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Campaign Criterion Base
microsoftads:CampaignManagementCampaignCriterionBaseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementCampaignCriterionBase ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaignCriterionBase/campaignId> ;
    sh:name "campaign id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaignCriterionBase/criterion> ;
    sh:name "criterion" ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementAgeCriterionShape ; sh:class microsoftads:CampaignManagementAgeCriterion ]
      [ sh:node microsoftads:CampaignManagementAudienceCriterionShape ; sh:class microsoftads:CampaignManagementAudienceCriterion ]
      [ sh:node microsoftads:CampaignManagementChannelPlacementCriterionShape ; sh:class microsoftads:CampaignManagementChannelPlacementCriterion ]
      [ sh:node microsoftads:CampaignManagementCriterionShape ; sh:class microsoftads:CampaignManagementCriterion ]
      [ sh:node microsoftads:CampaignManagementCriterionBaseShape ; sh:class microsoftads:CampaignManagementCriterionBase ]
      [ sh:node microsoftads:CampaignManagementCustomLinkedInCriterionShape ; sh:class microsoftads:CampaignManagementCustomLinkedInCriterion ]
      [ sh:node microsoftads:CampaignManagementDayTimeCriterionShape ; sh:class microsoftads:CampaignManagementDayTimeCriterion ]
      [ sh:node microsoftads:CampaignManagementDealCriterionShape ; sh:class microsoftads:CampaignManagementDealCriterion ]
      [ sh:node microsoftads:CampaignManagementDeviceCriterionShape ; sh:class microsoftads:CampaignManagementDeviceCriterion ]
      [ sh:node microsoftads:CampaignManagementGenderCriterionShape ; sh:class microsoftads:CampaignManagementGenderCriterion ]
      [ sh:node microsoftads:CampaignManagementGenreCriterionShape ; sh:class microsoftads:CampaignManagementGenreCriterion ]
      [ sh:node microsoftads:CampaignManagementHotelAdvanceBookingWindowCriterionShape ; sh:class microsoftads:CampaignManagementHotelAdvanceBookingWindowCriterion ]
      [ sh:node microsoftads:CampaignManagementHotelCheckInDateCriterionShape ; sh:class microsoftads:CampaignManagementHotelCheckInDateCriterion ]
      [ sh:node microsoftads:CampaignManagementHotelCheckInDayCriterionShape ; sh:class microsoftads:CampaignManagementHotelCheckInDayCriterion ]
      [ sh:node microsoftads:CampaignManagementHotelDateSelectionTypeCriterionShape ; sh:class microsoftads:CampaignManagementHotelDateSelectionTypeCriterion ]
      [ sh:node microsoftads:CampaignManagementHotelGroupShape ; sh:class microsoftads:CampaignManagementHotelGroup ]
      [ sh:node microsoftads:CampaignManagementHotelLengthOfStayCriterionShape ; sh:class microsoftads:CampaignManagementHotelLengthOfStayCriterion ]
      [ sh:node microsoftads:CampaignManagementLocationCriterionShape ; sh:class microsoftads:CampaignManagementLocationCriterion ]
      [ sh:node microsoftads:CampaignManagementLocationIntentCriterionShape ; sh:class microsoftads:CampaignManagementLocationIntentCriterion ]
      [ sh:node microsoftads:CampaignManagementPlacementCriterionShape ; sh:class microsoftads:CampaignManagementPlacementCriterion ]
      [ sh:node microsoftads:CampaignManagementProductPartitionShape ; sh:class microsoftads:CampaignManagementProductPartition ]
      [ sh:node microsoftads:CampaignManagementProductScopeShape ; sh:class microsoftads:CampaignManagementProductScope ]
      [ sh:node microsoftads:CampaignManagementProfileCriterionShape ; sh:class microsoftads:CampaignManagementProfileCriterion ]
      [ sh:node microsoftads:CampaignManagementRadiusCriterionShape ; sh:class microsoftads:CampaignManagementRadiusCriterion ]
      [ sh:node microsoftads:CampaignManagementStoreCriterionShape ; sh:class microsoftads:CampaignManagementStoreCriterion ]
      [ sh:node microsoftads:CampaignManagementTopicCriterionShape ; sh:class microsoftads:CampaignManagementTopicCriterion ]
      [ sh:node microsoftads:CampaignManagementWebpageShape ; sh:class microsoftads:CampaignManagementWebpage ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaignCriterionBase/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaignCriterionBase/status> ;
    sh:name "status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Paused" "Deleted" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaignCriterionBase/id> ;
    sh:name "id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaignCriterionBase/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Campaign Frequency Cap Setting
microsoftads:CampaignManagementCampaignFrequencyCapSettingShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementCampaignFrequencyCapSetting ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaignFrequencyCapSetting/type> ;
    sh:name "type" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaignFrequencyCapSetting/timeGranularity> ;
    sh:name "time granularity" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "HOUR" "DAY" "WEEK" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaignFrequencyCapSetting/capValue> ;
    sh:name "cap value" ;
    sh:description "Reserved." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Campaign Negative Sites
microsoftads:CampaignManagementCampaignNegativeSitesShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementCampaignNegativeSites ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaignNegativeSites/campaignId> ;
    sh:name "campaign id" ;
    sh:description "The identifier of the campaign to which the negative site URLs belong." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaignNegativeSites/negativeSites> ;
    sh:name "negative sites" ;
    sh:description "A list of URLs of the websites where you do not want your ads displayed. This element can include a maximum of 2,500 URLs. Each URL must specify the domain name e.g., contoso.com which can include up to three subdomains and two subdirectories. The subdomain count includes the www prefix. For example one.two.three.contoso.com/1/2, www.two.three.contoso.com/1/2, and one.two.contoso.co.uk/1/2 are valid URLs, whereas one.two.three.contoso.co.uk/1/2 (too many subdomains) and one.two.three.contoso.com/1/2/3 (too many subdirectories) are not. Duplicate URLs in the list are not added. You can only exclude websites for syndicated search websites. The ad group's network must be set to OwnedAndOperatedAndSyndicatedSearch. For more information about network distribution, see Network. Negative site URLs specified at the ad group level are used instead of any negative site URLs specified at the campaign level. If you associate any website exclusion lists (Placement Exclusion List or Account Placement Exclusion List) with an ad account, the list of negative sites are used in addition to the campaign negative sites or ad group negative sites. To remove campaign negative site URLs, set this element to null." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Campaign Management Campaign Size
microsoftads:CampaignManagementCampaignSizeShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementCampaignSize ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaignSize/size> ;
    sh:name "size" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCampaignSize/campaignId> ;
    sh:name "campaign id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Cashback Adjustment
microsoftads:CampaignManagementCashbackAdjustmentShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementCashbackAdjustment ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCashbackAdjustment/type> ;
    sh:name "type" ;
    sh:description "The type of criterion cashback." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCashbackAdjustment/cashbackPercent> ;
    sh:name "cashback percent" ;
    sh:description "The percent to receive in cashback." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Category Result
microsoftads:CampaignManagementCategoryResultShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementCategoryResult ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCategoryResult/key> ;
    sh:name "key" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCategoryResult/auditPoints> ;
    sh:name "audit points" ;
    sh:description "Reserved." ;
    sh:node microsoftads:CampaignManagementAuditPointResultShape ;
    sh:class microsoftads:CampaignManagementAuditPointResult ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Channel Placement Criterion
microsoftads:CampaignManagementChannelPlacementCriterionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementChannelPlacementCriterion ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementChannelPlacementCriterion/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementChannelPlacementCriterion/channelPlacementId> ;
    sh:name "channel placement id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementChannelPlacementCriterion/channelPlacementName> ;
    sh:name "channel placement name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementChannelPlacementCriterion/channelId> ;
    sh:name "channel id" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementChannelPlacementCriterion/channelName> ;
    sh:name "channel name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementChannelPlacementCriterion/subChannelId> ;
    sh:name "sub channel id" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementChannelPlacementCriterion/subChannelName> ;
    sh:name "sub channel name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Clipchamp Template Info
microsoftads:CampaignManagementClipchampTemplateInfoShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementClipchampTemplateInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementClipchampTemplateInfo/templateId> ;
    sh:name "template id" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementClipchampTemplateInfo/templateName> ;
    sh:name "template name" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementClipchampTemplateInfo/templateDescription> ;
    sh:name "template description" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementClipchampTemplateInfo/duration> ;
    sh:name "duration" ;
    sh:description "Reserved." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementClipchampTemplateInfo/aspectRatio> ;
    sh:name "aspect ratio" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementClipchampTemplateInfo/themes> ;
    sh:name "themes" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementClipchampTemplateInfo/numberOfImages> ;
    sh:name "number of images" ;
    sh:description "Reserved." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementClipchampTemplateInfo/numberOfText> ;
    sh:name "number of text" ;
    sh:description "Reserved." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementClipchampTemplateInfo/numberOfLogos> ;
    sh:name "number of logos" ;
    sh:description "Reserved." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementClipchampTemplateInfo/templateThumbnailUrl> ;
    sh:name "template thumbnail url" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementClipchampTemplateInfo/templatePreviewUrl> ;
    sh:name "template preview url" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Combined List
microsoftads:CampaignManagementCombinedListShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementCombinedList ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCombinedList/scope> ;
    sh:name "scope" ;
    sh:description "Scope defines what accounts can use this audience. If scope is set to Account, the audience can only be associated with campaigns and ad groups in one account i.e., via the ParentId. If scope is set to Customer, the audience can be associated with campaigns and ad groups in all of the customer's accounts. Add: Required Update: Optional. You can change the scope from Account to Customer, but you cannot change the scope from Customer to Account." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Account" "Customer" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCombinedList/membershipDuration> ;
    sh:name "membership duration" ;
    sh:description "This element is not supported for combined list audiences. Add: Not supported Update: Not supported" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCombinedList/searchSize> ;
    sh:name "search size" ;
    sh:description "The total number of people who are active members of this audience in the Search network. This gives you an idea of how many search users you can target. The audience needs to have at least 300 people before Microsoft Advertising will use it for optimizations. This property will be nil or empty for up to 24 hours while the audience is being built, for example if you add or update the combined list membership duration, rule, or tag identifier. This property will be nil or empty if the UET tag associated with the combined list has a status of Unverified or Inactive, because the combined list can't receive the customer information from your website that it needs to build the list. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCombinedList/audienceNetworkSize> ;
    sh:name "audience network size" ;
    sh:description "The total number of people who are active members of this audience in the Audience network. This gives you an idea of how many Audience network users you can target. The audience needs to have at least 300 people before Microsoft Advertising will use it for optimizations. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCombinedList/supportedCampaignTypes> ;
    sh:name "supported campaign types" ;
    sh:description "The list of campaign types that support this audience. Supported values are Audience, DynamicSearchAds, Search, and Shopping. New campaign types might be added in the future, so you should not take any dependency on a fixed set of values. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCombinedList/customerShare> ;
    sh:name "customer share" ;
    sh:description "This element is not supported for combined list audiences. Add: Not supported Update: Not supported" ;
    sh:node microsoftads:CampaignManagementCustomerShareShape ;
    sh:class microsoftads:CampaignManagementCustomerShare ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCombinedList/id> ;
    sh:name "id" ;
    sh:description "The Microsoft Advertising identifier of the audience. Add: Read-only Update: Required and read-only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCombinedList/name> ;
    sh:name "name" ;
    sh:description "The name of the audience. The name can contain a maximum of 128 characters. Add: Required Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCombinedList/description> ;
    sh:name "description" ;
    sh:description "The description of the audience. Use a description to help you remember what audience you are targeting. The description can contain a maximum of 1,024 characters. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCombinedList/type> ;
    sh:name "type" ;
    sh:description "The type of the audience. This value is CombinedList when you retrieve a combined list audience. For more information about audience types, see the Audience Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCombinedList/parentId> ;
    sh:name "parent id" ;
    sh:description "The Microsoft Advertising identifier of the account or customer. If the Scope is set to Account, this is the account ID, and otherwise it is the customer ID. Add: Required Update: Read-only. You cannot change the parent ID." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCombinedList/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. Forward compatibility changes will be noted here in future releases. There are currently no forward compatibility changes for the Audience object." ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCombinedList/combinationRules> ;
    sh:name "combination rules" ;
    sh:description "Logical conditions used to determine who to add to your combined list. Each list can include up to 100 combination rules or sets of logical conditions, and each CombinationRule can contain up to 100 audience IDs. For details, please see the CombinationRule Remarks. Add: Required Update: Required. If you want to keep any of the previous rules, then you must explicitly set them again during update." ;
    sh:node microsoftads:CampaignManagementCombinationRuleShape ;
    sh:class microsoftads:CampaignManagementCombinationRule ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Commission Bidding Scheme
microsoftads:CampaignManagementCommissionBiddingSchemeShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementCommissionBiddingScheme ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCommissionBiddingScheme/type> ;
    sh:name "type" ;
    sh:description "The type of bidding scheme that is set for this campaign, ad group, or keyword. For more information about bidding scheme types, see the Remarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCommissionBiddingScheme/commissionRate> ;
    sh:name "commission rate" ;
    sh:description "The commission rate charged to the advertiser when someone books a hotel and stays there." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Company
microsoftads:CampaignManagementCompanyShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementCompany ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCompany/profileId> ;
    sh:name "profile id" ;
    sh:description "The company name profile identifier that you can use with ProfileCriterion." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCompany/name> ;
    sh:name "name" ;
    sh:description "The company name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCompany/logoUrl> ;
    sh:name "logo url" ;
    sh:description "The full https path for the company's logo image." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCompany/status> ;
    sh:name "status" ;
    sh:description "The company name profile status. Possible status values include Active and Inactive." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Company List
microsoftads:CampaignManagementCompanyListShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementCompanyList ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCompanyList/id> ;
    sh:name "id" ;
    sh:description "Reserved." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCompanyList/name> ;
    sh:name "name" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCompanyList/type> ;
    sh:name "type" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCompanyList/status> ;
    sh:name "status" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Building" "Ready" "ReachTooSmall" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCompanyList/reach> ;
    sh:name "reach" ;
    sh:description "Reserved." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCompanyList/companyNames> ;
    sh:name "company names" ;
    sh:description "Reserved." ;
    sh:node microsoftads:CampaignManagementCompanyNameShape ;
    sh:class microsoftads:CampaignManagementCompanyName ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCompanyList/total> ;
    sh:name "total" ;
    sh:description "Reserved." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCompanyList/matched> ;
    sh:name "matched" ;
    sh:description "Reserved." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Conversion Goal Base
microsoftads:CampaignManagementConversionGoalBaseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementConversionGoalBase ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionGoalBase/name> ;
    sh:name "name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionGoalBase/status> ;
    sh:name "status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Paused" "Deleted" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionGoalBase/scope> ;
    sh:name "scope" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Account" "Customer" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionGoalBase/countType> ;
    sh:name "count type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "All" "Unique" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionGoalBase/revenue> ;
    sh:name "revenue" ;
    sh:node microsoftads:CampaignManagementConversionGoalRevenueShape ;
    sh:class microsoftads:CampaignManagementConversionGoalRevenue ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionGoalBase/conversionWindowInMinutes> ;
    sh:name "conversion window in minutes" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionGoalBase/tagId> ;
    sh:name "tag id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionGoalBase/trackingStatus> ;
    sh:name "tracking status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "TagUnverified" "NoRecentConversions" "RecordingConversions" "TagInactive" "InactiveDueToTagUnavailable" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionGoalBase/excludeFromBidding> ;
    sh:name "exclude from bidding" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionGoalBase/viewThroughConversionWindowInMinutes> ;
    sh:name "view through conversion window in minutes" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionGoalBase/goalCategory> ;
    sh:name "goal category" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unknown" "None" "Purchase" "AddToCart" "BeginCheckout" "Subscribe" "SubmitLeadForm" "BookAppointment" "Signup" "RequestQuote" "GetDirections" "OutboundClick" "Contact" "PageView" "Download" "Other" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionGoalBase/attributionModelType> ;
    sh:name "attribution model type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "LastClick" "LastTouch" "DataDriven" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionGoalBase/isEnhancedConversionsEnabled> ;
    sh:name "is enhanced conversions enabled" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionGoalBase/isAutoGoal> ;
    sh:name "is auto goal" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionGoalBase/id> ;
    sh:name "id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementConversionGoalBase/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Co Op Setting
microsoftads:CampaignManagementCoOpSettingShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementCoOpSetting ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCoOpSetting/type> ;
    sh:name "type" ;
    sh:description "The type of the setting. This value is CoOp when you retrieve a CoOp setting. For more information about setting types, see the Setting Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCoOpSetting/bidOption> ;
    sh:name "bid option" ;
    sh:description "Determines whether or not to amplify your partner's bid. A bid value ad group allows you to bid on products that your merchandising partner doesn't target. If this element is set to BidValue, the auction will use use a FixedBid for product groups that have a CriterionBid. A bid boost allows you to amplify your partner's bid. If this element is set to BidBoost, the auction will use use a BidMultiplier for product groups that have a CriterionBid. You should only use BidBoost if your partner uses BidValue. Add: If this element is not set, the default bid option is BidValue. Update: Read-only. If you attempt to change the previous bid option an error will be returned." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "BidValue" "BidBoost" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCoOpSetting/bidBoostValue> ;
    sh:name "bid boost value" ;
    sh:description "The default bid boost percentage that you'll see in the Microsoft Advertising web application for new product groups. This ad group level target setting is not used directly in the auction. The product group bids are used to boost your partner's bid. Add: Required if the BidOption is set to BidBoost, and otherwise you may not set this element. Update: Required if the BidOption is set to BidBoost, and otherwise you may not set this element." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCoOpSetting/bidMaxValue> ;
    sh:name "bid max value" ;
    sh:description "The fixed bid maximum. Add: Required if the BidOption is set to BidBoost, and otherwise you may not set this element. Update: Optional if the BidOption is set to BidBoost, and otherwise you may not set this element." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Cost Per Sale Bidding Scheme
microsoftads:CampaignManagementCostPerSaleBiddingSchemeShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementCostPerSaleBiddingScheme ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCostPerSaleBiddingScheme/type> ;
    sh:name "type" ;
    sh:description "The type of the bidding scheme. This value is CostPerSaleBiddingScheme when you retrieve a cost per sale bidding scheme. For more information about bidding scheme types, see the BiddingScheme Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCostPerSaleBiddingScheme/targetCostPerSale> ;
    sh:name "target cost per sale" ;
    sh:description "The target cost per sale that you want used by Microsoft Advertising to maximize conversions." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Create Asset Group Recommendation Request
microsoftads:CampaignManagementCreateAssetGroupRecommendationRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementCreateAssetGroupRecommendationRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCreateAssetGroupRecommendationRequest/finalUrls> ;
    sh:name "final urls" ;
    sh:description "An array of URLs of the web pages used to create recommended ad assets." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCreateAssetGroupRecommendationRequest/prompt> ;
    sh:name "prompt" ;
    sh:description "Optional description of the product or service that you want to target with the specific campaign." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCreateAssetGroupRecommendationRequest/textTone> ;
    sh:name "text tone" ;
    sh:description "Optional tone for recommended text assets" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Friendly" "Persuasive" "Cute" "Inspiring" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCreateAssetGroupRecommendationRequest/returnAdditionalFields> ;
    sh:name "return additional fields" ;
    sh:description "Additional fields for the latest features of create asset group recommendation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "None" "ImageSuggestionMetadata" "MediaRefineResults" "PromptBrandWarning" ) ;
  ] .

# Shape for Campaign Management Create Asset Group Recommendation Response
microsoftads:CampaignManagementCreateAssetGroupRecommendationResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementCreateAssetGroupRecommendationResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCreateAssetGroupRecommendationResponse/assetGroup> ;
    sh:name "asset group" ;
    sh:description "An asset group object containing recommended text assets." ;
    sh:node microsoftads:CampaignManagementAssetGroupShape ;
    sh:class microsoftads:CampaignManagementAssetGroup ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCreateAssetGroupRecommendationResponse/imageSuggestions> ;
    sh:name "image suggestions" ;
    sh:description "An array of images recommended to be included in the asset group." ;
    sh:node microsoftads:CampaignManagementAdRecommendationImageSuggestionShape ;
    sh:class microsoftads:CampaignManagementAdRecommendationImageSuggestion ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCreateAssetGroupRecommendationResponse/promptBrandWarning> ;
    sh:name "prompt brand warning" ;
    sh:description "Whether the brand is detected in the request prompt." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Create Brand Kit Recommendation Request
microsoftads:CampaignManagementCreateBrandKitRecommendationRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementCreateBrandKitRecommendationRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCreateBrandKitRecommendationRequest/accountId> ;
    sh:name "account id" ;
    sh:description "The identifier of the account." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCreateBrandKitRecommendationRequest/finalUrl> ;
    sh:name "final url" ;
    sh:description "The final URL of the brand kit." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Create Brand Kit Recommendation Response
microsoftads:CampaignManagementCreateBrandKitRecommendationResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementCreateBrandKitRecommendationResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCreateBrandKitRecommendationResponse/brandKit> ;
    sh:name "brand kit" ;
    sh:description "The brand kit data object." ;
    sh:node microsoftads:CampaignManagementBrandKitShape ;
    sh:class microsoftads:CampaignManagementBrandKit ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Create Responsive Ad Recommendation Request
microsoftads:CampaignManagementCreateResponsiveAdRecommendationRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementCreateResponsiveAdRecommendationRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCreateResponsiveAdRecommendationRequest/adSubType> ;
    sh:name "ad sub type" ;
    sh:description "Optional: The ad sub type used to create a recommendation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCreateResponsiveAdRecommendationRequest/finalUrls> ;
    sh:name "final urls" ;
    sh:description "An array of URLs of the web pages used to create recommended ad assets." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCreateResponsiveAdRecommendationRequest/prompt> ;
    sh:name "prompt" ;
    sh:description "Optional: Description of the product or service that you want to target with the specific campaign." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCreateResponsiveAdRecommendationRequest/textTone> ;
    sh:name "text tone" ;
    sh:description "Optional: Tone for recommended text assets." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Friendly" "Persuasive" "Cute" "Inspiring" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCreateResponsiveAdRecommendationRequest/videoType> ;
    sh:name "video type" ;
    sh:description "The video type, CTV or OLV." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "OLV" "CTV" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCreateResponsiveAdRecommendationRequest/brandKitId> ;
    sh:name "brand kit id" ;
    sh:description "Optional: The identifier of the brand kit." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCreateResponsiveAdRecommendationRequest/returnAdditionalFields> ;
    sh:name "return additional fields" ;
    sh:description "Additional fields for the latest features of create responsive ad recommendation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "None" "ImageSuggestionMetadata" "MediaRefineResults" "PromptBrandWarning" ) ;
  ] .

# Shape for Campaign Management Create Responsive Ad Recommendation Response
microsoftads:CampaignManagementCreateResponsiveAdRecommendationResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementCreateResponsiveAdRecommendationResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCreateResponsiveAdRecommendationResponse/responsiveAd> ;
    sh:name "responsive ad" ;
    sh:description "A responsive ad object containing recommended text assets." ;
    sh:node microsoftads:CampaignManagementResponsiveAdShape ;
    sh:class microsoftads:CampaignManagementResponsiveAd ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCreateResponsiveAdRecommendationResponse/imageSuggestions> ;
    sh:name "image suggestions" ;
    sh:description "An array of images recommended to be included in the responsive ad." ;
    sh:node microsoftads:CampaignManagementAdRecommendationImageSuggestionShape ;
    sh:class microsoftads:CampaignManagementAdRecommendationImageSuggestion ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCreateResponsiveAdRecommendationResponse/videoSuggestions> ;
    sh:name "video suggestions" ;
    sh:description "An array of videos recommended to be included in the responsive ad." ;
    sh:node microsoftads:CampaignManagementAdRecommendationVideoSuggestionShape ;
    sh:class microsoftads:CampaignManagementAdRecommendationVideoSuggestion ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCreateResponsiveAdRecommendationResponse/promptBrandWarning> ;
    sh:name "prompt brand warning" ;
    sh:description "Whether the brand is detected in the request prompt." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCreateResponsiveAdRecommendationResponse/jobInfo> ;
    sh:name "job info" ;
    sh:description "The job information for the video recommendation job." ;
    sh:node microsoftads:CampaignManagementAdRecommendationJobInfoShape ;
    sh:class microsoftads:CampaignManagementAdRecommendationJobInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Responsive Ad
microsoftads:CampaignManagementResponsiveAdShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementResponsiveAd ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementResponsiveAd/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier of the ad. Add: Read-only Update: Required and Read-Only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementResponsiveAd/type> ;
    sh:name "type" ;
    sh:description "The type of the ad. This value is ResponsiveAd when you retrieve a responsive ad. For more information about ad types, see the Ad Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Text" "Image" "Product" "AppInstall" "ExpandedText" "DynamicSearch" "ResponsiveAd" "ResponsiveSearch" "Hotel" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementResponsiveAd/status> ;
    sh:name "status" ;
    sh:description "The status of the ad. You can set the ad status to Active or Paused. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Inactive" "Active" "Paused" "Deleted" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementResponsiveAd/editorialStatus> ;
    sh:name "editorial status" ;
    sh:description "The editorial review status of the ad, which indicates whether the ad is pending review, has been approved, or has been disapproved. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Disapproved" "Inactive" "ActiveLimited" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementResponsiveAd/devicePreference> ;
    sh:name "device preference" ;
    sh:description "Not supported for this ad type." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementResponsiveAd/adFormatPreference> ;
    sh:name "ad format preference" ;
    sh:description "Not supported for this ad type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementResponsiveAd/trackingUrlTemplate> ;
    sh:name "tracking url template" ;
    sh:description "The tracking template to use as a default for all landing page URLs. The following validation rules apply to tracking templates. For more details about supported templates and parameters, see the Microsoft Advertising help article What tracking or URL parameters can I use? - Tracking templates defined for lower level entities e.g. ads override those set for higher level entities e.g. campaign. For more information, see Entity Limits. - The length of the tracking template is limited to 2,048 characters. The HTTP or HTTPS protocol string does count towards the 2,048 character limit. - The tracking template must be a well-formed URL beginning with one of the following: http://, https://, {lpurl}, or {unescapedlpurl}. - Microsoft Advertising does not validate whether custom parameters exist. If you use custom parameters in your tracking template and they do not exist, then the landing page URL will include the key and value placeholders of your custom parameters without substitution. For example, if your tracking template is https://tracker.example.com/?season={_season}&promocode={_promocode}&u={lpurl} and neither {_season} or {_promocode} are defined at the campaign, ad group, criterion, keyword, or ad level, then the landing page URL will be the same. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. If you set this element to an empty string (\"\"), the previous setting will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementResponsiveAd/finalUrlSuffix> ;
    sh:name "final url suffix" ;
    sh:description "The final URL suffix can include tracking parameters that will be appended to the end of your landing page URL. We recommend placing tracking parameters that your landing page requires in a final URL suffix so that your customers are always sent to your landing page. For more details and validation rules see Final URL Suffix in the technical guides. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. If you set this element to an empty string (\"\"), the previous setting will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementResponsiveAd/urlCustomParameters> ;
    sh:name "url custom parameters" ;
    sh:description "Your custom collection of key and value parameters for URL tracking. Microsoft Advertising will accept the first 8 CustomParameter objects that you include within the CustomParameters object, and if you include more than 8 custom parameters an error will be returned. Each CustomParameter includes Key and Value elements. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. Set the UrlCustomParameters element to null or empty to retain any existing custom parameters. To remove all custom parameters, set the Parameters element of the CustomParameters object to null or empty. To remove a subset of custom parameters, specify the custom parameters that you want to keep in the Parameters element of the CustomParameters object." ;
    sh:node microsoftads:CampaignManagementCustomParametersShape ;
    sh:class microsoftads:CampaignManagementCustomParameters ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementResponsiveAd/finalUrls> ;
    sh:name "final urls" ;
    sh:description "The landing page URL. The domain portion of the URL in combination with the path 1 and path 2 strings cannot exceed 67 characters. The following validation rules apply to Final URLs and Final Mobile URLs. - The length of the URL is limited to 2,048 characters. The HTTP or HTTPS protocol string does count towards the 2,048 character limit. - You may specify up to 10 items for both FinalUrls and FinalMobileUrls; however, only the first item in each list is used for delivery. The service allows up to 10 for potential forward compatibility. - Usage of '{' and '}' is only allowed to delineate tags, for example {lpurl}. - Final URLs must each be a well-formed URL starting with either http:// or https://. - If you specify FinalMobileUrls, you must also specify FinalUrls. - You may not specify FinalMobileUrls if the device preference is set to mobile. Also note that if this ad's TrackingUrlTemplate or UrlCustomParameters element are set, then at least one final URL is required. This URL is used only if the keyword does not specify a final URL. Add: Required Update: Optional" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementResponsiveAd/finalMobileUrls> ;
    sh:name "final mobile urls" ;
    sh:description "The mobile landing page URL. The following validation rules apply to Final URLs and Final Mobile URLs. - The length of the URL is limited to 2,048 characters. The HTTP or HTTPS protocol string does count towards the 2,048 character limit. - You may specify up to 10 items for both FinalUrls and FinalMobileUrls; however, only the first item in each list is used for delivery. The service allows up to 10 for potential forward compatibility. - Usage of '{' and '}' is only allowed to delineate tags, for example {lpurl}. - Final URLs must each be a well-formed URL starting with either http:// or https://. - If you specify FinalMobileUrls, you must also specify FinalUrls. - You may not specify FinalMobileUrls if the device preference is set to mobile. This URL is used only if the keyword does not specify a final mobile URL. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. If you set this element to an empty list, the previous setting will be deleted." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementResponsiveAd/finalAppUrls> ;
    sh:name "final app urls" ;
    sh:description "Not supported for this ad type." ;
    sh:node microsoftads:CampaignManagementAppUrlShape ;
    sh:class microsoftads:CampaignManagementAppUrl ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementResponsiveAd/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. Forward compatibility changes will be noted here in future releases. There are currently no forward compatibility changes for this object." ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementResponsiveAd/headline> ;
    sh:name "headline" ;
    sh:description "Headlines are the most prominent text that appears in your ad, so you should make the most out of the available characters. We require multiple headlines so the ad can flexibly display across a variety of publishers and placements. The length of the string is limited to 30 characters. Add: Required for video ads. Not applicable for multimedia ads and audience ads. Update: Optional. Deprecated for multimedia and audience ads. Use Headlines instead." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementResponsiveAd/longHeadlineString> ;
    sh:name "long headline string" ;
    sh:description "Headlines are the most prominent text that appears in your ad, so you should make the most out of the available characters. We require multiple headlines so the ad can flexibly display across a variety of publishers and placements. The length of the string is limited to 90 characters. Add: Optional. Ignored when LongHeadlines is provided. We will fill in LongHeadlines with LongHeadlineString if LongHeadlines is empty. Not applicable for multimedia ads. Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementResponsiveAd/text> ;
    sh:name "text" ;
    sh:description "This text will appear below or adjacent to your ad's long or short headline, depending on the ad placement. You have more character space to work with in the ad text than in the headline. So once the imagery and headline have a potential customer's attention, the ad text needs to convince them to click it. What sets your product or service apart? The text must contain at least one word. The length of the string is limited to 90 characters. The text cannot contain the newline (\\n) character. Add: Required for video ads. Not applicable for multimedia ads and audience ads. Update: Optional for video ads. Use Descriptions instead for audience ads or multimedia ads (deprecated)." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementResponsiveAd/businessName> ;
    sh:name "business name" ;
    sh:description "The name of the business. Your business's name may appear in your ad, depending on the ad placement. The length of the string is limited to 25 characters. Add: Required Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementResponsiveAd/callToAction> ;
    sh:name "call to action" ;
    sh:description "A brief, punchy reason for customers to click your ad right now. This is displayed on your call to action button. Add: Not applicable for audience ads; Required for multimedia ads Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unknown" "ActNow" "ApplyNow" "BetNow" "BidNow" "BookACar" "BookHotel" "BookNow" "Browse" "BuyNow" "ChatNow" "Compare" "ContactUs" "Coupon" "Donate" "Download" "EmailNow" "EnrollNow" "Explore" "FileNow" "FindJob" "FreePlay" "FreeQuote" "FreeTrial" "GetDeals" "GetOffer" "GetQuote" "JoinNow" "LearnMore" "ListenNow" "LogIn" "Message" "NewCars" "OrderNow" "PlayGame" "PlayNow" "PostJob" "Register" "RentACar" "RentNow" "Reserve" "Sale" "SaveNow" "Schedule" "SeeMenu" "SeeMore" "SeeOffer" "SellNow" "ShopNow" "Showtimes" "SignIn" "SignUp" "StartFree" "StartNow" "Subscribe" "TestDrive" "TryNow" "UsedCars" "ViewCars" "ViewNow" "ViewPlans" "VisitSite" "VoteNow" "Watch" "WatchMore" "WatchNow" "Directions" "FindStore" "SwitchNow" "VisitStore" "RenewNow" "Reorder" "Default" "NoButton" "Install" "AddToCart" "BookTravel" "Buy" "OpenLink" "RegisterNow" "BuildNow" "Dealers" "GetDemo" "GetNow" "GoToDemo" "SeeDemo" "SeeModels" "SeeOffers" "ViewDemo" "CustomText" "Discover" "Dismiss" "Apply" "ViewQuote" "Join" "Attend" "RequestDemo" "Automated" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementResponsiveAd/callToActionLanguage> ;
    sh:name "call to action language" ;
    sh:description "The language that the call to action will be served in. The call to action will always be served in this language, regardless of the campaign's language settings. Add: Not applicable for audience ads; Required for multimedia ads Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "None" "Albanian" "Arabic" "Bulgarian" "TraditionalChinese" "Croatian" "Czech" "Danish" "Dutch" "English" "Estonian" "Finnish" "French" "German" "Greek" "Hebrew" "Hindi" "Hungarian" "Icelandic" "Indonesian" "Italian" "Japanese" "Korean" "Latvian" "Lithuanian" "Macedonian" "Malay" "Maltese" "Norwegian" "Polish" "Portuguese" "Romanian" "Russian" "Serbian" "Slovak" "Slovenian" "Spanish" "Swedish" "Tagalog" "Thai" "Turkish" "Vietnamese" "SimplifiedChinese" "Bosnian" "All" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementResponsiveAd/images> ;
    sh:name "images" ;
    sh:description "Image assets with different sizes and aspect ratios so they can flexibly display across a variety of publishers and placements. Include one or more AssetLink objects that each contain an ImageAsset with SubType and crop settings that match the desired aspect ratio. For more information see the remarks below. Add: Required Update: Optional. If no value is set for the update, this setting is not changed. If you include images during update, any previously set images will be replaced." ;
    sh:node microsoftads:CampaignManagementAssetLinkShape ;
    sh:class microsoftads:CampaignManagementAssetLink ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementResponsiveAd/videos> ;
    sh:name "videos" ;
    sh:description "Video assets with different sizes and aspect ratios so they can flexibly display across a variety of publishers and placements. Include one or more AssetLink objects that each contain a VideoAsset with a SubType. Add: Required for video ads Update: Optional. If no value is set for the update, this setting is not changed. If you include videos during an update, any previously set videos will be replaced." ;
    sh:node microsoftads:CampaignManagementAssetLinkShape ;
    sh:class microsoftads:CampaignManagementAssetLink ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementResponsiveAd/headlines> ;
    sh:name "headlines" ;
    sh:description "Headlines are the most prominent text that appears in your ad, so you should make the most out of the available characters. We require multiple headlines so the ad can flexibly display across a variety of publishers and placements. Unless you pin one of the headlines to a specific position, Bing will optimize the ad layout dynamically with the best headlines and descriptions for the user's search query. From a data model perspective the desriptions and headlines are each stored as text assets i.e., one TextAsset per AssetLink. The same asset can be used by multiple ads. For example if \"Seamless Integration\" is a text asset, it will have the same asset identifier across all ads in the same Microsoft Advertising account. You must set between 1-15 headlines. Each headline's Text must contain at least one word. For efficient use of resources we recommend that you use dynamic text strings such as {keyword} instead of creating new ad copy for each keyword. For more information, see the Microsoft Advertising help article Automatically customize your ads with dynamic text parameters. The maximum input length of each headline's Text is 1,000 characters including dynamic text strings, and of those 1,000 no more than 30 final characters are allowed after substitution. The ad will fail to display or default text will be used if the length exceeds 30 characters after dynamic text substitution occurs. For languages with double-width characters e.g. Traditional Chinese the maximum input length is 500 characters including dynamic text strings, and of those 500 no more than 15 final characters are allowed after substitution. The ad will fail to display or default text will be used if the length exceeds 15 characters after dynamic text substitution occurs. The double-width characters are determined by the characters you use instead of the character set of the campaign or ad group language settings. Double-width characters include Korean, Japanese and Chinese languages characters as well as Emojis. The Text cannot contain the newline (\\n) character. Add: Required for multimedia ads and audience ads. Not applicable for video ads. Update: Optional. To retain all of the existing asset links, set or leave this element nil. If you set this element, any headlines that were previously linked to this ad will be replaced." ;
    sh:node microsoftads:CampaignManagementAssetLinkShape ;
    sh:class microsoftads:CampaignManagementAssetLink ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementResponsiveAd/longHeadline> ;
    sh:name "long headline" ;
    sh:description "For Audience campaigns, LongHeadline is the longer of two possible responsive ad headlines." ;
    sh:node microsoftads:CampaignManagementAssetLinkShape ;
    sh:class microsoftads:CampaignManagementAssetLink ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementResponsiveAd/longHeadlines> ;
    sh:name "long headlines" ;
    sh:description "You must set between 1-5 long headlines. Each headline's Text must contain at least one word. The Text cannot contain the newline (\\n) character. If the parent campaign associates to a store and you specify LongHeadlines, you must also specify Headlines, Descriptions, and Images. Add: Optional if the parent campaign associates to a store, required if its parent campaign does not associate to a store. Will use LongHeadlineString if empty. Update: Optional. To retain all of the existing asset links, set or leave this element nil. If you set a value for this element, any headlines that were previously linked to this asset group will be replaced. If the parent campaign associates to a store and you set this element to an empty list, the previous setting will be deleted." ;
    sh:node microsoftads:CampaignManagementAssetLinkShape ;
    sh:class microsoftads:CampaignManagementAssetLink ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementResponsiveAd/descriptions> ;
    sh:name "descriptions" ;
    sh:description "The descriptions that are shown below the path in your ad. To maximize impressions across all ad formats, the descriptions might not always be shown in your ad. To maximize impressions across all ad formats the descriptions might not always be shown in your ad. Unless you pin one of the descriptions to a specific position, Bing will optimize the ad layout dynamically with the best headlines and descriptions for the user's search query. From a data model perspective the desriptions and headlines are each stored as text assets i.e., one TextAsset per AssetLink. The same asset can be used by multiple ads. For example if \"Seamless Integration\" is a text asset, it will have the same asset identifier across all ads in the same Microsoft Advertising account. You must set between 1-5 descriptions. Each description's Text must contain at least one word. For efficient use of resources we recommend that you use dynamic text strings such as {keyword} instead of creating new ad copy for each keyword. For more information, see the Microsoft Advertising help article Automatically customize your ads with dynamic text parameters. The maximum input length of each description's Text is 1,000 characters including dynamic text strings, and of those 1,000 no more than 90 final characters are allowed after substitution. The ad will fail to display or default text will be used if the length exceeds 90 characters after dynamic text substitution occurs. For languages with double-width characters e.g. Traditional Chinese the maximum input length is 500 characters including dynamic text strings, and of those 500 no more than 45 final characters are allowed after substitution. The ad will fail to display or default text will be used if the length exceeds 45 characters after dynamic text substitution occurs. The double-width characters are determined by the characters you use instead of the character set of the campaign or ad group language settings. Double-width characters include Korean, Japanese and Chinese languages characters as well as Emojis. The Text cannot contain the newline (\\n) character. Add: Required for multimedia ads and audience ads. Not applicable for video ads. Update: Optional. To retain all of the existing asset links, set or leave this element nil. If you set this element, any descriptions that were previously linked to this ad will be replaced." ;
    sh:node microsoftads:CampaignManagementAssetLinkShape ;
    sh:class microsoftads:CampaignManagementAssetLink ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementResponsiveAd/impressionTrackingUrls> ;
    sh:name "impression tracking urls" ;
    sh:description "The URLs for 1x1 impression tracking pixels. Each pixel will report Microsoft Audience Network impressions to your third-party ad reporting tool. You can include up to 2 impression tracking URLs for each responsive ad. Each URL must be accessible. The length of the URL is limited to 2,048 characters. The HTTP or HTTPS protocol string does count towards the 2,048 character limit. For each Microsoft Audience Network impression, Microsoft will ping the URL to enable impression tracking in your third party ad reporting tool. Advanced-level user tracking such as conversion tracking or tracking based on cookies or IP addresses is not supported. This element is not returned by default. To get this element, include the ImpressionTrackingUrls value in the ReturnAdditionalFields element when you call the GetAdsByAdGroupId, GetAdsByEditorialStatus, and GetAdsByIds service operations. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. To remove impression tracking URLs set this element to an empty string array." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementResponsiveAd/verifiedTrackingSettings> ;
    sh:name "verified tracking settings" ;
    sh:description "VerifiedTrackingSetting relates third-party measurement settings. This allows you to track viewability, brand safety, and invalid traffic metrics via a third-party verification provider, such as Integral Ad Science. This feature is available for native, display, and online video ads using the CPM bid strategy. Note: Currently, IAS is the only supported vendor (vendorName), but other verification providers are coming soon. The example below pertains to IAS. There are 3 key-value pairs for IAS:\"vendorName\"\"advertiserEntityID\" (client ID for your verification provider)\"publisherEntityID\" (reporting ID for your verification provider)Example (required for IAS): vendorName : \"IAS\"advertiserEntityID : \"12345678\"publisherEntityID : \"12345678\"" ;
    sh:node microsoftads:CampaignManagementVerifiedTrackingSettingShape ;
    sh:class microsoftads:CampaignManagementVerifiedTrackingSetting ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementResponsiveAd/adSubType> ;
    sh:name "ad sub type" ;
    sh:description "The possible ad sub types." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Create Responsive Search Ad Recommendation Request
microsoftads:CampaignManagementCreateResponsiveSearchAdRecommendationRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementCreateResponsiveSearchAdRecommendationRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCreateResponsiveSearchAdRecommendationRequest/finalUrls> ;
    sh:name "final urls" ;
    sh:description "An array of URLs of the web pages used to create recommended ad assets." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCreateResponsiveSearchAdRecommendationRequest/prompt> ;
    sh:name "prompt" ;
    sh:description "Optional description of the product or service that you want to target with the specific campaign." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCreateResponsiveSearchAdRecommendationRequest/textTone> ;
    sh:name "text tone" ;
    sh:description "Optional tone for recommended text assets." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Friendly" "Persuasive" "Cute" "Inspiring" ) ;
  ] .

# Shape for Campaign Management Create Responsive Search Ad Recommendation Response
microsoftads:CampaignManagementCreateResponsiveSearchAdRecommendationResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementCreateResponsiveSearchAdRecommendationResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCreateResponsiveSearchAdRecommendationResponse/responsiveSearchAd> ;
    sh:name "responsive search ad" ;
    sh:description "A responsive search ad object containing recommended text assets." ;
    sh:node microsoftads:CampaignManagementResponsiveSearchAdShape ;
    sh:class microsoftads:CampaignManagementResponsiveSearchAd ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Responsive Search Ad
microsoftads:CampaignManagementResponsiveSearchAdShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementResponsiveSearchAd ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementResponsiveSearchAd/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier of the ad. Add: Read-only Update: Required and Read-Only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementResponsiveSearchAd/type> ;
    sh:name "type" ;
    sh:description "The type of the ad. This value is ResponsiveSearch when you retrieve a responsive search ad. For more information about ad types, see the Ad Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Text" "Image" "Product" "AppInstall" "ExpandedText" "DynamicSearch" "ResponsiveAd" "ResponsiveSearch" "Hotel" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementResponsiveSearchAd/status> ;
    sh:name "status" ;
    sh:description "The status of the ad. You can set the ad status to Active or Paused. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Inactive" "Active" "Paused" "Deleted" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementResponsiveSearchAd/editorialStatus> ;
    sh:name "editorial status" ;
    sh:description "The editorial review status of the ad, which indicates whether the ad is pending review, has been approved, or has been disapproved. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Disapproved" "Inactive" "ActiveLimited" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementResponsiveSearchAd/devicePreference> ;
    sh:name "device preference" ;
    sh:description "Not supported for this ad type." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementResponsiveSearchAd/adFormatPreference> ;
    sh:name "ad format preference" ;
    sh:description "Not supported for this ad type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementResponsiveSearchAd/trackingUrlTemplate> ;
    sh:name "tracking url template" ;
    sh:description "The tracking template to use as a default for all landing page URLs. The following validation rules apply to tracking templates. For more details about supported templates and parameters, see the Microsoft Advertising help article What tracking or URL parameters can I use? - Tracking templates defined for lower level entities e.g. ads override those set for higher level entities e.g. campaign. For more information, see Entity Limits. - The length of the tracking template is limited to 2,048 characters. The HTTP or HTTPS protocol string does count towards the 2,048 character limit. - The tracking template must be a well-formed URL beginning with one of the following: http://, https://, {lpurl}, or {unescapedlpurl}. - Microsoft Advertising does not validate whether custom parameters exist. If you use custom parameters in your tracking template and they do not exist, then the landing page URL will include the key and value placeholders of your custom parameters without substitution. For example, if your tracking template is https://tracker.example.com/?season={_season}&promocode={_promocode}&u={lpurl} and neither {_season} or {_promocode} are defined at the campaign, ad group, criterion, keyword, or ad level, then the landing page URL will be the same. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. If you set this element to an empty string (\"\"), the previous setting will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementResponsiveSearchAd/finalUrlSuffix> ;
    sh:name "final url suffix" ;
    sh:description "The final URL suffix can include tracking parameters that will be appended to the end of your landing page URL. We recommend placing tracking parameters that your landing page requires in a final URL suffix so that your customers are always sent to your landing page. For more details and validation rules see Final URL Suffix in the technical guides. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. If you set this element to an empty string (\"\"), the previous setting will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementResponsiveSearchAd/urlCustomParameters> ;
    sh:name "url custom parameters" ;
    sh:description "Your custom collection of key and value parameters for URL tracking. Microsoft Advertising will accept the first 8 CustomParameter objects that you include within the CustomParameters object, and if you include more than 8 custom parameters an error will be returned. Each CustomParameter includes Key and Value elements. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. Set the UrlCustomParameters element to null or empty to retain any existing custom parameters. To remove all custom parameters, set the Parameters element of the CustomParameters object to null or empty. To remove a subset of custom parameters, specify the custom parameters that you want to keep in the Parameters element of the CustomParameters object." ;
    sh:node microsoftads:CampaignManagementCustomParametersShape ;
    sh:class microsoftads:CampaignManagementCustomParameters ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementResponsiveSearchAd/finalUrls> ;
    sh:name "final urls" ;
    sh:description "The landing page URL. The domain portion of the URL in combination with the path 1 and path 2 strings cannot exceed 67 characters. The following validation rules apply to Final URLs and Final Mobile URLs. - The length of the URL is limited to 2,048 characters. The HTTP or HTTPS protocol string does count towards the 2,048 character limit. - You may specify up to 10 items for both FinalUrls and FinalMobileUrls; however, only the first item in each list is used for delivery. The service allows up to 10 for potential forward compatibility. - Usage of '{' and '}' is only allowed to delineate tags, for example {lpurl}. - Final URLs must each be a well-formed URL starting with either http:// or https://. - If you specify FinalMobileUrls, you must also specify FinalUrls. - You may not specify FinalMobileUrls if the device preference is set to mobile. Also note that if this ad's TrackingUrlTemplate or UrlCustomParameters element are set, then at least one final URL is required. This URL is used only if the keyword does not specify a final URL. Add: Required Update: Optional" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementResponsiveSearchAd/finalMobileUrls> ;
    sh:name "final mobile urls" ;
    sh:description "The mobile landing page URL. The following validation rules apply to Final URLs and Final Mobile URLs. - The length of the URL is limited to 2,048 characters. The HTTP or HTTPS protocol string does count towards the 2,048 character limit. - You may specify up to 10 items for both FinalUrls and FinalMobileUrls; however, only the first item in each list is used for delivery. The service allows up to 10 for potential forward compatibility. - Usage of '{' and '}' is only allowed to delineate tags, for example {lpurl}. - Final URLs must each be a well-formed URL starting with either http:// or https://. - If you specify FinalMobileUrls, you must also specify FinalUrls. - You may not specify FinalMobileUrls if the device preference is set to mobile. This URL is used only if the keyword does not specify a final mobile URL. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementResponsiveSearchAd/finalAppUrls> ;
    sh:name "final app urls" ;
    sh:description "Not supported for this ad type." ;
    sh:node microsoftads:CampaignManagementAppUrlShape ;
    sh:class microsoftads:CampaignManagementAppUrl ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementResponsiveSearchAd/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. Forward compatibility changes will be noted here in future releases. There are currently no forward compatibility changes for this object." ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementResponsiveSearchAd/headlines> ;
    sh:name "headlines" ;
    sh:description "The list of ad titles that Bing can use to optimize the ad layout. Unless you pin one of the headlines to a specific position, Bing will optimize the ad layout dynamically with the best headlines and descriptions for the user's search query. From a data model perspective the desriptions and headlines are each stored as text assets i.e., one TextAsset per AssetLink. The same asset can be used by multiple ads. For example if \"Seamless Integration\" is a text asset, it will have the same asset identifier across all ads in the same Microsoft Advertising account. You must set between 3-15 headlines. Each headline's Text must contain at least one word. For efficient use of resources we recommend that you use dynamic text strings such as {keyword} instead of creating new ad copy for each keyword. For more information, see the Microsoft Advertising help article Automatically customize your ads with dynamic text parameters. The maximum input length of each headline's Text is 1,000 characters including dynamic text strings, and of those 1,000 no more than 30 final characters are allowed after substitution. The ad will fail to display or default text will be used if the length exceeds 30 characters after dynamic text substitution occurs. For languages with double-width characters e.g. Traditional Chinese the maximum input length is 500 characters including dynamic text strings, and of those 500 no more than 15 final characters are allowed after substitution. The ad will fail to display or default text will be used if the length exceeds 15 characters after dynamic text substitution occurs. The double-width characters are determined by the characters you use instead of the character set of the campaign or ad group language settings. Double-width characters include Korean, Japanese and Chinese languages characters as well as Emojis. The Text cannot contain the newline (\\n) character. The text can contain IF functions. Add: Required Update: Optional. To retain all of the existing asset links, set or leave this element nil. If you set this element, any headlines that were previously linked to this ad will be replaced." ;
    sh:node microsoftads:CampaignManagementAssetLinkShape ;
    sh:class microsoftads:CampaignManagementAssetLink ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementResponsiveSearchAd/descriptions> ;
    sh:name "descriptions" ;
    sh:description "The list of descriptions that Bing can use to optimize the ad layout. To maximize impressions across all ad formats the descriptions might not always be shown in your ad. Unless you pin one of the descriptions to a specific position, Bing will optimize the ad layout dynamically with the best headlines and descriptions for the user's search query. From a data model perspective the desriptions and headlines are each stored as text assets i.e., one TextAsset per AssetLink. The same asset can be used by multiple ads. For example if \"Seamless Integration\" is a text asset, it will have the same asset identifier across all ads in the same Microsoft Advertising account. You must set between 2-4 descriptions. Each description's Text must contain at least one word. For efficient use of resources we recommend that you use dynamic text strings such as {keyword} instead of creating new ad copy for each keyword. For more information, see the Microsoft Advertising help article Automatically customize your ads with dynamic text parameters. The maximum input length of each description's Text is 1,000 characters including dynamic text strings, and of those 1,000 no more than 90 final characters are allowed after substitution. The ad will fail to display or default text will be used if the length exceeds 90 characters after dynamic text substitution occurs. For languages with double-width characters e.g. Traditional Chinese the maximum input length is 500 characters including dynamic text strings, and of those 500 no more than 45 final characters are allowed after substitution. The ad will fail to display or default text will be used if the length exceeds 45 characters after dynamic text substitution occurs. The double-width characters are determined by the characters you use instead of the character set of the campaign or ad group language settings. Double-width characters include Korean, Japanese and Chinese languages characters as well as Emojis. The Text cannot contain the newline (\\n) character. The text can contain IF functions. Add: Required Update: Optional. To retain all of the existing asset links, set or leave this element nil. If you set this element, any descriptions that were previously linked to this ad will be replaced." ;
    sh:node microsoftads:CampaignManagementAssetLinkShape ;
    sh:class microsoftads:CampaignManagementAssetLink ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementResponsiveSearchAd/domain> ;
    sh:name "domain" ;
    sh:description "The URL that will be displayed instead of the final URL. The final URL will still be used for the landing page URL. Reserved for limited pilot usage e.g. pharmaceutical customers. The domain portion of the URL in combination with the path 1 and path 2 strings cannot exceed 67 characters. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. If you set this element to an empty string (\"\"), the previous setting will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementResponsiveSearchAd/path1> ;
    sh:name "path1" ;
    sh:description "The first part of the optional path that will be appended to the domain portion of your display URL. The domain portion of your display URL e.g. https://www.contoso.com will be generated from the domain of your Final URL (FinalUrls element). Then if you have specified a value for Path1 it will be appended to the display URL. If you have also specified a value for Path2, then it will also be appended to the display URL after Path1. For example if your FinalUrls contains https://www.contoso.com, Path1 is set to subdirectory1, and Path2 is set to subdirectory2, then the URL displayed will be https://www.contoso.com/subdirectory1/subdirectory2. The path can contain dynamic parameters such as {MatchType}. For a list of supported parameters, see the Microsoft Advertising help article What tracking or URL parameters can I use?. The maximum input length is 1,000 characters if you include dynamic text strings. No more than 15 final (not dynamic text) characters can be input. The ad will fail to display or the default text will be used if the length of the final URL domain and the paths combined exceed 67 characters. For languages with double-width characters e.g. Traditional Chinese the maximum input length is 1,000 characters if you include dynamic text strings. No more than 7 final (not dynamic text) characters can be input. The ad will fail to display or the default text will be used if the length of the final URL domain and the paths combined exceed 33 characters. The double-width characters are determined by the characters you use instead of the character set of the campaign or ad group language settings. Double-width characters include Korean, Japanese and Chinese languages characters as well as Emojis. The path cannot contain the forward slash (/) or newline (\\n) characters. If the path includes a space, it will be replaced with an underscore (_) when the ad is shown. The path can contain IF functions. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. If you set this element to an empty string (\"\"), the previous setting will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementResponsiveSearchAd/path2> ;
    sh:name "path2" ;
    sh:description "The second part of the optional path that will be appended to the domain portion of your display URL. The domain portion of your display URL e.g. https://www.contoso.com will be generated from the domain of your Final URL (FinalUrls element). Then if you have specified a value for Path1 it will be appended to the display URL. If you have also specified a value for Path2, then it will also be appended to the display URL after Path1. For example if your FinalUrls contains https://www.contoso.com, Path1 is set to subdirectory1, and Path2 is set to subdirectory2, then the URL displayed will be https://www.contoso.com/subdirectory1/subdirectory2. You can only specify Path2 if Path1 is also set. The path can contain dynamic parameters such as {MatchType}. For a list of supported parameters, see the Microsoft Advertising help article What tracking or URL parameters can I use?. The maximum input length is 1,000 characters if you include dynamic text strings. No more than 15 final (not dynamic text) characters can be input. The ad will fail to display or the default text will be used if the length of the final URL domain and the paths combined exceed 67 characters. For languages with double-width characters e.g. Traditional Chinese the maximum input length is 1,000 characters if you include dynamic text strings. No more than 7 final (not dynamic text) characters can be input. The ad will fail to display or the default text will be used if the length of the final URL domain and the paths combined exceed 33 characters. The double-width characters are determined by the characters you use instead of the character set of the campaign or ad group language settings. Double-width characters include Korean, Japanese and Chinese languages characters as well as Emojis. The path cannot contain the forward slash (/) or newline (\\n) characters. If the path includes a space, it will be replaced with an underscore (_) when the ad is shown. The path can contain IF functions. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. If you set this element to an empty string (\"\"), the previous setting will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Criterion Base
microsoftads:CampaignManagementCriterionBaseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementCriterionBase ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterionBase/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Criterion Bid Base
microsoftads:CampaignManagementCriterionBidBaseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementCriterionBidBase ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterionBidBase/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Criterion Cashback Base
microsoftads:CampaignManagementCriterionCashbackBaseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementCriterionCashbackBase ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCriterionCashbackBase/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Custom Audience
microsoftads:CampaignManagementCustomAudienceShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementCustomAudience ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomAudience/scope> ;
    sh:name "scope" ;
    sh:description "Scope defines what accounts can use this audience. For a custom audience the only supported scope is Customer, and the audience can be associated with campaigns and ad groups in all of the customer's accounts. Add: Not supported Update: Not supported" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Account" "Customer" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomAudience/membershipDuration> ;
    sh:name "membership duration" ;
    sh:description "The membership duration determines how far back in time Microsoft Advertising should look for actions that match your custom audience definition in order to add people to your list. For a custom audience the membership duration is not set in the Microsoft Advertising web application, and Microsoft Advertising defers to your custom audience provider settings. When you request the custom audience via Bing Ads API, the returned membership duration will be null. Add: Not supported Update: Not supported" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomAudience/searchSize> ;
    sh:name "search size" ;
    sh:description "The total number of people who are active members of this audience in the Search network. This gives you an idea of how many search users you can target. The audience needs to have at least 300 people before Microsoft Advertising will use it for optimizations. This property will be nil or empty for up to 24 hours while the audience is being built, for example if you have imported new custom audiences from DMP, it takes 24 hours to build the audience, and in the meantime this property will be nil or empty. Add: Not supported Update: Read-only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomAudience/audienceNetworkSize> ;
    sh:name "audience network size" ;
    sh:description "The total number of people who are active members of this audience in the Audience network. This gives you an idea of how many Audience network users you can target. The audience needs to have at least 300 people before Microsoft Advertising will use it for optimizations. Add: Not supported Update: Read-only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomAudience/supportedCampaignTypes> ;
    sh:name "supported campaign types" ;
    sh:description "The list of campaign types that support this audience. Supported values are Audience, DynamicSearchAds, Search, and Shopping. New campaign types might be added in the future, so you should not take any dependency on a fixed set of values. Add: Not supported Update: Read-only" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomAudience/customerShare> ;
    sh:name "customer share" ;
    sh:description "This element is not supported for custom audiences. Add: Not supported Update: Not supported" ;
    sh:node microsoftads:CampaignManagementCustomerShareShape ;
    sh:class microsoftads:CampaignManagementCustomerShare ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomAudience/id> ;
    sh:name "id" ;
    sh:description "The Microsoft Advertising identifier of the audience. Add: Not supported Update: Required and read-only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomAudience/name> ;
    sh:name "name" ;
    sh:description "The name of the audience. The name can contain a maximum of 128 characters. Add: Not supported Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomAudience/description> ;
    sh:name "description" ;
    sh:description "The description of the audience. Use a description to help you remember what audience you are targeting. The description can contain a maximum of 1,024 characters. Add: Not supported Update: Optional. If no value is set for the update, this setting is not changed. To remove the previous setting, set this elemment to an empty string value (\"\")." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomAudience/type> ;
    sh:name "type" ;
    sh:description "The type of the audience. This value is Custom when you retrieve a custom audience. For more information about audience types, see the Audience Data Object Remarks. Add: Not supported Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomAudience/parentId> ;
    sh:name "parent id" ;
    sh:description "The Microsoft Advertising identifier of the customer that contains the custom audience. Add: Not supported Update: Not supported" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomAudience/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. Forward compatibility changes will be noted here in future releases. There are currently no forward compatibility changes for the Audience object." ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Custom Events Rule
microsoftads:CampaignManagementCustomEventsRuleShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementCustomEventsRule ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomEventsRule/type> ;
    sh:name "type" ;
    sh:description "The type of the remarketing rule. For more information about remarketing rule types, see the RemarketingRule Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomEventsRule/categoryOperator> ;
    sh:name "category operator" ;
    sh:description "The operator that can be applied to the value of the Category element. Add: Optional if you include one or more of the other events; You must include one or more of the following event operator pairs: (ActionOperator and Action), (CategoryOperator and Category), (LabelOperator and Label), (ValueOperator and Value). Update: Optional if you include one or more of the other events; If you do not include CategoryOperator and Category during update, any existing CategoryOperator and Category settings will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "None" "Equals" "Contains" "BeginsWith" "EndsWith" "NotEquals" "DoesNotContain" "DoesNotBeginWith" "DoesNotEndWith" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomEventsRule/category> ;
    sh:name "category" ;
    sh:description "The category of event you want to track. For example, 'video'. If this element is specified during an add or update operation, then the CategoryOperator element is also required. Add: Optional if you include one or more of the other events; You must include one or more of the following event operator pairs: (ActionOperator and Action), (CategoryOperator and Category), (LabelOperator and Label), (ValueOperator and Value). Update: Optional if you include one or more of the other events; If you do not include CategoryOperator and Category during update, any existing CategoryOperator and Category settings will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomEventsRule/actionOperator> ;
    sh:name "action operator" ;
    sh:description "The operator that can be applied to the value of the Action element. If this element is specified during an add or update operation, then the Action element is also required. Add: Optional if you include one or more of the other events; You must include one or more of the following event operator pairs: (ActionOperator and Action), (CategoryOperator and Category), (LabelOperator and Label), (ValueOperator and Value). Update: Optional if you include one or more of the other events; If you do not include ActionOperator and Action during update, any existing ActionOperator and Action settings will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "None" "Equals" "Contains" "BeginsWith" "EndsWith" "NotEquals" "DoesNotContain" "DoesNotBeginWith" "DoesNotEndWith" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomEventsRule/action> ;
    sh:name "action" ;
    sh:description "The type of user interaction you want to track. For example 'play' or 'pause'. If this element is specified during an add or update operation, then the ActionOperator element is also required. Add: Optional if you include one or more of the other events; You must include one or more of the following event operator pairs: (ActionOperator and Action), (CategoryOperator and Category), (LabelOperator and Label), (ValueOperator and Value). Update: Optional if you include one or more of the other events; If you do not include ActionOperator and Action during update, any existing ActionOperator and Action settings will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomEventsRule/labelOperator> ;
    sh:name "label operator" ;
    sh:description "The operator that can be applied to the value of the Label element. Add: Optional if you include one or more of the other events; You must include one or more of the following event operator pairs: (ActionOperator and Action), (CategoryOperator and Category), (LabelOperator and Label), (ValueOperator and Value). Update: Optional if you include one or more of the other events; If you do not include LabelOperator and Label during update, any existing LabelOperator and Label settings will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "None" "Equals" "Contains" "BeginsWith" "EndsWith" "NotEquals" "DoesNotContain" "DoesNotBeginWith" "DoesNotEndWith" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomEventsRule/label> ;
    sh:name "label" ;
    sh:description "The name of the element that caused the action. For example 'trailer' or 'behindthescenes'. If this element is specified during an add or update operation, then the LabelOperator element is also required. Add: Optional if you include one or more of the other events; You must include one or more of the following event operator pairs: (ActionOperator and Action), (CategoryOperator and Category), (LabelOperator and Label), (ValueOperator and Value). Update: Optional if you include one or more of the other events; If you do not include LabelOperator and Label during update, any existing LabelOperator and Label settings will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomEventsRule/valueOperator> ;
    sh:name "value operator" ;
    sh:description "The operator that can be applied to the value of the Value element. Add: Optional if you include one or more of the other events; You must include one or more of the following event operator pairs: (ActionOperator and Action), (CategoryOperator and Category), (LabelOperator and Label), (ValueOperator and Value). Update: Optional if you include one or more of the other events; If you do not include ValueOperator and Value during update, any existing ValueOperator and Value settings will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "None" "Equals" "GreaterThan" "LessThan" "GreaterThanEqualTo" "LessThanEqualTo" "NotEquals" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomEventsRule/value> ;
    sh:name "value" ;
    sh:description "A positive integer value associated with that event. For example the value could be the duration of time that the video played. If this element is specified during an add or update operation, then the ValueOperator element is also required. Add: Optional if you include one or more of the other events; You must include one or more of the following event operator pairs: (ActionOperator and Action), (CategoryOperator and Category), (LabelOperator and Label), (ValueOperator and Value). Update: Optional if you include one or more of the other events; If you do not include ValueOperator and Value during update, any existing ValueOperator and Value settings will be deleted" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Custom Linked In Criterion
microsoftads:CampaignManagementCustomLinkedInCriterionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementCustomLinkedInCriterion ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomLinkedInCriterion/type> ;
    sh:name "type" ;
    sh:description "The type of the criterion. This value is CustomLinkedIn when you retrieve a custom LinkedIn criterion. For more information about criterion types, see the Criterion Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomLinkedInCriterion/profileId> ;
    sh:name "profile id" ;
    sh:description "The LinkedIn profile ID." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomLinkedInCriterion/profile> ;
    sh:name "profile" ;
    sh:description "The LinkedIn profile." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomLinkedInCriterion/profileType> ;
    sh:name "profile type" ;
    sh:description "The LinkedIn profile type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Custom Segment
microsoftads:CampaignManagementCustomSegmentShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementCustomSegment ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomSegment/scope> ;
    sh:name "scope" ;
    sh:description "Scope defines what accounts can use this audience. If scope is set to Account, the audience can only be associated with campaigns and ad groups in one account i.e., via the ParentId. If scope is set to Customer, the audience can be associated with campaigns and ad groups in all of the customer's accounts." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Account" "Customer" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomSegment/membershipDuration> ;
    sh:name "membership duration" ;
    sh:description "When you create an audience, you can specify how far back in time Microsoft Advertising should look for actions that match your audience definition. The minimum duration is 1 day and the maximum duration allowed is 180 days." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomSegment/searchSize> ;
    sh:name "search size" ;
    sh:description "The total number of people who are active members of this audience in the Search network. This gives you an idea of how many search users you can target. Please see more details in documentation for the objects that inherit this element e.g., RemarketingList." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomSegment/audienceNetworkSize> ;
    sh:name "audience network size" ;
    sh:description "The total number of people who are active members of this audience in the Audience network. This gives you an idea of how many Audience network users you can target. Please see more details in documentation for the objects that inherit this element e.g., RemarketingList." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomSegment/supportedCampaignTypes> ;
    sh:name "supported campaign types" ;
    sh:description "The list of campaign types that support this audience. Supported values are Audience, DynamicSearchAds, Search, and Shopping. New campaign types might be added in the future, so you should not take any dependency on a fixed set of values." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomSegment/customerShare> ;
    sh:name "customer share" ;
    sh:description "Determines the list of customers and accounts that share the audience. Details include audience association counts. This element is only supported with a RemarketingList. Audiences of other types cannot be shared in the customer hierarchy." ;
    sh:node microsoftads:CampaignManagementCustomerShareShape ;
    sh:class microsoftads:CampaignManagementCustomerShare ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomSegment/id> ;
    sh:name "id" ;
    sh:description "The Microsoft Advertising identifier of the audience." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomSegment/name> ;
    sh:name "name" ;
    sh:description "The name of the audience. The name can contain a maximum of 128 characters." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomSegment/description> ;
    sh:name "description" ;
    sh:description "The description of the audience. Use a description to help you remember what audience you are targeting. The description can contain a maximum of 1,024 characters." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomSegment/type> ;
    sh:name "type" ;
    sh:description "The type of the segment." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomSegment/parentId> ;
    sh:name "parent id" ;
    sh:description "The Microsoft Advertising identifier of the account or customer. If the Scope is set to Account, this is the account ID, and otherwise it is the customer ID." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomSegment/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. Forward compatibility changes will be noted here in future releases. There are currently no forward compatibility changes for this object." ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomSegment/customSegmentCatalogList> ;
    sh:name "custom segment catalog list" ;
    sh:description "A list of custom segment catalogs. Add: Required Update: Optional, if no value is set for the update, this setting isn't changed." ;
    sh:node microsoftads:CampaignManagementCustomSegmentCatalogShape ;
    sh:class microsoftads:CampaignManagementCustomSegmentCatalog ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementCustomSegment/editorialStatus> ;
    sh:name "editorial status" ;
    sh:description "The custom segment editorial status. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unknown" "Rejected" "Pending" "PartialApproved" "Approved" ) ;
  ] .

# Shape for Campaign Management Daily Summary
microsoftads:CampaignManagementDailySummaryShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDailySummary ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDailySummary/uploadDate> ;
    sh:name "upload date" ;
    sh:description "The date of the report in local time." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDailySummary/fileUrl> ;
    sh:name "file url" ;
    sh:description "The URL of the report." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDailySummary/fileUrlExpiryTimeUtc> ;
    sh:name "file url expiry time utc" ;
    sh:description "The expiry time of the report in UTC time." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDailySummary/successCount> ;
    sh:name "success count" ;
    sh:description "The number of successful conversions." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDailySummary/failureCount> ;
    sh:name "failure count" ;
    sh:description "The number of failed conversions." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Data Table Ad Extension
microsoftads:CampaignManagementDataTableAdExtensionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDataTableAdExtension ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDataTableAdExtension/status> ;
    sh:name "status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Deleted" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDataTableAdExtension/scheduling> ;
    sh:name "scheduling" ;
    sh:node microsoftads:CampaignManagementScheduleShape ;
    sh:class microsoftads:CampaignManagementSchedule ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDataTableAdExtension/devicePreference> ;
    sh:name "device preference" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDataTableAdExtension/id> ;
    sh:name "id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDataTableAdExtension/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDataTableAdExtension/version> ;
    sh:name "version" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDataTableAdExtension/name> ;
    sh:name "name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDataTableAdExtension/nameUrl> ;
    sh:name "name url" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDataTableAdExtension/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Day Time Criterion
microsoftads:CampaignManagementDayTimeCriterionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDayTimeCriterion ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDayTimeCriterion/type> ;
    sh:name "type" ;
    sh:description "The type of the criterion. This value is DayTime when you retrieve a day and time criterion. For more information about criterion types, see the Criterion Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDayTimeCriterion/day> ;
    sh:name "day" ;
    sh:description "The day of the week to target. For example, you can target the ads to run only on Friday or Saturday. Add: Required Update: Not allowed. If you specify this element it must match the existing setting." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Sunday" "Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDayTimeCriterion/fromHour> ;
    sh:name "from hour" ;
    sh:description "The starting hour range to target. The possible values range from 0 to 23. Add: Required Update: Not allowed. If you specify this element it must match the existing setting." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDayTimeCriterion/fromMinute> ;
    sh:name "from minute" ;
    sh:description "The starting minute of the hour to target. Add: Required Update: Not allowed. If you specify this element it must match the existing setting." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Zero" "Fifteen" "Thirty" "FortyFive" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDayTimeCriterion/toHour> ;
    sh:name "to hour" ;
    sh:description "The ending hour range to target. Supported values range from 0 to 24. If the ToHour is set to 24, the ToMinute must be Zero. Add: Required Update: Not allowed. If you specify this element it must match the existing setting." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDayTimeCriterion/toMinute> ;
    sh:name "to minute" ;
    sh:description "The ending minute of the hour to target. Add: Required Update: Not allowed. If you specify this element it must match the existing setting." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Zero" "Fifteen" "Thirty" "FortyFive" ) ;
  ] .

# Shape for Campaign Management Deal Criterion
microsoftads:CampaignManagementDealCriterionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDealCriterion ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDealCriterion/type> ;
    sh:name "type" ;
    sh:description "The type of the criterion. This value is Deal when you retrieve a deal criterion. For more information about criterion types, see the Criterion Data Object Remarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDealCriterion/dealId> ;
    sh:name "deal id" ;
    sh:description "The Microsoft Advertising identifier of the Deal." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Delete Ad Extensions Associations Request
microsoftads:CampaignManagementDeleteAdExtensionsAssociationsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteAdExtensionsAssociationsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteAdExtensionsAssociationsRequest/accountId> ;
    sh:name "account id" ;
    sh:description "The identifier of the account that owns the extensions." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteAdExtensionsAssociationsRequest/adExtensionIdToEntityIdAssociations> ;
    sh:name "ad extension id to entity id associations" ;
    sh:description "The list of ad extensions that are associated with campaigns or ad groups before calling this operation. You can specify a maximum of 100 associations to delete or remove." ;
    sh:node microsoftads:CampaignManagementAdExtensionIdToEntityIdAssociationShape ;
    sh:class microsoftads:CampaignManagementAdExtensionIdToEntityIdAssociation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteAdExtensionsAssociationsRequest/associationType> ;
    sh:name "association type" ;
    sh:description "The entity type or types associated with an ad extension." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Campaign" "AdGroup" "Account" ) ;
  ] .

# Shape for Campaign Management Delete Ad Extensions Associations Response
microsoftads:CampaignManagementDeleteAdExtensionsAssociationsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteAdExtensionsAssociationsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteAdExtensionsAssociationsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Delete Ad Extensions Request
microsoftads:CampaignManagementDeleteAdExtensionsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteAdExtensionsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteAdExtensionsRequest/accountId> ;
    sh:name "account id" ;
    sh:description "The identifier of the account that owns the extensions." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteAdExtensionsRequest/adExtensionIds> ;
    sh:name "ad extension ids" ;
    sh:description "The identifiers of the extensions to delete. You can specify a maximum of 100 identifiers." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Campaign Management Delete Ad Extensions Response
microsoftads:CampaignManagementDeleteAdExtensionsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteAdExtensionsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteAdExtensionsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Delete Ad Group Criterions Request
microsoftads:CampaignManagementDeleteAdGroupCriterionsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteAdGroupCriterionsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteAdGroupCriterionsRequest/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "The identifier of the ad group that has the criterions you want to delete." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteAdGroupCriterionsRequest/criterionType> ;
    sh:name "criterion type" ;
    sh:description "The type of criterion to delete, for example Webpage. You can specify only one criterion type value per call. To add, delete, or update target criterions i.e., age, company name, day and time, device, gender, industry, job function, location, location intent, placement, radius, and topic criterions, you must specify the CriterionType value as Targets. You can add, delete, and update multiple target criterion types in the same operation. To retrieve these target criterions via GetAdGroupCriterionsByIds you must request the specific type individually i.e., Age, CompanyName, DayTime, Device, Gender, Industry, JobFunction, Location, LocationIntent, Placement, Radius, and Topic. To add, delete, or update audience criterions i.e., custom audiences, in-market audiences, and remarketing lists, you must specify the CriterionType value as Audience. You can add, delete, and update multiple target criterion types in the same operation. To retrieve these audience criterions via GetAdGroupCriterionsByIds you must request the specific type individually i.e., CustomAudience, InMarketAudience, ProductAudience, and RemarketingList. You cannot delete a ProductPartition with this operation. Instead, you should use ApplyProductPartitionActions." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteAdGroupCriterionsRequest/adGroupCriterionIds> ;
    sh:name "ad group criterion ids" ;
    sh:description "A list of unique identifiers that identify the criterions to delete. You can include up to 1,000 ad group criterion identifiers per request." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Campaign Management Delete Ad Group Criterions Response
microsoftads:CampaignManagementDeleteAdGroupCriterionsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteAdGroupCriterionsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteAdGroupCriterionsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Delete Ad Groups Request
microsoftads:CampaignManagementDeleteAdGroupsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteAdGroupsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteAdGroupsRequest/campaignId> ;
    sh:name "campaign id" ;
    sh:description "The campaign that contains the ad groups to delete." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteAdGroupsRequest/adGroupIds> ;
    sh:name "ad group ids" ;
    sh:description "A maximum of 1,000 identifiers of the ad groups to delete." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Campaign Management Delete Ad Groups Response
microsoftads:CampaignManagementDeleteAdGroupsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteAdGroupsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteAdGroupsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Delete Ads Request
microsoftads:CampaignManagementDeleteAdsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteAdsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteAdsRequest/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "The ID of the ad group that contains the ads to delete." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteAdsRequest/adIds> ;
    sh:name "ad ids" ;
    sh:description "The IDs of the ads to delete. You can specify a maximum of 50 IDs." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Campaign Management Delete Ads Response
microsoftads:CampaignManagementDeleteAdsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteAdsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteAdsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Delete Asset Groups Request
microsoftads:CampaignManagementDeleteAssetGroupsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteAssetGroupsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteAssetGroupsRequest/campaignId> ;
    sh:name "campaign id" ;
    sh:description "The ID of the performance max campaign." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteAssetGroupsRequest/assetGroupIds> ;
    sh:name "asset group ids" ;
    sh:description "Array of asset group IDs to update for the specified campaign. A maximum of 100 asset groups can be specified in a single call." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Campaign Management Delete Asset Groups Response
microsoftads:CampaignManagementDeleteAssetGroupsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteAssetGroupsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteAssetGroupsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Delete Audience Group Asset Group Associations Request
microsoftads:CampaignManagementDeleteAudienceGroupAssetGroupAssociationsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteAudienceGroupAssetGroupAssociationsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteAudienceGroupAssetGroupAssociationsRequest/audienceGroupAssetGroupAssociations> ;
    sh:name "audience group asset group associations" ;
    sh:description "The list of Audience Group associations to be deleted. The maximum size of the list is 100 items per service request." ;
    sh:node microsoftads:CampaignManagementAudienceGroupAssetGroupAssociationShape ;
    sh:class microsoftads:CampaignManagementAudienceGroupAssetGroupAssociation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Delete Audience Group Asset Group Associations Response
microsoftads:CampaignManagementDeleteAudienceGroupAssetGroupAssociationsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteAudienceGroupAssetGroupAssociationsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteAudienceGroupAssetGroupAssociationsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Delete Audience Groups Request
microsoftads:CampaignManagementDeleteAudienceGroupsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteAudienceGroupsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteAudienceGroupsRequest/audienceGroupIds> ;
    sh:name "audience group ids" ;
    sh:description "Array of audience group IDs to be deleted. The maximum size of the list is 100 items per service request." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Campaign Management Delete Audience Groups Response
microsoftads:CampaignManagementDeleteAudienceGroupsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteAudienceGroupsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteAudienceGroupsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Delete Audiences Request
microsoftads:CampaignManagementDeleteAudiencesRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteAudiencesRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteAudiencesRequest/audienceIds> ;
    sh:name "audience ids" ;
    sh:description "The IDs of the audiences to delete. You can specify a maximum of 100 IDs. You cannot delete InMarketAudience objects." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Campaign Management Delete Audiences Response
microsoftads:CampaignManagementDeleteAudiencesResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteAudiencesResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteAudiencesResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Delete Bid Strategies Request
microsoftads:CampaignManagementDeleteBidStrategiesRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteBidStrategiesRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteBidStrategiesRequest/bidStrategyIds> ;
    sh:name "bid strategy ids" ;
    sh:description "The identifiers of bid strategies to delete from the account's portfolio bid strategy library. You can include a maximum of 100 IDs in a single call. The account is determined by the required CustomerAccountId header element." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteBidStrategiesRequest/scope> ;
    sh:name "scope" ;
    sh:description "A nullable field used to delete bid strategy IDs in the request for the specified scope. If no scope is provided, the default is Account. If a bid strategy ID in the request belongs to the Account scope but the request scope is set to Customer, the call for those bid strategy IDs will fail with a PortfolioBidStrategyIdInvalid error." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Account" "Customer" ) ;
  ] .

# Shape for Campaign Management Delete Bid Strategies Response
microsoftads:CampaignManagementDeleteBidStrategiesResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteBidStrategiesResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteBidStrategiesResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Delete Brand Kits Request
microsoftads:CampaignManagementDeleteBrandKitsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteBrandKitsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteBrandKitsRequest/accountId> ;
    sh:name "account id" ;
    sh:description "The Microsoft Advertising identifier of the account." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteBrandKitsRequest/brandKitIds> ;
    sh:name "brand kit ids" ;
    sh:description "The identifiers of the BrandKits to delete." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Campaign Management Delete Brand Kits Response
microsoftads:CampaignManagementDeleteBrandKitsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteBrandKitsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteBrandKitsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array BatchError that contains details for any request items that were not successful. The list of errors does not correspond directly to the list of items in the request. The list can be empty if there were no errors, or it can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Delete Budgets Request
microsoftads:CampaignManagementDeleteBudgetsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteBudgetsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteBudgetsRequest/budgetIds> ;
    sh:name "budget ids" ;
    sh:description "A maximum of 100 budget identifiers to delete from the account's shared budget library. The account is determined by the required CustomerAccountId header element." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Campaign Management Delete Budgets Response
microsoftads:CampaignManagementDeleteBudgetsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteBudgetsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteBudgetsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Delete Campaign Conversion Goals Request
microsoftads:CampaignManagementDeleteCampaignConversionGoalsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteCampaignConversionGoalsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteCampaignConversionGoalsRequest/campaignConversionGoal> ;
    sh:name "campaign conversion goal" ;
    sh:description "An array of the base object of a campaign conversion goal." ;
    sh:node microsoftads:CampaignManagementCampaignConversionGoalShape ;
    sh:class microsoftads:CampaignManagementCampaignConversionGoal ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Delete Campaign Conversion Goals Response
microsoftads:CampaignManagementDeleteCampaignConversionGoalsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteCampaignConversionGoalsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteCampaignConversionGoalsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array BatchError that contains details for any request items that were not successful. The list of errors does not correspond directly to the list of items in the request. The list can be empty if there were no errors, or it can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Delete Campaign Criterions Request
microsoftads:CampaignManagementDeleteCampaignCriterionsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteCampaignCriterionsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteCampaignCriterionsRequest/campaignId> ;
    sh:name "campaign id" ;
    sh:description "The identifier of the campaign that owns the criterions to delete." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteCampaignCriterionsRequest/criterionType> ;
    sh:name "criterion type" ;
    sh:description "The type of criterion to delete, for example Webpage. You can specify only one criterion type value per call. To add, delete, or update target criterions i.e., age, day and time, device, gender, location, location intent, and radius criterions, you must specify the CriterionType value as Targets. You can add, delete, and update multiple target criterion types in the same operation. To retrieve these target criterions via GetCampaignCriterionsByIds you must request the specific type individually i.e., Age, DayTime, Device, Gender, Location, LocationIntent, and Radius." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteCampaignCriterionsRequest/campaignCriterionIds> ;
    sh:name "campaign criterion ids" ;
    sh:description "A list of unique system identifiers corresponding to the campaign criterions that you want to delete. You can include up to 100 campaign criterion identifiers per request." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Campaign Management Delete Campaign Criterions Response
microsoftads:CampaignManagementDeleteCampaignCriterionsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteCampaignCriterionsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteCampaignCriterionsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Delete Campaigns Request
microsoftads:CampaignManagementDeleteCampaignsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteCampaignsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteCampaignsRequest/accountId> ;
    sh:name "account id" ;
    sh:description "The identifier of the account that contains the campaigns to delete." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteCampaignsRequest/campaignIds> ;
    sh:name "campaign ids" ;
    sh:description "A maximum of 100 campaign identifiers to delete." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Campaign Management Delete Campaigns Response
microsoftads:CampaignManagementDeleteCampaignsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteCampaignsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteCampaignsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Delete Data Exclusions Request
microsoftads:CampaignManagementDeleteDataExclusionsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteDataExclusionsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteDataExclusionsRequest/accountId> ;
    sh:name "account id" ;
    sh:description "The account ID." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteDataExclusionsRequest/dataExclusionIds> ;
    sh:name "data exclusion ids" ;
    sh:description "The IDs of the data exclusions to delete." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Campaign Management Delete Data Exclusions Response
microsoftads:CampaignManagementDeleteDataExclusionsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteDataExclusionsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteDataExclusionsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array BatchError that contains details for any request items that were not successful. The list of errors does not correspond directly to the list of items in the request. The list can be empty if there were no errors, or it can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Delete Experiments Request
microsoftads:CampaignManagementDeleteExperimentsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteExperimentsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteExperimentsRequest/experimentIds> ;
    sh:name "experiment ids" ;
    sh:description "A maximum of 100 experiment identifiers to delete." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Campaign Management Delete Experiments Response
microsoftads:CampaignManagementDeleteExperimentsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteExperimentsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteExperimentsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Delete HTML5s Request
microsoftads:CampaignManagementDeleteHTML5sRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteHTML5sRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteHTML5sRequest/hTML5AssetIds> ;
    sh:name "h tml5asset ids" ;
    sh:description "Array of HTML5 asset IDs to delete from the specified campaign." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Campaign Management Delete HTML5s Response
microsoftads:CampaignManagementDeleteHTML5sResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteHTML5sResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteHTML5sResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that weren't successful." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Delete Import Jobs Request
microsoftads:CampaignManagementDeleteImportJobsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteImportJobsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteImportJobsRequest/importJobIds> ;
    sh:name "import job ids" ;
    sh:description "The identifiers of the import jobs to delete." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteImportJobsRequest/importType> ;
    sh:name "import type" ;
    sh:description "The type of import job to delete. To delete GoogleImportJob objects, set this element to \"GoogleImportJob\"." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Delete Import Jobs Response
microsoftads:CampaignManagementDeleteImportJobsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteImportJobsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteImportJobsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Delete Keywords Request
microsoftads:CampaignManagementDeleteKeywordsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteKeywordsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteKeywordsRequest/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "The identifier of the ad group that contains the keywords to delete." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteKeywordsRequest/keywordIds> ;
    sh:name "keyword ids" ;
    sh:description "A maximum of 1,000 keywords identifiers to delete." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Campaign Management Delete Keywords Response
microsoftads:CampaignManagementDeleteKeywordsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteKeywordsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteKeywordsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Delete Label Associations Request
microsoftads:CampaignManagementDeleteLabelAssociationsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteLabelAssociationsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteLabelAssociationsRequest/entityType> ;
    sh:name "entity type" ;
    sh:description "Indicates the entity type associated with the label. The supported entity type values are Campaign, AdGroup, Ad, and Keyword." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "None" "Campaign" "AdGroup" "Ad" "Keyword" "AssetGroup" "TextAsset" "ImageAsset" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteLabelAssociationsRequest/labelAssociations> ;
    sh:name "label associations" ;
    sh:description "The list of label associations to delete. Each label association includes label and entity identifiers. The maximum size of the list is 100 items per service request." ;
    sh:node microsoftads:CampaignManagementLabelAssociationShape ;
    sh:class microsoftads:CampaignManagementLabelAssociation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Label Association
microsoftads:CampaignManagementLabelAssociationShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementLabelAssociation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLabelAssociation/labelId> ;
    sh:name "label id" ;
    sh:description "The identifier of the label. Set: Required Delete: Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLabelAssociation/entityId> ;
    sh:name "entity id" ;
    sh:description "The identifier of an entity associated with the label. Supported entity types for labels are campaign, ad group, ad, and keyword. The entity type is specified in the request message of each DeleteLabelAssociations, GetLabelAssociationsByEntityIds, GetLabelAssociationsByLabelIds, and SetLabelAssociations operation. Each entity can be associated with a maximum of 50 labels. For example Campaign A can be associated with up to 50 labels. Set: Required Delete: Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Delete Label Associations Response
microsoftads:CampaignManagementDeleteLabelAssociationsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteLabelAssociationsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteLabelAssociationsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any associations that were not successfully retrieved. The list of errors corresponds directly to the list of associations in the request. Items of the list may be returned as null. For each list index where an association was successfully retrieved, the corresponding error element will be null. Ideally all associations are retrieved successfully and all elements in this list are null." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Delete Labels Request
microsoftads:CampaignManagementDeleteLabelsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteLabelsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteLabelsRequest/labelIds> ;
    sh:name "label ids" ;
    sh:description "The identifiers of labels to delete. The maximum size of the list is 100 items per service request." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Campaign Management Delete Labels Response
microsoftads:CampaignManagementDeleteLabelsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteLabelsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteLabelsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Delete Linked In Segments Request
microsoftads:CampaignManagementDeleteLinkedInSegmentsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteLinkedInSegmentsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteLinkedInSegmentsRequest/linkedInSegmentIds> ;
    sh:name "linked in segment ids" ;
    sh:description "Array of LinkedIn segment IDs to delete from the specified campaign." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Campaign Management Delete Linked In Segments Response
microsoftads:CampaignManagementDeleteLinkedInSegmentsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteLinkedInSegmentsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteLinkedInSegmentsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array BatchError that contains details for any request items that were not successful. The list of errors does not correspond directly to the list of items in the request. The list can be empty if there were no errors, or it can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Delete List Items From Shared List Request
microsoftads:CampaignManagementDeleteListItemsFromSharedListRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteListItemsFromSharedListRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteListItemsFromSharedListRequest/listItemIds> ;
    sh:name "list item ids" ;
    sh:description "The list of identifiers of negative keywords to delete from the negative keyword list, or the negative sites to delete from the website exclusion list. The list can contain a maximum of 5,000 items per service call." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteListItemsFromSharedListRequest/sharedList> ;
    sh:name "shared list" ;
    sh:description "The negative keyword list or website exclusion list. If the SharedEntityScope is either empty or set to Account, and if the SharedList is a NegativeKeywordList, then the ListItemIds must identify negative keyword (NegativeKeyword) objects. If the SharedEntityScope is set to Customer, and if the SharedList is a PlacementExclusionList, then the ListItemIds must identify negative site (NegativeSite) objects." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementAccountContentNegativeKeywordListShape ; sh:class microsoftads:CampaignManagementAccountContentNegativeKeywordList ]
      [ sh:node microsoftads:CampaignManagementAccountNegativeKeywordListShape ; sh:class microsoftads:CampaignManagementAccountNegativeKeywordList ]
      [ sh:node microsoftads:CampaignManagementAccountPlacementExclusionListShape ; sh:class microsoftads:CampaignManagementAccountPlacementExclusionList ]
      [ sh:node microsoftads:CampaignManagementAccountPlacementInclusionListShape ; sh:class microsoftads:CampaignManagementAccountPlacementInclusionList ]
      [ sh:node microsoftads:CampaignManagementBrandListShape ; sh:class microsoftads:CampaignManagementBrandList ]
      [ sh:node microsoftads:CampaignManagementNegativeKeywordListShape ; sh:class microsoftads:CampaignManagementNegativeKeywordList ]
      [ sh:node microsoftads:CampaignManagementPlacementExclusionListShape ; sh:class microsoftads:CampaignManagementPlacementExclusionList ]
      [ sh:node microsoftads:CampaignManagementSharedListShape ; sh:class microsoftads:CampaignManagementSharedList ]
      [ sh:node microsoftads:CampaignManagementSharedListBaseShape ; sh:class microsoftads:CampaignManagementSharedListBase ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteListItemsFromSharedListRequest/sharedEntityScope> ;
    sh:name "shared entity scope" ;
    sh:description "Indicates whether the shared entity is available at the ad account (Account) or manager account (Customer) level. This element is optional and defaults to Account scope. The ad account scope is only applicable for negative keyword lists. Set this element to Customer to delete negative sites from a website exclusion list in your manager account (customer) shared library." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Account" "Customer" ) ;
  ] .

# Shape for Campaign Management Delete List Items From Shared List Response
microsoftads:CampaignManagementDeleteListItemsFromSharedListResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteListItemsFromSharedListResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteListItemsFromSharedListResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Delete Media Request
microsoftads:CampaignManagementDeleteMediaRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteMediaRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteMediaRequest/accountId> ;
    sh:name "account id" ;
    sh:description "The identifier of the account that owns the media library." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteMediaRequest/mediaIds> ;
    sh:name "media ids" ;
    sh:description "A maximum of 100 media identifiers to delete from the account's media library. You cannot delete media that is associated or assigned to an ImageAdExtension or ResponsiveAd object. Otherwise this operation will return the 4024 CampaignServiceMediaIsAssociated error." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Campaign Management Delete Media Response
microsoftads:CampaignManagementDeleteMediaResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteMediaResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteMediaResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any media that were not successfully deleted. The list of errors corresponds directly to the list of media in the request. Items of the list may be returned as null. For each list index where media was successfully deleted, the corresponding error element will be null. Ideally all media are deleted successfully and all elements in this list are null." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Delete Negative Keywords From Entities Request
microsoftads:CampaignManagementDeleteNegativeKeywordsFromEntitiesRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteNegativeKeywordsFromEntitiesRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteNegativeKeywordsFromEntitiesRequest/entityNegativeKeywords> ;
    sh:name "entity negative keywords" ;
    sh:description "An array of negative keyword with associated entity such as a campaign or ad group. The EntityType specified within each EntityNegativeKeyword must be set to the same value. This array can contain a maximum of 1 EntityNegativeKeyword element, which contains up to 20,000 negative keywords." ;
    sh:node microsoftads:CampaignManagementEntityNegativeKeywordShape ;
    sh:class microsoftads:CampaignManagementEntityNegativeKeyword ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Delete Negative Keywords From Entities Response
microsoftads:CampaignManagementDeleteNegativeKeywordsFromEntitiesResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteNegativeKeywordsFromEntitiesResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteNegativeKeywordsFromEntitiesResponse/nestedPartialErrors> ;
    sh:name "nested partial errors" ;
    sh:description "An array of BatchErrorCollection objects that contain details for any criterion that were not successfully deleted. The top level error within each BatchErrorCollection object corresponds to potential campaign or ad group errors. The nested list of BatchError objects would include any errors specific to the negative keywords that you attempted to delete from the campaign or ad group. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorCollectionShape ; sh:class microsoftads:CampaignManagementBatchErrorCollection ]
      [ sh:node microsoftads:CampaignManagementBatchErrorCollectionBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorCollectionBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorCollectionShape ; sh:class microsoftads:CampaignManagementEditorialErrorCollection ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Delete Seasonality Adjustments Request
microsoftads:CampaignManagementDeleteSeasonalityAdjustmentsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteSeasonalityAdjustmentsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteSeasonalityAdjustmentsRequest/accountId> ;
    sh:name "account id" ;
    sh:description "The account ID." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteSeasonalityAdjustmentsRequest/seasonalityAdjustmentIds> ;
    sh:name "seasonality adjustment ids" ;
    sh:description "The IDs of the seasonality adjustments to delete." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Campaign Management Delete Seasonality Adjustments Response
microsoftads:CampaignManagementDeleteSeasonalityAdjustmentsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteSeasonalityAdjustmentsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteSeasonalityAdjustmentsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array BatchError that contains details for any request items that were not successful. The list of errors does not correspond directly to the list of items in the request. The list can be empty if there were no errors, or it can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Delete Shared Entities Request
microsoftads:CampaignManagementDeleteSharedEntitiesRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteSharedEntitiesRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteSharedEntitiesRequest/sharedEntities> ;
    sh:name "shared entities" ;
    sh:description "The negative keyword lists or website exclusion lists to delete. If the SharedEntityScope is either empty or set to Account, then the SharedEntities must be negative keyword list (NegativeKeywordList) objects. If the SharedEntityScope is set to Customer, then the SharedEntities must be website exclusion list (PlacementExclusionList) objects. The list can contain a maximum of 20 elements." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementAccountContentNegativeKeywordListShape ; sh:class microsoftads:CampaignManagementAccountContentNegativeKeywordList ]
      [ sh:node microsoftads:CampaignManagementAccountNegativeKeywordListShape ; sh:class microsoftads:CampaignManagementAccountNegativeKeywordList ]
      [ sh:node microsoftads:CampaignManagementAccountPlacementExclusionListShape ; sh:class microsoftads:CampaignManagementAccountPlacementExclusionList ]
      [ sh:node microsoftads:CampaignManagementAccountPlacementInclusionListShape ; sh:class microsoftads:CampaignManagementAccountPlacementInclusionList ]
      [ sh:node microsoftads:CampaignManagementBrandListShape ; sh:class microsoftads:CampaignManagementBrandList ]
      [ sh:node microsoftads:CampaignManagementNegativeKeywordListShape ; sh:class microsoftads:CampaignManagementNegativeKeywordList ]
      [ sh:node microsoftads:CampaignManagementPlacementExclusionListShape ; sh:class microsoftads:CampaignManagementPlacementExclusionList ]
      [ sh:node microsoftads:CampaignManagementSharedEntityShape ; sh:class microsoftads:CampaignManagementSharedEntity ]
      [ sh:node microsoftads:CampaignManagementSharedListShape ; sh:class microsoftads:CampaignManagementSharedList ]
      [ sh:node microsoftads:CampaignManagementSharedListBaseShape ; sh:class microsoftads:CampaignManagementSharedListBase ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteSharedEntitiesRequest/sharedEntityScope> ;
    sh:name "shared entity scope" ;
    sh:description "Indicates whether the shared entity is available at the ad account (Account) or manager account (Customer) level. This element is optional and defaults to Account scope. The ad account scope is only applicable for negative keyword lists. Set this element to Customer to delete website exclusion lists in your manager account (customer) shared library." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Account" "Customer" ) ;
  ] .

# Shape for Campaign Management Delete Shared Entities Response
microsoftads:CampaignManagementDeleteSharedEntitiesResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteSharedEntitiesResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteSharedEntitiesResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Delete Shared Entity Associations Request
microsoftads:CampaignManagementDeleteSharedEntityAssociationsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteSharedEntityAssociationsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteSharedEntityAssociationsRequest/associations> ;
    sh:name "associations" ;
    sh:description "The list of negative keyword list to campaign associations, or website exclusion list to ad account associations. This array can contain a maximum of 10,000 elements." ;
    sh:node microsoftads:CampaignManagementSharedEntityAssociationShape ;
    sh:class microsoftads:CampaignManagementSharedEntityAssociation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteSharedEntityAssociationsRequest/sharedEntityScope> ;
    sh:name "shared entity scope" ;
    sh:description "Indicates whether the shared entity is available at the ad account (Account) or manager account (Customer) level. This element is optional and defaults to Account scope. The ad account scope is only applicable for negative keyword list to campaign associations. Set this element to Customer to delete website exclusion list to ad account associations in your manager account (customer) shared library." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Account" "Customer" ) ;
  ] .

# Shape for Campaign Management Shared Entity Association
microsoftads:CampaignManagementSharedEntityAssociationShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementSharedEntityAssociation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSharedEntityAssociation/sharedEntityId> ;
    sh:name "shared entity id" ;
    sh:description "The identifier of the shared entity." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSharedEntityAssociation/sharedEntityType> ;
    sh:name "shared entity type" ;
    sh:description "The type of shared entity. This element must be set to \"NegativeKeywordList\" for negative keyword list to campaign associations in your ad account shared library. This element must be set to \"PlacementExclusionList\" for website exclusion list to ad account associations in your manager account (customer) shared library. This element must be set to \"BrandList\" for brand list-to-campaign associations." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSharedEntityAssociation/entityId> ;
    sh:name "entity id" ;
    sh:description "The identifier of the campaign or ad account (according to EntityType) that is associated with the shared entity." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSharedEntityAssociation/entityType> ;
    sh:name "entity type" ;
    sh:description "The type of entity. This element must be set to \"Campaign\" for negative keyword list to campaign associations in your ad account shared library. This element must be set to \"Account\" for website exclusion list to ad account associations in your manager account (customer) shared library. This element must be set to \"Campaign\" for brand list-to-campaign associations." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSharedEntityAssociation/sharedEntityCustomerId> ;
    sh:name "shared entity customer id" ;
    sh:description "Determines the owner of a website exclusion list. This read-only element is only available for PlacementExclusionList associations. Only the users of the manager account (customer) that owns a website exclusion list can update or delete the list, add or delete list items, and associate the list with ad accounts. If your ad account is associated with a website exclusion list that you do not own, you can disassociate the list from your account, but the list and list items are read-only." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSharedEntityAssociation/isExclusion> ;
    sh:name "is exclusion" ;
    sh:description "For brand list-to-campaign associations, indicates whether the associated brand list is applied as an exclusion list (true) or an inclusion list (false). This field is reserved for all other association types." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSharedEntityAssociation/status> ;
    sh:name "status" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Delete Shared Entity Associations Response
microsoftads:CampaignManagementDeleteSharedEntityAssociationsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteSharedEntityAssociationsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteSharedEntityAssociationsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any associations that were not successfully deleted. The list of errors corresponds directly to the list of associations in the request. Items of the list may be returned as null. For each list index where an association was successfully deleted, the corresponding error element will be null. Ideally all associations are deleted successfully and all elements in this list are null." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Delete Videos Request
microsoftads:CampaignManagementDeleteVideosRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteVideosRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteVideosRequest/videoIds> ;
    sh:name "video ids" ;
    sh:description "The identifiers of videos to delete. The maximum size of the list is 100 items per service request." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Campaign Management Delete Videos Response
microsoftads:CampaignManagementDeleteVideosResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeleteVideosResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeleteVideosResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Device Criterion
microsoftads:CampaignManagementDeviceCriterionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDeviceCriterion ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeviceCriterion/type> ;
    sh:name "type" ;
    sh:description "The type of the criterion. This value is Device when you retrieve a device criterion. For more information about criterion types, see the Criterion Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeviceCriterion/deviceName> ;
    sh:name "device name" ;
    sh:description "The name of the device to target. The following are the possible device names that you can specify. - Computers - Smartphones - Tablets Three separate bids for Computers, Tablets, and Smartphones should always be specified together. If you do not add individual device criterions representing each of the three device types, the missing device criterions will be added with the default bid adjustment of zero. Add: Required. Three separate criterions for Computers, Smartphones, and Tablets should be specified together in the same add criterions request. If you do not add individual device criterions representing each of the three device types, no device criterions will be added to the campaign or ad group. Update: Not allowed. If you specify this element it must match the existing setting." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDeviceCriterion/oSName> ;
    sh:name "o sname" ;
    sh:description "Reserved for internal use. If you specify this element the add and update operations will not fail, but the OS names will not be set. When you retrieve this object, the OSName element will be nil. Add: Not allowed. Update: Not allowed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Diagnostic Card Data
microsoftads:CampaignManagementDiagnosticCardDataShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDiagnosticCardData ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDiagnosticCardData/metadata> ;
    sh:name "metadata" ;
    sh:description "Reserved." ;
    sh:node microsoftads:CampaignManagementHealthCheckMetadataShape ;
    sh:class microsoftads:CampaignManagementHealthCheckMetadata ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDiagnosticCardData/checkpointsData> ;
    sh:name "checkpoints data" ;
    sh:description "Reserved." ;
    sh:node microsoftads:CampaignManagementHealthCheckDataShape ;
    sh:class microsoftads:CampaignManagementHealthCheckData ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Health Check Metadata
microsoftads:CampaignManagementHealthCheckMetadataShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementHealthCheckMetadata ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHealthCheckMetadata/healthCheckName> ;
    sh:name "health check name" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHealthCheckMetadata/healthCheckDisplayName> ;
    sh:name "health check display name" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHealthCheckMetadata/healthCheckDescription> ;
    sh:name "health check description" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHealthCheckMetadata/healthCheckSubType> ;
    sh:name "health check sub type" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHealthCheckMetadata/healthCheckCategory> ;
    sh:name "health check category" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHealthCheckMetadata/healthCheckSeverity> ;
    sh:name "health check severity" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHealthCheckMetadata/healthCheckCategoryDisplayName> ;
    sh:name "health check category display name" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHealthCheckMetadata/healthCheckColumnsMetadata> ;
    sh:name "health check columns metadata" ;
    sh:description "Reserved." ;
    sh:node microsoftads:CampaignManagementHealthCheckColumnMetadataShape ;
    sh:class microsoftads:CampaignManagementHealthCheckColumnMetadata ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Health Check Column Metadata
microsoftads:CampaignManagementHealthCheckColumnMetadataShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementHealthCheckColumnMetadata ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHealthCheckColumnMetadata/key> ;
    sh:name "key" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHealthCheckColumnMetadata/title> ;
    sh:name "title" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHealthCheckColumnMetadata/type> ;
    sh:name "type" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHealthCheckColumnMetadata/healthCheckActionLinksMetadata> ;
    sh:name "health check action links metadata" ;
    sh:description "Reserved." ;
    sh:node microsoftads:CampaignManagementHealthCheckActionLinkMetadataShape ;
    sh:class microsoftads:CampaignManagementHealthCheckActionLinkMetadata ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Health Check Action Link Metadata
microsoftads:CampaignManagementHealthCheckActionLinkMetadataShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementHealthCheckActionLinkMetadata ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHealthCheckActionLinkMetadata/linkName> ;
    sh:name "link name" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHealthCheckActionLinkMetadata/linkTemplate> ;
    sh:name "link template" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHealthCheckActionLinkMetadata/linkType> ;
    sh:name "link type" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Health Check Data
microsoftads:CampaignManagementHealthCheckDataShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementHealthCheckData ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHealthCheckData/healthCheckEntity> ;
    sh:name "health check entity" ;
    sh:description "Reserved." ;
    sh:node microsoftads:CampaignManagementHealthCheckEntityShape ;
    sh:class microsoftads:CampaignManagementHealthCheckEntity ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHealthCheckData/healthCheckName> ;
    sh:name "health check name" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHealthCheckData/healthCheckDataVersion> ;
    sh:name "health check data version" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHealthCheckData/healthCheckJsonData> ;
    sh:name "health check json data" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHealthCheckData/healthCheckSubEntityResults> ;
    sh:name "health check sub entity results" ;
    sh:description "Reserved." ;
    sh:node microsoftads:CampaignManagementHealthCheckSubEntityDataShape ;
    sh:class microsoftads:CampaignManagementHealthCheckSubEntityData ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Health Check Entity
microsoftads:CampaignManagementHealthCheckEntityShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementHealthCheckEntity ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHealthCheckEntity/healthCheckEntityId> ;
    sh:name "health check entity id" ;
    sh:description "Reserved." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHealthCheckEntity/healthCheckEntityLevel> ;
    sh:name "health check entity level" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Health Check Sub Entity Data
microsoftads:CampaignManagementHealthCheckSubEntityDataShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementHealthCheckSubEntityData ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHealthCheckSubEntityData/subEntityHealthIssueCount> ;
    sh:name "sub entity health issue count" ;
    sh:description "Reserved." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHealthCheckSubEntityData/subEntityLevel> ;
    sh:name "sub entity level" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHealthCheckSubEntityData/subEntityIds> ;
    sh:name "sub entity ids" ;
    sh:description "Reserved." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Campaign Management Diagnostic Category Data
microsoftads:CampaignManagementDiagnosticCategoryDataShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDiagnosticCategoryData ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDiagnosticCategoryData/categoryKey> ;
    sh:name "category key" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDiagnosticCategoryData/categoryDisplayName> ;
    sh:name "category display name" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDiagnosticCategoryData/categorySeverity> ;
    sh:name "category severity" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDiagnosticCategoryData/categoryStatus> ;
    sh:name "category status" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDiagnosticCategoryData/description> ;
    sh:name "description" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDiagnosticCategoryData/actionLinks> ;
    sh:name "action links" ;
    sh:description "Reserved." ;
    sh:node microsoftads:CampaignManagementHealthCheckActionLinkMetadataShape ;
    sh:class microsoftads:CampaignManagementHealthCheckActionLinkMetadata ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Diagnostics Entity
microsoftads:CampaignManagementDiagnosticsEntityShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDiagnosticsEntity ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDiagnosticsEntity/id> ;
    sh:name "id" ;
    sh:description "The diagnostic entity ID." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDiagnosticsEntity/type> ;
    sh:name "type" ;
    sh:description "The diagnostic entity type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDiagnosticsEntity/subType> ;
    sh:name "sub type" ;
    sh:description "The diagnostic entity sub type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Diagnostics Filter
microsoftads:CampaignManagementDiagnosticsFilterShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDiagnosticsFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDiagnosticsFilter/key> ;
    sh:name "key" ;
    sh:description "The name of the filter." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDiagnosticsFilter/values> ;
    sh:name "values" ;
    sh:description "The values of the filter." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Campaign Management Diagnostics Request Status
microsoftads:CampaignManagementDiagnosticsRequestStatusShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDiagnosticsRequestStatus ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDiagnosticsRequestStatus/status> ;
    sh:name "status" ;
    sh:description "The diagnostic request status." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDiagnosticsRequestStatus/errors> ;
    sh:name "errors" ;
    sh:description "An array of OperationError objects corresponding to errors encountered during the system processing of the bulk file after your download request was submitted." ;
    sh:node microsoftads:CampaignManagementOperationErrorShape ;
    sh:class microsoftads:CampaignManagementOperationError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Diagnostics Settings
microsoftads:CampaignManagementDiagnosticsSettingsShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDiagnosticsSettings ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDiagnosticsSettings/enableCache> ;
    sh:name "enable cache" ;
    sh:description "The cache is enabled if True." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDiagnosticsSettings/lastCheckTimeUTC> ;
    sh:name "last check time utc" ;
    sh:description "The last-checked time in UTC." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDiagnosticsSettings/enablePilot> ;
    sh:name "enable pilot" ;
    sh:description "The pilot is enabled if True." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Diagnostic Tile Data
microsoftads:CampaignManagementDiagnosticTileDataShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDiagnosticTileData ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDiagnosticTileData/title> ;
    sh:name "title" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDiagnosticTileData/headline> ;
    sh:name "headline" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDiagnosticTileData/description> ;
    sh:name "description" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDiagnosticTileData/progressPercent> ;
    sh:name "progress percent" ;
    sh:description "Reserved." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Disclaimer Ad Extension
microsoftads:CampaignManagementDisclaimerAdExtensionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDisclaimerAdExtension ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDisclaimerAdExtension/status> ;
    sh:name "status" ;
    sh:description "The status of the ad extension. The value will always be Active because the Campaign Management service does not return deleted ad extensions." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Deleted" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDisclaimerAdExtension/scheduling> ;
    sh:name "scheduling" ;
    sh:description "Determines the calendar day and time ranges when the ad extension is eligible to be shown in ads." ;
    sh:node microsoftads:CampaignManagementScheduleShape ;
    sh:class microsoftads:CampaignManagementSchedule ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDisclaimerAdExtension/devicePreference> ;
    sh:name "device preference" ;
    sh:description "This element determines whether the preference is for the ad extension to be displayed on mobile devices or all devices. To specify a preference for mobile devices, set this element to 30001. To specify all devices, set this element to 0 (zero) or leave the element nil. By default, this element will be nil. This element is only applicable for the AppAdExtension and SitelinkAdExtension types." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDisclaimerAdExtension/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier of the ad extension." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDisclaimerAdExtension/type> ;
    sh:name "type" ;
    sh:description "The type of the ad extension. This value is DisclaimerAdExtension when you retrieve a location ad extension. Add: Read-only Update: Read-only For more information about ad extension types, see the Ad Extension Data Object Remarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDisclaimerAdExtension/version> ;
    sh:name "version" ;
    sh:description "Tracks the number of times the ad extension has been updated. The version is set to 1 when the ad extension is created, and increments by one after each update." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDisclaimerAdExtension/name> ;
    sh:name "name" ;
    sh:description "The name of the disclaimer. This is only used for reporting to help identify the extension. Max. length: 35 characters." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDisclaimerAdExtension/title> ;
    sh:name "title" ;
    sh:description "The title of the popup in popup layout. Max. length: 75 characters" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDisclaimerAdExtension/popupText> ;
    sh:name "popup text" ;
    sh:description "Required text if the disclaimer is in popup layout. Max. length: 500 characters." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDisclaimerAdExtension/lineText> ;
    sh:name "line text" ;
    sh:description "Required text if the disclaimer is in additionalLine layout. Max. length: 80 characters." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDisclaimerAdExtension/disclaimerLayout> ;
    sh:name "disclaimer layout" ;
    sh:description "The layout of the disclaimer. Can either be additionalLine or popup." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDisclaimerAdExtension/finalUrlSuffix> ;
    sh:name "final url suffix" ;
    sh:description "The final URL suffix can include tracking parameters that will be appended to the end of your landing page URL. We recommend placing tracking parameters that your landing page requires in a final URL suffix so that your customers are always sent to your landing page. For more details and validation rules see Final URL Suffix in the technical guides. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDisclaimerAdExtension/finalUrls> ;
    sh:name "final urls" ;
    sh:description "The landing page URL. The following validation rules apply to Final URLs and Final Mobile URLs. - The length of the URL is limited to 2,048 characters. The HTTP or HTTPS protocol string does count towards the 2,048 character limit. - You may specify up to 10 list items for both FinalUrls and FinalMobileUrls; however, only the first item in each list is used for delivery. The service allows up to 10 list items for potential forward compatibility. - Usage of '{' and '}' is only allowed to delineate tags, for example {lpurl}. - Final URLs must each be a well-formed URL starting with either http:// or https://. - If you specify FinalMobileUrls, you must also specify FinalUrls. Add: Required Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDisclaimerAdExtension/finalMobileUrls> ;
    sh:name "final mobile urls" ;
    sh:description "The landing page URL for mobile devices. The following validation rules apply to Final URLs and Final Mobile URLs. - The length of the URL is limited to 2,048 characters. The HTTP or HTTPS protocol string does count towards the 2,048 character limit. - You may specify up to 10 list items for both FinalUrls and FinalMobileUrls; however, only the first item in each list is used for delivery. The service allows up to 10 list items for potential forward compatibility. - Usage of '{' and '}' is only allowed to delineate tags, for example {lpurl}. - Final URLs must each be a well-formed URL starting with either http:// or https://. - If you specify FinalMobileUrls, you must also specify FinalUrls. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. If you set this element to an empty list, the previous setting will be deleted." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDisclaimerAdExtension/finalAppUrls> ;
    sh:name "final app urls" ;
    sh:description "For future use." ;
    sh:node microsoftads:CampaignManagementAppUrlShape ;
    sh:class microsoftads:CampaignManagementAppUrl ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDisclaimerAdExtension/urlCustomParameters> ;
    sh:name "url custom parameters" ;
    sh:description "Your custom collection of key and value parameters for URL tracking. Microsoft Advertising will accept the first 3 CustomParameter objects that you include within the CustomParameters object, and any additional custom parameters will be ignored. Each CustomParameter includes Key and Value elements. For customers in the Custom Parameters Limit Increase Phase 3 pilot (GetCustomerPilotFeatures returns 635), Microsoft Advertising will accept the first 8 custom parameter key and value pairs that you include, and if you include more than 8 custom parameters an error will be returned. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. Set the UrlCustomParameters element to null or empty to retain any existing custom parameters. To remove all custom parameters, set the Parameters element of the CustomParameters object to null or empty. To remove a subset of custom parameters, specify the custom parameters that you want to keep in the Parameters element of the CustomParameters object." ;
    sh:node microsoftads:CampaignManagementCustomParametersShape ;
    sh:class microsoftads:CampaignManagementCustomParameters ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDisclaimerAdExtension/trackingUrlTemplate> ;
    sh:name "tracking url template" ;
    sh:description "The tracking template to use as a default for all FinalUrls and FinalMobileUrls. The following validation rules apply to tracking templates. For more details about supported templates and parameters, see the Microsoft Advertising help article What tracking or URL parameters can I use? - Tracking templates defined for lower level entities e.g. ads override those set for higher level entities e.g. campaign. For more information, see Entity Limits. - The length of the tracking template is limited to 2,048 characters. The HTTP or HTTPS protocol string does count towards the 2,048 character limit. - The tracking template must be a well-formed URL beginning with one of the following: http://, https://, {lpurl}, or {unescapedlpurl}. - Microsoft Advertising does not validate whether custom parameters exist. If you use custom parameters in your tracking template and they do not exist, then the landing page URL will include the key and value placeholders of your custom parameters without substitution. For example, if your tracking template is https://tracker.example.com/?season={_season}&promocode={_promocode}&u={lpurl} and neither {_season} or {_promocode} are defined at the campaign, ad group, criterion, keyword, or ad level, then the landing page URL will be the same. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. If you set this element to an empty string (\"\"), the previous setting will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDisclaimerAdExtension/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. Forward compatibility changes will be noted here in future releases. There are currently no forward compatibility changes for this object." ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Disclaimer Setting
microsoftads:CampaignManagementDisclaimerSettingShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDisclaimerSetting ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDisclaimerSetting/type> ;
    sh:name "type" ;
    sh:description "The type of setting. For more information, see Setting Data Object Remarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDisclaimerSetting/disclaimerAdsEnabled> ;
    sh:name "disclaimer ads enabled" ;
    sh:description "This is a disclaimer ad when set to true. Note: This will always be a disclaimer ad once this is set to true. You can only set DiscalimerAdsEnabled during ad creation." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Duration Goal
microsoftads:CampaignManagementDurationGoalShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDurationGoal ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDurationGoal/name> ;
    sh:name "name" ;
    sh:description "The conversion goal name. The maximum length of the name is 100, and the name must be unique among all conversion goals belonging to the same customer. Add: Required Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDurationGoal/status> ;
    sh:name "status" ;
    sh:description "Defines the possible user-determined status values of a conversion goal. These are the status values that a user can decide to set, for example a goal can be set to Paused if you no longer wish to track conversions for that goal. For status values that can be set by the system, for example whether or not the UET tag is verified, see the TrackingStatus element. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Paused" "Deleted" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDurationGoal/scope> ;
    sh:name "scope" ;
    sh:description "Determines if the goal applies to all accounts or only the account specified in the required CustomerAccountId header element. If you have multiple Microsoft Advertising accounts, you can track conversions across all of those accounts. If you associate a goal with one account, conversions will be tracked for that account only. Possible values are Account and Customer. If not specified, the scope will be set to Customer by default. Once you set scope, you can't change it. If you want to change the scope, you need to create a new conversion goal and pause the old one. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Account" "Customer" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDurationGoal/countType> ;
    sh:name "count type" ;
    sh:description "This determines how your conversions are recorded within your chosen conversion window. There are two choices, and if you do not set a value the default is All: - All: All conversions that happen after an ad click will be counted. This is a common choice for sales. - Unique: Only one conversion that happens after an ad click will be counted. This is a common choice for leads. For example: You track two conversions: leads and sales. You pick Unique for leads and All for sales. When one ad click turns into two leads and two sales, it's counted as three conversions: one for the unique lead, and two for all the sales. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "All" "Unique" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDurationGoal/revenue> ;
    sh:name "revenue" ;
    sh:description "Determines how much each conversion is worth to your business. When adding a conversion goal if you do not specify any revenue tracking preferences, then each ConversionGoalRevenue will be set to their respective default values. When updating a conversion goal, if the Revenue element is nil or empty then none of the nested properties will be updated. However, if this element is not nil or empty then you are effectively replacing any existing revenue properties. The VariableValue option is not available for duration conversion goals. Add: Optional Update: Optional" ;
    sh:node microsoftads:CampaignManagementConversionGoalRevenueShape ;
    sh:class microsoftads:CampaignManagementConversionGoalRevenue ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDurationGoal/conversionWindowInMinutes> ;
    sh:name "conversion window in minutes" ;
    sh:description "The conversion window is the length of time in minutes after a click that you want to track conversions. If you set this value to 43200 minutes (30 days), then conversions that happen within 30 days after a click are tracked. Past conversions aren't affected. The minimum value supported is 1 minute, although keep in mind that a shorter conversion window will reduce the number of conversions your account records. The maximum value supported is 129600 minutes (90 days). Add: Optional Update: Optional" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDurationGoal/tagId> ;
    sh:name "tag id" ;
    sh:description "The unique Microsoft Advertising identifier of the UET tag that you added to your website to allow Microsoft Advertising to collect actions people take on your website. Before you take a dependency on the tag ID, please note that the UET tag can be shared with or from another customer. Shared UET tags and audiences are only available for pilot customers. For an overview of sharing audiences and UET tags in a customer hierarchy, see the Share Audiences and UET Tags technical guide. Add: Required Update: Optional" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDurationGoal/trackingStatus> ;
    sh:name "tracking status" ;
    sh:description "Defines the possible system-determined status values of a conversion goal. These are the status values that can be set by the system, for example the system sets the status to TagUnverified if the UET tag has not yet been verified. For status values that a user can decide to set, for example setting the status to Paused if you no longer wish to track conversions for that goal, see the Status element. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "TagUnverified" "NoRecentConversions" "RecordingConversions" "TagInactive" "InactiveDueToTagUnavailable" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDurationGoal/excludeFromBidding> ;
    sh:name "exclude from bidding" ;
    sh:description "Determines whether or not to exclude data otherwise related to this conversion goal from a subset of performance report columns. This element is only available for customers who are enabled for the Include in Conversions feature (GetCustomerPilotFeatures returns 574). If this element is set to true, data otherwise related to this conversion goal will be excluded from the Conversions, ConversionRate, CostPerConversion, ReturnOnAdSpend, RevenuePerConversion, and Revenue report columns. Also, if you use an automated bidding bid strategy, setting this property true will result in the goal's conversions no longer factoring into automated bidding calculations. Setting this property \"true\" is effectively the same as unchecking \"Include in Conversions\" in the Microsoft Advertising web application. Regardless of this element value, the AllConversions, AllConversionRate, AllCostPerConversion, AllReturnOnAdSpend, AllRevenuePerConversion, and AllRevenue report columns will include data for all conversion goals. By default this element is false, and data related to this conversion goal are included in all report columns. For more information, see Report Attributes and Performance Statistics and the help article Conversion goals: \"Conversions\" versus \"All conversions\". Add: Optional Update: Optional" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDurationGoal/viewThroughConversionWindowInMinutes> ;
    sh:name "view through conversion window in minutes" ;
    sh:description "The view-through conversion window is the length of time in minutes after a click that you want to track view-through conversions. If you set this value to 43200 minutes (30 days), then view-through conversions that happen within 30 days after a click are tracked. Past conversions aren't affected. The minimum value supported is 1 minute, although keep in mind that a shorter conversion window will reduce the number of conversions your account records. The maximum value supported is 43200 minutes (30 days). The IncludeViewThroughConversions account property must also be set to true for view-through conversions to be tracked. This element is not returned by default. To get this element, include the ViewThroughConversionWindowInMinutes value in the ReturnAdditionalFields element when you call the GetConversionGoalsByIds and GetConversionGoalsByTagIds service operations. Add: Optional Update: Optional" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDurationGoal/goalCategory> ;
    sh:name "goal category" ;
    sh:description "The category used to segment the conversion goal. Categorize your conversion goals however makes sense for your business. Goal categories don't affect performance - they are here to help you segment your goals and their performance metrics. The supported category values vary by conversion goal type. Duration goals only support the Other category. Add: Optional. If you leave this element nil or empty, the default category will be set to Other. Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unknown" "None" "Purchase" "AddToCart" "BeginCheckout" "Subscribe" "SubmitLeadForm" "BookAppointment" "Signup" "RequestQuote" "GetDirections" "OutboundClick" "Contact" "PageView" "Download" "Other" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDurationGoal/attributionModelType> ;
    sh:name "attribution model type" ;
    sh:description "Determines which attribution model, _LastTouch_ or _LastClick_, is used with a conversion goal." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "LastClick" "LastTouch" "DataDriven" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDurationGoal/isEnhancedConversionsEnabled> ;
    sh:name "is enhanced conversions enabled" ;
    sh:description "Determines whether enhanced conversions are enabled for a conversion goal." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDurationGoal/isAutoGoal> ;
    sh:name "is auto goal" ;
    sh:description "Only available for event goal." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDurationGoal/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier for the conversion goal. Add: Read-only Update: Required and Read-Only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDurationGoal/type> ;
    sh:name "type" ;
    sh:description "The type of the conversion goal. This value is Duration when you retrieve a duration goal. For more information about conversion goal types, see the ConversionGoal Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDurationGoal/minimumDurationInSeconds> ;
    sh:name "minimum duration in seconds" ;
    sh:description "The minimum amount of time in seconds that the user must spend on your website to track as a conversion. If you don't specify a value, the default value is 0, and the possible range is 0 through 86,399 (1 second less than a full 24 hour day). Add: Optional Update: Optional" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Dynamic Feed Setting
microsoftads:CampaignManagementDynamicFeedSettingShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDynamicFeedSetting ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDynamicFeedSetting/type> ;
    sh:name "type" ;
    sh:description "The type of setting. For more information, see Remarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDynamicFeedSetting/feedId> ;
    sh:name "feed id" ;
    sh:description "The ID of the feed." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Dynamic Search Ad
microsoftads:CampaignManagementDynamicSearchAdShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDynamicSearchAd ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDynamicSearchAd/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier of the ad. Add: Read-only Update: Required and Read-Only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDynamicSearchAd/type> ;
    sh:name "type" ;
    sh:description "The type of the ad. This value is DynamicSearch when you retrieve an dynamic search ad. For more information about ad types, see the Ad Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Text" "Image" "Product" "AppInstall" "ExpandedText" "DynamicSearch" "ResponsiveAd" "ResponsiveSearch" "Hotel" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDynamicSearchAd/status> ;
    sh:name "status" ;
    sh:description "The status of the ad. You can set the ad status to Active or Paused. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Inactive" "Active" "Paused" "Deleted" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDynamicSearchAd/editorialStatus> ;
    sh:name "editorial status" ;
    sh:description "The editorial review status of the ad, which indicates whether the ad is pending review, has been approved, or has been disapproved. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Disapproved" "Inactive" "ActiveLimited" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDynamicSearchAd/devicePreference> ;
    sh:name "device preference" ;
    sh:description "Not supported for this ad type." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDynamicSearchAd/adFormatPreference> ;
    sh:name "ad format preference" ;
    sh:description "Not supported for this ad type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDynamicSearchAd/trackingUrlTemplate> ;
    sh:name "tracking url template" ;
    sh:description "The tracking template to use as a default for all landing page URLs. The following validation rules apply to tracking templates. For more details about supported templates and parameters, see the Microsoft Advertising help article What tracking or URL parameters can I use? - Tracking templates defined for lower level entities e.g. ads override those set for higher level entities e.g. campaign. For more information, see Entity Limits. - The length of the tracking template is limited to 2,048 characters. The HTTP or HTTPS protocol string does count towards the 2,048 character limit. - The tracking template must be a well-formed URL beginning with one of the following: http://, https://, {lpurl}, or {unescapedlpurl}. - Microsoft Advertising does not validate whether custom parameters exist. If you use custom parameters in your tracking template and they do not exist, then the landing page URL will include the key and value placeholders of your custom parameters without substitution. For example, if your tracking template is https://tracker.example.com/?season={_season}&promocode={_promocode}&u={lpurl} and neither {_season} or {_promocode} are defined at the campaign, ad group, criterion, keyword, or ad level, then the landing page URL will be the same. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. If you set this element to an empty string (\"\"), the previous setting will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDynamicSearchAd/finalUrlSuffix> ;
    sh:name "final url suffix" ;
    sh:description "The final URL suffix can include tracking parameters that will be appended to the end of your landing page URL. We recommend placing tracking parameters that your landing page requires in a final URL suffix so that your customers are always sent to your landing page. For more details and validation rules see Final URL Suffix in the technical guides. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. If you set this element to an empty string (\"\"), the previous setting will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDynamicSearchAd/urlCustomParameters> ;
    sh:name "url custom parameters" ;
    sh:description "Your custom collection of key and value parameters for URL tracking. Microsoft Advertising will accept the first 8 CustomParameter objects that you include within the CustomParameters object, and if you include more than 8 custom parameters an error will be returned. Each CustomParameter includes Key and Value elements. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. Set the UrlCustomParameters element to null or empty to retain any existing custom parameters. To remove all custom parameters, set the Parameters element of the CustomParameters object to null or empty. To remove a subset of custom parameters, specify the custom parameters that you want to keep in the Parameters element of the CustomParameters object." ;
    sh:node microsoftads:CampaignManagementCustomParametersShape ;
    sh:class microsoftads:CampaignManagementCustomParameters ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDynamicSearchAd/finalUrls> ;
    sh:name "final urls" ;
    sh:description "Not supported for this ad type." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDynamicSearchAd/finalMobileUrls> ;
    sh:name "final mobile urls" ;
    sh:description "Not supported for this ad type." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDynamicSearchAd/finalAppUrls> ;
    sh:name "final app urls" ;
    sh:description "Not supported for this ad type." ;
    sh:node microsoftads:CampaignManagementAppUrlShape ;
    sh:class microsoftads:CampaignManagementAppUrl ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDynamicSearchAd/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. Currently there are no supported forward compatibility map key and value pairs for dynamic search ads." ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDynamicSearchAd/text> ;
    sh:name "text" ;
    sh:description "The first part of the ad description. The text must contain at least one word. The maximum input length of the copy is 90 characters. Note that for ad groups that use Traditional Chinese the maximum input length of the copy is 45 characters. The text can contain IF and countdown functions. Regardless of the total length of all unsubstituted countdown parameters, the final displayed countdown will always use 8 characters out of the total characters available. For more details see Countdown Customizers. The text cannot contain the newline (\\n) character. Add: Required Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDynamicSearchAd/textPart2> ;
    sh:name "text part2" ;
    sh:description "The second part of the ad description. The text must contain at least one word. The maximum input length of the copy is 90 characters. Note that for ad groups that use Traditional Chinese the maximum input length of the copy is 45 characters. The text can contain IF and countdown functions. Regardless of the total length of all unsubstituted countdown parameters, the final displayed countdown will always use 8 characters out of the total characters available. For more details see Countdown Customizers. The text cannot contain the newline (\\n) character. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDynamicSearchAd/path1> ;
    sh:name "path1" ;
    sh:description "The first part of the optional path that will be appended to the domain portion of your display URL. The display URL e.g. www.contoso.com will be generated from the domain of your display URL. Then if you have specified a value for Path 1 it will be appended to the display URL. If you have also specified a value for Path 2, then it will also be appended to the display URL after Path 1. For example if your domain is contoso.com, Path 1 is set to subdirectory1, and Path 2 is set to subdirectory2, then the URL displayed will be www.contoso.com/subdirectory1/subdirectory2. The maximum input length of the path is 15 characters. Note that for languages with double-width characters e.g. Traditional Chinese the maximum input length of the path is 7 characters. The path can contain IF and countdown functions. Regardless of the total length of all unsubstituted countdown parameters, the final displayed countdown will always use 8 characters out of the total characters available. For more details see Countdown Customizers. The path cannot contain the forward slash (/) or newline (\\n) characters. If the path includes a space, it will be replaced with an underscore (_) when the ad is shown. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDynamicSearchAd/path2> ;
    sh:name "path2" ;
    sh:description "The second part of the optional path that will be appended to the domain portion of your display URL. The display URL e.g. www.contoso.com will be generated from the domain of your dynamic search ads campaign level settings. Then if you have specified a value for Path 1 it will be appended to the display URL. If you have also specified a value for Path 2, then it will also be appended to the display URL after Path 1. For example if your domain is contoso.com, Path 1 is set to subdirectory1, and Path 2 is set to subdirectory2, then the URL displayed will be www.contoso.com/subdirectory1/subdirectory2. You can only specify Path2 if Path1 is also set. The maximum input length of the path is 15 characters. Note that for languages with double-width characters e.g. Traditional Chinese the maximum input length of the path is 7 characters. The path can contain IF and countdown functions. Regardless of the total length of all unsubstituted countdown parameters, the final displayed countdown will always use 8 characters out of the total characters available. For more details see Countdown Customizers. The path cannot contain the forward slash (/) or newline (\\n) characters. If the path includes a space, it will be replaced with an underscore (_) when the ad is shown. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Dynamic Search Ads Setting
microsoftads:CampaignManagementDynamicSearchAdsSettingShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementDynamicSearchAdsSetting ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDynamicSearchAdsSetting/type> ;
    sh:name "type" ;
    sh:description "The type of the setting. This value is DynamicSearchAds when you retrieve a dynamic search ads setting. For more information about setting types, see the Setting Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDynamicSearchAdsSetting/domainName> ;
    sh:name "domain name" ;
    sh:description "The website name corresponding to the pages you want your ads to target. The maximum length of the domain is 2,048 characters. You do not need to include the http, https, or www prefix." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDynamicSearchAdsSetting/language> ;
    sh:name "language" ;
    sh:description "The language of the website pages that you want to target for dynamic search ads. Your website language determines where your ads are eligible to appear. For example, a German-language ad can appear in Germany, Austria, and Switzerland, but not in Spain. If your website contains pages in multiple languages and you want to advertise all of these pages, you should create a separate campaign for each language. The supported domain languages are Dutch, English, French, German, Italian, Spanish, and Swedish. Note, if you set the campaign Languages or ad group Language, they will be ignored. Add: Required Update: Read-only and required. You cannot update the domain or language, but you must include the current domain and language when updating other properties such as Source." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDynamicSearchAdsSetting/source> ;
    sh:name "source" ;
    sh:description "Determines whether to use Bing's index, advertiser supplied URLs, or both. By default only Bing's index is used. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "All" "SystemIndex" "AdvertiserSuppliedUrls" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDynamicSearchAdsSetting/pageFeedIds> ;
    sh:name "page feed ids" ;
    sh:description "The page feed identifiers for dynamic search ads. The Source determines whether or not Microsoft Advertising will use the associated page feeds. See the Page Feeds technical guide for an implementation overview. Add: Optional Update: Optional. You cannot delete page feed IDs, but you can replace the previous set with a new set." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementDynamicSearchAdsSetting/dynamicDescriptionEnabled> ;
    sh:name "dynamic description enabled" ;
    sh:description "Determines whether to automatically generate dynamic search ad text in addition to the ad text you provide. During ad delivery, we will use artificial intelligence to choose the best ad text available from these options. Add: Optional. The default value of false will be set if not otherwise specified. Update: Optional. If no value is set for the update, this setting is not changed. Note: Not everyone has this feature yet. If you don't, don't worry - it's coming soon!" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Editorial Api Fault Detail
microsoftads:CampaignManagementEditorialApiFaultDetailShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementEditorialApiFaultDetail ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEditorialApiFaultDetail/trackingId> ;
    sh:name "tracking id" ;
    sh:description "The identifier of the log entry that contains the details of the API call." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEditorialApiFaultDetail/editorialErrors> ;
    sh:name "editorial errors" ;
    sh:description "An array of editorial errors that contains the details that explain why the criterion or ad extension was disapproved." ;
    sh:node microsoftads:CampaignManagementEditorialErrorShape ;
    sh:class microsoftads:CampaignManagementEditorialError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEditorialApiFaultDetail/batchErrors> ;
    sh:name "batch errors" ;
    sh:description "An array of batch errors that identifies the items in the batch of items in the request message that caused the operation to fail. Each object contains the details that explain why the item caused the failure." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEditorialApiFaultDetail/operationErrors> ;
    sh:name "operation errors" ;
    sh:description "An array of operation errors that contains the details that explain why the service operation failed when the error is not related to a specific item in the batch of items." ;
    sh:node microsoftads:CampaignManagementOperationErrorShape ;
    sh:class microsoftads:CampaignManagementOperationError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEditorialApiFaultDetail/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Editorial Error Collection
microsoftads:CampaignManagementEditorialErrorCollectionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementEditorialErrorCollection ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEditorialErrorCollection/index> ;
    sh:name "index" ;
    sh:description "The zero-based top level list index in the request message that failed." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEditorialErrorCollection/disapprovedText> ;
    sh:name "disapproved text" ;
    sh:description "The text that caused the entity to be disapproved. For text length violations, this element specifies the number of characters by which the specified text exceeds the maximum." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEditorialErrorCollection/reasonCode> ;
    sh:name "reason code" ;
    sh:description "A numeric code that identifies the error. For more information, see Editorial Reason Codes." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEditorialErrorCollection/location> ;
    sh:name "location" ;
    sh:description "The element or property of the entity that caused the entity to be disapproved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEditorialErrorCollection/publisherCountry> ;
    sh:name "publisher country" ;
    sh:description "The corresponding country or region for the flagged editorial issue." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEditorialErrorCollection/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. Forward compatibility changes will be noted here in future releases. There are currently no forward compatibility changes for this data object." ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEditorialErrorCollection/fieldPath> ;
    sh:name "field path" ;
    sh:description "The name of the data object's element where the error occurred. This value is subject to change, so you should not take a dependency on the current string format. This element is not supported for all errors." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEditorialErrorCollection/batchErrors> ;
    sh:name "batch errors" ;
    sh:description "A list of batch errors corresponding to the nested list index." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEditorialErrorCollection/message> ;
    sh:name "message" ;
    sh:description "A message that describes the error for the top level list index." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEditorialErrorCollection/errorCode> ;
    sh:name "error code" ;
    sh:description "A symbolic string constant that identifies the error for the top level list index." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEditorialErrorCollection/code> ;
    sh:name "code" ;
    sh:description "A numeric error code that identifies the error for the top level list index." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEditorialErrorCollection/details> ;
    sh:name "details" ;
    sh:description "A message that provides additional details about the batch error for the top level list index. This string can be empty." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEditorialErrorCollection/type> ;
    sh:name "type" ;
    sh:description "Reserved for internal use." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEditorialErrorCollection/appealable> ;
    sh:name "appealable" ;
    sh:description "Reserved for future use." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Editorial Reason
microsoftads:CampaignManagementEditorialReasonShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementEditorialReason ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEditorialReason/reasonCode> ;
    sh:name "reason code" ;
    sh:description "A code that identifies the reason for the failure. For a list of possible reason codes, see Editorial Reason Codes." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEditorialReason/location> ;
    sh:name "location" ;
    sh:description "The component of the ad or keyword that failed editorial review." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEditorialReason/term> ;
    sh:name "term" ;
    sh:description "The term that failed editorial review. This element cannot be set if a combination of terms caused the failure or if the failure was based on a policy violation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEditorialReason/publisherCountries> ;
    sh:name "publisher countries" ;
    sh:description "A list of countries or regions where the ad or keyword failed editorial review. Each string in the list contains a two character country or region code." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Campaign Management Editorial Reason Collection
microsoftads:CampaignManagementEditorialReasonCollectionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementEditorialReasonCollection ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEditorialReasonCollection/adOrKeywordId> ;
    sh:name "ad or keyword id" ;
    sh:description "Identifies the ad or keyword that failed editorial review. Note: AdOrKeywordId is the ID of the asset." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEditorialReasonCollection/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "Identifies the ad group which is the parent of the ad or keyword that failed editorial review. Note: AdGroupId is always 0 for an asset since it doesn't belong to an ad group." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEditorialReasonCollection/reasons> ;
    sh:name "reasons" ;
    sh:description "An array of editorial reasons that you can use to determine the component of an ad or keyword that failed editorial review, and the reason for the failure." ;
    sh:node microsoftads:CampaignManagementEditorialReasonShape ;
    sh:class microsoftads:CampaignManagementEditorialReason ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEditorialReasonCollection/appealStatus> ;
    sh:name "appeal status" ;
    sh:description "A value that determines whether you can appeal the issues found by the editorial review. Note: AppealStatus is based on information in the catalog.AssetEditorialStatus table. It's a combination of Appealability and IsAppealPending." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "None" "Appealable" "AppealPending" "NotAppealable" ) ;
  ] .

# Shape for Campaign Management Enhanced Cpc Bidding Scheme
microsoftads:CampaignManagementEnhancedCpcBiddingSchemeShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementEnhancedCpcBiddingScheme ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEnhancedCpcBiddingScheme/type> ;
    sh:name "type" ;
    sh:description "The type of the bidding scheme. This value is EnhancedCpcBiddingScheme when you retrieve an enhanced CPC bidding scheme. For more information about bidding scheme types, see the BiddingScheme Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Entity Result
microsoftads:CampaignManagementEntityResultShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementEntityResult ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEntityResult/id> ;
    sh:name "id" ;
    sh:description "The entity ID." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEntityResult/type> ;
    sh:name "type" ;
    sh:description "The entity type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEntityResult/subType> ;
    sh:name "sub type" ;
    sh:description "The entity sub type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEntityResult/categories> ;
    sh:name "categories" ;
    sh:description "The entity categories." ;
    sh:node microsoftads:CampaignManagementCategoryResultShape ;
    sh:class microsoftads:CampaignManagementCategoryResult ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Event Goal
microsoftads:CampaignManagementEventGoalShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementEventGoal ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEventGoal/name> ;
    sh:name "name" ;
    sh:description "The conversion goal name. The maximum length of the name is 100, and the name must be unique among all conversion goals belonging to the same customer. Add: Required Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEventGoal/status> ;
    sh:name "status" ;
    sh:description "Defines the possible user-determined status values of a conversion goal. These are the status values that a user can decide to set, for example a goal can be set to Paused if you no longer wish to track conversions for that goal. For status values that can be set by the system, for example whether or not the UET tag is verified, see the TrackingStatus element. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Paused" "Deleted" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEventGoal/scope> ;
    sh:name "scope" ;
    sh:description "Determines if the goal applies to all accounts or only the account specified in the required CustomerAccountId header element. If you have multiple Microsoft Advertising accounts, you can track conversions across all of those accounts. If you associate a goal with one account, conversions will be tracked for that account only. Possible values are Account and Customer. If not specified, the scope will be set to Customer by default. Once you set scope, you can't change it. If you want to change the scope, you need to create a new conversion goal and pause the old one. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Account" "Customer" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEventGoal/countType> ;
    sh:name "count type" ;
    sh:description "This determines how your conversions are recorded within your chosen conversion window. There are two choices, and if you do not set a value the default is All: - All: All conversions that happen after an ad click will be counted. This is a common choice for sales. - Unique: Only one conversion that happens after an ad click will be counted. This is a common choice for leads. For example: You track two conversions: leads and sales. You pick Unique for leads and All for sales. When one ad click turns into two leads and two sales, it's counted as three conversions: one for the unique lead, and two for all the sales. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "All" "Unique" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEventGoal/revenue> ;
    sh:name "revenue" ;
    sh:description "Determines how much each conversion is worth to your business. When adding a conversion goal if you do not specify any revenue tracking preferences, then each ConversionGoalRevenue will be set to their respective default values. When updating a conversion goal, if the Revenue element is nil or empty then none of the nested properties will be updated. However, if this element is not nil or empty then you are effectively replacing any existing revenue properties. Add: Optional Update: Optional" ;
    sh:node microsoftads:CampaignManagementConversionGoalRevenueShape ;
    sh:class microsoftads:CampaignManagementConversionGoalRevenue ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEventGoal/conversionWindowInMinutes> ;
    sh:name "conversion window in minutes" ;
    sh:description "The conversion window is the length of time in minutes after a click that you want to track conversions. If you set this value to 43200 minutes (30 days), then conversions that happen within 30 days after a click are tracked. Past conversions aren't affected. The minimum value supported is 1 minute, although keep in mind that a shorter conversion window will reduce the number of conversions your account records. The maximum value supported is 129600 minutes (90 days). Add: Optional Update: Optional" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEventGoal/tagId> ;
    sh:name "tag id" ;
    sh:description "The unique Microsoft Advertising identifier of the UET tag that you added to your website to allow Microsoft Advertising to collect actions people take on your website. Before you take a dependency on the tag ID, please note that the UET tag can be shared with or from another customer. Shared UET tags and audiences are only available for pilot customers. For an overview of sharing audiences and UET tags in a customer hierarchy, see the Share Audiences and UET Tags technical guide. Add: Required Update: Optional" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEventGoal/trackingStatus> ;
    sh:name "tracking status" ;
    sh:description "Defines the possible system-determined status values of a conversion goal. These are the status values that can be set by the system, for example the system sets the status to TagUnverified if the UET tag has not yet been verified. For status values that a user can decide to set, for example setting the status to Paused if you no longer wish to track conversions for that goal, see the Status element. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "TagUnverified" "NoRecentConversions" "RecordingConversions" "TagInactive" "InactiveDueToTagUnavailable" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEventGoal/excludeFromBidding> ;
    sh:name "exclude from bidding" ;
    sh:description "Determines whether or not to exclude data otherwise related to this conversion goal from a subset of performance report columns. This element is only available for customers who are enabled for the Include in Conversions feature (GetCustomerPilotFeatures returns 574). If this element is set to true, data otherwise related to this conversion goal will be excluded from the Conversions, ConversionRate, CostPerConversion, ReturnOnAdSpend, RevenuePerConversion, and Revenue report columns. Also, if you use an automated bidding bid strategy, setting this property true will result in the goal's conversions no longer factoring into automated bidding calculations. Setting this property \"true\" is effectively the same as unchecking \"Include in Conversions\" in the Microsoft Advertising web application. Regardless of this element value, the AllConversions, AllConversionRate, AllCostPerConversion, AllReturnOnAdSpend, AllRevenuePerConversion, and AllRevenue report columns will include data for all conversion goals. By default this element is false, and data related to this conversion goal are included in all report columns. For more information, see Report Attributes and Performance Statistics and the help article Conversion goals: \"Conversions\" versus \"All conversions\". Add: Optional Update: Optional" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEventGoal/viewThroughConversionWindowInMinutes> ;
    sh:name "view through conversion window in minutes" ;
    sh:description "The view-through conversion window is the length of time in minutes after a click that you want to track view-through conversions. If you set this value to 43200 minutes (30 days), then view-through conversions that happen within 30 days after a click are tracked. Past conversions aren't affected. The minimum value supported is 1 minute, although keep in mind that a shorter conversion window will reduce the number of conversions your account records. The maximum value supported is 43200 minutes (30 days). The IncludeViewThroughConversions account property must also be set to true for view-through conversions to be tracked. This element is not returned by default. To get this element, include the ViewThroughConversionWindowInMinutes value in the ReturnAdditionalFields element when you call the GetConversionGoalsByIds and GetConversionGoalsByTagIds service operations. Add: Optional Update: Optional" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEventGoal/goalCategory> ;
    sh:name "goal category" ;
    sh:description "The category used to segment the conversion goal. Categorize your conversion goals however makes sense for your business. Goal categories don't affect performance - they are here to help you segment your goals and their performance metrics. The supported category values vary by conversion goal type. Event goals support the AddToCart, BeginCheckout, BookAppointment, Contact, GetDirections, Other, OutboundClick, PageView, Purchase, RequestQuote, Signup, SubmitLeadForm, and Subscribe categories. Add: Required as of June 2021. Previously if you left this element nil or empty, the default category was set to None. Update: Optional if the conversion goal already has a category set other than None. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unknown" "None" "Purchase" "AddToCart" "BeginCheckout" "Subscribe" "SubmitLeadForm" "BookAppointment" "Signup" "RequestQuote" "GetDirections" "OutboundClick" "Contact" "PageView" "Download" "Other" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEventGoal/attributionModelType> ;
    sh:name "attribution model type" ;
    sh:description "Determines which attribution model, _LastTouch_ or _LastClick_, is used with a conversion goal." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "LastClick" "LastTouch" "DataDriven" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEventGoal/isEnhancedConversionsEnabled> ;
    sh:name "is enhanced conversions enabled" ;
    sh:description "Determines whether enhanced conversions are enabled for a conversion goal." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEventGoal/isAutoGoal> ;
    sh:name "is auto goal" ;
    sh:description "Determines whether this goal is a simplified conversion goal. For the EventGoal columns ActionExpression, ActionOperator, CategoryExpression, CategoryOperator, LabelExpression, LabelOperator, Value, and ValueOperator: Advertisers can't manually specify values.Microsoft Advertising automatically generates compatible values based on the associated conversion event." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEventGoal/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier for the conversion goal. Add: Read-only Update: Required and Read-Only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEventGoal/type> ;
    sh:name "type" ;
    sh:description "The type of the conversion goal. This value is Event when you retrieve an event goal. For more information about conversion goal types, see the ConversionGoal Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEventGoal/categoryExpression> ;
    sh:name "category expression" ;
    sh:description "The category of event you want to track. For example, 'video'. If this element is specified during an add or update operation, then the CategoryOperator element is also required. The string cannot exceed the maximum length of 100. Add: Optional if you include one or more of the other events; You must include one or more of the following event operator pairs: (ActionOperator and ActionExpression), (CategoryOperator and CategoryExpression), (LabelOperator and LabelExpression), (ValueOperator and Value). Update: Optional if you include one or more of the other events; If you do not include CategoryOperator and CategoryExpression during update, any existing CategoryOperator and CategoryExpression settings will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEventGoal/categoryOperator> ;
    sh:name "category operator" ;
    sh:description "The operator that can be applied to the value of the CategoryExpression element. Add: Optional if you include one or more of the other events; You must include one or more of the following event operator pairs: (ActionOperator and ActionExpression), (CategoryOperator and CategoryExpression), (LabelOperator and LabelExpression), (ValueOperator and Value). Update: Optional if you include one or more of the other events; If you do not include CategoryOperator and CategoryExpression during update, any existing CategoryOperator and CategoryExpression settings will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Equals" "BeginsWith" "RegularExpression" "Contains" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEventGoal/actionExpression> ;
    sh:name "action expression" ;
    sh:description "The type of user interaction you want to track. For example 'play' or 'pause'. If this element is specified during an add or update operation, then the ActionOperator element is also required. The string cannot exceed the maximum length of 100. Add: Optional if you include one or more of the other events; You must include one or more of the following event operator pairs: (ActionOperator and ActionExpression), (CategoryOperator and CategoryExpression), (LabelOperator and LabelExpression), (ValueOperator and Value). Update: Optional if you include one or more of the other events; If you do not include ActionOperator and ActionExpression during update, any existing ActionOperator and ActionExpression settings will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEventGoal/actionOperator> ;
    sh:name "action operator" ;
    sh:description "The operator that can be applied to the value of the ActionExpression element. If this element is specified during an add or update operation, then the ActionExpression element is also required. Add: Optional if you include one or more of the other events; You must include one or more of the following event operator pairs: (ActionOperator and ActionExpression), (CategoryOperator and CategoryExpression), (LabelOperator and LabelExpression), (ValueOperator and Value). Update: Optional if you include one or more of the other events; If you do not include ActionOperator and ActionExpression during update, any existing ActionOperator and ActionExpression settings will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Equals" "BeginsWith" "RegularExpression" "Contains" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEventGoal/labelExpression> ;
    sh:name "label expression" ;
    sh:description "The name of the element that caused the action. For example 'trailer' or 'behindthescenes'. If this element is specified during an add or update operation, then the LabelOperator element is also required. The string cannot exceed the maximum length of 100. Add: Optional if you include one or more of the other events; You must include one or more of the following event operator pairs: (ActionOperator and ActionExpression), (CategoryOperator and CategoryExpression), (LabelOperator and LabelExpression), (ValueOperator and Value). Update: Optional if you include one or more of the other events; If you do not include LabelOperator and LabelExpression during update, any existing LabelOperator and LabelExpression settings will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEventGoal/labelOperator> ;
    sh:name "label operator" ;
    sh:description "The operator that can be applied to the value of the LabelExpression element. Add: Optional if you include one or more of the other events; You must include one or more of the following event operator pairs: (ActionOperator and ActionExpression), (CategoryOperator and CategoryExpression), (LabelOperator and LabelExpression), (ValueOperator and Value). Update: Optional if you include one or more of the other events; If you do not include LabelOperator and LabelExpression during update, any existing LabelOperator and LabelExpression settings will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Equals" "BeginsWith" "RegularExpression" "Contains" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEventGoal/valueOperator> ;
    sh:name "value operator" ;
    sh:description "The operator that can be applied to the value of the Value element. Add: Optional if you include one or more of the other events; You must include one or more of the following event operator pairs: (ActionOperator and ActionExpression), (CategoryOperator and CategoryExpression), (LabelOperator and LabelExpression), (ValueOperator and Value). Update: Optional if you include one or more of the other events; If you do not include ValueOperator and Value during update, any existing ValueOperator and Value settings will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Equals" "LessThan" "GreaterThan" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementEventGoal/value> ;
    sh:name "value" ;
    sh:description "A numerical value associated with that event. For example the value could be the duration of time that the video played. If this element is specified during an add or update operation, then the ValueOperator element is also required. Add: Optional if you include one or more of the other events; You must include one or more of the following event operator pairs: (ActionOperator and ActionExpression), (CategoryOperator and CategoryExpression), (LabelOperator and LabelExpression), (ValueOperator and Value). Update: Optional if you include one or more of the other events; If you do not include ValueOperator and Value during update, any existing ValueOperator and Value settings will be deleted" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Expanded Text Ad
microsoftads:CampaignManagementExpandedTextAdShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementExpandedTextAd ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementExpandedTextAd/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier of the ad. Add: Read-only Update: Required and Read-Only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementExpandedTextAd/type> ;
    sh:name "type" ;
    sh:description "The type of the ad. This value is ExpandedText when you retrieve an expanded text ad. For more information about ad types, see the Ad Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Text" "Image" "Product" "AppInstall" "ExpandedText" "DynamicSearch" "ResponsiveAd" "ResponsiveSearch" "Hotel" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementExpandedTextAd/status> ;
    sh:name "status" ;
    sh:description "The status of the ad. You can set the ad status to Active or Paused. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Inactive" "Active" "Paused" "Deleted" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementExpandedTextAd/editorialStatus> ;
    sh:name "editorial status" ;
    sh:description "The editorial review status of the ad, which indicates whether the ad is pending review, has been approved, or has been disapproved. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Disapproved" "Inactive" "ActiveLimited" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementExpandedTextAd/devicePreference> ;
    sh:name "device preference" ;
    sh:description "Not supported for this ad type." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementExpandedTextAd/adFormatPreference> ;
    sh:name "ad format preference" ;
    sh:description "The Ad Format Preference is used to indicate whether or not you prefer the ad copy to be shown to users as a search or audience ad. Search ads tend to be written as a call to action, whereas audience ads should be written in more of an informational style. While you have the option to use expanded text ads as audience ads, designating an ad as Audience ads preferred format allows you to optimize its messaging for native delivery. IMPORTANT: You must define at least one expanded text ad per ad group that does not prefer audience ads, otherwise the ad copy of all expanded text ads will be eligible for both search and audience ads. Possible values are AudienceAd and All. If set to All, the ad will be eligible for both search and audience ad formats. If set to AudienceAd, the ad will only be eligible for the audience ad format. Add: Optional. If you do not set this element, by default the ad format preference will be set to All. Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementExpandedTextAd/trackingUrlTemplate> ;
    sh:name "tracking url template" ;
    sh:description "The tracking template to use as a default for all landing page URLs. The following validation rules apply to tracking templates. For more details about supported templates and parameters, see the Microsoft Advertising help article What tracking or URL parameters can I use? - Tracking templates defined for lower level entities e.g. ads override those set for higher level entities e.g. campaign. For more information, see Entity Limits. - The length of the tracking template is limited to 2,048 characters. The HTTP or HTTPS protocol string does count towards the 2,048 character limit. - The tracking template must be a well-formed URL beginning with one of the following: http://, https://, {lpurl}, or {unescapedlpurl}. - Microsoft Advertising does not validate whether custom parameters exist. If you use custom parameters in your tracking template and they do not exist, then the landing page URL will include the key and value placeholders of your custom parameters without substitution. For example, if your tracking template is https://tracker.example.com/?season={_season}&promocode={_promocode}&u={lpurl} and neither {_season} or {_promocode} are defined at the campaign, ad group, criterion, keyword, or ad level, then the landing page URL will be the same. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. If you set this element to an empty string (\"\"), the previous setting will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementExpandedTextAd/finalUrlSuffix> ;
    sh:name "final url suffix" ;
    sh:description "The final URL suffix can include tracking parameters that will be appended to the end of your landing page URL. We recommend placing tracking parameters that your landing page requires in a final URL suffix so that your customers are always sent to your landing page. For more details and validation rules see Final URL Suffix in the technical guides. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. If you set this element to an empty string (\"\"), the previous setting will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementExpandedTextAd/urlCustomParameters> ;
    sh:name "url custom parameters" ;
    sh:description "Your custom collection of key and value parameters for URL tracking. Microsoft Advertising will accept the first 8 CustomParameter objects that you include within the CustomParameters object, and if you include more than 8 custom parameters an error will be returned. Each CustomParameter includes Key and Value elements. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. Set the UrlCustomParameters element to null or empty to retain any existing custom parameters. To remove all custom parameters, set the Parameters element of the CustomParameters object to null or empty. To remove a subset of custom parameters, specify the custom parameters that you want to keep in the Parameters element of the CustomParameters object." ;
    sh:node microsoftads:CampaignManagementCustomParametersShape ;
    sh:class microsoftads:CampaignManagementCustomParameters ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementExpandedTextAd/finalUrls> ;
    sh:name "final urls" ;
    sh:description "The landing page URL. The domain portion of the URL in combination with the path 1 and path 2 strings cannot exceed 67 characters. The following validation rules apply to Final URLs and Final Mobile URLs. - The length of the URL is limited to 2,048 characters. The HTTP or HTTPS protocol string does count towards the 2,048 character limit. - You may specify up to 10 items for both FinalUrls and FinalMobileUrls; however, only the first item in each list is used for delivery. The service allows up to 10 for potential forward compatibility. - Usage of '{' and '}' is only allowed to delineate tags, for example {lpurl}. - Final URLs must each be a well-formed URL starting with either http:// or https://. - If you specify FinalMobileUrls, you must also specify FinalUrls. - You may not specify FinalMobileUrls if the device preference is set to mobile. Also note that if this ad's TrackingUrlTemplate or UrlCustomParameters element are set, then at least one final URL is required. This URL is used only if the keyword does not specify a final URL. Add: Required Update: Optional" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementExpandedTextAd/finalMobileUrls> ;
    sh:name "final mobile urls" ;
    sh:description "The mobile landing page URL. The following validation rules apply to Final URLs and Final Mobile URLs. - The length of the URL is limited to 2,048 characters. The HTTP or HTTPS protocol string does count towards the 2,048 character limit. - You may specify up to 10 items for both FinalUrls and FinalMobileUrls; however, only the first item in each list is used for delivery. The service allows up to 10 for potential forward compatibility. - Usage of '{' and '}' is only allowed to delineate tags, for example {lpurl}. - Final URLs must each be a well-formed URL starting with either http:// or https://. - If you specify FinalMobileUrls, you must also specify FinalUrls. - You may not specify FinalMobileUrls if the device preference is set to mobile. This URL is used only if the keyword does not specify a final mobile URL. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementExpandedTextAd/finalAppUrls> ;
    sh:name "final app urls" ;
    sh:description "Not supported for this ad type." ;
    sh:node microsoftads:CampaignManagementAppUrlShape ;
    sh:class microsoftads:CampaignManagementAppUrl ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementExpandedTextAd/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. Forward compatibility changes will be noted here in future releases. There are currently no forward compatibility changes for this object." ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementExpandedTextAd/titlePart1> ;
    sh:name "title part1" ;
    sh:description "The first part of the ad title. The three title parts will be automatically separated by a space, vertical bar, and space (\" &#124; \") when the ad is shown. Each part of the title must contain at least one word. For efficient use of resources we recommend that you use dynamic text strings such as {keyword} instead of creating new ad copy for each keyword. For more information, see the Microsoft Advertising help article Automatically customize your ads with dynamic text parameters. The title can contain IF and countdown functions. Regardless of the total length of all unsubstituted countdown parameters, the final displayed countdown will always use 8 characters out of the total characters available. For more details see Countdown Customizers. The maximum input length is 1,000 characters if you include dynamic text strings. No more than 30 final (not dynamic text) characters can be input. The ad will fail to display or the default text will be used if the length of all three title parts exceed 90 characters after dynamic text substitution occurs. For languages with double-width characters e.g. Traditional Chinese the maximum input length is 500 characters if you include dynamic text strings. No more than 15 final (not dynamic text) characters can be input. The ad will fail to display or the default text will be used if the length of all three title parts exceed 45 characters after dynamic text substitution occurs. The double-width characters are determined by the characters you use instead of the character set of the campaign or ad group language settings. Double-width characters include Korean, Japanese and Chinese languages characters as well as Emojis. The title cannot contain the newline (\\n) character. Add: Required Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementExpandedTextAd/titlePart2> ;
    sh:name "title part2" ;
    sh:description "The second part of the ad title. The three title parts will be automatically separated by a space, vertical bar, and space (\" &#124; \") when the ad is shown. Each part of the title must contain at least one word. For efficient use of resources we recommend that you use dynamic text strings such as {keyword} instead of creating new ad copy for each keyword. For more information, see the Microsoft Advertising help article Automatically customize your ads with dynamic text parameters. The title can contain IF and countdown functions. Regardless of the total length of all unsubstituted countdown parameters, the final displayed countdown will always use 8 characters out of the total characters available. For more details see Countdown Customizers. The maximum input length is 1,000 characters if you include dynamic text strings. No more than 30 final (not dynamic text) characters can be input. The ad will fail to display or the default text will be used if the length of all three title parts exceed 90 characters after dynamic text substitution occurs. For languages with double-width characters e.g. Traditional Chinese the maximum input length is 500 characters if you include dynamic text strings. No more than 15 final (not dynamic text) characters can be input. The ad will fail to display or the default text will be used if the length of all three title parts exceed 45 characters after dynamic text substitution occurs. The double-width characters are determined by the characters you use instead of the character set of the campaign or ad group language settings. Double-width characters include Korean, Japanese and Chinese languages characters as well as Emojis. The title cannot contain the newline (\\n) character. Add: Required Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementExpandedTextAd/text> ;
    sh:name "text" ;
    sh:description "The first part of the ad description that can show in your ad. To maximize impressions across all ad formats the description might not always be shown in your ad. The text must contain at least one word. For efficient use of resources we recommend that you use dynamic text strings such as {keyword} instead of creating new ad copy for each keyword. For more information, see the Microsoft Advertising help article Automatically customize your ads with dynamic text parameters. The text can contain IF and countdown functions. Regardless of the total length of all unsubstituted countdown parameters, the final displayed countdown will always use 8 characters out of the total characters available. For more details see Countdown Customizers. The maximum input length is 1,000 characters if you include dynamic text strings. No more than 90 final (not dynamic text) characters can be input. The ad will fail to display or the default text will be used if the length of both text parts exceed 180 characters after dynamic text substitution occurs. For languages with double-width characters e.g. Traditional Chinese the maximum input length is 500 characters if you include dynamic text strings. No more than 45 final (not dynamic text) characters can be input. The ad will fail to display or the default text will be used if the length of both text parts exceed 90 characters after dynamic text substitution occurs. The double-width characters are determined by the characters you use instead of the character set of the campaign or ad group language settings. Double-width characters include Korean, Japanese and Chinese languages characters as well as Emojis. The text cannot contain the newline (\\n) character. Add: Required Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementExpandedTextAd/path1> ;
    sh:name "path1" ;
    sh:description "The first part of the optional path that will be appended to the domain portion of your display URL. The domain portion of your display URL e.g. https://www.contoso.com will be generated from the domain of your Final URL (FinalUrls element). Then if you have specified a value for Path1 it will be appended to the display URL. If you have also specified a value for Path2, then it will also be appended to the display URL after Path1. For example if your FinalUrls contains https://www.contoso.com, Path1 is set to subdirectory1, and Path2 is set to subdirectory2, then the URL displayed will be https://www.contoso.com/subdirectory1/subdirectory2. The path can contain IF and countdown functions. Regardless of the total length of all unsubstituted countdown parameters, the final displayed countdown will always use 8 characters out of the total characters available. For more details see Countdown Customizers. The path can contain dynamic parameters such as {MatchType}. For a list of supported parameters, see the Microsoft Advertising help article What tracking or URL parameters can I use?. The maximum input length is 1,000 characters if you include dynamic text strings. No more than 15 final (not dynamic text) characters can be input. The ad will fail to display or the default text will be used if the length of the final URL domain and the paths combined exceed 67 characters. For languages with double-width characters e.g. Traditional Chinese the maximum input length is 1,000 characters if you include dynamic text strings. No more than 7 final (not dynamic text) characters can be input. The ad will fail to display or the default text will be used if the length of the final URL domain and the paths combined exceed 33 characters. The double-width characters are determined by the characters you use instead of the character set of the campaign or ad group language settings. Double-width characters include Korean, Japanese and Chinese languages characters as well as Emojis. The path cannot contain the forward slash (/) or newline (\\n) characters. If the path includes a space, it will be replaced with an underscore (_) when the ad is shown. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. If you set this element to an empty string (\"\"), the previous setting will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementExpandedTextAd/path2> ;
    sh:name "path2" ;
    sh:description "The second part of the optional path that will be appended to the domain portion of your display URL. The domain portion of your display URL e.g. https://www.contoso.com will be generated from the domain of your Final URL (FinalUrls element). Then if you have specified a value for Path1 it will be appended to the display URL. If you have also specified a value for Path2, then it will also be appended to the display URL after Path1. For example if your FinalUrls contains https://www.contoso.com, Path1 is set to subdirectory1, and Path2 is set to subdirectory2, then the URL displayed will be https://www.contoso.com/subdirectory1/subdirectory2. You can only specify Path2 if Path1 is also set. The path can contain IF and countdown functions. Regardless of the total length of all unsubstituted countdown parameters, the final displayed countdown will always use 8 characters out of the total characters available. For more details see Countdown Customizers. The path can contain dynamic parameters such as {MatchType}. For a list of supported parameters, see the Microsoft Advertising help article What tracking or URL parameters can I use?. The maximum input length is 1,000 characters if you include dynamic text strings. No more than 15 final (not dynamic text) characters can be input. The ad will fail to display or the default text will be used if the length of the final URL domain and the paths combined exceed 67 characters. For languages with double-width characters e.g. Traditional Chinese the maximum input length is 1,000 characters if you include dynamic text strings. No more than 7 final (not dynamic text) characters can be input. The ad will fail to display or the default text will be used if the length of the final URL domain and the paths combined exceed 33 characters. The double-width characters are determined by the characters you use instead of the character set of the campaign or ad group language settings. Double-width characters include Korean, Japanese and Chinese languages characters as well as Emojis. The path cannot contain the forward slash (/) or newline (\\n) characters. If the path includes a space, it will be replaced with an underscore (_) when the ad is shown. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. If you set this element to an empty string (\"\"), the previous setting will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementExpandedTextAd/domain> ;
    sh:name "domain" ;
    sh:description "The URL that will be displayed instead of the final URL. The final URL will still be used for the landing page URL. Reserved for limited pilot usage e.g. pharmaceutical customers. The domain portion of the URL in combination with the path 1 and path 2 strings cannot exceed 67 characters. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. If you set this element to an empty string (\"\"), the previous setting will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementExpandedTextAd/titlePart3> ;
    sh:name "title part3" ;
    sh:description "The third part of the ad title. The three title parts will be automatically separated by a space, vertical bar, and space (\" &#124; \") when the ad is shown. Each part of the title must contain at least one word. For efficient use of resources we recommend that you use dynamic text strings such as {keyword} instead of creating new ad copy for each keyword. For more information, see the Microsoft Advertising help article Automatically customize your ads with dynamic text parameters. The title can contain IF and countdown functions. Regardless of the total length of all unsubstituted countdown parameters, the final displayed countdown will always use 8 characters out of the total characters available. For more details see Countdown Customizers. The maximum input length is 1,000 characters if you include dynamic text strings. No more than 30 final (not dynamic text) characters can be input. The ad will fail to display or the default text will be used if the length of all three title parts exceed 90 characters after dynamic text substitution occurs. For languages with double-width characters e.g. Traditional Chinese the maximum input length is 500 characters if you include dynamic text strings. No more than 15 final (not dynamic text) characters can be input. The ad will fail to display or the default text will be used if the length of all three title parts exceed 45 characters after dynamic text substitution occurs. The double-width characters are determined by the characters you use instead of the character set of the campaign or ad group language settings. Double-width characters include Korean, Japanese and Chinese languages characters as well as Emojis. The title cannot contain the newline (\\n) character. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. If you set this element to an empty string (\"\"), the previous setting will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementExpandedTextAd/textPart2> ;
    sh:name "text part2" ;
    sh:description "The second part of the ad description that can show in your ad. To maximize impressions across all ad formats the description might not always be shown in your ad. The text must contain at least one word. For efficient use of resources we recommend that you use dynamic text strings such as {keyword} instead of creating new ad copy for each keyword. For more information, see the Microsoft Advertising help article Automatically customize your ads with dynamic text parameters. The text can contain IF and countdown functions. Regardless of the total length of all unsubstituted countdown parameters, the final displayed countdown will always use 8 characters out of the total characters available. For more details see Countdown Customizers. The maximum input length is 1,000 characters if you include dynamic text strings. No more than 90 final (not dynamic text) characters can be input. The ad will fail to display or the default text will be used if the length of both text parts exceed 180 characters after dynamic text substitution occurs. For languages with double-width characters e.g. Traditional Chinese the maximum input length is 500 characters if you include dynamic text strings. No more than 45 final (not dynamic text) characters can be input. The ad will fail to display or the default text will be used if the length of both text parts exceed 90 characters after dynamic text substitution occurs. The double-width characters are determined by the characters you use instead of the character set of the campaign or ad group language settings. Double-width characters include Korean, Japanese and Chinese languages characters as well as Emojis. The text cannot contain the newline (\\n) character. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. If you set this element to an empty string (\"\"), the previous setting will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management File Import Job
microsoftads:CampaignManagementFileImportJobShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementFileImportJob ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFileImportJob/name> ;
    sh:name "name" ;
    sh:description "The name of the import job" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFileImportJob/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier of the import job." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFileImportJob/type> ;
    sh:name "type" ;
    sh:description "The type of the import job. This value is FileImportJob when you retrieve a File import job. For more information about import job types, see the ImportJob Data Object Remarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFileImportJob/status> ;
    sh:name "status" ;
    sh:description "The status of the import job." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFileImportJob/notificationType> ;
    sh:name "notification type" ;
    sh:description "Determines whether and how often you want to receive email notifications about the import job results." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFileImportJob/createdByUserId> ;
    sh:name "created by user id" ;
    sh:description "The unique identifier of the Microsoft Advertising user who created the import job." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFileImportJob/createdByUserName> ;
    sh:name "created by user name" ;
    sh:description "The login user name of the Microsoft Advertising user who created the import job." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFileImportJob/frequency> ;
    sh:name "frequency" ;
    sh:description "Determines whether the import job should be run once or scheduled on a recurring basis. To run the import job now, this element should be nil or empty." ;
    sh:node microsoftads:CampaignManagementFrequencyShape ;
    sh:class microsoftads:CampaignManagementFrequency ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFileImportJob/lastRunTimeInUTC> ;
    sh:name "last run time in utc" ;
    sh:description "The most recent import date and time for this job. The date and time is expressed in Coordinated Universal Time (UTC)." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFileImportJob/createdDateTimeInUTC> ;
    sh:name "created date time in utc" ;
    sh:description "The date and time when the import job was created. The date and time is expressed in Coordinated Universal Time (UTC)." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFileImportJob/importOption> ;
    sh:name "import option" ;
    sh:description "The import options that are available via API." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementFileImportOptionShape ; sh:class microsoftads:CampaignManagementFileImportOption ]
      [ sh:node microsoftads:CampaignManagementGoogleImportOptionShape ; sh:class microsoftads:CampaignManagementGoogleImportOption ]
      [ sh:node microsoftads:CampaignManagementImportOptionShape ; sh:class microsoftads:CampaignManagementImportOption ]
      [ sh:node microsoftads:CampaignManagementImportOptionBaseShape ; sh:class microsoftads:CampaignManagementImportOptionBase ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFileImportJob/notificationEmail> ;
    sh:name "notification email" ;
    sh:description "The email address where import results should be sent. This element is not returned by default. To get this element, include the NotificationEmail value in the ReturnAdditionalFields element when you call the GetImportJobsByIds and GetImportResults service operations." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFileImportJob/fileUrl> ;
    sh:name "file url" ;
    sh:description "Reserved for future use." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFileImportJob/fileSource> ;
    sh:name "file source" ;
    sh:description "Reserved for future use." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management File Import Option
microsoftads:CampaignManagementFileImportOptionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementFileImportOption ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFileImportOption/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. Forward compatibility changes will be noted here in future releases. There are currently no forward compatibility changes for this object." ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFileImportOption/type> ;
    sh:name "type" ;
    sh:description "The type of the import option. This value is FileImportOption when you retrieve a File import option. For more information about import option types, see the ImportOption Data Object Remarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Filter Link Ad Extension
microsoftads:CampaignManagementFilterLinkAdExtensionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementFilterLinkAdExtension ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFilterLinkAdExtension/status> ;
    sh:name "status" ;
    sh:description "The status of the ad extension. The value will always be Active because the Campaign Management service does not return deleted ad extensions. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Deleted" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFilterLinkAdExtension/scheduling> ;
    sh:name "scheduling" ;
    sh:description "Determines the calendar day and time ranges when the ad extension is eligible to be shown in ads. Add: Optional Update: Optional. If you set this element null, any existing scheduling set for the ad extension will remain unchanged. If you set this to any non-null Schedule object, you are effectively replacing existing scheduling settings for the ad extension. To remove all scheduling set this element to an empty Schedule object." ;
    sh:node microsoftads:CampaignManagementScheduleShape ;
    sh:class microsoftads:CampaignManagementSchedule ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFilterLinkAdExtension/devicePreference> ;
    sh:name "device preference" ;
    sh:description "Not supported for this ad extension type." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFilterLinkAdExtension/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier of the ad extension. Add: Read-only Update: Read-only and Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFilterLinkAdExtension/type> ;
    sh:name "type" ;
    sh:description "The type of the ad extension. This value is FilterLinkAdExtension when you retrieve a filter link ad extension. Add: Read-only Update: Read-only For more information about ad extension types, see the Ad Extension Data Object Remarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFilterLinkAdExtension/version> ;
    sh:name "version" ;
    sh:description "Tracks the number of times the ad extension has been updated. The version is set to 1 when the ad extension is created, and increments by one after each update. Add: Not allowed Update: Not allowed" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFilterLinkAdExtension/adExtensionHeaderType> ;
    sh:name "ad extension header type" ;
    sh:description "The header that is appended with a colon (:) and precedes the filter link values in the ad that is shown. Filter link headers will be shown in the language that you specify. For example, if you want header Amenities in English you must set the Language to English and the AdExtensionHeaderType to Amenities. If you want header Ausstattung (Amenities in German) you must set the Language to German and the AdExtensionHeaderType to Amenities. Add: Required Update: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unknown" "Amenities" "Brands" "Classes" "Courses" "DailyRates" "DegreePrograms" "Departments" "Destinations" "FeaturedHotels" "Goods" "Grades" "Highlights" "InsuranceCoverage" "Items" "Languages" "Locations" "Models" "Neighborhoods" "Prices" "Rates" "Ratings" "SchoolDistricts" "Services" "ServiceCatalog" "Shows" "Sizes" "Styles" "Tools" "Topics" "Types" "Vacations" "Vehicles" "What" "Who" "Why" "Deals" "BestSellers" "AgeGroups" "Occasions" "Flowers" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFilterLinkAdExtension/language> ;
    sh:name "language" ;
    sh:description "The language you want to use for the filter link headers. Filter link headers will be shown in the language that you specify. For example, if you want header Amenities in English you must set the Language to English and the AdExtensionHeaderType to Amenities. If you want header Ausstattung (Amenities in German) you must set the Language to German and the AdExtensionHeaderType to Amenities. Add: Required Update: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFilterLinkAdExtension/texts> ;
    sh:name "texts" ;
    sh:description "The text values that follow after the AdExtensionHeaderType component of the ad that is shown. Each text value that you choose can have a maximum length of 25 characters. Note that for Traditional Chinese characters, each value can have a maximum length of 12 characters. Add: Required Update: Required" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFilterLinkAdExtension/finalMobileUrls> ;
    sh:name "final mobile urls" ;
    sh:description "The landing page URL for mobile devices. The following validation rules apply to Final URLs and Final Mobile URLs. - The length of the URL is limited to 2,048 characters. The HTTP or HTTPS protocol string does count towards the 2,048 character limit. - You may specify up to 10 list items for both FinalUrls and FinalMobileUrls; however, only the first item in each list is used for delivery. The service allows up to 10 list items for potential forward compatibility. - Usage of '{' and '}' is only allowed to delineate tags, for example {lpurl}. - Final URLs must each be a well-formed URL starting with either http:// or https://. - If you specify FinalMobileUrls, you must also specify FinalUrls. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. If you set this element to an empty list, the previous setting will be deleted." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFilterLinkAdExtension/finalUrls> ;
    sh:name "final urls" ;
    sh:description "The landing page URL. The following validation rules apply to Final URLs and Final Mobile URLs. - The length of the URL is limited to 2,048 characters. The HTTP or HTTPS protocol string does count towards the 2,048 character limit. - You may specify up to 10 list items for both FinalUrls and FinalMobileUrls; however, only the first item in each list is used for delivery. The service allows up to 10 list items for potential forward compatibility. - Usage of '{' and '}' is only allowed to delineate tags, for example {lpurl}. - Final URLs must each be a well-formed URL starting with either http:// or https://. - If you specify FinalMobileUrls, you must also specify FinalUrls. Add: Required Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFilterLinkAdExtension/trackingUrlTemplate> ;
    sh:name "tracking url template" ;
    sh:description "The tracking template to use as a default for all FinalUrls and FinalMobileUrls. The following validation rules apply to tracking templates. For more details about supported templates and parameters, see the Microsoft Advertising help article What tracking or URL parameters can I use? - Tracking templates defined for lower level entities e.g. ads override those set for higher level entities e.g. campaign. For more information, see Entity Limits. - The length of the tracking template is limited to 2,048 characters. The HTTP or HTTPS protocol string does count towards the 2,048 character limit. - The tracking template must be a well-formed URL beginning with one of the following: http://, https://, {lpurl}, or {unescapedlpurl}. - Microsoft Advertising does not validate whether custom parameters exist. If you use custom parameters in your tracking template and they do not exist, then the landing page URL will include the key and value placeholders of your custom parameters without substitution. For example, if your tracking template is https://tracker.example.com/?season={_season}&promocode={_promocode}&u={lpurl} and neither {_season} or {_promocode} are defined at the campaign, ad group, criterion, keyword, or ad level, then the landing page URL will be the same. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. If you set this element to an empty string (\"\"), the previous setting will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFilterLinkAdExtension/urlCustomParameters> ;
    sh:name "url custom parameters" ;
    sh:description "Your custom collection of key and value parameters for URL tracking. Microsoft Advertising will accept the first 3 CustomParameter objects that you include within the CustomParameters object, and any additional custom parameters will be ignored. Each CustomParameter includes Key and Value elements. For customers in the Custom Parameters Limit Increase Phase 3 pilot (GetCustomerPilotFeatures returns 635), Microsoft Advertising will accept the first 8 custom parameter key and value pairs that you include, and if you include more than 8 custom parameters an error will be returned. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. Set the UrlCustomParameters element to null or empty to retain any existing custom parameters. To remove all custom parameters, set the Parameters element of the CustomParameters object to null or empty. To remove a subset of custom parameters, specify the custom parameters that you want to keep in the Parameters element of the CustomParameters object." ;
    sh:node microsoftads:CampaignManagementCustomParametersShape ;
    sh:class microsoftads:CampaignManagementCustomParameters ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFilterLinkAdExtension/finalUrlSuffix> ;
    sh:name "final url suffix" ;
    sh:description "The final URL suffix can include tracking parameters that will be appended to the end of your landing page URL. We recommend placing tracking parameters that your landing page requires in a final URL suffix so that your customers are always sent to your landing page. For more details and validation rules see Final URL Suffix in the technical guides. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFilterLinkAdExtension/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. There are currently no forward compatibility changes for the AdExtension object. Add: Read-only Update: Read-only" ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Fixed Bid
microsoftads:CampaignManagementFixedBidShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementFixedBid ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFixedBid/type> ;
    sh:name "type" ;
    sh:description "The type of the criterion bid. This value is FixedBid when you retrieve a fixed bid criterion. For more information about criterion types, see the CriterionBid Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFixedBid/amount> ;
    sh:name "amount" ;
    sh:description "The bid value. For details about the valid bid range for your market, see Currencies. Add: Required Update: Optional" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Flyer Ad Extension
microsoftads:CampaignManagementFlyerAdExtensionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementFlyerAdExtension ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFlyerAdExtension/status> ;
    sh:name "status" ;
    sh:description "The status of the ad extension. The value will always be Active because the Campaign Management service does not return deleted ad extensions. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Deleted" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFlyerAdExtension/scheduling> ;
    sh:name "scheduling" ;
    sh:description "Determines the calendar day and time ranges when the ad extension is eligible to be shown in ads. The EndDate must be within 30 days of the StartDate. Add: The schedule StartDate and EndDate are required for flyer ad extensions. Update: Optional. If you set this element null, any existing scheduling set for the ad extension will remain unchanged. If you set this to any non-null Schedule object, you are effectively replacing existing scheduling settings for the ad extension. You cannot set this element to an empty Schedule object, because that would effectively attempt to delete all scheduling. This would result in an error since StartDate and EndDate are required for flyer ad extensions." ;
    sh:node microsoftads:CampaignManagementScheduleShape ;
    sh:class microsoftads:CampaignManagementSchedule ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFlyerAdExtension/devicePreference> ;
    sh:name "device preference" ;
    sh:description "Not supported for this ad extension type." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFlyerAdExtension/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier of the ad extension. Add: Read-only Update: Read-only and Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFlyerAdExtension/type> ;
    sh:name "type" ;
    sh:description "The type of the ad extension. This value is FlyerAdExtension when you retrieve a flyer ad extension. Add: Read-only Update: Read-only For more information about ad extension types, see the Ad Extension Data Object Remarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFlyerAdExtension/version> ;
    sh:name "version" ;
    sh:description "Tracks the number of times the ad extension has been updated. The version is set to 1 when the ad extension is created, and increments by one after each update. Add: Not allowed Update: Not allowed" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFlyerAdExtension/flyerName> ;
    sh:name "flyer name" ;
    sh:description "The flyer name. The maximum length for this element is 150 characters. Add: Required Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFlyerAdExtension/storeId> ;
    sh:name "store id" ;
    sh:description "The unique identifier of a Microsoft Merchant Center store used for product ads. Add: Optional Update: Read-only. You cannot update the store ID after it was set." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFlyerAdExtension/description> ;
    sh:name "description" ;
    sh:description "Description that can be used by the advertiser, agency, or account manager to track, label, or manage flyer extensions. This description is not displayed with the ad or image. The maximum length for this element is 1,024 characters. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFlyerAdExtension/imageMediaIds> ;
    sh:name "image media ids" ;
    sh:description "The identifier of the image to include in the ad. You can only set one media ID. The data type is a list of long values in case support for multiple images is added later. Each media ID corresponds to an Image of the \"GenericImage\" Media sub type. You can get the identifier of each Image when you add them to the image library by calling the AddMedia operation. Otherwise after the media has been added to your image library you can get the media identifiers with the GetMediaMetaDataByAccountId operation. The image should have a minimum width and height of 220px, and a maximum file size of 3.9MB. Add: Required Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFlyerAdExtension/imageMediaUrls> ;
    sh:name "image media urls" ;
    sh:description "The URL of the media that you already added. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFlyerAdExtension/finalMobileUrls> ;
    sh:name "final mobile urls" ;
    sh:description "The landing page URL for mobile devices. The following validation rules apply to Final URLs and Final Mobile URLs. - The length of the URL is limited to 2,048 characters. The HTTP or HTTPS protocol string does count towards the 2,048 character limit. - You may specify up to 10 list items for both FinalUrls and FinalMobileUrls; however, only the first item in each list is used for delivery. The service allows up to 10 list items for potential forward compatibility. - Usage of '{' and '}' is only allowed to delineate tags, for example {lpurl}. - Final URLs must each be a well-formed URL starting with either http:// or https://. - If you specify FinalMobileUrls, you must also specify FinalUrls. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. If you set this element to an empty list, the previous setting will be deleted." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFlyerAdExtension/finalUrls> ;
    sh:name "final urls" ;
    sh:description "The landing page URL. The following validation rules apply to Final URLs and Final Mobile URLs. - The length of the URL is limited to 2,048 characters. The HTTP or HTTPS protocol string does count towards the 2,048 character limit. - You may specify up to 10 list items for both FinalUrls and FinalMobileUrls; however, only the first item in each list is used for delivery. The service allows up to 10 list items for potential forward compatibility. - Usage of '{' and '}' is only allowed to delineate tags, for example {lpurl}. - Final URLs must each be a well-formed URL starting with either http:// or https://. - If you specify FinalMobileUrls, you must also specify FinalUrls. Add: Required Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFlyerAdExtension/urlCustomParameters> ;
    sh:name "url custom parameters" ;
    sh:description "Your custom collection of key and value parameters for URL tracking. Microsoft Advertising will accept the first 3 CustomParameter objects that you include within the CustomParameters object, and any additional custom parameters will be ignored. Each CustomParameter includes Key and Value elements. For customers in the Custom Parameters Limit Increase Phase 3 pilot (GetCustomerPilotFeatures returns 635), Microsoft Advertising will accept the first 8 custom parameter key and value pairs that you include, and if you include more than 8 custom parameters an error will be returned. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. Set the UrlCustomParameters element to null or empty to retain any existing custom parameters. To remove all custom parameters, set the Parameters element of the CustomParameters object to null or empty. To remove a subset of custom parameters, specify the custom parameters that you want to keep in the Parameters element of the CustomParameters object." ;
    sh:node microsoftads:CampaignManagementCustomParametersShape ;
    sh:class microsoftads:CampaignManagementCustomParameters ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFlyerAdExtension/trackingUrlTemplate> ;
    sh:name "tracking url template" ;
    sh:description "The tracking template to use as a default for all FinalUrls and FinalMobileUrls. The following validation rules apply to tracking templates. For more details about supported templates and parameters, see the Microsoft Advertising help article What tracking or URL parameters can I use? - Tracking templates defined for lower level entities e.g. ads override those set for higher level entities e.g. campaign. For more information, see Entity Limits. - The length of the tracking template is limited to 2,048 characters. The HTTP or HTTPS protocol string does count towards the 2,048 character limit. - The tracking template must be a well-formed URL beginning with one of the following: http://, https://, {lpurl}, or {unescapedlpurl}. - Microsoft Advertising does not validate whether custom parameters exist. If you use custom parameters in your tracking template and they do not exist, then the landing page URL will include the key and value placeholders of your custom parameters without substitution. For example, if your tracking template is https://tracker.example.com/?season={_season}&promocode={_promocode}&u={lpurl} and neither {_season} or {_promocode} are defined at the campaign, ad group, criterion, keyword, or ad level, then the landing page URL will be the same. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. If you set this element to an empty string (\"\"), the previous setting will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFlyerAdExtension/finalUrlSuffix> ;
    sh:name "final url suffix" ;
    sh:description "The final URL suffix can include tracking parameters that will be appended to the end of your landing page URL. We recommend placing tracking parameters that your landing page requires in a final URL suffix so that your customers are always sent to your landing page. For more details and validation rules see Final URL Suffix in the technical guides. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFlyerAdExtension/finalAppUrls> ;
    sh:name "final app urls" ;
    sh:description "Reserved for future use." ;
    sh:node microsoftads:CampaignManagementAppUrlShape ;
    sh:class microsoftads:CampaignManagementAppUrl ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementFlyerAdExtension/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. There are currently no forward compatibility changes for the AdExtension object. Add: Read-only Update: Read-only" ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Gender Criterion
microsoftads:CampaignManagementGenderCriterionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGenderCriterion ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGenderCriterion/type> ;
    sh:name "type" ;
    sh:description "The type of the criterion. This value is Gender when you retrieve a gender criterion. For more information about criterion types, see the Criterion Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGenderCriterion/genderType> ;
    sh:name "gender type" ;
    sh:description "The gender of the people you want to see your ads. Add: Required Update: Not allowed. If you specify this element it must match the existing setting." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unknown" "Male" "Female" ) ;
  ] .

# Shape for Campaign Management Gender Dimension
microsoftads:CampaignManagementGenderDimensionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGenderDimension ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGenderDimension/type> ;
    sh:name "type" ;
    sh:description "The type of audience dimensions, the following dimension types are supported as of now: Age, Gender, Audience. Add: For more information about audience types, see the Remarks. Update: For more information about audience types, see the Remarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Age" "Gender" "Audience" "Profile" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGenderDimension/genderTypes> ;
    sh:name "gender types" ;
    sh:description "A list of gender types. Add: Required Update: Optional. To remove existing values, set it to null or empty. To remove a subset of gender types, specify the gender types that you want to keep and it will replace the existing gender types." ;
    sh:datatype xsd:string ;
    sh:in ( "Unknown" "Male" "Female" ) ;
  ] .

# Shape for Campaign Management Genre Criterion
microsoftads:CampaignManagementGenreCriterionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGenreCriterion ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGenreCriterion/type> ;
    sh:name "type" ;
    sh:description "The type of the criterion. This value is Genre when you retrieve a genre criterion. For more information about criterion types, see the Criterion Data Object Remarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGenreCriterion/genreId> ;
    sh:name "genre id" ;
    sh:description "The Microsoft Advertising identifier of the Genre. View this table to see possible values for GenreId." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Account Migration Statuses Request
microsoftads:CampaignManagementGetAccountMigrationStatusesRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetAccountMigrationStatusesRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAccountMigrationStatusesRequest/accountIds> ;
    sh:name "account ids" ;
    sh:description "The identifiers of each account to request migration status." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAccountMigrationStatusesRequest/migrationType> ;
    sh:name "migration type" ;
    sh:description "Filters the returned migration status by migration type. Currently there are no applicable migrations in progress and this element is reserved for future use." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Account Migration Statuses Response
microsoftads:CampaignManagementGetAccountMigrationStatusesResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetAccountMigrationStatusesResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAccountMigrationStatusesResponse/migrationStatuses> ;
    sh:name "migration statuses" ;
    sh:description "An array of account migration statuses. For each account identifier specified in the request, an AccountMigrationStatusesInfo object is returned." ;
    sh:node microsoftads:CampaignManagementAccountMigrationStatusesInfoShape ;
    sh:class microsoftads:CampaignManagementAccountMigrationStatusesInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Account Properties Request
microsoftads:CampaignManagementGetAccountPropertiesRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetAccountPropertiesRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAccountPropertiesRequest/accountPropertyNames> ;
    sh:name "account property names" ;
    sh:description "The names of account properties that you want to get. For example, determine whether or not Microsoft Click Id auto-tagging is enabled, include the MSCLKIDAutoTaggingEnabled value in your request." ;
    sh:datatype xsd:string ;
    sh:in ( "None" "TrackingUrlTemplate" "MSCLKIDAutoTaggingEnabled" "AdClickParallelTracking" "FinalUrlSuffix" "IncludeViewThroughConversions" "ProfileExpansionEnabled" "AllowImageAutoRetrieve" "AutoApplyRecommendations" "IncludeAutoBiddingViewThroughConversions" "AutoBiddingViewThroughConversionsValueAttributionWeight" "LoopBackWindowForViewThroughConversions" "BusinessAttributes" "EnableMMAUnderDSAAdgroups" "OptOutFromMCM" "NetflixTCAccepted" "BlockedContentSegments" "AssetAIEnhancementOptout" "AcceptNielsenTermsAndConditions" "ImageMissingWarningOptout" "OptOutFromSystemSourcedImagesInSWF" ) ;
  ] .

# Shape for Campaign Management Get Account Properties Response
microsoftads:CampaignManagementGetAccountPropertiesResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetAccountPropertiesResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAccountPropertiesResponse/accountProperties> ;
    sh:name "account properties" ;
    sh:description "An array of account properties. For each account property name specified in the request, an AccountProperty object is returned." ;
    sh:node microsoftads:CampaignManagementAccountPropertyShape ;
    sh:class microsoftads:CampaignManagementAccountProperty ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAccountPropertiesResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Ad Extension Ids By Account Id Request
microsoftads:CampaignManagementGetAdExtensionIdsByAccountIdRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetAdExtensionIdsByAccountIdRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAdExtensionIdsByAccountIdRequest/accountId> ;
    sh:name "account id" ;
    sh:description "The identifier of the account that contains the ad extensions to get." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAdExtensionIdsByAccountIdRequest/associationType> ;
    sh:name "association type" ;
    sh:description "A value that filters the extensions based on whether they?re associated with a specific entity type. For possible values, see AssociationType. To get all extensions including those not associated with any entity, set this element to NULL." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Campaign" "AdGroup" "Account" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAdExtensionIdsByAccountIdRequest/adExtensionType> ;
    sh:name "ad extension type" ;
    sh:description "The types of ad extensions to get from the account. You may include multiple values as flags. How you specify multiple flags depends on the programming language that you use. For example, C# treats these values as flag values and Java treats them as an array of strings. The SOAP should include a string that contains a space-delimited list of values for example, LocationAdExtension CallAdExtension." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Ad Extension Ids By Account Id Response
microsoftads:CampaignManagementGetAdExtensionIdsByAccountIdResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetAdExtensionIdsByAccountIdResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAdExtensionIdsByAccountIdResponse/adExtensionIds> ;
    sh:name "ad extension ids" ;
    sh:description "A list of ad extension IDs. To get the extension, call the GetAdExtensionsByIds operation." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Campaign Management Get Ad Extensions Associations Request
microsoftads:CampaignManagementGetAdExtensionsAssociationsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetAdExtensionsAssociationsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAdExtensionsAssociationsRequest/accountId> ;
    sh:name "account id" ;
    sh:description "The identifier of the account that owns the extensions." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAdExtensionsAssociationsRequest/entityIds> ;
    sh:name "entity ids" ;
    sh:description "The list of entity identifiers by which you may request the respective ad extension associations. The maximum number of EntityIds per request is 100." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAdExtensionsAssociationsRequest/adExtensionType> ;
    sh:name "ad extension type" ;
    sh:description "Filters the returned associations by ad extension type. You may include multiple values as flags. How you specify multiple flags depends on the programming language that you use. For example, C# treats these values as flag values and Java treats them as an array of strings. The SOAP should include a string that contains a space-delimited list of values for example, LocationAdExtension CallAdExtension." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAdExtensionsAssociationsRequest/associationType> ;
    sh:name "association type" ;
    sh:description "Filters the returned associations by entity type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Campaign" "AdGroup" "Account" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAdExtensionsAssociationsRequest/returnAdditionalFields> ;
    sh:name "return additional fields" ;
    sh:description "Reserved for future use." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Ad Extensions Associations Response
microsoftads:CampaignManagementGetAdExtensionsAssociationsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetAdExtensionsAssociationsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAdExtensionsAssociationsResponse/adExtensionAssociationCollection> ;
    sh:name "ad extension association collection" ;
    sh:description "An array of ad extension association collections. For each entity identifier specified in the request, an AdExtensionAssociationCollection is returned." ;
    sh:class microsoftads:CampaignManagementAdExtensionAssociationCollection ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAdExtensionsAssociationsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any associations that were not successfully retrieved. The list of errors corresponds directly to the list of associations in the request. Items of the list may be returned as null. For each list index where an association was successfully retrieved, the corresponding error element will be null. Ideally all associations are retrieved successfully and all elements in this list are null." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Ad Extensions By Ids Request
microsoftads:CampaignManagementGetAdExtensionsByIdsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetAdExtensionsByIdsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAdExtensionsByIdsRequest/accountId> ;
    sh:name "account id" ;
    sh:description "The identifier of the account that owns the ad extensions." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAdExtensionsByIdsRequest/adExtensionIds> ;
    sh:name "ad extension ids" ;
    sh:description "A list of ad extension identifiers. You can specify a maximum of 100 identifiers." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAdExtensionsByIdsRequest/adExtensionType> ;
    sh:name "ad extension type" ;
    sh:description "The types of ad extensions that the list of identifiers contains. You may include multiple values as flags. How you specify multiple flags depends on the programming language that you use. For example, C# treats these values as flag values and Java treats them as an array of strings. The SOAP should include a string that contains a space-delimited list of values for example, LocationAdExtension CallAdExtension." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAdExtensionsByIdsRequest/returnAdditionalFields> ;
    sh:name "return additional fields" ;
    sh:description "Reserved for future use." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Ad Extensions By Ids Response
microsoftads:CampaignManagementGetAdExtensionsByIdsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetAdExtensionsByIdsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAdExtensionsByIdsResponse/adExtensions> ;
    sh:name "ad extensions" ;
    sh:description "A list of AdExtension objects. The list corresponds directly to the list of identifiers in the request. If an ad extension ID in the request is not valid or the extension is not of the type specified, the corresponding item in this list is null." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementActionAdExtensionShape ; sh:class microsoftads:CampaignManagementActionAdExtension ]
      [ sh:node microsoftads:CampaignManagementAdExtensionShape ; sh:class microsoftads:CampaignManagementAdExtension ]
      [ sh:node microsoftads:CampaignManagementAdExtensionBaseShape ; sh:class microsoftads:CampaignManagementAdExtensionBase ]
      [ sh:node microsoftads:CampaignManagementAppAdExtensionShape ; sh:class microsoftads:CampaignManagementAppAdExtension ]
      [ sh:node microsoftads:CampaignManagementCallAdExtensionShape ; sh:class microsoftads:CampaignManagementCallAdExtension ]
      [ sh:node microsoftads:CampaignManagementCalloutAdExtensionShape ; sh:class microsoftads:CampaignManagementCalloutAdExtension ]
      [ sh:node microsoftads:CampaignManagementDataTableAdExtensionShape ; sh:class microsoftads:CampaignManagementDataTableAdExtension ]
      [ sh:node microsoftads:CampaignManagementDisclaimerAdExtensionShape ; sh:class microsoftads:CampaignManagementDisclaimerAdExtension ]
      [ sh:node microsoftads:CampaignManagementFilterLinkAdExtensionShape ; sh:class microsoftads:CampaignManagementFilterLinkAdExtension ]
      [ sh:node microsoftads:CampaignManagementFlyerAdExtensionShape ; sh:class microsoftads:CampaignManagementFlyerAdExtension ]
      [ sh:node microsoftads:CampaignManagementImageAdExtensionShape ; sh:class microsoftads:CampaignManagementImageAdExtension ]
      [ sh:node microsoftads:CampaignManagementLeadFormAdExtensionShape ; sh:class microsoftads:CampaignManagementLeadFormAdExtension ]
      [ sh:node microsoftads:CampaignManagementLocationAdExtensionShape ; sh:class microsoftads:CampaignManagementLocationAdExtension ]
      [ sh:node microsoftads:CampaignManagementLogoAdExtensionShape ; sh:class microsoftads:CampaignManagementLogoAdExtension ]
      [ sh:node microsoftads:CampaignManagementNewsAdExtensionShape ; sh:class microsoftads:CampaignManagementNewsAdExtension ]
      [ sh:node microsoftads:CampaignManagementPriceAdExtensionShape ; sh:class microsoftads:CampaignManagementPriceAdExtension ]
      [ sh:node microsoftads:CampaignManagementPromotionAdExtensionShape ; sh:class microsoftads:CampaignManagementPromotionAdExtension ]
      [ sh:node microsoftads:CampaignManagementReviewAdExtensionShape ; sh:class microsoftads:CampaignManagementReviewAdExtension ]
      [ sh:node microsoftads:CampaignManagementSitelinkAdExtensionShape ; sh:class microsoftads:CampaignManagementSitelinkAdExtension ]
      [ sh:node microsoftads:CampaignManagementStructuredSnippetAdExtensionShape ; sh:class microsoftads:CampaignManagementStructuredSnippetAdExtension ]
      [ sh:node microsoftads:CampaignManagementVideoAdExtensionShape ; sh:class microsoftads:CampaignManagementVideoAdExtension ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAdExtensionsByIdsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Ad Extensions Editorial Reasons Request
microsoftads:CampaignManagementGetAdExtensionsEditorialReasonsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetAdExtensionsEditorialReasonsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAdExtensionsEditorialReasonsRequest/accountId> ;
    sh:name "account id" ;
    sh:description "The identifier of the account that owns the extensions." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAdExtensionsEditorialReasonsRequest/adExtensionIdToEntityIdAssociations> ;
    sh:name "ad extension id to entity id associations" ;
    sh:description "The list of ad extensions and corresponding entity associations to get." ;
    sh:node microsoftads:CampaignManagementAdExtensionIdToEntityIdAssociationShape ;
    sh:class microsoftads:CampaignManagementAdExtensionIdToEntityIdAssociation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAdExtensionsEditorialReasonsRequest/associationType> ;
    sh:name "association type" ;
    sh:description "Filters the returned associations by entity type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Campaign" "AdGroup" "Account" ) ;
  ] .

# Shape for Campaign Management Get Ad Extensions Editorial Reasons Response
microsoftads:CampaignManagementGetAdExtensionsEditorialReasonsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetAdExtensionsEditorialReasonsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAdExtensionsEditorialReasonsResponse/editorialReasons> ;
    sh:name "editorial reasons" ;
    sh:description "The collection of ad extension editorial reasons." ;
    sh:node microsoftads:CampaignManagementAdExtensionEditorialReasonCollectionShape ;
    sh:class microsoftads:CampaignManagementAdExtensionEditorialReasonCollection ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAdExtensionsEditorialReasonsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Ad Group Criterions By Ids Request
microsoftads:CampaignManagementGetAdGroupCriterionsByIdsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetAdGroupCriterionsByIdsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAdGroupCriterionsByIdsRequest/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "The identifier of the ad group that owns the criterions to get." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAdGroupCriterionsByIdsRequest/returnAdditionalFields> ;
    sh:name "return additional fields" ;
    sh:description "The list of additional properties that you want included within each returned ad group criterion. The additional field values enable you to get the latest features using the current version of Campaign Management API, and in the next version the corresponding elements will be included by default. This request element is optional." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAdGroupCriterionsByIdsRequest/criterionType> ;
    sh:name "criterion type" ;
    sh:description "The type of criterion to get, for example Webpage. You can specify only one type. The Targets and Audience values are not allowed for this operation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAdGroupCriterionsByIdsRequest/adGroupCriterionIds> ;
    sh:name "ad group criterion ids" ;
    sh:description "A list of unique identifiers that identify the criterions to get. You can include up to 1,000 ad group criterion identifiers per request. If this element is null, all criterions for the specified AdGroupId will be retrieved." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Campaign Management Get Ad Group Criterions By Ids Response
microsoftads:CampaignManagementGetAdGroupCriterionsByIdsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetAdGroupCriterionsByIdsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAdGroupCriterionsByIdsResponse/adGroupCriterions> ;
    sh:name "ad group criterions" ;
    sh:description "The list of criterions that correspond directly to the identifiers specified in the request. If an identifier in the list is not valid, the corresponding item in the response is set to null." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementAdGroupCriterionShape ; sh:class microsoftads:CampaignManagementAdGroupCriterion ]
      [ sh:node microsoftads:CampaignManagementAdGroupCriterionBaseShape ; sh:class microsoftads:CampaignManagementAdGroupCriterionBase ]
      [ sh:node microsoftads:CampaignManagementBiddableAdGroupCriterionShape ; sh:class microsoftads:CampaignManagementBiddableAdGroupCriterion ]
      [ sh:node microsoftads:CampaignManagementNegativeAdGroupCriterionShape ; sh:class microsoftads:CampaignManagementNegativeAdGroupCriterion ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Ad Groups By Campaign Id Request
microsoftads:CampaignManagementGetAdGroupsByCampaignIdRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetAdGroupsByCampaignIdRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAdGroupsByCampaignIdRequest/campaignId> ;
    sh:name "campaign id" ;
    sh:description "The identifier of the campaign that contains the ad groups to get." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAdGroupsByCampaignIdRequest/returnAdditionalFields> ;
    sh:name "return additional fields" ;
    sh:description "The list of additional properties that you want included within each returned ad group. The additional field values enable you to get the latest features using the current version of Campaign Management API, and in the next version the corresponding elements will be included by default. This request element is optional." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Ad Groups By Campaign Id Response
microsoftads:CampaignManagementGetAdGroupsByCampaignIdResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetAdGroupsByCampaignIdResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAdGroupsByCampaignIdResponse/adGroups> ;
    sh:name "ad groups" ;
    sh:description "The list of ad groups within the specified campaign. If the campaign contains no ad groups, an empty array is returned." ;
    sh:node microsoftads:CampaignManagementAdGroupShape ;
    sh:class microsoftads:CampaignManagementAdGroup ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Ad Groups By Ids Request
microsoftads:CampaignManagementGetAdGroupsByIdsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetAdGroupsByIdsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAdGroupsByIdsRequest/campaignId> ;
    sh:name "campaign id" ;
    sh:description "The identifier of the campaign that contains the ad groups to get." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAdGroupsByIdsRequest/adGroupIds> ;
    sh:name "ad group ids" ;
    sh:description "A maximum of 1,000 identifiers of the ad groups to get." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAdGroupsByIdsRequest/returnAdditionalFields> ;
    sh:name "return additional fields" ;
    sh:description "The list of additional properties that you want included within each returned ad group. The additional field values enable you to get the latest features using the current version of Campaign Management API, and in the next version the corresponding elements will be included by default. This request element is optional." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Ad Groups By Ids Response
microsoftads:CampaignManagementGetAdGroupsByIdsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetAdGroupsByIdsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAdGroupsByIdsResponse/adGroups> ;
    sh:name "ad groups" ;
    sh:description "The list of ad groups that correspond directly to the ad group identifiers that you specified in the request. Items of the list may be returned as null. For each list index where an ad group was not retrieved, the corresponding element will be null." ;
    sh:node microsoftads:CampaignManagementAdGroupShape ;
    sh:class microsoftads:CampaignManagementAdGroup ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAdGroupsByIdsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "The list of batch errors that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Ads By Ad Group Id Request
microsoftads:CampaignManagementGetAdsByAdGroupIdRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetAdsByAdGroupIdRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAdsByAdGroupIdRequest/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "The identifier of the ad group to retrieve the ads from." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAdsByAdGroupIdRequest/adTypes> ;
    sh:name "ad types" ;
    sh:description "One or more ad types to retrieve." ;
    sh:datatype xsd:string ;
    sh:in ( "Text" "Image" "Product" "AppInstall" "ExpandedText" "DynamicSearch" "ResponsiveAd" "ResponsiveSearch" "Hotel" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAdsByAdGroupIdRequest/returnAdditionalFields> ;
    sh:name "return additional fields" ;
    sh:description "The list of additional properties that you want included within each returned ad. The additional field values enable you to get the latest features using the current version of Campaign Management API, and in the next version the corresponding elements will be included by default. This request element is optional." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Ads By Ad Group Id Response
microsoftads:CampaignManagementGetAdsByAdGroupIdResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetAdsByAdGroupIdResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAdsByAdGroupIdResponse/ads> ;
    sh:name "ads" ;
    sh:description "The list of ads that have been retrieved. If the ad group doesn't contain ads, this array is empty." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementAdShape ; sh:class microsoftads:CampaignManagementAd ]
      [ sh:node microsoftads:CampaignManagementAdBaseShape ; sh:class microsoftads:CampaignManagementAdBase ]
      [ sh:node microsoftads:CampaignManagementAppInstallAdShape ; sh:class microsoftads:CampaignManagementAppInstallAd ]
      [ sh:node microsoftads:CampaignManagementDynamicSearchAdShape ; sh:class microsoftads:CampaignManagementDynamicSearchAd ]
      [ sh:node microsoftads:CampaignManagementExpandedTextAdShape ; sh:class microsoftads:CampaignManagementExpandedTextAd ]
      [ sh:node microsoftads:CampaignManagementHotelAdShape ; sh:class microsoftads:CampaignManagementHotelAd ]
      [ sh:node microsoftads:CampaignManagementProductAdShape ; sh:class microsoftads:CampaignManagementProductAd ]
      [ sh:node microsoftads:CampaignManagementResponsiveAdShape ; sh:class microsoftads:CampaignManagementResponsiveAd ]
      [ sh:node microsoftads:CampaignManagementResponsiveSearchAdShape ; sh:class microsoftads:CampaignManagementResponsiveSearchAd ]
      [ sh:node microsoftads:CampaignManagementTextAdShape ; sh:class microsoftads:CampaignManagementTextAd ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Ads By Editorial Status Request
microsoftads:CampaignManagementGetAdsByEditorialStatusRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetAdsByEditorialStatusRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAdsByEditorialStatusRequest/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "The identifier of the ad group to retrieve the ads from." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAdsByEditorialStatusRequest/editorialStatus> ;
    sh:name "editorial status" ;
    sh:description "The editorial review status that the ads must have to be returned." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Disapproved" "Inactive" "ActiveLimited" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAdsByEditorialStatusRequest/adTypes> ;
    sh:name "ad types" ;
    sh:description "One or more types of ads to return." ;
    sh:datatype xsd:string ;
    sh:in ( "Text" "Image" "Product" "AppInstall" "ExpandedText" "DynamicSearch" "ResponsiveAd" "ResponsiveSearch" "Hotel" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAdsByEditorialStatusRequest/returnAdditionalFields> ;
    sh:name "return additional fields" ;
    sh:description "The additional field values enable you to get the latest features using the current version of Campaign Management API, and in the next version the corresponding elements will be included by default. This request element is optional." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Ads By Editorial Status Response
microsoftads:CampaignManagementGetAdsByEditorialStatusResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetAdsByEditorialStatusResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAdsByEditorialStatusResponse/ads> ;
    sh:name "ads" ;
    sh:description "The list of ads that have been retrieved. If the ad group doesn't contain ads that meet the criteria, this array is empty." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementAdShape ; sh:class microsoftads:CampaignManagementAd ]
      [ sh:node microsoftads:CampaignManagementAdBaseShape ; sh:class microsoftads:CampaignManagementAdBase ]
      [ sh:node microsoftads:CampaignManagementAppInstallAdShape ; sh:class microsoftads:CampaignManagementAppInstallAd ]
      [ sh:node microsoftads:CampaignManagementDynamicSearchAdShape ; sh:class microsoftads:CampaignManagementDynamicSearchAd ]
      [ sh:node microsoftads:CampaignManagementExpandedTextAdShape ; sh:class microsoftads:CampaignManagementExpandedTextAd ]
      [ sh:node microsoftads:CampaignManagementHotelAdShape ; sh:class microsoftads:CampaignManagementHotelAd ]
      [ sh:node microsoftads:CampaignManagementProductAdShape ; sh:class microsoftads:CampaignManagementProductAd ]
      [ sh:node microsoftads:CampaignManagementResponsiveAdShape ; sh:class microsoftads:CampaignManagementResponsiveAd ]
      [ sh:node microsoftads:CampaignManagementResponsiveSearchAdShape ; sh:class microsoftads:CampaignManagementResponsiveSearchAd ]
      [ sh:node microsoftads:CampaignManagementTextAdShape ; sh:class microsoftads:CampaignManagementTextAd ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Ads By Ids Request
microsoftads:CampaignManagementGetAdsByIdsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetAdsByIdsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAdsByIdsRequest/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "The identifier of the ad group that contains the ads to get." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAdsByIdsRequest/adIds> ;
    sh:name "ad ids" ;
    sh:description "A maximum of 20 identifiers of the requested ads. If the ad identifiers do not match the requested ad types, then the operation will return a batch error for each requested ad." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAdsByIdsRequest/adTypes> ;
    sh:name "ad types" ;
    sh:description "One or more types of ads to return." ;
    sh:datatype xsd:string ;
    sh:in ( "Text" "Image" "Product" "AppInstall" "ExpandedText" "DynamicSearch" "ResponsiveAd" "ResponsiveSearch" "Hotel" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAdsByIdsRequest/returnAdditionalFields> ;
    sh:name "return additional fields" ;
    sh:description "The additional field values enable you to get the latest features using the current version of Campaign Management API, and in the next version the corresponding elements will be included by default. This request element is optional." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Ads By Ids Response
microsoftads:CampaignManagementGetAdsByIdsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetAdsByIdsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAdsByIdsResponse/ads> ;
    sh:name "ads" ;
    sh:description "An array of Ad objects that corresponds directly to the ad identifiers that you specified in the request. Items of the list may be returned as null. For each list index where an ad was not retrieved, the corresponding element will be null." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementAdShape ; sh:class microsoftads:CampaignManagementAd ]
      [ sh:node microsoftads:CampaignManagementAdBaseShape ; sh:class microsoftads:CampaignManagementAdBase ]
      [ sh:node microsoftads:CampaignManagementAppInstallAdShape ; sh:class microsoftads:CampaignManagementAppInstallAd ]
      [ sh:node microsoftads:CampaignManagementDynamicSearchAdShape ; sh:class microsoftads:CampaignManagementDynamicSearchAd ]
      [ sh:node microsoftads:CampaignManagementExpandedTextAdShape ; sh:class microsoftads:CampaignManagementExpandedTextAd ]
      [ sh:node microsoftads:CampaignManagementHotelAdShape ; sh:class microsoftads:CampaignManagementHotelAd ]
      [ sh:node microsoftads:CampaignManagementProductAdShape ; sh:class microsoftads:CampaignManagementProductAd ]
      [ sh:node microsoftads:CampaignManagementResponsiveAdShape ; sh:class microsoftads:CampaignManagementResponsiveAd ]
      [ sh:node microsoftads:CampaignManagementResponsiveSearchAdShape ; sh:class microsoftads:CampaignManagementResponsiveSearchAd ]
      [ sh:node microsoftads:CampaignManagementTextAdShape ; sh:class microsoftads:CampaignManagementTextAd ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAdsByIdsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Annotation Opt Out Response
microsoftads:CampaignManagementGetAnnotationOptOutResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetAnnotationOptOutResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAnnotationOptOutResponse/justification> ;
    sh:name "justification" ;
    sh:description "The justifcation text." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAnnotationOptOutResponse/annotationOptOuts> ;
    sh:name "annotation opt outs" ;
    sh:description "An array of annotation opt out data objects." ;
    sh:node microsoftads:CampaignManagementAnnotationOptOutShape ;
    sh:class microsoftads:CampaignManagementAnnotationOptOut ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAnnotationOptOutResponse/isAccountOptOut> ;
    sh:name "is account opt out" ;
    sh:description "Whether or not the account is opted out." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAnnotationOptOutResponse/isCustomerOptOut> ;
    sh:name "is customer opt out" ;
    sh:description "Whether or not the customer is opted out." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAnnotationOptOutResponse/isCustomerOptOutOfEverything> ;
    sh:name "is customer opt out of everything" ;
    sh:description "Whether or not the customer is opted out of everything." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAnnotationOptOutResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Asset Group Listing Groups By Ids Request
microsoftads:CampaignManagementGetAssetGroupListingGroupsByIdsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetAssetGroupListingGroupsByIdsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAssetGroupListingGroupsByIdsRequest/assetGroupListingGroupIds> ;
    sh:name "asset group listing group ids" ;
    sh:description "A list of identifiers that identify the listing groups that had the action applied. The list of identifiers corresponds directly to the list of listing groups in the request. If any listing group action failed, then all remaining listing group actions will fail, and all elements in this list will be null." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAssetGroupListingGroupsByIdsRequest/assetGroupId> ;
    sh:name "asset group id" ;
    sh:description "The ID of the AssetGroup." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAssetGroupListingGroupsByIdsRequest/returnAdditionalFields> ;
    sh:name "return additional fields" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Asset Group Listing Groups By Ids Response
microsoftads:CampaignManagementGetAssetGroupListingGroupsByIdsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetAssetGroupListingGroupsByIdsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAssetGroupListingGroupsByIdsResponse/assetGroupListingGroups> ;
    sh:name "asset group listing groups" ;
    sh:description "The list of listing groups that correspond directly to the identifiers specified in the request. If an identifier in the list is not valid, the corresponding item in the response is set to null." ;
    sh:node microsoftads:CampaignManagementAssetGroupListingGroupShape ;
    sh:class microsoftads:CampaignManagementAssetGroupListingGroup ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Asset Groups By Campaign Id Request
microsoftads:CampaignManagementGetAssetGroupsByCampaignIdRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetAssetGroupsByCampaignIdRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAssetGroupsByCampaignIdRequest/returnAdditionalFields> ;
    sh:name "return additional fields" ;
    sh:description "The additional field values enable you to get the latest features using the current version of Campaign Management API, and in the next version the corresponding elements will be included by default. This request element is optional." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAssetGroupsByCampaignIdRequest/campaignId> ;
    sh:name "campaign id" ;
    sh:description "The ID of the performance max campaign." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Asset Groups By Campaign Id Response
microsoftads:CampaignManagementGetAssetGroupsByCampaignIdResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetAssetGroupsByCampaignIdResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAssetGroupsByCampaignIdResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAssetGroupsByCampaignIdResponse/assetGroups> ;
    sh:name "asset groups" ;
    sh:description "Array of asset groups to update for the specified campaign. A maximum of 100 asset groups can be specified in a single call." ;
    sh:node microsoftads:CampaignManagementAssetGroupShape ;
    sh:class microsoftads:CampaignManagementAssetGroup ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Asset Groups By Ids Request
microsoftads:CampaignManagementGetAssetGroupsByIdsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetAssetGroupsByIdsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAssetGroupsByIdsRequest/returnAdditionalFields> ;
    sh:name "return additional fields" ;
    sh:description "The additional field values enable you to get the latest features using the current version of Campaign Management API, and in the next version the corresponding elements will be included by default. This request element is optional." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAssetGroupsByIdsRequest/campaignId> ;
    sh:name "campaign id" ;
    sh:description "The ID of the performance max campaign." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAssetGroupsByIdsRequest/assetGroupIds> ;
    sh:name "asset group ids" ;
    sh:description "Array of asset group ids to update for the specified campaign. A maximum of 100 asset groups can be specified in a single call." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Campaign Management Get Asset Groups By Ids Response
microsoftads:CampaignManagementGetAssetGroupsByIdsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetAssetGroupsByIdsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAssetGroupsByIdsResponse/assetGroups> ;
    sh:name "asset groups" ;
    sh:description "Array of asset groups to update for the specified campaign. A maximum of 100 asset groups can be specified in a single call." ;
    sh:node microsoftads:CampaignManagementAssetGroupShape ;
    sh:class microsoftads:CampaignManagementAssetGroup ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAssetGroupsByIdsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Asset Groups Editorial Reasons Request
microsoftads:CampaignManagementGetAssetGroupsEditorialReasonsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetAssetGroupsEditorialReasonsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAssetGroupsEditorialReasonsRequest/accountId> ;
    sh:name "account id" ;
    sh:description "The identifier of the account that owns the asset groups." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAssetGroupsEditorialReasonsRequest/assetGroupIdToCampaignIdAssociations> ;
    sh:name "asset group id to campaign id associations" ;
    sh:description "The list of asset groups and corresponding entity associations to get." ;
    sh:node microsoftads:CampaignManagementEntityIdToParentIdAssociationShape ;
    sh:class microsoftads:CampaignManagementEntityIdToParentIdAssociation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Asset Groups Editorial Reasons Response
microsoftads:CampaignManagementGetAssetGroupsEditorialReasonsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetAssetGroupsEditorialReasonsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAssetGroupsEditorialReasonsResponse/editorialReasons> ;
    sh:name "editorial reasons" ;
    sh:description "The collection of asset group editorial reasons." ;
    sh:node microsoftads:CampaignManagementAssetGroupEditorialReasonCollectionShape ;
    sh:class microsoftads:CampaignManagementAssetGroupEditorialReasonCollection ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAssetGroupsEditorialReasonsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Audience Group Asset Group Associations By Asset Group Ids Request
microsoftads:CampaignManagementGetAudienceGroupAssetGroupAssociationsByAssetGroupIdsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetAudienceGroupAssetGroupAssociationsByAssetGroupIdsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAudienceGroupAssetGroupAssociationsByAssetGroupIdsRequest/assetGroupIds> ;
    sh:name "asset group ids" ;
    sh:description "The list of AssetGroup ids used to fetch the associations. The maximum size of the list is 100 items per service request." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Campaign Management Get Audience Group Asset Group Associations By Asset Group Ids Response
microsoftads:CampaignManagementGetAudienceGroupAssetGroupAssociationsByAssetGroupIdsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetAudienceGroupAssetGroupAssociationsByAssetGroupIdsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAudienceGroupAssetGroupAssociationsByAssetGroupIdsResponse/audienceGroupAssetGroupAssociations> ;
    sh:name "audience group asset group associations" ;
    sh:description "The list of Audience Group associations. The maximum size of the list is 100 items per service request." ;
    sh:node microsoftads:CampaignManagementAudienceGroupAssetGroupAssociationShape ;
    sh:class microsoftads:CampaignManagementAudienceGroupAssetGroupAssociation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAudienceGroupAssetGroupAssociationsByAssetGroupIdsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Audience Group Asset Group Associations By Audience Group Ids Request
microsoftads:CampaignManagementGetAudienceGroupAssetGroupAssociationsByAudienceGroupIdsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetAudienceGroupAssetGroupAssociationsByAudienceGroupIdsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAudienceGroupAssetGroupAssociationsByAudienceGroupIdsRequest/audienceGroupIds> ;
    sh:name "audience group ids" ;
    sh:description "The list of AudienceGroup ids used to fetch the associations. You can include a maximum of 100 IDs in a single call." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Campaign Management Get Audience Group Asset Group Associations By Audience Group Ids Response
microsoftads:CampaignManagementGetAudienceGroupAssetGroupAssociationsByAudienceGroupIdsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetAudienceGroupAssetGroupAssociationsByAudienceGroupIdsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAudienceGroupAssetGroupAssociationsByAudienceGroupIdsResponse/audienceGroupAssetGroupAssociations> ;
    sh:name "audience group asset group associations" ;
    sh:description "The list of Audience Group associations to get. The maximum size of the list is 100 items per service request." ;
    sh:node microsoftads:CampaignManagementAudienceGroupAssetGroupAssociationShape ;
    sh:class microsoftads:CampaignManagementAudienceGroupAssetGroupAssociation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAudienceGroupAssetGroupAssociationsByAudienceGroupIdsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Audience Groups By Ids Request
microsoftads:CampaignManagementGetAudienceGroupsByIdsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetAudienceGroupsByIdsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAudienceGroupsByIdsRequest/returnAdditionalFields> ;
    sh:name "return additional fields" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAudienceGroupsByIdsRequest/audienceGroupIds> ;
    sh:name "audience group ids" ;
    sh:description "Array of audience group ids to get. The maximum size of the list is 100 items per service request. If you leave this element nil or empty, then the operation will return all audience groups in the account." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Campaign Management Get Audience Groups By Ids Response
microsoftads:CampaignManagementGetAudienceGroupsByIdsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetAudienceGroupsByIdsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAudienceGroupsByIdsResponse/audienceGroups> ;
    sh:name "audience groups" ;
    sh:description "Array of audience groups. The maximum size of the list is 100 items per service request." ;
    sh:node microsoftads:CampaignManagementAudienceGroupShape ;
    sh:class microsoftads:CampaignManagementAudienceGroup ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAudienceGroupsByIdsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Audiences By Ids Request
microsoftads:CampaignManagementGetAudiencesByIdsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetAudiencesByIdsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAudiencesByIdsRequest/type> ;
    sh:name "type" ;
    sh:description "The type of audiences to return. You may include multiple values as flags. How you specify multiple flags depends on the programming language that you use. For example, C# treats these values as flag values and Java treats them as an array of strings. The SOAP should include a string that contains a space-delimited list of values for example, RemarketingList SimilarRemarketingList." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAudiencesByIdsRequest/returnAdditionalFields> ;
    sh:name "return additional fields" ;
    sh:description "The additional field values enable you to get the latest features using the current version of Campaign Management API, and in the next version the corresponding elements will be included by default. This request element is optional." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAudiencesByIdsRequest/audienceIds> ;
    sh:name "audience ids" ;
    sh:description "A maximum of 100 identifiers of the requested audiences. This request element is optional. If this element is null or empty, then you are effectively requesting all customer and account scoped audiences for the specified account. If the audience identifiers do not match the requested audience types, then the operation will return a batch error for each requested audience ID." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Campaign Management Get Audiences By Ids Response
microsoftads:CampaignManagementGetAudiencesByIdsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetAudiencesByIdsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAudiencesByIdsResponse/audiences> ;
    sh:name "audiences" ;
    sh:description "The list of audiences that corresponds directly to the audience identifiers that you specified in the request. Items of the list may be returned as null. For each list index where an audience was not retrieved, the corresponding element will be null." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementAudienceShape ; sh:class microsoftads:CampaignManagementAudience ]
      [ sh:node microsoftads:CampaignManagementAudienceBaseShape ; sh:class microsoftads:CampaignManagementAudienceBase ]
      [ sh:node microsoftads:CampaignManagementCombinedListShape ; sh:class microsoftads:CampaignManagementCombinedList ]
      [ sh:node microsoftads:CampaignManagementCustomAudienceShape ; sh:class microsoftads:CampaignManagementCustomAudience ]
      [ sh:node microsoftads:CampaignManagementCustomSegmentShape ; sh:class microsoftads:CampaignManagementCustomSegment ]
      [ sh:node microsoftads:CampaignManagementCustomerListShape ; sh:class microsoftads:CampaignManagementCustomerList ]
      [ sh:node microsoftads:CampaignManagementImpressionBasedRemarketingListShape ; sh:class microsoftads:CampaignManagementImpressionBasedRemarketingList ]
      [ sh:node microsoftads:CampaignManagementInMarketAudienceShape ; sh:class microsoftads:CampaignManagementInMarketAudience ]
      [ sh:node microsoftads:CampaignManagementProductAudienceShape ; sh:class microsoftads:CampaignManagementProductAudience ]
      [ sh:node microsoftads:CampaignManagementRemarketingListShape ; sh:class microsoftads:CampaignManagementRemarketingList ]
      [ sh:node microsoftads:CampaignManagementSimilarRemarketingListShape ; sh:class microsoftads:CampaignManagementSimilarRemarketingList ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetAudiencesByIdsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Bid Strategies By Ids Request
microsoftads:CampaignManagementGetBidStrategiesByIdsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetBidStrategiesByIdsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetBidStrategiesByIdsRequest/bidStrategyIds> ;
    sh:name "bid strategy ids" ;
    sh:description "A list of unique bid strategy identifiers that identify the bid strategies to get. You can include a maximum of 100 IDs in a single call. The bid strategy IDs must be in the same account that you specified in the required CustomerAccountId header element. If you leave this element nil or empty, then the operation will return all portfolio bid strategies in the account." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetBidStrategiesByIdsRequest/scope> ;
    sh:name "scope" ;
    sh:description "A nullable field used to retrieve bid strategy IDs in the request for the specified scope. If no scope is provided, the default is Account. If a bid strategy ID in the request belongs to the Account scope but the request scope is set to Customer, the call for those bid strategy IDs will fail with a PortfolioBidStrategyIdInvalid error." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Account" "Customer" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetBidStrategiesByIdsRequest/returnAdditionalFields> ;
    sh:name "return additional fields" ;
    sh:description "The list of additional properties that you want included within each returned bid strategy. The additional field values enable you to get the latest features using the current version of Campaign Management API, and in the next version the corresponding elements will be included by default. This request element is optional." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Bid Strategies By Ids Response
microsoftads:CampaignManagementGetBidStrategiesByIdsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetBidStrategiesByIdsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetBidStrategiesByIdsResponse/bidStrategies> ;
    sh:name "bid strategies" ;
    sh:description "An array of BidStrategy objects that corresponds directly to the bid strategy identifiers that you specified in the request. Items of the list may be returned as null. For each list index where a bid strategy was not retrieved, the corresponding element will be null." ;
    sh:node microsoftads:CampaignManagementBidStrategyShape ;
    sh:class microsoftads:CampaignManagementBidStrategy ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetBidStrategiesByIdsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get BMCStores By Customer Id Request
microsoftads:CampaignManagementGetBMCStoresByCustomerIdRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetBMCStoresByCustomerIdRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetBMCStoresByCustomerIdRequest/returnAdditionalFields> ;
    sh:name "return additional fields" ;
    sh:description "The list of additional stores that you want included. The additional field values enable you to get the latest features using the current version of Campaign Management API, and in the next version the corresponding elements will be included by default. This request element is optional." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get BMCStores By Customer Id Response
microsoftads:CampaignManagementGetBMCStoresByCustomerIdResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetBMCStoresByCustomerIdResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetBMCStoresByCustomerIdResponse/bMCStores> ;
    sh:name "b mcstores" ;
    sh:description "The list of Microsoft Merchant Center stores for the specified customer." ;
    sh:node microsoftads:CampaignManagementBMCStoreShape ;
    sh:class microsoftads:CampaignManagementBMCStore ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Brand Kits By Account Id Request
microsoftads:CampaignManagementGetBrandKitsByAccountIdRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetBrandKitsByAccountIdRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetBrandKitsByAccountIdRequest/accountId> ;
    sh:name "account id" ;
    sh:description "The Microsoft Advertising identifier of the account." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Brand Kits By Account Id Response
microsoftads:CampaignManagementGetBrandKitsByAccountIdResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetBrandKitsByAccountIdResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetBrandKitsByAccountIdResponse/brandKits> ;
    sh:name "brand kits" ;
    sh:description "A list of brand kits to be retrieved for the specified account." ;
    sh:node microsoftads:CampaignManagementBrandKitShape ;
    sh:class microsoftads:CampaignManagementBrandKit ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Brand Kits By Ids Request
microsoftads:CampaignManagementGetBrandKitsByIdsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetBrandKitsByIdsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetBrandKitsByIdsRequest/accountId> ;
    sh:name "account id" ;
    sh:description "The Microsoft Advertising identifier of the account." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetBrandKitsByIdsRequest/brandKitIds> ;
    sh:name "brand kit ids" ;
    sh:description "The identifiers of the BrandKits to retrieve." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Campaign Management Get Brand Kits By Ids Response
microsoftads:CampaignManagementGetBrandKitsByIdsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetBrandKitsByIdsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetBrandKitsByIdsResponse/brandKits> ;
    sh:name "brand kits" ;
    sh:description "A list of BrandKits to be retrieved for the specified account." ;
    sh:node microsoftads:CampaignManagementBrandKitShape ;
    sh:class microsoftads:CampaignManagementBrandKit ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetBrandKitsByIdsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array BatchError that contains details for any request items that were not successful. The list of errors does not correspond directly to the list of items in the request. The list can be empty if there were no errors, or it can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get BSCCountries Response
microsoftads:CampaignManagementGetBSCCountriesResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetBSCCountriesResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetBSCCountriesResponse/countryCodes> ;
    sh:name "country codes" ;
    sh:description "The list of supported sales country codes for Microsoft Shopping Campaigns. For example, supported country codes include AD (Andorra), AL (Albania), AR (Argentina), AW (Aruba), AT (Austria), AU (Australia), BS (Bahamas), BD (Bangladesh), BA (Bosnia and Herzegovina), BE (Belgium), BO (Bolivia), BG (Bulgaria), BR (Brazil), BN (Brunei), CA (Canada), KY (Cayman Islands), CH (Switzerland), CL (Chile), CO (Colombia), CR (Costa Rica), CY (Cyprus), CZ (Czech Republic), DE (Germany), DK (Denmark), DM (Dominica), DO (Dominican Republic), EC (Ecuador), SV (El Salvador), EE (Estonia), ES (Spain), FJ (Fiji), FI (Finland), FR (France), GF (French Guiana), PF (French Polynesia), GB (Great Britain), GR (Greece), GU (Guam), GT (Guatemala), GY (Guyana), HT (Haiti), HN (Honduras), HR (Croatia), HU (Hungary),ID (Indonesia), IE (Ireland), IN (India), IS (Iceland), IT (Italy), LI (Liechtenstein), LT (Lithuania), LU (Luxembourg), LV (Latvia), MV (Maldives), MC (Monaco), ME (Montenegro), MK (North Macedonia), MT (Malta), MQ (Martinique),MY (Malaysia), MX (Mexico), MN (Mongolia), MS (Montserrat), NP (Nepal), NL (Netherlands), NC (New Caledonia), NO (Norway), NZ (New Zealand), PA (Panama), PG (Papua New Guinea), PH (Philippines), PY (Paraguay), PE (Peru), PL (Poland), PT (Portugal), PR (Puerto Rico), RO (Romania), RS (Serbia), LK (Sri Lanka), SE (Sweden), SG (Singapore), SI (Slovenia), SK (Slovakia), SM (San Marino), TH (Thailand), TT (Trinidad and Tobago), TR (Turkey), US (United States), UT (Uruguay), VA (Vatican City), VE (Venezuela),VN (Vietnam), ZA (South Africa). You can pass any one of the returned values in the SalesCountryCode element of a ShoppingSetting object." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Campaign Management Get Budgets By Ids Request
microsoftads:CampaignManagementGetBudgetsByIdsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetBudgetsByIdsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetBudgetsByIdsRequest/budgetIds> ;
    sh:name "budget ids" ;
    sh:description "A list of unique budget identifiers that identify the budgets to get. You can specify a maximum of 100 IDs. The budget IDs must be in the same account that you specified in the required CustomerAccountId header element. If you leave this element nil or empty, then the operation will return all budgets that are available to be shared with campaigns in the account." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Campaign Management Get Budgets By Ids Response
microsoftads:CampaignManagementGetBudgetsByIdsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetBudgetsByIdsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetBudgetsByIdsResponse/budgets> ;
    sh:name "budgets" ;
    sh:description "An array of Budget objects that corresponds directly to the budget identifiers that you specified in the request. Items of the list may be returned as null. For each list index where a budget was not retrieved, the corresponding element will be null." ;
    sh:node microsoftads:CampaignManagementBudgetShape ;
    sh:class microsoftads:CampaignManagementBudget ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetBudgetsByIdsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Campaign Criterions By Ids Request
microsoftads:CampaignManagementGetCampaignCriterionsByIdsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetCampaignCriterionsByIdsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetCampaignCriterionsByIdsRequest/campaignId> ;
    sh:name "campaign id" ;
    sh:description "The unique identifier of the campaign whose criterions you want to get." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetCampaignCriterionsByIdsRequest/returnAdditionalFields> ;
    sh:name "return additional fields" ;
    sh:description "The list of additional properties that you want included within each returned campaign criterion. The additional field values enable you to get the latest features using the current version of Campaign Management API, and in the next version the corresponding elements will be included by default. This request element is optional." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetCampaignCriterionsByIdsRequest/criterionType> ;
    sh:name "criterion type" ;
    sh:description "The type of criterion to get, for example Webpage. You can specify only one type. The Targets value is not allowed for this operation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetCampaignCriterionsByIdsRequest/campaignCriterionIds> ;
    sh:name "campaign criterion ids" ;
    sh:description "A list of unique identifiers that identify the campaign criterions to get. You can include up to 100 campaign criterion identifiers per request. If this element is null, all criterions for the specified CampaignId will be retrieved." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Campaign Management Get Campaign Criterions By Ids Response
microsoftads:CampaignManagementGetCampaignCriterionsByIdsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetCampaignCriterionsByIdsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetCampaignCriterionsByIdsResponse/campaignCriterions> ;
    sh:name "campaign criterions" ;
    sh:description "The list of campaign criterions that correspond directly to the identifiers specified in the request. Items of the list may be returned as null. For each list index where a criterion was not retrieved, the corresponding element will be null." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBiddableCampaignCriterionShape ; sh:class microsoftads:CampaignManagementBiddableCampaignCriterion ]
      [ sh:node microsoftads:CampaignManagementCampaignCriterionShape ; sh:class microsoftads:CampaignManagementCampaignCriterion ]
      [ sh:node microsoftads:CampaignManagementCampaignCriterionBaseShape ; sh:class microsoftads:CampaignManagementCampaignCriterionBase ]
      [ sh:node microsoftads:CampaignManagementNegativeCampaignCriterionShape ; sh:class microsoftads:CampaignManagementNegativeCampaignCriterion ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetCampaignCriterionsByIdsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Campaign Ids By Bid Strategy Ids Request
microsoftads:CampaignManagementGetCampaignIdsByBidStrategyIdsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetCampaignIdsByBidStrategyIdsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetCampaignIdsByBidStrategyIdsRequest/bidStrategyIds> ;
    sh:name "bid strategy ids" ;
    sh:description "A list of unique bid strategy identifiers that identify the campaign identifiers to get. You can specify a maximum of 100 IDs bid strategy IDs, and each bid strategy could be shared by up to 10,000 campaign identifiers. For each bid strategy ID that you specify in the request, an IdCollection that contains between 1 and 10,000 campaign identifers will be returned. The bid strategy IDs must be in the same account that you specified in the required CustomerAccountId header element." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetCampaignIdsByBidStrategyIdsRequest/scope> ;
    sh:name "scope" ;
    sh:description "A nullable field used to retrieve campaign IDs for the bid strategy IDs in the request for the specified scope. If no scope is provided, the default is Account. If a bid strategy ID in the request belongs to the Account scope but the request scope is set to Customer, the call for those bid strategy IDs will fail with a PortfolioBidStrategyIdInvalid error." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Account" "Customer" ) ;
  ] .

# Shape for Campaign Management Get Campaign Ids By Bid Strategy Ids Response
microsoftads:CampaignManagementGetCampaignIdsByBidStrategyIdsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetCampaignIdsByBidStrategyIdsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetCampaignIdsByBidStrategyIdsResponse/campaignIdCollection> ;
    sh:name "campaign id collection" ;
    sh:description "The list of campaign id collections that corresponds directly to the bid strategy identifiers that you specified in the request. Items of the list may be returned as null. For each list index where an id collection was not retrieved, the corresponding element will be null." ;
    sh:node microsoftads:CampaignManagementIdCollectionShape ;
    sh:class microsoftads:CampaignManagementIdCollection ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetCampaignIdsByBidStrategyIdsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Campaign Ids By Budget Ids Request
microsoftads:CampaignManagementGetCampaignIdsByBudgetIdsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetCampaignIdsByBudgetIdsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetCampaignIdsByBudgetIdsRequest/budgetIds> ;
    sh:name "budget ids" ;
    sh:description "A list of unique budget identifiers that identify the campaign identifiers to get. You can specify a maximum of 100 budget IDs, and each budget could be shared by up to 10,000 campaign identifiers. For each budget ID that you specify in the request, an IdCollection that contains between 1 and 10,000 campaign identifers will be returned. The budget IDs must be in the same account that you specified in the required CustomerAccountId header element." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Campaign Management Get Campaign Ids By Budget Ids Response
microsoftads:CampaignManagementGetCampaignIdsByBudgetIdsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetCampaignIdsByBudgetIdsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetCampaignIdsByBudgetIdsResponse/campaignIdCollection> ;
    sh:name "campaign id collection" ;
    sh:description "The list of campaign id collections that corresponds directly to the budget identifiers that you specified in the request. Items of the list may be returned as null. For each list index where an id collection was not retrieved, the corresponding element will be null." ;
    sh:node microsoftads:CampaignManagementIdCollectionShape ;
    sh:class microsoftads:CampaignManagementIdCollection ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetCampaignIdsByBudgetIdsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Campaigns By Account Id Request
microsoftads:CampaignManagementGetCampaignsByAccountIdRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetCampaignsByAccountIdRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetCampaignsByAccountIdRequest/accountId> ;
    sh:name "account id" ;
    sh:description "The identifier of the account that contains the campaigns to get." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetCampaignsByAccountIdRequest/campaignType> ;
    sh:name "campaign type" ;
    sh:description "The type of campaign to get, for example Search, Shopping, or DynamicSearchAds. This request element is optional. If you do not set any campaign type, the default value is Search i.e., only Search campaigns will be returned. You may include multiple values as flags. How you specify multiple flags depends on the programming language that you use. For example, C# treats these values as flag values and Java treats them as an array of strings. The SOAP should include a string that contains a space-delimited list of values for example, Search Shopping." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetCampaignsByAccountIdRequest/returnAdditionalFields> ;
    sh:name "return additional fields" ;
    sh:description "The list of additional properties that you want included within each returned campaign. The additional field values enable you to get the latest features using the current version of Campaign Management API, and in the next version the corresponding elements will be included by default. This request element is optional." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Campaigns By Account Id Response
microsoftads:CampaignManagementGetCampaignsByAccountIdResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetCampaignsByAccountIdResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetCampaignsByAccountIdResponse/campaigns> ;
    sh:name "campaigns" ;
    sh:description "The list of campaigns that were retrieved. If no campaigns exist, an empty array is returned." ;
    sh:node microsoftads:CampaignManagementCampaignShape ;
    sh:class microsoftads:CampaignManagementCampaign ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Campaigns By Ids Request
microsoftads:CampaignManagementGetCampaignsByIdsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetCampaignsByIdsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetCampaignsByIdsRequest/accountId> ;
    sh:name "account id" ;
    sh:description "The identifier of the account that contains the campaigns to get." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetCampaignsByIdsRequest/campaignIds> ;
    sh:name "campaign ids" ;
    sh:description "A maximum of 100 identifiers of the campaigns to get from the specified account. The identifiers must correspond to campaigns of the specified CampaignType or types, and otherwise the service will return error code EntityIdFilterMismatch (Code 516)." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetCampaignsByIdsRequest/campaignType> ;
    sh:name "campaign type" ;
    sh:description "The type of campaigns to get, for example Search, Shopping, or DynamicSearchAds. This request element is optional. If you do not set any campaign type, the default value is Search i.e., only Search campaigns will be returned. You may include multiple values as flags. How you specify multiple flags depends on the programming language that you use. For example, C# treats these values as flag values and Java treats them as an array of strings. The SOAP should include a string that contains a space-delimited list of values for example, Search Shopping." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetCampaignsByIdsRequest/returnAdditionalFields> ;
    sh:name "return additional fields" ;
    sh:description "The list of additional properties that you want included within each returned campaign. The additional field values enable you to get the latest features using the current version of Campaign Management API, and in the next version the corresponding elements will be included by default. This request element is optional." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Campaigns By Ids Response
microsoftads:CampaignManagementGetCampaignsByIdsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetCampaignsByIdsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetCampaignsByIdsResponse/campaigns> ;
    sh:name "campaigns" ;
    sh:description "An array of Campaign objects that corresponds directly to the campaign identifiers that you specified in the request. Items of the list may be returned as null. For each list index where a campaign was not retrieved, the corresponding element will be null." ;
    sh:node microsoftads:CampaignManagementCampaignShape ;
    sh:class microsoftads:CampaignManagementCampaign ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetCampaignsByIdsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any campaigns that were not successfully retrieved. The list of errors corresponds directly to the list of campaigns in the request. Items of the list may be returned as null. For each list index where a campaign was successfully retrieved, the corresponding error element will be null. Ideally all campaigns are retrieved successfully and all elements in this list are null." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Campaign Sizes By Account Id Request
microsoftads:CampaignManagementGetCampaignSizesByAccountIdRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetCampaignSizesByAccountIdRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetCampaignSizesByAccountIdRequest/accountId> ;
    sh:name "account id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetCampaignSizesByAccountIdRequest/campaignIds> ;
    sh:name "campaign ids" ;
    sh:datatype xsd:long ;
  ] .

# Shape for Campaign Management Get Campaign Sizes By Account Id Response
microsoftads:CampaignManagementGetCampaignSizesByAccountIdResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetCampaignSizesByAccountIdResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetCampaignSizesByAccountIdResponse/campaignSizes> ;
    sh:name "campaign sizes" ;
    sh:node microsoftads:CampaignManagementCampaignSizeShape ;
    sh:class microsoftads:CampaignManagementCampaignSize ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Clipchamp Templates Request
microsoftads:CampaignManagementGetClipchampTemplatesRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetClipchampTemplatesRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetClipchampTemplatesRequest/mock> ;
    sh:name "mock" ;
    sh:description "Reserved." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetClipchampTemplatesRequest/maxAdsCount> ;
    sh:name "max ads count" ;
    sh:description "Reserved." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetClipchampTemplatesRequest/templateFilter> ;
    sh:name "template filter" ;
    sh:description "Reserved." ;
    sh:node microsoftads:CampaignManagementVideoTemplateFilterShape ;
    sh:class microsoftads:CampaignManagementVideoTemplateFilter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetClipchampTemplatesRequest/locale> ;
    sh:name "locale" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Video Template Filter
microsoftads:CampaignManagementVideoTemplateFilterShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementVideoTemplateFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideoTemplateFilter/themes> ;
    sh:name "themes" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideoTemplateFilter/aspectRatios> ;
    sh:name "aspect ratios" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideoTemplateFilter/templateIds> ;
    sh:name "template ids" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideoTemplateFilter/durations> ;
    sh:name "durations" ;
    sh:description "Reserved." ;
    sh:datatype xsd:int ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideoTemplateFilter/maxMediaAssetCount> ;
    sh:name "max media asset count" ;
    sh:description "Reserved." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideoTemplateFilter/maxTextAssetCount> ;
    sh:name "max text asset count" ;
    sh:description "Reserved." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Clipchamp Templates Response
microsoftads:CampaignManagementGetClipchampTemplatesResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetClipchampTemplatesResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetClipchampTemplatesResponse/templates> ;
    sh:name "templates" ;
    sh:description "Reserved." ;
    sh:node microsoftads:CampaignManagementClipchampTemplateInfoShape ;
    sh:class microsoftads:CampaignManagementClipchampTemplateInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Config Value Request
microsoftads:CampaignManagementGetConfigValueRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetConfigValueRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetConfigValueRequest/configKey> ;
    sh:name "config key" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Config Value Response
microsoftads:CampaignManagementGetConfigValueResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetConfigValueResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetConfigValueResponse/configValue> ;
    sh:name "config value" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Conversion Goals By Ids Request
microsoftads:CampaignManagementGetConversionGoalsByIdsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetConversionGoalsByIdsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetConversionGoalsByIdsRequest/conversionGoalTypes> ;
    sh:name "conversion goal types" ;
    sh:description "The type of conversion goals to return. You may include multiple values as flags. How you specify multiple flags depends on the programming language that you use. For example, C# treats these values as flag values and Java treats them as an array of strings. The SOAP should include a string that contains a space-delimited list of values for example, Url Duration." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetConversionGoalsByIdsRequest/returnAdditionalFields> ;
    sh:name "return additional fields" ;
    sh:description "The list of additional properties that you want included within each returned conversion goal. The additional field values enable you to get the latest features using the current version of Campaign Management API, and in the next version the corresponding elements will be included by default. This request element is optional." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetConversionGoalsByIdsRequest/conversionGoalIds> ;
    sh:name "conversion goal ids" ;
    sh:description "A maximum of 100 identifiers of the conversion goals that you want to get. If ConversionGoalIds is null or empty, then you are effectively requesting all conversion goals of the specified types for the account." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Campaign Management Get Conversion Goals By Ids Response
microsoftads:CampaignManagementGetConversionGoalsByIdsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetConversionGoalsByIdsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetConversionGoalsByIdsResponse/conversionGoals> ;
    sh:name "conversion goals" ;
    sh:description "An array of ConversionGoal objects that corresponds directly to the conversion goal identifiers that you specified in the request. Items of the array may be returned as null. For each array index where a conversion goal was not retrieved, the corresponding element will be null." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementAppDownloadGoalShape ; sh:class microsoftads:CampaignManagementAppDownloadGoal ]
      [ sh:node microsoftads:CampaignManagementAppInstallGoalShape ; sh:class microsoftads:CampaignManagementAppInstallGoal ]
      [ sh:node microsoftads:CampaignManagementConversionGoalShape ; sh:class microsoftads:CampaignManagementConversionGoal ]
      [ sh:node microsoftads:CampaignManagementConversionGoalBaseShape ; sh:class microsoftads:CampaignManagementConversionGoalBase ]
      [ sh:node microsoftads:CampaignManagementDurationGoalShape ; sh:class microsoftads:CampaignManagementDurationGoal ]
      [ sh:node microsoftads:CampaignManagementEventGoalShape ; sh:class microsoftads:CampaignManagementEventGoal ]
      [ sh:node microsoftads:CampaignManagementInStoreTransactionGoalShape ; sh:class microsoftads:CampaignManagementInStoreTransactionGoal ]
      [ sh:node microsoftads:CampaignManagementOfflineConversionGoalShape ; sh:class microsoftads:CampaignManagementOfflineConversionGoal ]
      [ sh:node microsoftads:CampaignManagementPagesViewedPerVisitGoalShape ; sh:class microsoftads:CampaignManagementPagesViewedPerVisitGoal ]
      [ sh:node microsoftads:CampaignManagementUrlGoalShape ; sh:class microsoftads:CampaignManagementUrlGoal ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetConversionGoalsByIdsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Conversion Goals By Tag Ids Request
microsoftads:CampaignManagementGetConversionGoalsByTagIdsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetConversionGoalsByTagIdsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetConversionGoalsByTagIdsRequest/conversionGoalTypes> ;
    sh:name "conversion goal types" ;
    sh:description "The type of conversion goals to return. You may include multiple values as flags. How you specify multiple flags depends on the programming language that you use. For example, C# treats these values as flag values and Java treats them as an array of strings. The SOAP should include a string that contains a space-delimited list of values for example, Url Duration." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetConversionGoalsByTagIdsRequest/returnAdditionalFields> ;
    sh:name "return additional fields" ;
    sh:description "The list of additional properties that you want included within each returned conversion goal. The additional field values enable you to get the latest features using the current version of Campaign Management API, and in the next version the corresponding elements will be included by default. This request element is optional." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetConversionGoalsByTagIdsRequest/tagIds> ;
    sh:name "tag ids" ;
    sh:description "A maximum of 100 tag identifiers that are used by the returned conversion goals." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Campaign Management Get Conversion Goals By Tag Ids Response
microsoftads:CampaignManagementGetConversionGoalsByTagIdsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetConversionGoalsByTagIdsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetConversionGoalsByTagIdsResponse/conversionGoals> ;
    sh:name "conversion goals" ;
    sh:description "The list of conversion goals do not correspond directly to the tag identifiers specified in the request because there can be multiple conversion goals that use the same tag identifier specified in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementAppDownloadGoalShape ; sh:class microsoftads:CampaignManagementAppDownloadGoal ]
      [ sh:node microsoftads:CampaignManagementAppInstallGoalShape ; sh:class microsoftads:CampaignManagementAppInstallGoal ]
      [ sh:node microsoftads:CampaignManagementConversionGoalShape ; sh:class microsoftads:CampaignManagementConversionGoal ]
      [ sh:node microsoftads:CampaignManagementConversionGoalBaseShape ; sh:class microsoftads:CampaignManagementConversionGoalBase ]
      [ sh:node microsoftads:CampaignManagementDurationGoalShape ; sh:class microsoftads:CampaignManagementDurationGoal ]
      [ sh:node microsoftads:CampaignManagementEventGoalShape ; sh:class microsoftads:CampaignManagementEventGoal ]
      [ sh:node microsoftads:CampaignManagementInStoreTransactionGoalShape ; sh:class microsoftads:CampaignManagementInStoreTransactionGoal ]
      [ sh:node microsoftads:CampaignManagementOfflineConversionGoalShape ; sh:class microsoftads:CampaignManagementOfflineConversionGoal ]
      [ sh:node microsoftads:CampaignManagementPagesViewedPerVisitGoalShape ; sh:class microsoftads:CampaignManagementPagesViewedPerVisitGoal ]
      [ sh:node microsoftads:CampaignManagementUrlGoalShape ; sh:class microsoftads:CampaignManagementUrlGoal ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetConversionGoalsByTagIdsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Conversion Value Rules By Account Id Request
microsoftads:CampaignManagementGetConversionValueRulesByAccountIdRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetConversionValueRulesByAccountIdRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetConversionValueRulesByAccountIdRequest/accountId> ;
    sh:name "account id" ;
    sh:description "Fetch conversion value rules from this account ID." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetConversionValueRulesByAccountIdRequest/lcid> ;
    sh:name "lcid" ;
    sh:description "The locale identifier (LCID) for the request. The default value is 1033 for EnglishUS. For more LCID values, see LCID Value Set" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Conversion Value Rules By Account Id Response
microsoftads:CampaignManagementGetConversionValueRulesByAccountIdResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetConversionValueRulesByAccountIdResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetConversionValueRulesByAccountIdResponse/conversionValueRules> ;
    sh:name "conversion value rules" ;
    sh:description "The conversion value rules associated with the specified account ID." ;
    sh:node microsoftads:CampaignManagementConversionValueRuleShape ;
    sh:class microsoftads:CampaignManagementConversionValueRule ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Conversion Value Rules By Ids Request
microsoftads:CampaignManagementGetConversionValueRulesByIdsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetConversionValueRulesByIdsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetConversionValueRulesByIdsRequest/ruleIds> ;
    sh:name "rule ids" ;
    sh:description "The IDs of the conversion value rules to fetch." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetConversionValueRulesByIdsRequest/lcid> ;
    sh:name "lcid" ;
    sh:description "The locale identifier (LCID) for the request. The default value is 1033 for EnglishUS. For more LCID values, see LCID Value Set" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Conversion Value Rules By Ids Response
microsoftads:CampaignManagementGetConversionValueRulesByIdsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetConversionValueRulesByIdsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetConversionValueRulesByIdsResponse/conversionValueRules> ;
    sh:name "conversion value rules" ;
    sh:description "The conversion value rules that were succesfully fetched." ;
    sh:node microsoftads:CampaignManagementConversionValueRuleShape ;
    sh:class microsoftads:CampaignManagementConversionValueRule ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetConversionValueRulesByIdsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Data Exclusions By Account Id Request
microsoftads:CampaignManagementGetDataExclusionsByAccountIdRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetDataExclusionsByAccountIdRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetDataExclusionsByAccountIdRequest/accountId> ;
    sh:name "account id" ;
    sh:description "The account ID." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Data Exclusions By Account Id Response
microsoftads:CampaignManagementGetDataExclusionsByAccountIdResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetDataExclusionsByAccountIdResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetDataExclusionsByAccountIdResponse/dataExclusions> ;
    sh:name "data exclusions" ;
    sh:description "A list of the data exclusions associated with the specified account." ;
    sh:node microsoftads:CampaignManagementDataExclusionShape ;
    sh:class microsoftads:CampaignManagementDataExclusion ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetDataExclusionsByAccountIdResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array BatchError that contains details for any request items that were not successful. The list of errors does not correspond directly to the list of items in the request. The list can be empty if there were no errors, or it can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Data Exclusions By Ids Request
microsoftads:CampaignManagementGetDataExclusionsByIdsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetDataExclusionsByIdsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetDataExclusionsByIdsRequest/accountId> ;
    sh:name "account id" ;
    sh:description "The account ID." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetDataExclusionsByIdsRequest/dataExclusionIds> ;
    sh:name "data exclusion ids" ;
    sh:description "The data exclusion IDs." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Campaign Management Get Data Exclusions By Ids Response
microsoftads:CampaignManagementGetDataExclusionsByIdsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetDataExclusionsByIdsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetDataExclusionsByIdsResponse/dataExclusions> ;
    sh:name "data exclusions" ;
    sh:description "A list of the specified data exclusions associated with the specified account." ;
    sh:node microsoftads:CampaignManagementDataExclusionShape ;
    sh:class microsoftads:CampaignManagementDataExclusion ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetDataExclusionsByIdsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array BatchError that contains details for any request items that were not successful. The list of errors does not correspond directly to the list of items in the request. The list can be empty if there were no errors, or it can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Diagnostics Request
microsoftads:CampaignManagementGetDiagnosticsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetDiagnosticsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetDiagnosticsRequest/entities> ;
    sh:name "entities" ;
    sh:description "Reserved." ;
    sh:node microsoftads:CampaignManagementDiagnosticsEntityShape ;
    sh:class microsoftads:CampaignManagementDiagnosticsEntity ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetDiagnosticsRequest/checks> ;
    sh:name "checks" ;
    sh:description "Reserved." ;
    sh:node microsoftads:CampaignManagementDiagnosticsFilterShape ;
    sh:class microsoftads:CampaignManagementDiagnosticsFilter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetDiagnosticsRequest/settings> ;
    sh:name "settings" ;
    sh:description "Reserved." ;
    sh:node microsoftads:CampaignManagementDiagnosticsSettingsShape ;
    sh:class microsoftads:CampaignManagementDiagnosticsSettings ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetDiagnosticsRequest/callerName> ;
    sh:name "caller name" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Diagnostics Response
microsoftads:CampaignManagementGetDiagnosticsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetDiagnosticsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetDiagnosticsResponse/requestStatus> ;
    sh:name "request status" ;
    sh:description "Reserved." ;
    sh:node microsoftads:CampaignManagementDiagnosticsRequestStatusShape ;
    sh:class microsoftads:CampaignManagementDiagnosticsRequestStatus ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetDiagnosticsResponse/entities> ;
    sh:name "entities" ;
    sh:description "Reserved." ;
    sh:node microsoftads:CampaignManagementEntityResultShape ;
    sh:class microsoftads:CampaignManagementEntityResult ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Editorial Reasons By Ids Request
microsoftads:CampaignManagementGetEditorialReasonsByIdsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetEditorialReasonsByIdsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetEditorialReasonsByIdsRequest/accountId> ;
    sh:name "account id" ;
    sh:description "The identifier of the account that contains the specified entities." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetEditorialReasonsByIdsRequest/entityIdToParentIdAssociations> ;
    sh:name "entity id to parent id associations" ;
    sh:description "A list of EntityIdToParentIdAssociation objects that each contain the unique system identifier of an entity such as ad or keyword, and the identifier of its parent. An ad group is the parent of an ad or keyword. The list must include all ads or all keywords which failed editorial review. The list cannot include a mix ads and keywords. The list can contain a maximum of 1,000 identifiers." ;
    sh:node microsoftads:CampaignManagementEntityIdToParentIdAssociationShape ;
    sh:class microsoftads:CampaignManagementEntityIdToParentIdAssociation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetEditorialReasonsByIdsRequest/entityType> ;
    sh:name "entity type" ;
    sh:description "The type of entities that the entity list contains. The supported entity type values are Ad and Keyword." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "None" "Campaign" "AdGroup" "Ad" "Keyword" "AssetGroup" "TextAsset" "ImageAsset" ) ;
  ] .

# Shape for Campaign Management Get Editorial Reasons By Ids Response
microsoftads:CampaignManagementGetEditorialReasonsByIdsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetEditorialReasonsByIdsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetEditorialReasonsByIdsResponse/editorialReasons> ;
    sh:name "editorial reasons" ;
    sh:description "An array of EditorialReasonCollection objects that corresponds directly to the EntityIdToParentIdAssociation objects that you specified in the request. Each object identifies the reason for the failure and whether it is appealable. Items of the list may be returned as null. For each list index where an EditorialReasonCollection was not retrieved, the corresponding element will be null. If the entity had not failed editorial review, the corresponding item in this collection is NULL. In addition, the item will be NULL if the specified ad or keyword identifier is not valid." ;
    sh:node microsoftads:CampaignManagementEditorialReasonCollectionShape ;
    sh:class microsoftads:CampaignManagementEditorialReasonCollection ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetEditorialReasonsByIdsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Experiments By Ids Request
microsoftads:CampaignManagementGetExperimentsByIdsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetExperimentsByIdsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetExperimentsByIdsRequest/returnAdditionalFields> ;
    sh:name "return additional fields" ;
    sh:description "Return additional fields with the Experiment object." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetExperimentsByIdsRequest/experimentIds> ;
    sh:name "experiment ids" ;
    sh:description "The identifiers of the experiments to get. The maximum size of the list is 5,000 items per service request. If this element is not specified, the operation will return all active experiments in the ad account. An ad account can contain at most 5,000 experiments." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetExperimentsByIdsRequest/pageInfo> ;
    sh:name "page info" ;
    sh:description "Reserved for future use." ;
    sh:node microsoftads:CampaignManagementPagingShape ;
    sh:class microsoftads:CampaignManagementPaging ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Paging
microsoftads:CampaignManagementPagingShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementPaging ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPaging/index> ;
    sh:name "index" ;
    sh:description "The zero-based results page index. For example to request the first page of results, set this value to 0 (zero)." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPaging/size> ;
    sh:name "size" ;
    sh:description "The page size and the number of results to return in the specified page. The maximum size is 1,000. If you do not set this element the default size is 0 (zero)." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Experiments By Ids Response
microsoftads:CampaignManagementGetExperimentsByIdsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetExperimentsByIdsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetExperimentsByIdsResponse/experiments> ;
    sh:name "experiments" ;
    sh:description "An array of Experiment objects that corresponds directly to the experiment identifiers that you specified in the request. Items of the list may be returned as null. For each list index where an experiment was not retrieved, the corresponding element will be null." ;
    sh:node microsoftads:CampaignManagementExperimentShape ;
    sh:class microsoftads:CampaignManagementExperiment ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetExperimentsByIdsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get File Import Upload Url Response
microsoftads:CampaignManagementGetFileImportUploadUrlResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetFileImportUploadUrlResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetFileImportUploadUrlResponse/fileImportUploadUrl> ;
    sh:name "file import upload url" ;
    sh:description "Reserved for future use." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Geo Locations File Url Request
microsoftads:CampaignManagementGetGeoLocationsFileUrlRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetGeoLocationsFileUrlRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetGeoLocationsFileUrlRequest/version> ;
    sh:name "version" ;
    sh:description "The version of the location file that you want to download. Currently the only supported version is 2.0." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetGeoLocationsFileUrlRequest/languageLocale> ;
    sh:name "language locale" ;
    sh:description "The language and locale of the geographical location display names. The supported language locale values are zh-Hant (Traditional Chinese), en (English), fr (French), de (German), it (Italian), ja-JP (Japanese), pt-BR (Brazilian Portuguese), and es (Spanish)." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetGeoLocationsFileUrlRequest/compressionType> ;
    sh:name "compression type" ;
    sh:description "Defines the possible compression types for the file to download. Currently the only supported compression format is GZip. This request element is optional. If no value is passed, the API will continue to return uncompressed files." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Zip" "GZip" ) ;
  ] .

# Shape for Campaign Management Get Geo Locations File Url Response
microsoftads:CampaignManagementGetGeoLocationsFileUrlResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetGeoLocationsFileUrlResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetGeoLocationsFileUrlResponse/fileUrl> ;
    sh:name "file url" ;
    sh:description "The file URL that you can use to download the geographical location data for the version, language, and locale that you requested. Before you download the file, check whether the date and time of the LastModifiedTimeUtc element is later than the date and time of your previous download. You should only download the file if necessary." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetGeoLocationsFileUrlResponse/lastModifiedTimeUtc> ;
    sh:name "last modified time utc" ;
    sh:description "The date and time that the geographical location data for the specified version, language, and locale was last updated. As a best practice you should store this date and time, and going forward only download the file if this value is updated to a later date and time. The value is in Coordinated Universal Time (UTC). The date and time value reflects the date and time at the server, not the client. For information about the format of the date and time, see the dateTime entry in Primitive XML Data Types." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetGeoLocationsFileUrlResponse/fileUrlExpiryTimeUtc> ;
    sh:name "file url expiry time utc" ;
    sh:description "The date and time that the provided file URL will expire. If you do not download the file prior to the expiration time, then you can call the operation again to request a new file URL. You might observe that the URL is set to expire 15 minutes from the time this operation completes; however, you should not depend on a fixed duration. Future calls to this operation might result in a shorter or longer expiration time. The value is in Coordinated Universal Time (UTC). The date and time value reflects the date and time at the server, not the client. For information about the format of the date and time, see the dateTime entry in Primitive XML Data Types." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Health Check Request
microsoftads:CampaignManagementGetHealthCheckRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetHealthCheckRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetHealthCheckRequest/healthCheckEntities> ;
    sh:name "health check entities" ;
    sh:description "Reserved." ;
    sh:node microsoftads:CampaignManagementHealthCheckEntityShape ;
    sh:class microsoftads:CampaignManagementHealthCheckEntity ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetHealthCheckRequest/healthCheckTypes> ;
    sh:name "health check types" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Campaign Management Get Health Check Response
microsoftads:CampaignManagementGetHealthCheckResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetHealthCheckResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetHealthCheckResponse/healthCheckResultsMetadata> ;
    sh:name "health check results metadata" ;
    sh:description "Reserved." ;
    sh:node microsoftads:CampaignManagementHealthCheckMetadataShape ;
    sh:class microsoftads:CampaignManagementHealthCheckMetadata ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetHealthCheckResponse/healthCheckResults> ;
    sh:name "health check results" ;
    sh:description "Reserved." ;
    sh:node microsoftads:CampaignManagementHealthCheckDataShape ;
    sh:class microsoftads:CampaignManagementHealthCheckData ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetHealthCheckResponse/healthCheckErrors> ;
    sh:name "health check errors" ;
    sh:description "Reserved." ;
    sh:node microsoftads:CampaignManagementHealthCheckErrorShape ;
    sh:class microsoftads:CampaignManagementHealthCheckError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Health Check Error
microsoftads:CampaignManagementHealthCheckErrorShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementHealthCheckError ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHealthCheckError/healthCheckEntity> ;
    sh:name "health check entity" ;
    sh:description "The health check entity." ;
    sh:node microsoftads:CampaignManagementHealthCheckEntityShape ;
    sh:class microsoftads:CampaignManagementHealthCheckEntity ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHealthCheckError/healthCheckName> ;
    sh:name "health check name" ;
    sh:description "The health check name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHealthCheckError/errors> ;
    sh:name "errors" ;
    sh:description "An array of OperationError objects corresponding to errors encountered during the system processing of the bulk file after your download request was submitted." ;
    sh:node microsoftads:CampaignManagementOperationErrorShape ;
    sh:class microsoftads:CampaignManagementOperationError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get HTML5s By Ids Request
microsoftads:CampaignManagementGetHTML5sByIdsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetHTML5sByIdsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetHTML5sByIdsRequest/hTML5AssetIds> ;
    sh:name "h tml5asset ids" ;
    sh:description "An array of the HTML5 asset IDs." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Campaign Management Get HTML5s By Ids Response
microsoftads:CampaignManagementGetHTML5sByIdsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetHTML5sByIdsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetHTML5sByIdsResponse/hTML5Assets> ;
    sh:name "h tml5assets" ;
    sh:description "An array of the HTML5 assets." ;
    sh:node microsoftads:CampaignManagementHTML5Shape ;
    sh:class microsoftads:CampaignManagementHTML5 ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetHTML5sByIdsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array BatchError that contains details for any request items that were not successful. The list of errors does not correspond directly to the list of items in the request. The list can be empty if there were no errors, or it can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Import Entity Ids Mapping Request
microsoftads:CampaignManagementGetImportEntityIdsMappingRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetImportEntityIdsMappingRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetImportEntityIdsMappingRequest/importType> ;
    sh:name "import type" ;
    sh:description "The type of import job to get entity ID mappings. To get Google Ads to Microsoft Advertising entity ID mappings for each GoogleImportJob, set this element to \"GoogleImportJob\"." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetImportEntityIdsMappingRequest/sourceEntityIds> ;
    sh:name "source entity ids" ;
    sh:description "The source entity IDs that you want mapped to Microsoft Advertising entity IDs. If ImportEntityType is set to \"Campaign\" and ImportType is set to \"GoogleImportJob\", the operation will return Google Ads to Microsoft Advertising entity ID mappings. You can specify a maximum of 100 source IDs." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetImportEntityIdsMappingRequest/importEntityType> ;
    sh:name "import entity type" ;
    sh:description "The type of entity to get ID mappings. For example, set this element to \"Campaign\" to get campaign ID mappings." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unknown" "Campaign" "AdGroup" "Ad" "Keyword" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetImportEntityIdsMappingRequest/sourceParentId> ;
    sh:name "source parent id" ;
    sh:description "The ID of the source parent." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Import Entity Ids Mapping Response
microsoftads:CampaignManagementGetImportEntityIdsMappingResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetImportEntityIdsMappingResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetImportEntityIdsMappingResponse/entityIdsMapping> ;
    sh:name "entity ids mapping" ;
    sh:description "The resulting list of key and value pairs. Each key represents a source ID that you requested mappings for. The referenced key is the mapped Microsoft Advertising entity ID. If you requested a mapping with an invalid source ID, it will still be returned as the key but the referenced value will be set to 0 (zero)." ;
    sh:node microsoftads:CampaignManagementKeyValuePairOflongAndlongShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOflongAndlong ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetImportEntityIdsMappingResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Key Value Pair Oflong Andlong
microsoftads:CampaignManagementKeyValuePairOflongAndlongShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementKeyValuePairOflongAndlong ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementKeyValuePairOflongAndlong/key> ;
    sh:name "key" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementKeyValuePairOflongAndlong/value> ;
    sh:name "value" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Import Jobs By Ids Request
microsoftads:CampaignManagementGetImportJobsByIdsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetImportJobsByIdsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetImportJobsByIdsRequest/importJobIds> ;
    sh:name "import job ids" ;
    sh:description "The identifiers of the import jobs to get. You can specify a maximum of 100 import job IDs. If this element is not specified, the operation will return up to 500 import jobs in the ad account." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetImportJobsByIdsRequest/importType> ;
    sh:name "import type" ;
    sh:description "The type of import job to get. To get GoogleImportJob objects, set this element to \"GoogleImportJob\"." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetImportJobsByIdsRequest/returnAdditionalFields> ;
    sh:name "return additional fields" ;
    sh:description "The additional field values enable you to get the latest features using the current version of Campaign Management API, and in the next version the corresponding elements will be included by default. This request element is optional." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Import Jobs By Ids Response
microsoftads:CampaignManagementGetImportJobsByIdsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetImportJobsByIdsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetImportJobsByIdsResponse/importJobs> ;
    sh:name "import jobs" ;
    sh:description "The import jobs that matched the request criteria." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementFileImportJobShape ; sh:class microsoftads:CampaignManagementFileImportJob ]
      [ sh:node microsoftads:CampaignManagementGoogleImportJobShape ; sh:class microsoftads:CampaignManagementGoogleImportJob ]
      [ sh:node microsoftads:CampaignManagementImportJobShape ; sh:class microsoftads:CampaignManagementImportJob ]
      [ sh:node microsoftads:CampaignManagementImportJobBaseShape ; sh:class microsoftads:CampaignManagementImportJobBase ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetImportJobsByIdsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Import Results Request
microsoftads:CampaignManagementGetImportResultsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetImportResultsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetImportResultsRequest/importType> ;
    sh:name "import type" ;
    sh:description "The type of import job to get results. To get GoogleImportJob results, set this element to \"GoogleImportJob\"." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetImportResultsRequest/pageInfo> ;
    sh:name "page info" ;
    sh:description "Determines the index and size of import results per page. This request element is optional. If this element is not specified, the defaut page Index is 0 and the default Size is 1,000." ;
    sh:node microsoftads:CampaignManagementPagingShape ;
    sh:class microsoftads:CampaignManagementPaging ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetImportResultsRequest/importJobIds> ;
    sh:name "import job ids" ;
    sh:description "The identifiers of the import jobs to get results. You can specify a maximum of 100 identifiers. If this element is not specified, the operation will return results for all import jobs in the ad account within the last 90 days." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetImportResultsRequest/returnAdditionalFields> ;
    sh:name "return additional fields" ;
    sh:description "The additional field values enable you to get the latest features using the current version of Campaign Management API, and in the next version the corresponding elements will be included by default. This request element is optional." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Import Results Response
microsoftads:CampaignManagementGetImportResultsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetImportResultsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetImportResultsResponse/importResults> ;
    sh:name "import results" ;
    sh:description "Contains the status, run time, and statistical results for each import that has run. Multiple results can be returned for the same import job e.g., results for a scheduled GoogleImportJob that has run more than once." ;
    sh:node microsoftads:CampaignManagementImportResultShape ;
    sh:class microsoftads:CampaignManagementImportResult ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Import Result
microsoftads:CampaignManagementImportResultShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementImportResult ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportResult/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier of the import result." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportResult/startTimeInUTC> ;
    sh:name "start time in utc" ;
    sh:description "The date and time the import job was run." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportResult/status> ;
    sh:name "status" ;
    sh:description "The import job status." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportResult/importJob> ;
    sh:name "import job" ;
    sh:description "The settings in effect at the time the import job was run. If the ImportType of the GetImportResults operation was set to \"GoogleImportJob\", this element will include a GoogleImportJob object." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementFileImportJobShape ; sh:class microsoftads:CampaignManagementFileImportJob ]
      [ sh:node microsoftads:CampaignManagementGoogleImportJobShape ; sh:class microsoftads:CampaignManagementGoogleImportJob ]
      [ sh:node microsoftads:CampaignManagementImportJobShape ; sh:class microsoftads:CampaignManagementImportJob ]
      [ sh:node microsoftads:CampaignManagementImportJobBaseShape ; sh:class microsoftads:CampaignManagementImportJobBase ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportResult/entityStatistics> ;
    sh:name "entity statistics" ;
    sh:description "The statistical import results for each supported entity type. For more information, see the ImportEntityStatistics Remarks." ;
    sh:node microsoftads:CampaignManagementImportEntityStatisticsShape ;
    sh:class microsoftads:CampaignManagementImportEntityStatistics ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportResult/errorLogUrl> ;
    sh:name "error log url" ;
    sh:description "The URL where you can download the error logs. This element will be null or empty if there were no errors." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportResult/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. Forward compatibility changes will be noted here in future releases. There are currently no forward compatibility changes for this object." ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Import Entity Statistics
microsoftads:CampaignManagementImportEntityStatisticsShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementImportEntityStatistics ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportEntityStatistics/entityType> ;
    sh:name "entity type" ;
    sh:description "The type of entity eligible for import. For more information, see the remarks below." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportEntityStatistics/additions> ;
    sh:name "additions" ;
    sh:description "The count of items added during import of the entity type." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportEntityStatistics/changes> ;
    sh:name "changes" ;
    sh:description "The count of items changed or updated during import of the entity type." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportEntityStatistics/errors> ;
    sh:name "errors" ;
    sh:description "The count of errors during import of the entity type." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportEntityStatistics/deletions> ;
    sh:name "deletions" ;
    sh:description "The count of items deleted during import of the entity type." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportEntityStatistics/total> ;
    sh:name "total" ;
    sh:description "The total count of additions, changes, deletions, and errors during import of the entity type." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Keywords By Ad Group Id Request
microsoftads:CampaignManagementGetKeywordsByAdGroupIdRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetKeywordsByAdGroupIdRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetKeywordsByAdGroupIdRequest/returnAdditionalFields> ;
    sh:name "return additional fields" ;
    sh:description "The list of additional properties that you want included within each returned keyword. The additional field values enable you to get the latest features using the current version of Campaign Management API, and in the next version the corresponding elements will be included by default. This request element is optional." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetKeywordsByAdGroupIdRequest/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "The identifier of the ad group that keywords are returned for." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Keywords By Ad Group Id Response
microsoftads:CampaignManagementGetKeywordsByAdGroupIdResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetKeywordsByAdGroupIdResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetKeywordsByAdGroupIdResponse/keywords> ;
    sh:name "keywords" ;
    sh:description "An array of Keyword objects that represents the retrieved keywords. If no keywords exist, an empty array is returned." ;
    sh:node microsoftads:CampaignManagementKeywordShape ;
    sh:class microsoftads:CampaignManagementKeyword ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Keywords By Editorial Status Request
microsoftads:CampaignManagementGetKeywordsByEditorialStatusRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetKeywordsByEditorialStatusRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetKeywordsByEditorialStatusRequest/editorialStatus> ;
    sh:name "editorial status" ;
    sh:description "The review status of the keywords to retrieve." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Disapproved" "Inactive" "ActiveLimited" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetKeywordsByEditorialStatusRequest/returnAdditionalFields> ;
    sh:name "return additional fields" ;
    sh:description "The list of additional properties that you want included within each returned keyword. The additional field values enable you to get the latest features using the current version of Campaign Management API, and in the next version the corresponding elements will be included by default. This request element is optional." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetKeywordsByEditorialStatusRequest/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "The identifier of the ad group that contains the keywords to retrieve." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Keywords By Editorial Status Response
microsoftads:CampaignManagementGetKeywordsByEditorialStatusResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetKeywordsByEditorialStatusResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetKeywordsByEditorialStatusResponse/keywords> ;
    sh:name "keywords" ;
    sh:description "An array of Keyword objects that contains information about the keywords that were retrieved." ;
    sh:node microsoftads:CampaignManagementKeywordShape ;
    sh:class microsoftads:CampaignManagementKeyword ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Keywords By Ids Request
microsoftads:CampaignManagementGetKeywordsByIdsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetKeywordsByIdsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetKeywordsByIdsRequest/returnAdditionalFields> ;
    sh:name "return additional fields" ;
    sh:description "The list of additional properties that you want included within each returned keyword. The additional field values enable you to get the latest features using the current version of Campaign Management API, and in the next version the corresponding elements will be included by default. This request element is optional." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetKeywordsByIdsRequest/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "The identifier of the ad group whose keywords you want to get." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetKeywordsByIdsRequest/keywordIds> ;
    sh:name "keyword ids" ;
    sh:description "A maximum of 1,000 identifiers of the keywords to get." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Campaign Management Get Keywords By Ids Response
microsoftads:CampaignManagementGetKeywordsByIdsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetKeywordsByIdsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetKeywordsByIdsResponse/keywords> ;
    sh:name "keywords" ;
    sh:description "An array of Keyword objects that corresponds directly to the keyword identifiers that you specified in the request. Items of the list may be returned as null. For each list index where a keyword was not retrieved, the corresponding element will be null." ;
    sh:node microsoftads:CampaignManagementKeywordShape ;
    sh:class microsoftads:CampaignManagementKeyword ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetKeywordsByIdsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Label Associations By Entity Ids Request
microsoftads:CampaignManagementGetLabelAssociationsByEntityIdsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetLabelAssociationsByEntityIdsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetLabelAssociationsByEntityIdsRequest/entityType> ;
    sh:name "entity type" ;
    sh:description "Filters the returned associations by entity type. The supported entity type values are Campaign, AdGroup, Ad, and Keyword." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "None" "Campaign" "AdGroup" "Ad" "Keyword" "AssetGroup" "TextAsset" "ImageAsset" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetLabelAssociationsByEntityIdsRequest/entityIds> ;
    sh:name "entity ids" ;
    sh:description "The list of entity identifiers used to request label associations. The maximum size of the list is 100 items per service request." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Campaign Management Get Label Associations By Entity Ids Response
microsoftads:CampaignManagementGetLabelAssociationsByEntityIdsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetLabelAssociationsByEntityIdsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetLabelAssociationsByEntityIdsResponse/labelAssociations> ;
    sh:name "label associations" ;
    sh:description "An array of label associations. For each entity identifier specified in the request, zero or more LabelAssociation objects are returned. Whereas the order of the returned LabelAssociation objects is guaranteed in the order of the requested entity identifiers, please note that multiple LabelAssociation objects can be returned for the same entity identifier." ;
    sh:node microsoftads:CampaignManagementLabelAssociationShape ;
    sh:class microsoftads:CampaignManagementLabelAssociation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetLabelAssociationsByEntityIdsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any associations that were not successfully retrieved. The list of errors corresponds directly to the list of associations in the request. Items of the list may be returned as null. For each list index where an association was successfully retrieved, the corresponding error element will be null. Ideally all associations are retrieved successfully and all elements in this list are null." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Label Associations By Label Ids Request
microsoftads:CampaignManagementGetLabelAssociationsByLabelIdsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetLabelAssociationsByLabelIdsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetLabelAssociationsByLabelIdsRequest/entityType> ;
    sh:name "entity type" ;
    sh:description "Filters the returned associations by entity type. The supported entity type values are Campaign, AdGroup, Ad, and Keyword." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "None" "Campaign" "AdGroup" "Ad" "Keyword" "AssetGroup" "TextAsset" "ImageAsset" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetLabelAssociationsByLabelIdsRequest/labelIds> ;
    sh:name "label ids" ;
    sh:description "The list of label identifiers used to request label associations. You must include exactly one label identifier in the list." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetLabelAssociationsByLabelIdsRequest/pageInfo> ;
    sh:name "page info" ;
    sh:description "Determines the index and size of label association results per page. Up to 1,000 label associations will be returned per page, so you might need to request multiple pages to get all of the label associations. If this element is not specified, the defaut page Index is 0 and the default Size is 1,000." ;
    sh:node microsoftads:CampaignManagementPagingShape ;
    sh:class microsoftads:CampaignManagementPaging ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Label Associations By Label Ids Response
microsoftads:CampaignManagementGetLabelAssociationsByLabelIdsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetLabelAssociationsByLabelIdsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetLabelAssociationsByLabelIdsResponse/labelAssociations> ;
    sh:name "label associations" ;
    sh:description "An array of label associations. For each label identifier specified in the request, zero or more LabelAssociation objects are returned. Whereas the order of the returned LabelAssociation objects is guaranteed in the order of the requested label identifiers, please note that multiple LabelAssociation objects can be returned for the same label identifier. The entity identifiers are in ascending order for a given label's associations. It is possible to receive duplicate associations across multiple pages, so you should check for duplicate results." ;
    sh:node microsoftads:CampaignManagementLabelAssociationShape ;
    sh:class microsoftads:CampaignManagementLabelAssociation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetLabelAssociationsByLabelIdsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any associations that were not successfully retrieved. The list of errors corresponds directly to the list of associations in the request. Items of the list may be returned as null. For each list index where an association was successfully retrieved, the corresponding error element will be null. Ideally all associations are retrieved successfully and all elements in this list are null." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Labels By Ids Request
microsoftads:CampaignManagementGetLabelsByIdsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetLabelsByIdsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetLabelsByIdsRequest/labelIds> ;
    sh:name "label ids" ;
    sh:description "The identifiers of the labels to get. The maximum size of the list is 1,000 items per service request. If this element is not specified, the operation will return all active labels in the account (1,000 results per page)." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetLabelsByIdsRequest/pageInfo> ;
    sh:name "page info" ;
    sh:description "Determines the index and size of label results per page. This request element is optional. If this element is not specified, the defaut page Index is 0 and the default Size is 1,000." ;
    sh:node microsoftads:CampaignManagementPagingShape ;
    sh:class microsoftads:CampaignManagementPaging ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Labels By Ids Response
microsoftads:CampaignManagementGetLabelsByIdsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetLabelsByIdsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetLabelsByIdsResponse/labels> ;
    sh:name "labels" ;
    sh:description "An array of Label objects that corresponds directly to the label identifiers that you specified in the request. Items of the list may be returned as null. For each list index where a label was not retrieved, the corresponding element will be null." ;
    sh:node microsoftads:CampaignManagementLabelShape ;
    sh:class microsoftads:CampaignManagementLabel ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetLabelsByIdsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get List Items By Shared List Request
microsoftads:CampaignManagementGetListItemsBySharedListRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetListItemsBySharedListRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetListItemsBySharedListRequest/sharedList> ;
    sh:name "shared list" ;
    sh:description "The negative keyword list or website exclusion list. If the SharedEntityScope is either empty or set to Account, and if the SharedList is a NegativeKeywordList, then the returned list items will be negative keyword (NegativeKeyword) objects. If the SharedEntityScope is set to Customer, and if the SharedList is a PlacementExclusionList, then the returned list items will be negative site (NegativeSite) objects. You must include the Id of the SharedList when you make the service request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementAccountContentNegativeKeywordListShape ; sh:class microsoftads:CampaignManagementAccountContentNegativeKeywordList ]
      [ sh:node microsoftads:CampaignManagementAccountNegativeKeywordListShape ; sh:class microsoftads:CampaignManagementAccountNegativeKeywordList ]
      [ sh:node microsoftads:CampaignManagementAccountPlacementExclusionListShape ; sh:class microsoftads:CampaignManagementAccountPlacementExclusionList ]
      [ sh:node microsoftads:CampaignManagementAccountPlacementInclusionListShape ; sh:class microsoftads:CampaignManagementAccountPlacementInclusionList ]
      [ sh:node microsoftads:CampaignManagementBrandListShape ; sh:class microsoftads:CampaignManagementBrandList ]
      [ sh:node microsoftads:CampaignManagementNegativeKeywordListShape ; sh:class microsoftads:CampaignManagementNegativeKeywordList ]
      [ sh:node microsoftads:CampaignManagementPlacementExclusionListShape ; sh:class microsoftads:CampaignManagementPlacementExclusionList ]
      [ sh:node microsoftads:CampaignManagementSharedListShape ; sh:class microsoftads:CampaignManagementSharedList ]
      [ sh:node microsoftads:CampaignManagementSharedListBaseShape ; sh:class microsoftads:CampaignManagementSharedListBase ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetListItemsBySharedListRequest/sharedEntityScope> ;
    sh:name "shared entity scope" ;
    sh:description "Indicates whether the shared entity is available at the ad account (Account) or manager account (Customer) level. This element is optional and defaults to Account scope. The ad account scope is only applicable for negative keyword lists. Set this element to Customer to get the negative sites for a website exclusion list in your manager account (customer) shared library." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Account" "Customer" ) ;
  ] .

# Shape for Campaign Management Get List Items By Shared List Response
microsoftads:CampaignManagementGetListItemsBySharedListResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetListItemsBySharedListResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetListItemsBySharedListResponse/listItems> ;
    sh:name "list items" ;
    sh:description "The list of negative keywords or negative sites. If no list items exist in the shared list, an empty array is returned." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBrandItemShape ; sh:class microsoftads:CampaignManagementBrandItem ]
      [ sh:node microsoftads:CampaignManagementNegativeKeywordShape ; sh:class microsoftads:CampaignManagementNegativeKeyword ]
      [ sh:node microsoftads:CampaignManagementNegativeSiteShape ; sh:class microsoftads:CampaignManagementNegativeSite ]
      [ sh:node microsoftads:CampaignManagementSharedListItemShape ; sh:class microsoftads:CampaignManagementSharedListItem ]
      [ sh:node microsoftads:CampaignManagementSharedListItemBaseShape ; sh:class microsoftads:CampaignManagementSharedListItemBase ]
      [ sh:node microsoftads:CampaignManagementSiteShape ; sh:class microsoftads:CampaignManagementSite ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Media Associations Request
microsoftads:CampaignManagementGetMediaAssociationsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetMediaAssociationsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetMediaAssociationsRequest/mediaIds> ;
    sh:name "media ids" ;
    sh:description "The identifiers of the media to get corresponding entity associations. You can specify a maximum of 100 media identifiers in a single call." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetMediaAssociationsRequest/mediaEnabledEntities> ;
    sh:name "media enabled entities" ;
    sh:description "Filters the results to only return media associations with the specified type of media enabled entity. The only supported media filter for this operation is ImageAdExtension." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Media Associations Response
microsoftads:CampaignManagementGetMediaAssociationsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetMediaAssociationsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetMediaAssociationsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetMediaAssociationsResponse/mediaAssociations> ;
    sh:name "media associations" ;
    sh:description "An array of MediaAssociation objects that corresponds directly to the media identifiers that you specified in the request. Items of the list may be returned as null. For each list index where media associations were not retrieved, the corresponding element will be null." ;
    sh:node <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetMediaAssociationsResponse/mediaAssociations/ListLevel1Shape> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Media Association
microsoftads:CampaignManagementMediaAssociationShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementMediaAssociation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementMediaAssociation/mediaId> ;
    sh:name "media id" ;
    sh:description "The system identifier of the media." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementMediaAssociation/mediaEnabledEntity> ;
    sh:name "media enabled entity" ;
    sh:description "Determines the type of media to get. Currently only ImageAdExtension is supported." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementMediaAssociation/entityId> ;
    sh:name "entity id" ;
    sh:description "The system identifier of the media enabled entity, for example the identifier of an ImageAdExtension." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Media Meta Data By Account Id Request
microsoftads:CampaignManagementGetMediaMetaDataByAccountIdRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetMediaMetaDataByAccountIdRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetMediaMetaDataByAccountIdRequest/mediaEnabledEntities> ;
    sh:name "media enabled entities" ;
    sh:description "Determines the type of media enabled entity to get meta data. Supported values are ImageAdExtension and ResponsiveAd. You may include multiple values as flags. How you specify multiple flags depends on the programming language that you use. For example, C# treats these values as flag values and Java treats them as an array of strings. The SOAP should include a string that contains a space-delimited list of values for example, ImageAdExtension ResponsiveAd." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetMediaMetaDataByAccountIdRequest/pageInfo> ;
    sh:name "page info" ;
    sh:description "Determines the index and size of media meta data results per page. By default if this element is not specified, the defaut page Index is 0 and the default Size is 1,000." ;
    sh:node microsoftads:CampaignManagementPagingShape ;
    sh:class microsoftads:CampaignManagementPaging ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetMediaMetaDataByAccountIdRequest/returnAdditionalFields> ;
    sh:name "return additional fields" ;
    sh:description "The list of additional properties that you want included within each returned auction insight KPI. The additional field values enable you to get the latest features using the current version of the Ad Insight API, and in the next version the corresponding elements will be included by default. This request element is optional." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Media Meta Data By Account Id Response
microsoftads:CampaignManagementGetMediaMetaDataByAccountIdResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetMediaMetaDataByAccountIdResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetMediaMetaDataByAccountIdResponse/mediaMetaData> ;
    sh:name "media meta data" ;
    sh:description "The specified media meta data from the library. The meta data includes download URLs for one or more media representations." ;
    sh:node microsoftads:CampaignManagementMediaMetaDataShape ;
    sh:class microsoftads:CampaignManagementMediaMetaData ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Media Meta Data
microsoftads:CampaignManagementMediaMetaDataShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementMediaMetaData ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementMediaMetaData/id> ;
    sh:name "id" ;
    sh:description "The system identifier of the media meta data." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementMediaMetaData/mediaType> ;
    sh:name "media type" ;
    sh:description "The name of the media subclass. For an ImageMediaRepresentation, the MediaType is Image." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementMediaMetaData/type> ;
    sh:name "type" ;
    sh:description "The type of media in the library. For an ImageMediaRepresentation, the only possible value is ImageMediaRepresentation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementMediaMetaData/representations> ;
    sh:name "representations" ;
    sh:description "A list of ImageMediaRepresentation that each include download URLs for one or more media representations. The number of representations depends on the type of media. For image ad extensions the service will return exactly three ImageMediaRepresentation objects with varying height and width properties. For responsive ads the service will return exactly one ImageMediaRepresentation object. For more information see MediaEnabledEntityFilter." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementImageMediaRepresentationShape ; sh:class microsoftads:CampaignManagementImageMediaRepresentation ]
      [ sh:node microsoftads:CampaignManagementMediaRepresentationShape ; sh:class microsoftads:CampaignManagementMediaRepresentation ]
      [ sh:node microsoftads:CampaignManagementMediaRepresentationBaseShape ; sh:class microsoftads:CampaignManagementMediaRepresentationBase ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementMediaMetaData/text> ;
    sh:name "text" ;
    sh:description "The media text." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Media Representation
microsoftads:CampaignManagementMediaRepresentationShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementMediaRepresentation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementMediaRepresentation/name> ;
    sh:name "name" ;
    sh:description "The name of the media representation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementMediaRepresentation/url> ;
    sh:name "url" ;
    sh:description "The media download URL." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementMediaRepresentation/type> ;
    sh:name "type" ;
    sh:description "The type of the media representation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementMediaRepresentation/height> ;
    sh:name "height" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementMediaRepresentation/width> ;
    sh:name "width" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Media Meta Data By Ids Request
microsoftads:CampaignManagementGetMediaMetaDataByIdsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetMediaMetaDataByIdsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetMediaMetaDataByIdsRequest/mediaIds> ;
    sh:name "media ids" ;
    sh:description "The identifiers of the media to get. You can specify a maximum of 100 media identifiers in a single call." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetMediaMetaDataByIdsRequest/returnAdditionalFields> ;
    sh:name "return additional fields" ;
    sh:description "The list of additional properties that you want included within each returned auction insight KPI. The additional field values enable you to get the latest features using the current version of the Ad Insight API, and in the next version the corresponding elements will be included by default. This request element is optional." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Media Meta Data By Ids Response
microsoftads:CampaignManagementGetMediaMetaDataByIdsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetMediaMetaDataByIdsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetMediaMetaDataByIdsResponse/mediaMetaData> ;
    sh:name "media meta data" ;
    sh:description "An array of MediaMetaData objects that corresponds directly to the media identifiers that you specified in the request. Items of the list may be returned as null. For each list index where media meta data was not retrieved, the corresponding element will be null. The meta data includes download URLs for one or more media representations." ;
    sh:node microsoftads:CampaignManagementMediaMetaDataShape ;
    sh:class microsoftads:CampaignManagementMediaMetaData ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetMediaMetaDataByIdsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Negative Keywords By Entity Ids Request
microsoftads:CampaignManagementGetNegativeKeywordsByEntityIdsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetNegativeKeywordsByEntityIdsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetNegativeKeywordsByEntityIdsRequest/entityType> ;
    sh:name "entity type" ;
    sh:description "The type of entity corresponding to the specified EntityIds element. Possible values include AdGroup and Campaign." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetNegativeKeywordsByEntityIdsRequest/entityIds> ;
    sh:name "entity ids" ;
    sh:description "An array of entity identifiers to return the associated negative keywords. The specified entities must all exist within the same parent entity, for example the ad group identifiers must all exist within the same campaign. This array can contain a maximum of 1 element." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetNegativeKeywordsByEntityIdsRequest/parentEntityId> ;
    sh:name "parent entity id" ;
    sh:description "The identifier of the parent entity corresponding to the specified EntityIds element. If the entity type is AdGroup, this element should be set to the campaign identifier that contains all of the specified ad groups. If the entity type is Campaign, the service uses the CustomerAccountId header element and this element is ignored." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Negative Keywords By Entity Ids Response
microsoftads:CampaignManagementGetNegativeKeywordsByEntityIdsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetNegativeKeywordsByEntityIdsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetNegativeKeywordsByEntityIdsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetNegativeKeywordsByEntityIdsResponse/entityNegativeKeywords> ;
    sh:name "entity negative keywords" ;
    sh:description "An array of EntityNegativeKeyword objects that corresponds directly to the entity identifiers that you specified in the request. Items of the list may be returned as null. For each list index where negative keywords for an entity were not retrieved, the corresponding element will be null." ;
    sh:node microsoftads:CampaignManagementEntityNegativeKeywordShape ;
    sh:class microsoftads:CampaignManagementEntityNegativeKeyword ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Negative Sites By Ad Group Ids Request
microsoftads:CampaignManagementGetNegativeSitesByAdGroupIdsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetNegativeSitesByAdGroupIdsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetNegativeSitesByAdGroupIdsRequest/campaignId> ;
    sh:name "campaign id" ;
    sh:description "The identifier of the campaign that contains the ad groups." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetNegativeSitesByAdGroupIdsRequest/adGroupIds> ;
    sh:name "ad group ids" ;
    sh:description "An array of identifiers of the ad groups that contain the negative site URLs that you want to get. The call fails if the sum of all negative site URLs defined in the specified list of ad groups exceeds 30,000 URLs. To ensure that the call succeeds, consider limiting the number of ad groups to 15." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Campaign Management Get Negative Sites By Ad Group Ids Response
microsoftads:CampaignManagementGetNegativeSitesByAdGroupIdsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetNegativeSitesByAdGroupIdsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetNegativeSitesByAdGroupIdsResponse/adGroupNegativeSites> ;
    sh:name "ad group negative sites" ;
    sh:description "An array of AdGroupNegativeSites that corresponds directly to the ad group identifiers that you specified in the request. Items of the list may be returned as null. For each list index where an AdGroupNegativeSites was not retrieved, the corresponding element will be null." ;
    sh:node microsoftads:CampaignManagementAdGroupNegativeSitesShape ;
    sh:class microsoftads:CampaignManagementAdGroupNegativeSites ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetNegativeSitesByAdGroupIdsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Negative Sites By Campaign Ids Request
microsoftads:CampaignManagementGetNegativeSitesByCampaignIdsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetNegativeSitesByCampaignIdsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetNegativeSitesByCampaignIdsRequest/accountId> ;
    sh:name "account id" ;
    sh:description "The identifier of the account that contains the campaigns." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetNegativeSitesByCampaignIdsRequest/campaignIds> ;
    sh:name "campaign ids" ;
    sh:description "An array of identifiers of the campaigns that contain the negative site URLs that you want to get. The call fails if the sum of all negative site URLs defined in the specified list of campaigns exceeds 30,000 URLs. To ensure that the call succeeds, consider limiting the number of campaigns to 15." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Campaign Management Get Negative Sites By Campaign Ids Response
microsoftads:CampaignManagementGetNegativeSitesByCampaignIdsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetNegativeSitesByCampaignIdsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetNegativeSitesByCampaignIdsResponse/campaignNegativeSites> ;
    sh:name "campaign negative sites" ;
    sh:description "An array of CampaignNegativeSites that corresponds directly to the campaign identifiers that you specified in the request. Items of the list may be returned as null. For each list index where an CampaignNegativeSites was not retrieved, the corresponding element will be null." ;
    sh:node microsoftads:CampaignManagementCampaignNegativeSitesShape ;
    sh:class microsoftads:CampaignManagementCampaignNegativeSites ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetNegativeSitesByCampaignIdsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get New Customer Acquisition Goals By Account Id Request
microsoftads:CampaignManagementGetNewCustomerAcquisitionGoalsByAccountIdRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetNewCustomerAcquisitionGoalsByAccountIdRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetNewCustomerAcquisitionGoalsByAccountIdRequest/accountId> ;
    sh:name "account id" ;
    sh:description "Reserved." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get New Customer Acquisition Goals By Account Id Response
microsoftads:CampaignManagementGetNewCustomerAcquisitionGoalsByAccountIdResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetNewCustomerAcquisitionGoalsByAccountIdResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetNewCustomerAcquisitionGoalsByAccountIdResponse/newCustomerAcquisitionGoals> ;
    sh:name "new customer acquisition goals" ;
    sh:description "Reserved." ;
    sh:node microsoftads:CampaignManagementNewCustomerAcquisitionGoalShape ;
    sh:class microsoftads:CampaignManagementNewCustomerAcquisitionGoal ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Offline Conversion Report By Goal Ids Request
microsoftads:CampaignManagementGetOfflineConversionReportByGoalIdsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetOfflineConversionReportByGoalIdsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetOfflineConversionReportByGoalIdsRequest/startDateUtc> ;
    sh:name "start date utc" ;
    sh:description "The start date of the report range in Coordinated Universal Time (UTC). The date range is up to 7 days." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetOfflineConversionReportByGoalIdsRequest/endDateUtc> ;
    sh:name "end date utc" ;
    sh:description "The end date of the report range in Coordinated Universal Time (UTC). The date range is up to 7 days." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetOfflineConversionReportByGoalIdsRequest/goalIds> ;
    sh:name "goal ids" ;
    sh:description "An array of conversion goal IDs used to filter the report. You can specify up to 20 goal IDs." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetOfflineConversionReportByGoalIdsRequest/uploadChannelFilter> ;
    sh:name "upload channel filter" ;
    sh:description "A bitwise combination of upload channel flags. If null, the report includes data from all channels." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Offline Conversion Report By Goal Ids Response
microsoftads:CampaignManagementGetOfflineConversionReportByGoalIdsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetOfflineConversionReportByGoalIdsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetOfflineConversionReportByGoalIdsResponse/offlineGoalConversionSummaries> ;
    sh:name "offline goal conversion summaries" ;
    sh:description "An array containing daily conversion performance summaries, grouped by individual Goal ID." ;
    sh:node microsoftads:CampaignManagementOfflineGoalConversionSummaryShape ;
    sh:class microsoftads:CampaignManagementOfflineGoalConversionSummary ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetOfflineConversionReportByGoalIdsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of error objects for specific Goal IDs that failed to retrieve data. Returns successful data for some goals while reporting failures for others." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Offline Goal Conversion Summary
microsoftads:CampaignManagementOfflineGoalConversionSummaryShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementOfflineGoalConversionSummary ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOfflineGoalConversionSummary/goalId> ;
    sh:name "goal id" ;
    sh:description "The unique identifier for the conversion goal." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOfflineGoalConversionSummary/conversionName> ;
    sh:name "conversion name" ;
    sh:description "The user-defined name of the conversion goal." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOfflineGoalConversionSummary/overallSuccessCount> ;
    sh:name "overall success count" ;
    sh:description "The total number of successful conversions attributed during the requested period." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOfflineGoalConversionSummary/overallUnattributedCount> ;
    sh:name "overall unattributed count" ;
    sh:description "The total number of conversions that couldn't be attributed to a click or valid goal." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOfflineGoalConversionSummary/overallSuccessRate> ;
    sh:name "overall success rate" ;
    sh:description "The ratio of successful conversions to total uploads (Success / Total), represented with up to 6 decimal places." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOfflineGoalConversionSummary/overallAlerts> ;
    sh:name "overall alerts" ;
    sh:description "A collection of aggregated error reasons explaining why conversions were unattributed." ;
    sh:node microsoftads:CampaignManagementOfflineConversionAlertShape ;
    sh:class microsoftads:CampaignManagementOfflineConversionAlert ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOfflineGoalConversionSummary/dailySummaries> ;
    sh:name "daily summaries" ;
    sh:description "A breakdown of performance metrics for each individual day within the requested range." ;
    sh:node microsoftads:CampaignManagementOfflineGoalDailySummaryShape ;
    sh:class microsoftads:CampaignManagementOfflineGoalDailySummary ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Offline Conversion Alert
microsoftads:CampaignManagementOfflineConversionAlertShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementOfflineConversionAlert ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOfflineConversionAlert/unattributedReason> ;
    sh:name "unattributed reason" ;
    sh:description "The specific reason for the failure." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unknown" "AdjustmentOriginalNotFound" "ConversionAlreadyRetracted" "DuplicateConversionKey" "ConversionTimeExceedsMaxLookback" "ConversionTimeInFuture" "GoalNotFoundOrInactive" "ClickTimestampAfterConversion" "NoMatchingClickFound" "MissingMatchIdentifiers" "OutsideGoalLookbackWindow" "AccountMismatch" "MalformedData" "HistoricalClickDataExpired" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOfflineConversionAlert/count> ;
    sh:name "count" ;
    sh:description "The number of times this specific error occurred." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Offline Goal Daily Summary
microsoftads:CampaignManagementOfflineGoalDailySummaryShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementOfflineGoalDailySummary ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOfflineGoalDailySummary/goalId> ;
    sh:name "goal id" ;
    sh:description "The unique identifier for the conversion goal." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOfflineGoalDailySummary/uploadDate> ;
    sh:name "upload date" ;
    sh:description "The specific date the conversions were processed." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOfflineGoalDailySummary/successCount> ;
    sh:name "success count" ;
    sh:description "Successful conversions for this specific date." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOfflineGoalDailySummary/unattributedCount> ;
    sh:name "unattributed count" ;
    sh:description "Unattributed or failed conversions for this specific date." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOfflineGoalDailySummary/successRate> ;
    sh:name "success rate" ;
    sh:description "The success rate for this specific date, up to 6 decimal places." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOfflineGoalDailySummary/alerts> ;
    sh:name "alerts" ;
    sh:description "Error alerts specific to this date's uploads." ;
    sh:node microsoftads:CampaignManagementOfflineConversionAlertShape ;
    sh:class microsoftads:CampaignManagementOfflineConversionAlert ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Offline Conversion Reports Request
microsoftads:CampaignManagementGetOfflineConversionReportsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetOfflineConversionReportsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetOfflineConversionReportsRequest/startDateUtc> ;
    sh:name "start date utc" ;
    sh:description "The start date in UTC time." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetOfflineConversionReportsRequest/endDateUtc> ;
    sh:name "end date utc" ;
    sh:description "The end date in UTC time." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Offline Conversion Reports Response
microsoftads:CampaignManagementGetOfflineConversionReportsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetOfflineConversionReportsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetOfflineConversionReportsResponse/dailySummaries> ;
    sh:name "daily summaries" ;
    sh:description "A summary of the reports for the day." ;
    sh:node microsoftads:CampaignManagementDailySummaryShape ;
    sh:class microsoftads:CampaignManagementDailySummary ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Profile Data File Url Request
microsoftads:CampaignManagementGetProfileDataFileUrlRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetProfileDataFileUrlRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetProfileDataFileUrlRequest/profileType> ;
    sh:name "profile type" ;
    sh:description "Determines whether you want industry or job function profile data. The CompanyName profile type is not supported for this service operation. You can use the SearchCompanies operation to search for profile data by company name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetProfileDataFileUrlRequest/languageLocale> ;
    sh:name "language locale" ;
    sh:description "The language and locale of the profile display names. The supported language locale values are zh-Hant (Traditional Chinese), en (English), fr (French), de (German), it (Italian), pt-BR (Brazilian Portuguese), and es (Spanish). Please note if LinkedIn does not provide the localized profile name, then it will default to the universal name (usually defined in English)." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Profile Data File Url Response
microsoftads:CampaignManagementGetProfileDataFileUrlResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetProfileDataFileUrlResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetProfileDataFileUrlResponse/fileUrl> ;
    sh:name "file url" ;
    sh:description "The file URL that you can use to download the profile data for the profile type, language, and locale that you requested. Before you download the file, check whether the date and time of the LastModifiedTimeUtc element is later than the date and time of your previous download. You should only download the file if necessary." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetProfileDataFileUrlResponse/lastModifiedTimeUtc> ;
    sh:name "last modified time utc" ;
    sh:description "The date and time that the profile data for the profile type, language, and locale was last updated. As a best practice you should store this date and time, and going forward only download the file if this value is updated to a later date and time. The value is in Coordinated Universal Time (UTC). The date and time value reflects the date and time at the server, not the client. For information about the format of the date and time, see the dateTime entry in Primitive XML Data Types." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetProfileDataFileUrlResponse/fileUrlExpiryTimeUtc> ;
    sh:name "file url expiry time utc" ;
    sh:description "The date and time that the provided file URL will expire. If you do not download the file prior to the expiration time, then you can call the operation again to request a new file URL. You might observe that the URL is set to expire 15 minutes from the time this operation completes; however, you should not depend on a fixed duration. Future calls to this operation might result in a shorter or longer expiration time. The value is in Coordinated Universal Time (UTC). The date and time value reflects the date and time at the server, not the client. For information about the format of the date and time, see the dateTime entry in Primitive XML Data Types." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Responsive Ad Recommendation Job Request
microsoftads:CampaignManagementGetResponsiveAdRecommendationJobRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetResponsiveAdRecommendationJobRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetResponsiveAdRecommendationJobRequest/jobId> ;
    sh:name "job id" ;
    sh:description "The unique identifier of a job." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Responsive Ad Recommendation Job Response
microsoftads:CampaignManagementGetResponsiveAdRecommendationJobResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetResponsiveAdRecommendationJobResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetResponsiveAdRecommendationJobResponse/responsiveAd> ;
    sh:name "responsive ad" ;
    sh:description "A responsive ad format for audience ads and multimedia ads." ;
    sh:node microsoftads:CampaignManagementResponsiveAdShape ;
    sh:class microsoftads:CampaignManagementResponsiveAd ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetResponsiveAdRecommendationJobResponse/imageSuggestions> ;
    sh:name "image suggestions" ;
    sh:description "A list of ad recommendation image suggestion." ;
    sh:node microsoftads:CampaignManagementAdRecommendationImageSuggestionShape ;
    sh:class microsoftads:CampaignManagementAdRecommendationImageSuggestion ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetResponsiveAdRecommendationJobResponse/videoSuggestions> ;
    sh:name "video suggestions" ;
    sh:description "A list of ad recommendation video suggestions." ;
    sh:node microsoftads:CampaignManagementAdRecommendationVideoSuggestionShape ;
    sh:class microsoftads:CampaignManagementAdRecommendationVideoSuggestion ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetResponsiveAdRecommendationJobResponse/promptBrandWarning> ;
    sh:name "prompt brand warning" ;
    sh:description "Whether the brand is detected in the request prompt." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetResponsiveAdRecommendationJobResponse/jobInfo> ;
    sh:name "job info" ;
    sh:description "The ad recommendation job info data object." ;
    sh:node microsoftads:CampaignManagementAdRecommendationJobInfoShape ;
    sh:class microsoftads:CampaignManagementAdRecommendationJobInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Seasonality Adjustments By Account Id Request
microsoftads:CampaignManagementGetSeasonalityAdjustmentsByAccountIdRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetSeasonalityAdjustmentsByAccountIdRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetSeasonalityAdjustmentsByAccountIdRequest/accountId> ;
    sh:name "account id" ;
    sh:description "The account ID." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Seasonality Adjustments By Account Id Response
microsoftads:CampaignManagementGetSeasonalityAdjustmentsByAccountIdResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetSeasonalityAdjustmentsByAccountIdResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetSeasonalityAdjustmentsByAccountIdResponse/seasonalityAdjustments> ;
    sh:name "seasonality adjustments" ;
    sh:description "A list of the seasaonality adjustments associated with the specified account." ;
    sh:node microsoftads:CampaignManagementSeasonalityAdjustmentShape ;
    sh:class microsoftads:CampaignManagementSeasonalityAdjustment ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetSeasonalityAdjustmentsByAccountIdResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array BatchError that contains details for any request items that were not successful. The list of errors does not correspond directly to the list of items in the request. The list can be empty if there were no errors, or it can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Seasonality Adjustments By Ids Request
microsoftads:CampaignManagementGetSeasonalityAdjustmentsByIdsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetSeasonalityAdjustmentsByIdsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetSeasonalityAdjustmentsByIdsRequest/accountId> ;
    sh:name "account id" ;
    sh:description "The account ID." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetSeasonalityAdjustmentsByIdsRequest/seasonalityAdjustmentIds> ;
    sh:name "seasonality adjustment ids" ;
    sh:description "The seasonality adjustment IDs." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Campaign Management Get Seasonality Adjustments By Ids Response
microsoftads:CampaignManagementGetSeasonalityAdjustmentsByIdsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetSeasonalityAdjustmentsByIdsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetSeasonalityAdjustmentsByIdsResponse/seasonalityAdjustments> ;
    sh:name "seasonality adjustments" ;
    sh:description "A list of the specified seasonality adjustments." ;
    sh:node microsoftads:CampaignManagementSeasonalityAdjustmentShape ;
    sh:class microsoftads:CampaignManagementSeasonalityAdjustment ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetSeasonalityAdjustmentsByIdsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array BatchError that contains details for any request items that were not successful. The list of errors does not correspond directly to the list of items in the request. The list can be empty if there were no errors, or it can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Shared Entities By Account Id Request
microsoftads:CampaignManagementGetSharedEntitiesByAccountIdRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetSharedEntitiesByAccountIdRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetSharedEntitiesByAccountIdRequest/sharedEntityType> ;
    sh:name "shared entity type" ;
    sh:description "The type of shared entity to get from the ad account shared library. Set this element to NegativeKeywordList to get negative keyword lists (NegativeKeywordList) in your ad account shared library." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Shared Entities By Account Id Response
microsoftads:CampaignManagementGetSharedEntitiesByAccountIdResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetSharedEntitiesByAccountIdResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetSharedEntitiesByAccountIdResponse/sharedEntities> ;
    sh:name "shared entities" ;
    sh:description "The negative keyword lists from the shared library." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementAccountContentNegativeKeywordListShape ; sh:class microsoftads:CampaignManagementAccountContentNegativeKeywordList ]
      [ sh:node microsoftads:CampaignManagementAccountNegativeKeywordListShape ; sh:class microsoftads:CampaignManagementAccountNegativeKeywordList ]
      [ sh:node microsoftads:CampaignManagementAccountPlacementExclusionListShape ; sh:class microsoftads:CampaignManagementAccountPlacementExclusionList ]
      [ sh:node microsoftads:CampaignManagementAccountPlacementInclusionListShape ; sh:class microsoftads:CampaignManagementAccountPlacementInclusionList ]
      [ sh:node microsoftads:CampaignManagementBrandListShape ; sh:class microsoftads:CampaignManagementBrandList ]
      [ sh:node microsoftads:CampaignManagementNegativeKeywordListShape ; sh:class microsoftads:CampaignManagementNegativeKeywordList ]
      [ sh:node microsoftads:CampaignManagementPlacementExclusionListShape ; sh:class microsoftads:CampaignManagementPlacementExclusionList ]
      [ sh:node microsoftads:CampaignManagementSharedEntityShape ; sh:class microsoftads:CampaignManagementSharedEntity ]
      [ sh:node microsoftads:CampaignManagementSharedListShape ; sh:class microsoftads:CampaignManagementSharedList ]
      [ sh:node microsoftads:CampaignManagementSharedListBaseShape ; sh:class microsoftads:CampaignManagementSharedListBase ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Shared Entities Request
microsoftads:CampaignManagementGetSharedEntitiesRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetSharedEntitiesRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetSharedEntitiesRequest/sharedEntityType> ;
    sh:name "shared entity type" ;
    sh:description "The type of shared entity to get from the ad account or manager account (customer) library. Set this element to NegativeKeywordList to get negative keyword lists (NegativeKeywordList) in your ad account shared library. Set this element to PlacementExclusionList to get website exclusion lists (PlacementExclusionList) in your manager account (customer) shared library." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetSharedEntitiesRequest/sharedEntityScope> ;
    sh:name "shared entity scope" ;
    sh:description "Indicates whether the shared entity is available at the ad account (Account) or manager account (Customer) level. This element is optional and defaults to Account scope. The ad account scope is only applicable for negative keyword lists. Set this element to Customer to get website exclusion lists in your manager account (customer) shared library." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Account" "Customer" ) ;
  ] .

# Shape for Campaign Management Get Shared Entities Response
microsoftads:CampaignManagementGetSharedEntitiesResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetSharedEntitiesResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetSharedEntitiesResponse/sharedEntities> ;
    sh:name "shared entities" ;
    sh:description "The negative keyword lists or website exclusion lists." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementAccountContentNegativeKeywordListShape ; sh:class microsoftads:CampaignManagementAccountContentNegativeKeywordList ]
      [ sh:node microsoftads:CampaignManagementAccountNegativeKeywordListShape ; sh:class microsoftads:CampaignManagementAccountNegativeKeywordList ]
      [ sh:node microsoftads:CampaignManagementAccountPlacementExclusionListShape ; sh:class microsoftads:CampaignManagementAccountPlacementExclusionList ]
      [ sh:node microsoftads:CampaignManagementAccountPlacementInclusionListShape ; sh:class microsoftads:CampaignManagementAccountPlacementInclusionList ]
      [ sh:node microsoftads:CampaignManagementBrandListShape ; sh:class microsoftads:CampaignManagementBrandList ]
      [ sh:node microsoftads:CampaignManagementNegativeKeywordListShape ; sh:class microsoftads:CampaignManagementNegativeKeywordList ]
      [ sh:node microsoftads:CampaignManagementPlacementExclusionListShape ; sh:class microsoftads:CampaignManagementPlacementExclusionList ]
      [ sh:node microsoftads:CampaignManagementSharedEntityShape ; sh:class microsoftads:CampaignManagementSharedEntity ]
      [ sh:node microsoftads:CampaignManagementSharedListShape ; sh:class microsoftads:CampaignManagementSharedList ]
      [ sh:node microsoftads:CampaignManagementSharedListBaseShape ; sh:class microsoftads:CampaignManagementSharedListBase ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Shared Entity Associations By Entity Ids Request
microsoftads:CampaignManagementGetSharedEntityAssociationsByEntityIdsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetSharedEntityAssociationsByEntityIdsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetSharedEntityAssociationsByEntityIdsRequest/entityIds> ;
    sh:name "entity ids" ;
    sh:description "The list of either campaign or ad account identifiers. This array can contain a maximum of 100 elements." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetSharedEntityAssociationsByEntityIdsRequest/entityType> ;
    sh:name "entity type" ;
    sh:description "The type of entity corresponding to the specified EntityIds element. Set this element to \"Campaign\" to get negative keyword list to campaign associations, or brand exclusion or inclusion list to campaign associations in your ad account shared library. Set this element to \"Account\" to get website exclusion list to ad account associations in your manager account (customer) shared library." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetSharedEntityAssociationsByEntityIdsRequest/sharedEntityType> ;
    sh:name "shared entity type" ;
    sh:description "The type of shared entity to get associations. Set this element to \"NegativeKeywordList\" to get negative keyword list to campaign associations in your ad account shared library. Set this element to \"PlacementExclusionList\" to get website exclusion list to ad account associations in your manager account (customer) shared library." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetSharedEntityAssociationsByEntityIdsRequest/sharedEntityScope> ;
    sh:name "shared entity scope" ;
    sh:description "Indicates whether the shared entity is available at the ad account (Account) or manager account (Customer) level. This element is optional and defaults to Account scope. The ad account scope is only applicable for negative keyword list to campaign associations. Set this element to Customer to get website exclusion list to ad account associations in your manager account (customer) shared library." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Account" "Customer" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetSharedEntityAssociationsByEntityIdsRequest/returnAdditionalFields> ;
    sh:name "return additional fields" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Shared Entity Associations By Entity Ids Response
microsoftads:CampaignManagementGetSharedEntityAssociationsByEntityIdsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetSharedEntityAssociationsByEntityIdsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetSharedEntityAssociationsByEntityIdsResponse/associations> ;
    sh:name "associations" ;
    sh:description "An array of SharedEntityAssociation objects that corresponds directly to the entity identifiers that you specified in the request. Items of the list may be returned as null. For each list index where an association was not retrieved, the corresponding element will be null." ;
    sh:node microsoftads:CampaignManagementSharedEntityAssociationShape ;
    sh:class microsoftads:CampaignManagementSharedEntityAssociation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetSharedEntityAssociationsByEntityIdsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Shared Entity Associations By Shared Entity Ids Request
microsoftads:CampaignManagementGetSharedEntityAssociationsBySharedEntityIdsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetSharedEntityAssociationsBySharedEntityIdsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetSharedEntityAssociationsBySharedEntityIdsRequest/entityType> ;
    sh:name "entity type" ;
    sh:description "The type of entity corresponding to the specified SharedEntityIds element. Set this element to \"Campaign\" to get negative keyword list to campaign associations in your ad account shared library. Set this element to \"Account\" to get website exclusion list to ad account associations in your manager account (customer) shared library." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetSharedEntityAssociationsBySharedEntityIdsRequest/sharedEntityIds> ;
    sh:name "shared entity ids" ;
    sh:description "The list of either negative keyword list or website exclusion list identifiers. This array can contain a maximum of one element." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetSharedEntityAssociationsBySharedEntityIdsRequest/sharedEntityType> ;
    sh:name "shared entity type" ;
    sh:description "The type of shared entity to get associations. Set this element to \"NegativeKeywordList\" to get negative keyword list to campaign associations in your ad account shared library. Set this element to \"PlacementExclusionList\" to get website exclusion list to ad account associations in your manager account (customer) shared library." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetSharedEntityAssociationsBySharedEntityIdsRequest/sharedEntityScope> ;
    sh:name "shared entity scope" ;
    sh:description "Indicates whether the shared entity is available at the ad account (Account) or manager account (Customer) level. This element is optional and defaults to Account scope. The ad account scope is only applicable for negative keyword list to campaign associations. Set this element to Customer to get website exclusion list to ad account associations in your manager account (customer) shared library." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Account" "Customer" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetSharedEntityAssociationsBySharedEntityIdsRequest/returnAdditionalFields> ;
    sh:name "return additional fields" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Shared Entity Associations By Shared Entity Ids Response
microsoftads:CampaignManagementGetSharedEntityAssociationsBySharedEntityIdsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetSharedEntityAssociationsBySharedEntityIdsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetSharedEntityAssociationsBySharedEntityIdsResponse/associations> ;
    sh:name "associations" ;
    sh:description "An array of SharedEntityAssociation objects that corresponds directly to the shared entity identifiers that you specified in the request. Items of the list may be returned as null. For each list index where an association was not retrieved, the corresponding element will be null." ;
    sh:node microsoftads:CampaignManagementSharedEntityAssociationShape ;
    sh:class microsoftads:CampaignManagementSharedEntityAssociation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetSharedEntityAssociationsBySharedEntityIdsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Supported Clipchamp Audio Request
microsoftads:CampaignManagementGetSupportedClipchampAudioRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetSupportedClipchampAudioRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetSupportedClipchampAudioRequest/audioFilter> ;
    sh:name "audio filter" ;
    sh:description "Reserved." ;
    sh:node microsoftads:CampaignManagementAudioFilterShape ;
    sh:class microsoftads:CampaignManagementAudioFilter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Supported Clipchamp Audio Response
microsoftads:CampaignManagementGetSupportedClipchampAudioResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetSupportedClipchampAudioResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetSupportedClipchampAudioResponse/data> ;
    sh:name "data" ;
    sh:description "Reserved." ;
    sh:node microsoftads:CampaignManagementSupportedClipchampAudioDataShape ;
    sh:class microsoftads:CampaignManagementSupportedClipchampAudioData ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Supported Clipchamp Audio Data
microsoftads:CampaignManagementSupportedClipchampAudioDataShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementSupportedClipchampAudioData ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSupportedClipchampAudioData/audio> ;
    sh:name "audio" ;
    sh:description "Reserved." ;
    sh:node microsoftads:CampaignManagementSupportedClipchampAudioShape ;
    sh:class microsoftads:CampaignManagementSupportedClipchampAudio ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Supported Clipchamp Audio
microsoftads:CampaignManagementSupportedClipchampAudioShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementSupportedClipchampAudio ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSupportedClipchampAudio/category> ;
    sh:name "category" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSupportedClipchampAudio/audioName> ;
    sh:name "audio name" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSupportedClipchampAudio/url> ;
    sh:name "url" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Supported Fonts Request
microsoftads:CampaignManagementGetSupportedFontsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetSupportedFontsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetSupportedFontsRequest/adSubType> ;
    sh:name "ad sub type" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Supported Fonts Response
microsoftads:CampaignManagementGetSupportedFontsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetSupportedFontsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetSupportedFontsResponse/data> ;
    sh:name "data" ;
    sh:description "Reserved." ;
    sh:node microsoftads:CampaignManagementSupportedFontsDataShape ;
    sh:class microsoftads:CampaignManagementSupportedFontsData ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Supported Fonts Data
microsoftads:CampaignManagementSupportedFontsDataShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementSupportedFontsData ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSupportedFontsData/supportedFonts> ;
    sh:name "supported fonts" ;
    sh:description "Reserved." ;
    sh:node microsoftads:CampaignManagementSupportedFontShape ;
    sh:class microsoftads:CampaignManagementSupportedFont ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Supported Font
microsoftads:CampaignManagementSupportedFontShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementSupportedFont ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSupportedFont/fontFamily> ;
    sh:name "font family" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSupportedFont/fontWeights> ;
    sh:name "font weights" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Campaign Management Get Uet Tag Auth Key Request
microsoftads:CampaignManagementGetUetTagAuthKeyRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetUetTagAuthKeyRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetUetTagAuthKeyRequest/uetTagId> ;
    sh:name "uet tag id" ;
    sh:description "The unique identifier of the UET tag used to retrieve or generate an authentication key." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Uet Tag Auth Key Response
microsoftads:CampaignManagementGetUetTagAuthKeyResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetUetTagAuthKeyResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetUetTagAuthKeyResponse/uetTagAuthKey> ;
    sh:name "uet tag auth key" ;
    sh:description "The authentication key associated with the specified UET tag. If no key exists, one is generated and returned. Subsequent requests return the same key." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetUetTagAuthKeyResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects containing error details." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Uet Tags By Ids Request
microsoftads:CampaignManagementGetUetTagsByIdsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetUetTagsByIdsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetUetTagsByIdsRequest/returnAdditionalFields> ;
    sh:name "return additional fields" ;
    sh:description "The list of additional properties that you want included within each returned UetTag object." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetUetTagsByIdsRequest/tagIds> ;
    sh:name "tag ids" ;
    sh:description "A maximum of 100 identifiers of the UET tags that you want to get. If TagIds is null or empty, then you are effectively requesting all UET tags that are available for the customer." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Campaign Management Get Uet Tags By Ids Response
microsoftads:CampaignManagementGetUetTagsByIdsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetUetTagsByIdsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetUetTagsByIdsResponse/uetTags> ;
    sh:name "uet tags" ;
    sh:description "An array of UetTag objects that corresponds directly to the UET tag identifiers that you specified in the request. Items of the array may be returned as null. For each array index where a UET tag was not retrieved, the corresponding element will be null." ;
    sh:node microsoftads:CampaignManagementUetTagShape ;
    sh:class microsoftads:CampaignManagementUetTag ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetUetTagsByIdsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Get Videos By Ids Request
microsoftads:CampaignManagementGetVideosByIdsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetVideosByIdsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetVideosByIdsRequest/videoIds> ;
    sh:name "video ids" ;
    sh:description "The identifiers of the videos to get. The maximum size of the list is 1,000 items per service request. If this element is not specified, the operation will return all active videos in the account (1,000 results per page)." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetVideosByIdsRequest/pageInfo> ;
    sh:name "page info" ;
    sh:description "Determines the index and size of video results per page. This request element is optional. If this element is not specified, the defaut page Index is 0 and the default Size is 1,000." ;
    sh:node microsoftads:CampaignManagementPagingShape ;
    sh:class microsoftads:CampaignManagementPaging ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Get Videos By Ids Response
microsoftads:CampaignManagementGetVideosByIdsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGetVideosByIdsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetVideosByIdsResponse/videos> ;
    sh:name "videos" ;
    sh:description "An array of Video objects that corresponds directly to the video identifiers that you specified in the request. Items of the list may be returned as null. For each list index where a video was not retrieved, the corresponding element will be null." ;
    sh:node microsoftads:CampaignManagementVideoShape ;
    sh:class microsoftads:CampaignManagementVideo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetVideosByIdsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Google Import Job
microsoftads:CampaignManagementGoogleImportJobShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGoogleImportJob ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportJob/name> ;
    sh:name "name" ;
    sh:description "The name of the import job. The name can be between 1 to 255 characters in length. Add: Required Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportJob/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier of the import job. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportJob/type> ;
    sh:name "type" ;
    sh:description "The type of the import job. This value is GoogleImportJob when you retrieve a Google import job. For more information about import job types, see the ImportJob Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportJob/status> ;
    sh:name "status" ;
    sh:description "The status of the import job. The possible values are Active, Pause and Deleted. Scheduled imports will have an Active status, whether the job is scheduled once or on a recurring basis in the future. Paused import jobs will have a Pause status. The status of import jobs that only run once will be set to Deleted after the import. Add: Read-only Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportJob/notificationType> ;
    sh:name "notification type" ;
    sh:description "Determines whether and how often you want to receive email notifications about the import job results. The supported values are \"None\" (No emails), \"Changes\" (Only if there are changes or errors), \"Errors\" (Only if there are errors), and \"EveryTime\" (Every time this import runs). Add: Optional. If not set, the service sets this element to \"None\" by default. Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportJob/createdByUserId> ;
    sh:name "created by user id" ;
    sh:description "The unique identifier of the Microsoft Advertising user who created the import job. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportJob/createdByUserName> ;
    sh:name "created by user name" ;
    sh:description "The login user name of the Microsoft Advertising user who created the import job. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportJob/frequency> ;
    sh:name "frequency" ;
    sh:description "Determines whether the import job should be run once or scheduled on a recurring basis. To run the import job now, this element must be nil or empty. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:node microsoftads:CampaignManagementFrequencyShape ;
    sh:class microsoftads:CampaignManagementFrequency ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportJob/lastRunTimeInUTC> ;
    sh:name "last run time in utc" ;
    sh:description "The most recent import date and time for this job. The date and time is expressed in Coordinated Universal Time (UTC). Add: Read-only Update: Read-only" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportJob/createdDateTimeInUTC> ;
    sh:name "created date time in utc" ;
    sh:description "The date and time when the import job was created. The date and time is expressed in Coordinated Universal Time (UTC). Add: Read-only Update: Read-only" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportJob/importOption> ;
    sh:name "import option" ;
    sh:description "The Google import options that are available via API. To customize Google import options, you can include a GoogleImportOption object. Otherwise to use the default Google import options, you can leave this element nil or empty. For more information about default options, see GoogleImportOption. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementFileImportOptionShape ; sh:class microsoftads:CampaignManagementFileImportOption ]
      [ sh:node microsoftads:CampaignManagementGoogleImportOptionShape ; sh:class microsoftads:CampaignManagementGoogleImportOption ]
      [ sh:node microsoftads:CampaignManagementImportOptionShape ; sh:class microsoftads:CampaignManagementImportOption ]
      [ sh:node microsoftads:CampaignManagementImportOptionBaseShape ; sh:class microsoftads:CampaignManagementImportOptionBase ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportJob/notificationEmail> ;
    sh:name "notification email" ;
    sh:description "The email address where import results should be sent. This element is not returned by default. To get this element, include the NotificationEmail value in the ReturnAdditionalFields element when you call the GetImportJobsByIds and GetImportResults service operations. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportJob/credentialId> ;
    sh:name "credential id" ;
    sh:description "Authorizes a Google Ads user to import accounts to Microsoft Advertising. This element is not returned when you get the GoogleImportJob. See the Get an Import Credential ID guide for more details. Add: Required Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportJob/googleAccountId> ;
    sh:name "google account id" ;
    sh:description "The Google Ads account to import. Add: Required Update: Read-only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportJob/campaignAdGroupIds> ;
    sh:name "campaign ad group ids" ;
    sh:description "The list of campaigns and their ad groups to import from Google Ads. The identifiers are saved but not validated when you create an import job. If you include invalid campaign or ad group IDs, or if they become invalid e.g., the entities are deleted later from Google Ads, the invalid entities will be skipped during import. Add: Optional. If this element is not set, then all of the campaigns and ad groups in the Google Ads account are eligible for import. The set of imported entities also depends on your import options. Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:node microsoftads:CampaignManagementCampaignAdGroupIdsShape ;
    sh:class microsoftads:CampaignManagementCampaignAdGroupIds ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportJob/campaignTypes> ;
    sh:name "campaign types" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportJob/googleUserName> ;
    sh:name "google user name" ;
    sh:description "The Google account i.e., the Google user credentials with access to the Google Ads account. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Google Import Option
microsoftads:CampaignManagementGoogleImportOptionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementGoogleImportOption ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. Forward compatibility changes will be noted here in future releases. There are currently no forward compatibility changes for this object." ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/type> ;
    sh:name "type" ;
    sh:description "The type of the import option. This value is GoogleImportOption when you retrieve a Google import option. For more information about import option types, see the ImportOption Data Object Remarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/newEntities> ;
    sh:name "new entities" ;
    sh:description "The prerequisite option for importing new entities and settings into Microsoft Advertising. If this element is set false, the following options are ignored: NewActiveAdsForExistingAdGroups, NewActiveCampaignsAndChildEntities, NewAdCustomizerFeeds, NewAdGroupsAndChildEntitiesForExistingCampaigns, NewAdSchedules, NewAppAdExtensions, NewAudienceTargets, NewCallAdExtensions, NewCalloutAdExtensions, NewDemographicTargets, NewDeviceTargets, NewKeywordsForExistingAdGroups, NewKeywordUrls, NewLabels, NewLocationAdExtensions, NewLocationTargets, NewNegativeKeywordLists, NewNegativeKeywordsForExistingParents, NewNegativeSites, NewPageFeeds, NewPausedAdsForExistingAdGroups, NewPausedCampaignsAndChildEntities, NewPriceAdExtensions, NewProductFilters, NewReviewAdExtensions, NewSitelinkAdExtensions, NewStructuredSnippetAdExtensions, NewUrlOptions. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Items not previously imported into Microsoft Advertising." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/newPausedCampaignsAndChildEntities> ;
    sh:name "new paused campaigns and child entities" ;
    sh:description "Import paused campaigns along with your active campaigns. The NewActiveCampaignsAndChildEntities option must also be enabled, otherwise this option is effectively ignored. This option is turned off by default, or effectively set to false. Set this element true to enable this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > Other options > Campaign options > Include paused campaigns when importing new items." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/newActiveCampaignsAndChildEntities> ;
    sh:name "new active campaigns and child entities" ;
    sh:description "Import active campaigns that have not previously been imported. The import will include all ad groups, active ads, and keywords that the new campaigns contain. To also import paused campaigns, ensure that the NewPausedCampaignsAndChildEntities option is enabled. To also import paused ads, ensure that the NewPausedAdsForExistingAdGroups option is enabled. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Items not previously imported into Microsoft Advertising > Import items > Campaigns." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/newAdGroupsAndChildEntitiesForExistingCampaigns> ;
    sh:name "new ad groups and child entities for existing campaigns" ;
    sh:description "Import new ad groups within existing campaigns. The import will include all active ads and keywords that the new ad groups contain. To also import paused ads, ensure that the NewPausedAdsForExistingAdGroups option is enabled. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Items not previously imported into Microsoft Advertising > Import items > Ad groups for existing campaigns." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/newActiveAdsForExistingAdGroups> ;
    sh:name "new active ads for existing ad groups" ;
    sh:description "Import new active ads within existing ad groups. To also import paused ads, ensure that the NewPausedAdsForExistingAdGroups option is enabled. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Items not previously imported into Microsoft Advertising > Import items > Ads for existing ad groups." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/newKeywordsForExistingAdGroups> ;
    sh:name "new keywords for existing ad groups" ;
    sh:description "Import new keywords within existing ad groups. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Items not previously imported into Microsoft Advertising > Import items > Keywords for existing ad groups." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/newNegativeKeywordsForExistingParents> ;
    sh:name "new negative keywords for existing parents" ;
    sh:description "Import new negative keywords for existing campaigns or existing ad groups. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Items not previously imported into Microsoft Advertising > Import items > Negative keywords for existing campaigns and ad groups." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/newNegativeKeywordLists> ;
    sh:name "new negative keyword lists" ;
    sh:description "Import negative keyword lists that have not previously been imported. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Items not previously imported into Microsoft Advertising > Import items > Negative keyword lists." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/newAccountNegativeKeywords> ;
    sh:name "new account negative keywords" ;
    sh:description "Import account negative keywords that have not previously been imported. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Items not previously imported into Microsoft Advertising > Import items > Account negative keywords." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/pauseNewCampaigns> ;
    sh:name "pause new campaigns" ;
    sh:description "This option will pause newly imported campaigns allowing you to review your campaigns before you get your campaigns up and running. This option is turned off by default, or effectively set to false. Set this element true to enable this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > Other options > Campaign options > Pause newly imported campaigns." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/newKeywordUrls> ;
    sh:name "new keyword urls" ;
    sh:description "Import new keyword landing page URLs. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Items not previously imported into Microsoft Advertising > Import items > Keyword landing page URLs." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/newUrlOptions> ;
    sh:name "new url options" ;
    sh:description "Import tracking templates, custom parameters, and final URL suffix URL options with entities that have not previously been imported. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Items not previously imported into Microsoft Advertising > Import items > Tracking templates, custom parameters, and final URL suffixes." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/newNegativeSites> ;
    sh:name "new negative sites" ;
    sh:description "Import new negative sites for existing campaigns or existing ad groups. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Items not previously imported into Microsoft Advertising > Import items > Negative sites." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/newPausedAdsForExistingAdGroups> ;
    sh:name "new paused ads for existing ad groups" ;
    sh:description "Import paused ads along with your active ads. The NewActiveAdsForExistingAdGroups option must also be enabled, otherwise this option is effectively ignored. This option is turned off by default, or effectively set to false. Set this element true to enable this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > Other options > Ad options > Include paused ads when importing new ads." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/newLabels> ;
    sh:name "new labels" ;
    sh:description "Import labels that have not previously been imported. Label associations are only imported if you also import the corresponding new entities. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Items not previously imported into Microsoft Advertising > Import items > Labels." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/newProductFilters> ;
    sh:name "new product filters" ;
    sh:description "Import new product filters from your shopping campaigns. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Items not previously imported into Microsoft Advertising > Import items > Product filters." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/newLocationTargets> ;
    sh:name "new location targets" ;
    sh:description "Import location targets that have not previously been imported. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Items not previously imported into Microsoft Advertising > Targeting > Location targets." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/newAdSchedules> ;
    sh:name "new ad schedules" ;
    sh:description "Import ad schedules that have not previously been imported. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Items not previously imported into Microsoft Advertising > Targeting > Ad schedules." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/newDeviceTargets> ;
    sh:name "new device targets" ;
    sh:description "Import device targets that have not previously been imported. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Items not previously imported into Microsoft Advertising > Targeting > Device targets." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/newDemographicTargets> ;
    sh:name "new demographic targets" ;
    sh:description "Import demographic targets that have not previously been imported. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Items not previously imported into Microsoft Advertising > Targeting > Demographic targets." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/newAudienceTargets> ;
    sh:name "new audience targets" ;
    sh:description "Import campaign and ad group targets and exclusions for in-market audiences. Targets and exclusions for remarketing lists and combined lists can be imported if a valid UET tag identifier is set via the AssociatedUetTagId element. As support is added for import of additional audience types in the future, the corresponding lists, targets, and exclusions will also be imported if this option is enabled. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Items not previously imported into Microsoft Advertising > Targeting > Audience targets." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/newTopicTargets> ;
    sh:name "new topic targets" ;
    sh:description "Import topic targets that haven't previously been imported. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Items not previously imported into Microsoft Advertising > Targeting > Topic targets." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/newAppAdExtensions> ;
    sh:name "new app ad extensions" ;
    sh:description "Import app extensions that have not previously been imported. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Items not previously imported into Microsoft Advertising > Ad extensions > App Extensions." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/newCallAdExtensions> ;
    sh:name "new call ad extensions" ;
    sh:description "Import call extensions that have not previously been imported. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Items not previously imported into Microsoft Advertising > Ad extensions > Call Extensions." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/newCalloutAdExtensions> ;
    sh:name "new callout ad extensions" ;
    sh:description "Import callout extensions that have not previously been imported. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Items not previously imported into Microsoft Advertising > Ad extensions > Callout Extensions." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/newPriceAdExtensions> ;
    sh:name "new price ad extensions" ;
    sh:description "Import price extensions that have not previously been imported. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Items not previously imported into Microsoft Advertising > Ad extensions > Price Extensions." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/newLocationAdExtensions> ;
    sh:name "new location ad extensions" ;
    sh:description "Import location extensions that have not previously been imported. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Items not previously imported into Microsoft Advertising > Ad extensions > Location Extensions." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/newReviewAdExtensions> ;
    sh:name "new review ad extensions" ;
    sh:description "Import review extensions that have not previously been imported. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Items not previously imported into Microsoft Advertising > Ad extensions > Review Extensions." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/newSitelinkAdExtensions> ;
    sh:name "new sitelink ad extensions" ;
    sh:description "Import sitelink extensions that have not previously been imported. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Items not previously imported into Microsoft Advertising > Ad extensions > Sitelink Extensions." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/newStructuredSnippetAdExtensions> ;
    sh:name "new structured snippet ad extensions" ;
    sh:description "Import structured snippet extensions that have not previously been imported. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Items not previously imported into Microsoft Advertising > Ad extensions > Structured Snippet Extensions." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/newPromotionAdExtensions> ;
    sh:name "new promotion ad extensions" ;
    sh:description "Import promotion extensions that have not previously been imported. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Items not previously imported into Microsoft Advertising > Ad extensions > Promotion Extensions." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/newImageAdExtensions> ;
    sh:name "new image ad extensions" ;
    sh:description "Reserved." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/newLogoAdExtensions> ;
    sh:name "new logo ad extensions" ;
    sh:description "Import logo ad extensions that have not previously been imported. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Items not previously imported into Microsoft Advertising > Ad extensions > Logo Ad Extensions." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/newLeadFormAdExtensions> ;
    sh:name "new lead form ad extensions" ;
    sh:description "Reserved." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/newPageFeeds> ;
    sh:name "new page feeds" ;
    sh:description "Import page feeds that have not previously been imported. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Items not previously imported into Microsoft Advertising > Feeds > Page feeds." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/newAdCustomizerFeeds> ;
    sh:name "new ad customizer feeds" ;
    sh:description "Import ad customizer feeds that have not previously been imported. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Items not previously imported into Microsoft Advertising > Feeds > Ad customizer feeds." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/newBrandSuitability> ;
    sh:name "new brand suitability" ;
    sh:description "Import brand suitability that has not previously been imported. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Items not previously imported into Microsoft Advertising > Brand Suitability" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/newBrandListAssociations> ;
    sh:name "new brand list associations" ;
    sh:description "Reserved." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/newConversionGoals> ;
    sh:name "new conversion goals" ;
    sh:description "Import conversion goals that have not previously been imported. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > UET tag > Conversion goals." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/newCarouselAd> ;
    sh:name "new carousel ad" ;
    sh:description "Reserved." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/newPortfolioBidStrategy> ;
    sh:name "new portfolio bid strategy" ;
    sh:description "Reserved." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/newAIMaxSettings> ;
    sh:name "new aimax settings" ;
    sh:description "Import AI Max settings that haven not previously been imported. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > Targeting > AI Max settings." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/newSearchThemesForExistingAssetGroups> ;
    sh:name "new search themes for existing asset groups" ;
    sh:description "This element is deprecated." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/updateEntities> ;
    sh:name "update entities" ;
    sh:description "The prerequisite option for importing updated entities and settings into Microsoft Advertising. The service will import updates for previously imported items to match those currently in Google Ads. If this element is set false, the following options are ignored: UpdateAdCustomizerFeeds, UpdateAdCustomizerFeeds, UpdateAdGroupNetwork, UpdateAdSchedules, UpdateAppAdExtensions, UpdateAudienceTargets, UpdateCallAdExtensions, UpdateCalloutAdExtensions, UpdateDemographicTargets, UpdateDeviceTargets, UpdateKeywordUrls, UpdateLabels, UpdateLocationAdExtensions, UpdateLocationTargets, UpdateNegativeKeywordLists, UpdateNegativeSites, UpdatePageFeeds, UpdatePriceAdExtensions, UpdateProductFilters, UpdateReviewAdExtensions, UpdateSitelinkAdExtensions, UpdateStructuredSnippetAdExtensions, UpdateUrlOptions. This option is equivalent to the \"Updates to existing items\" checkbox in the Microsoft Advertising UI. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Updates to existing items." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/updateCampaignBudgets> ;
    sh:name "update campaign budgets" ;
    sh:description "When enabled this option fetches updates to existing campaign budgets that are now in Microsoft Advertising. This option is only honored if UpdateEntities is also enabled. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > Bids and budgets > Update existing campaign budgets." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/updateBids> ;
    sh:name "update bids" ;
    sh:description "When enabled this option allows you to update the existing keywords, auto-targets, and product ads bid types to match those currently in Google Ads. This option is only honored if UpdateEntities is also enabled. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > Bids and budgets > Update bids." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/updateNegativeKeywordLists> ;
    sh:name "update negative keyword lists" ;
    sh:description "Import updates to existing negative keyword lists. This option is only honored if UpdateEntities is also enabled. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Updates to existing items > Campaign settings > Negative keyword lists." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/updateAccountNegativeKeywords> ;
    sh:name "update account negative keywords" ;
    sh:description "Import updates to existing account negative keywords. This option is only honored if UpdateEntities is also enabled. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Updates to existing items > Campaign settings > Account negative keywords." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/updateNegativeSites> ;
    sh:name "update negative sites" ;
    sh:description "Import updates to negative sites for existing campaigns and ad groups. This option is only honored if UpdateEntities is also enabled. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Updates to existing items > Campaign settings > Negative sites." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/updateKeywordUrls> ;
    sh:name "update keyword urls" ;
    sh:description "Import updates to existing keyword landing page URLs. This option is only honored if UpdateEntities is also enabled. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Updates to existing items > Campaign settings > Keyword landing page URLs." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/updateUrlOptions> ;
    sh:name "update url options" ;
    sh:description "Import updates to the tracking templates, custom parameters, and final URL suffix of existing entities. This option is only honored if UpdateEntities is also enabled. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Updates to existing items > Campaign settings > Tracking templates, custom parameters, and final URL suffixes." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/updateCampaignNames> ;
    sh:name "update campaign names" ;
    sh:description "By enabling this option Microsoft Advertising will update the names of previously imported campaigns if the name was updated in Google Ads. However, settings and items linked to those campaigns can still be updated. Existing campaigns will be updated if the original items were created by an import after March 21, 2016. Otherwise, new campaign names will be created. This option is only applicable for existing campaigns and will not affect new campaigns. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > Other options > Campaign options > Do not update existing campaign names." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/updateLabels> ;
    sh:name "update labels" ;
    sh:description "Import updates to existing labels. This option is only honored if UpdateEntities is also enabled. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Updates to existing items > Campaign settings > Labels." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/updateProductFilters> ;
    sh:name "update product filters" ;
    sh:description "When enabled this option updates product filters in shopping campaigns to match those currently in Google Ads. This option is only honored if UpdateEntities is also enabled. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Updates to existing items > Campaign settings > Product filters." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/updateConversionGoals> ;
    sh:name "update conversion goals" ;
    sh:description "Import updates to existing conversion goals. This option is only honored if UpdateEntities is also enabled. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Updates to existing items > UET tag > conversion goals." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/updateLocationTargets> ;
    sh:name "update location targets" ;
    sh:description "Import updates to existing location targets. This option is only honored if UpdateEntities is also enabled. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Updates to existing items > Targeting > Location targets." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/updateAdSchedules> ;
    sh:name "update ad schedules" ;
    sh:description "Import updates to existing ad schedules. This option is only honored if UpdateEntities is also enabled. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Updates to existing items > Targeting > Ad schedules." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/updateDeviceTargets> ;
    sh:name "update device targets" ;
    sh:description "Import updates to existing device targets. This option is only honored if UpdateEntities is also enabled. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Updates to existing items > Targeting > Device targets." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/updateDemographicTargets> ;
    sh:name "update demographic targets" ;
    sh:description "Import updates to existing demographic targets. This option is only honored if UpdateEntities is also enabled. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Updates to existing items > Targeting > Demographic targets." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/updateCampaignAdGroupLanguages> ;
    sh:name "update campaign ad group languages" ;
    sh:description "Import updates to the language of existing campaigns and ad groups. This option is only honored if UpdateEntities is also enabled. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Updates to existing items > Campaign settings > Campaign and ad group languages." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/updateAudienceTargets> ;
    sh:name "update audience targets" ;
    sh:description "Import updates to existing audience targets. This option is only honored if UpdateEntities is also enabled. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Updates to existing items > Targeting > Audience targets." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/updateTopicTargets> ;
    sh:name "update topic targets" ;
    sh:description "Import updates to existing topic targets. This option is only honored if UpdateEntities is also enabled. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Updates to existing items > Targeting > Topic targets." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/updateAppAdExtensions> ;
    sh:name "update app ad extensions" ;
    sh:description "Import updates to existing app extensions. This option is only honored if UpdateEntities is also enabled. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Updates to existing items > Ad extensions > App Extensions." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/updateCallAdExtensions> ;
    sh:name "update call ad extensions" ;
    sh:description "Import updates to existing call extensions. This option is only honored if UpdateEntities is also enabled. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Updates to existing items > Ad extensions > Call Extensions." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/updateCalloutAdExtensions> ;
    sh:name "update callout ad extensions" ;
    sh:description "Import updates to existing callout extensions. This option is only honored if UpdateEntities is also enabled. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Updates to existing items > Ad extensions > Callout Extensions." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/updatePriceAdExtensions> ;
    sh:name "update price ad extensions" ;
    sh:description "Import updates to existing price extensions. This option is only honored if UpdateEntities is also enabled. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Updates to existing items > Ad extensions > Price Extensions." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/updateLocationAdExtensions> ;
    sh:name "update location ad extensions" ;
    sh:description "Import updates to existing location extensions. This option is only honored if UpdateEntities is also enabled. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Updates to existing items > Ad extensions > Location Extensions." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/updateReviewAdExtensions> ;
    sh:name "update review ad extensions" ;
    sh:description "Import updates to existing review extensions. This option is only honored if UpdateEntities is also enabled. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Updates to existing items > Ad extensions > Review Extensions." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/updateSitelinkAdExtensions> ;
    sh:name "update sitelink ad extensions" ;
    sh:description "Import updates to existing sitelink extensions. This option is only honored if UpdateEntities is also enabled. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Updates to existing items > Ad extensions > Sitelink Extensions." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/updateStructuredSnippetAdExtensions> ;
    sh:name "update structured snippet ad extensions" ;
    sh:description "Import updates to existing structured snippet extensions. This option is only honored if UpdateEntities is also enabled. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Updates to existing items > Ad extensions > Structured Snippet Extensions." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/updatePromotionAdExtensions> ;
    sh:name "update promotion ad extensions" ;
    sh:description "Import updates to existing promotion extensions. This option is only honored if UpdateEntities is also enabled. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Updates to existing items > Ad extensions > Promotion Extensions." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/updateImageAdExtensions> ;
    sh:name "update image ad extensions" ;
    sh:description "Reserved." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/updateLogoAdExtensions> ;
    sh:name "update logo ad extensions" ;
    sh:description "Import updates to existing logo ad extensions. This option is only honored if UpdateEntities is also enabled. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Updates to existing items > Ad extensions > Logo Ad Extensions." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/updateLeadFormAdExtensions> ;
    sh:name "update lead form ad extensions" ;
    sh:description "Reserved." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/updateStatusForCampaigns> ;
    sh:name "update status for campaigns" ;
    sh:description "Import updates to the status of existing campaigns. This option is only honored if UpdateEntities is also enabled. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Updates to existing items > Status > Campaign status." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/updateStatusForAdGroups> ;
    sh:name "update status for ad groups" ;
    sh:description "Import updates to the status of existing ad groups. This option is only honored if UpdateEntities is also enabled. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Updates to existing items > Status > Ad group status." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/updateStatusForAds> ;
    sh:name "update status for ads" ;
    sh:description "Import updates to the status of existing ads. This option is only honored if UpdateEntities is also enabled. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Updates to existing items > Status > Ad status." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/updateStatusForKeywords> ;
    sh:name "update status for keywords" ;
    sh:description "Import updates to the status of existing keywords. This option is only honored if UpdateEntities is also enabled. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Updates to existing items > Status > Keyword status." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/updateAdGroupNetwork> ;
    sh:name "update ad group network" ;
    sh:description "Import updates to the ad distribution of existing ad groups. This option is only honored if UpdateEntities is also enabled. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Updates to existing items > Campaign settings > Ad distribution." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/updatePageFeeds> ;
    sh:name "update page feeds" ;
    sh:description "Import updates to existing page feeds. This option is only honored if UpdateEntities is also enabled. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Updates to existing items > Feeds > Page feeds." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/updateAdCustomizerFeeds> ;
    sh:name "update ad customizer feeds" ;
    sh:description "Import updates to existing ad customizer feeds. This option is only honored if UpdateEntities is also enabled. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Updates to existing items > Feeds > Ad customizer feeds." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/updateBrandSuitability> ;
    sh:name "update brand suitability" ;
    sh:description "Import updates to brand suitablity. This option is only honored if UpdateEntities is also enabled. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Updates to existing items > Brand Suitability." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/updateBrandListAssociations> ;
    sh:name "update brand list associations" ;
    sh:description "Reserved." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/updateAdCustomizerAttributes> ;
    sh:name "update ad customizer attributes" ;
    sh:description "Import updates to existing ad customizer feeds. This option is only honored if UpdateEntities is also enabled. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Updates to existing items > Feeds > Ad customizer attributes." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/updateAIMaxSettings> ;
    sh:name "update aimax settings" ;
    sh:description "Import updates to AI Max settings. This option is enabled by default, or effectively set to true. Set this element false to preserve existing Microsoft AI Max settings. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > Targeting > AI Max settings." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/updateAssetGroupsAsset> ;
    sh:name "update asset groups asset" ;
    sh:description "This element is deprecated." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/enableCopilot> ;
    sh:name "enable copilot" ;
    sh:description "Reserved." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/deleteRemovedEntities> ;
    sh:name "delete removed entities" ;
    sh:description "Removed Google Ads items will be deleted along with their associated sub-items. For example if you removed a Google Ads campaign since the previous import, then the campaign and its ad groups, ads, and keywords will be removed from Microsoft Advertising when the import runs next time. Likewise, if you removed your Google Ads account level tracking template or final URL suffix since the previous import, they will be deleted from Microsoft Advertising. Ad extensions removed in Google Ads will not be deleted in Microsoft Advertising. This option is turned off by default, or effectively set to false. Set this element true to enable this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Delete items that have been removed from your Google Ads account." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/raiseBidsToMinimum> ;
    sh:name "raise bids to minimum" ;
    sh:description "Due to differences in Microsoft Advertising and Google Ads minimum bid requirements any bids below the our minimum amount will automatically be raised during import. This means that the amount of money you spend overall may increase for the imported campaigns. If you decide to opt out of increasing the minimum bid during import any campaigns that don't meet the minimum amount will not get imported. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > Bids and budgets > Set unknown ad group bids to the recommended value for Microsoft Advertising." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/raiseCampaignBudgetsToMinimum> ;
    sh:name "raise campaign budgets to minimum" ;
    sh:description "Due to differences in Microsoft Advertising and Google Ads minimum bid and budget requirements any budgets below our minimum amount will automatically be raised during import. This means that the amount of money you spend overall may increase for the imported campaigns. If you decide to opt out of increasing the minimum budget during import any campaigns that don't meet the minimum amount will not get imported. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > Bids and budgets > Increase campaign budgets to the minimum for Microsoft Advertising." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/adjustmentForCampaignBudgets> ;
    sh:name "adjustment for campaign budgets" ;
    sh:description "The percentage amount that you want to increase or decrease the new or existing Microsoft Advertising campaign budgets relative to your Google Ads campaign budgets. The valid bid multiplier range is -90 through 900. For example, to increase the Microsoft Advertising campaign budgets 25 percent higher than your Google Ads campaign budgets, set this element to 25. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > Bids and budgets > Customize budgets for Microsoft Advertising." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/adjustmentForBids> ;
    sh:name "adjustment for bids" ;
    sh:description "The percentage amount that you want to increase or decrease the new or existing Microsoft Advertising bids relative to your Google Ads bids. The valid bid multiplier range is -90 through 900. For example, to increase the Microsoft Advertising bids 25 percent higher than your Google Ads bids, set this element to 25. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > Bids and budgets > Customize bids for Microsoft Advertising." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/suffixForUrls> ;
    sh:name "suffix for urls" ;
    sh:description "Set this option to insert a string at the end of each final URL, mobile URL, and destination URL during import. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > Other options > Landing page URLs > Insert at the end of each final URL, mobile URL, and destination URL." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/searchAndReplaceForUrls> ;
    sh:name "search and replace for urls" ;
    sh:description "Set this option to find and replace a string within each final URL, mobile URL, and destination URL during import. When you update import options via UpdateImportJobs you can remove, update, or leave in place the prior search and replace settings. For details please see the remarks below. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > Other options > Landing page URLs > Find and replace text in each final URL, mobile URL, and destination URL." ;
    sh:node microsoftads:CampaignManagementImportSearchAndReplaceForStringPropertyShape ;
    sh:class microsoftads:CampaignManagementImportSearchAndReplaceForStringProperty ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/suffixForTrackingTemplates> ;
    sh:name "suffix for tracking templates" ;
    sh:description "Set this option to insert a string at the end of each tracking template during import. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > Other options > Tracking templates > Insert at the end of each tracking template." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/searchAndReplaceForTrackingTemplates> ;
    sh:name "search and replace for tracking templates" ;
    sh:description "Set this option to find and replace a string within each tracking template during import. When you update import options via UpdateImportJobs you can remove, update, or leave in place the prior search and replace settings. For details please see the remarks below. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > Other options > Tracking templates > Find and replace text in each tracking template." ;
    sh:node microsoftads:CampaignManagementImportSearchAndReplaceForStringPropertyShape ;
    sh:class microsoftads:CampaignManagementImportSearchAndReplaceForStringProperty ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/suffixForCampaignNames> ;
    sh:name "suffix for campaign names" ;
    sh:description "Set this option to insert a string at the end of each campaign name during import. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > Other options > Campaign options > Insert at the end of each campaign name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/searchAndReplaceForCampaignNames> ;
    sh:name "search and replace for campaign names" ;
    sh:description "Set this option to find and replace a string within each campaign name during import. When you update import options via UpdateImportJobs you can remove, update, or leave in place the prior search and replace settings. For details please see the remarks below. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > Other options > Campaign options > Find and replace text in each campaign name." ;
    sh:node microsoftads:CampaignManagementImportSearchAndReplaceForStringPropertyShape ;
    sh:class microsoftads:CampaignManagementImportSearchAndReplaceForStringProperty ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/searchAndReplaceForCustomParameters> ;
    sh:name "search and replace for custom parameters" ;
    sh:description "Set this option to find and replace a string within each custom parameter during import. When you update import options via UpdateImportJobs you can remove, update, or leave in place the prior search and replace settings. For details please see the remarks below. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > Other options > Tracking templates > Find and replace text in each custom parameter." ;
    sh:node microsoftads:CampaignManagementImportSearchAndReplaceForStringPropertyShape ;
    sh:class microsoftads:CampaignManagementImportSearchAndReplaceForStringProperty ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/searchAndReplaceForFinalURLSuffix> ;
    sh:name "search and replace for final urlsuffix" ;
    sh:description "Reserved." ;
    sh:node microsoftads:CampaignManagementImportSearchAndReplaceForStringPropertyShape ;
    sh:class microsoftads:CampaignManagementImportSearchAndReplaceForStringProperty ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/pauseCampaignsWithoutSupportedLocations> ;
    sh:name "pause campaigns without supported locations" ;
    sh:description "When enabled this option will pause imported campaigns in case all of their location targets are unsupported by Microsoft Advertising. If a campaign contains both supported and unsupported location targets the campaign will not be paused and will continue to serve for supported location targets. This option is turned off by default, or effectively set to false. Set this element true to enable this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > Other options > Targeting > Pause campaigns when all imported location targets are unsupported." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/enableParentLocationMapping> ;
    sh:name "enable parent location mapping" ;
    sh:description "Google Ads location targets that are unsupported by Microsoft Advertising are expanded in scope and mapped to parent location targets that are supported. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. If you set this element false the unsupported location targets are not imported. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > Other options > Targeting > Do not expand unsupported location targets." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/associatedStoreId> ;
    sh:name "associated store id" ;
    sh:description "Note: AssociatedStoreId is deprecated. The identifier of the Microsoft Merchant Center store that you want to associate with imported product ads and product filters. If this option is null or empty, your product ads and product filters will not be imported. To learn more see the Product Ads technical guide and the Create product ads in a shopping campaign help article. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > Other options > Microsoft Merchant Center > Associate Microsoft Merchant Center Store with imported shopping campaigns and ad extensions." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/raiseProductGroupBidsToMinimum> ;
    sh:name "raise product group bids to minimum" ;
    sh:description "By enabling this option Microsoft Advertising will increase all product group bids to the minimum bid amount. Your campaigns will still be imported if you don't enable this option but any products groups that have a bid below the Microsoft Advertising minimum will not serve. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > Bids and Budgets > Increase product group bids to the minimum for Microsoft Advertising." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/searchAndDsaMixedCampaignAsSearchCampaign> ;
    sh:name "search and dsa mixed campaign as search campaign" ;
    sh:description "If you enable this option, the service will only fetch search ads from mixed campaigns and import them as search campaigns. Otherwise the service will only fetch dynamic search ads from mixed campaigns and import them as dynamic search campaigns. Mixed campaigns contain both dynamic search ads and other ad types (e.g. Expanded Text Ads). Mixed campaigns are available wherever Dynamic search ads are supported i.e., Australia (AU), Austria (AT), Belgium (BE), Canada (CA), France (FR), Germany (DE), Ireland (IE), Italy (IT), Netherlands (NL), New Zealand (NZ), Spain (ES), Sweden (SE), Switzerland (CH), United Kingdom (UK), and United States (US). In those countries/regions this option is ignored and will no longer be visible in the Microsoft Advertising UI. Then whether this option is set to true or false both search and DSA ad groups will be imported. This option is turned off by default, or effectively set to false. Set this element true to enable this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Import search and DSA mixed campaigns as search campaigns." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/accountUrlOptions> ;
    sh:name "account url options" ;
    sh:description "Import the account level tracking template and final URL suffix. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Account-level URL options." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/enableAutoCurrencyConversion> ;
    sh:name "enable auto currency conversion" ;
    sh:description "If the currency in your Google Ads account does not match the currency in your Microsoft Advertising ad account, the imported bids and budgets will be converted to their equivalent currency in Microsoft Advertising. This option is turned off by default, or effectively set to false. Set this element true to enable this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Choose your Google Ads account. You will only see the UI option to convert or ignore if the currency varies between your Google Ads account and Microsoft Advertising ad account." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/updateBiddingStrategies> ;
    sh:name "update bidding strategies" ;
    sh:description "Update the existing campaign, ad group, and keyword bid strategies to match those currently in Google Ads. This option is only honored if UpdateEntities is also enabled. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > Bids and budgets > Update bid strategies." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/associatedUetTagId> ;
    sh:name "associated uet tag id" ;
    sh:description "The identifier of the Universal Event Tracking tag (UetTag) that you want to associate with imported remarketing lists. This option is only available for customers in the Remarketing Google Import feature pilot program (GetCustomerPilotFeatures returns 750). To import audience lists, targets, and exclusions you must also enable the NewAudienceTargets option. If this option is null or empty, your remarketing lists, targets, and exclusions will not be imported. This element is not required for in-market audience targets and exclusions, since they do not depend on a UET tag. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > UET tag > Asse the following UET tag with any remarketing list, audience, or converociatsion goal that has not previously imported into Microsoft Advertising." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/autoDeviceBidOptimization> ;
    sh:name "auto device bid optimization" ;
    sh:description "When enabled, we will not import negative bid modifiers for desktop targets except modifiers set to -100%. This option is turned off by default, or effectively set to false. Set this element true to enable this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > Bids and budgets > Do not import negative bid modifier for desktop (except -100%)." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/adScheduleUseSearcherTimezone> ;
    sh:name "ad schedule use searcher timezone" ;
    sh:description "Reserved." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/pauseAIMAdGroupIfAllAudienceCriterionNotImported> ;
    sh:name "pause aimad group if all audience criterion not imported" ;
    sh:description "Reserved." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/renameCampaignNameWithSuffix> ;
    sh:name "rename campaign name with suffix" ;
    sh:description "Reserved." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/updateAdUrls> ;
    sh:name "update ad urls" ;
    sh:description "Import updates to existing ad landing page URLs. This option is only honored if UpdateEntities is also enabled. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Updates to existing items > Campaign settings > Ad landing page URLs." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/updateSitelinkUrls> ;
    sh:name "update sitelink urls" ;
    sh:description "Import updates to existing Sitelink Extension URLs. This option is only honored if UpdateEntities is also enabled. This option is enabled by default, or effectively set to true. Set this element false to turn off this option. This option is available in the Microsoft Advertising UI via Import from Google Ads > Choose import options > What to import > Updates to existing items > Ad extensions > Sitelink Extension URLs." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/updateAssetAutomationCampaignSetting> ;
    sh:name "update asset automation campaign setting" ;
    sh:description "Reserved." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/imageAssetAutomationOptOut> ;
    sh:name "image asset automation opt out" ;
    sh:description "Reserved." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGoogleImportOption/importNCAGoalWithSystemGeneratedAudience> ;
    sh:name "import ncagoal with system generated audience" ;
    sh:description "Reserved." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Hotel Ad
microsoftads:CampaignManagementHotelAdShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementHotelAd ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHotelAd/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier for the ad. Add: Read-only Update: Required and Read-only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHotelAd/type> ;
    sh:name "type" ;
    sh:description "The type of the ad. This value is Hotel when you retrieve a hotel ad. For more information about ad types, see the Ad Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Text" "Image" "Product" "AppInstall" "ExpandedText" "DynamicSearch" "ResponsiveAd" "ResponsiveSearch" "Hotel" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHotelAd/status> ;
    sh:name "status" ;
    sh:description "The status of the ad. You can set the ad status to Active or Paused. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Inactive" "Active" "Paused" "Deleted" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHotelAd/editorialStatus> ;
    sh:name "editorial status" ;
    sh:description "Not supported for this ad type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Disapproved" "Inactive" "ActiveLimited" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHotelAd/devicePreference> ;
    sh:name "device preference" ;
    sh:description "Not supported for this ad type." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHotelAd/adFormatPreference> ;
    sh:name "ad format preference" ;
    sh:description "Not supported for this ad type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHotelAd/trackingUrlTemplate> ;
    sh:name "tracking url template" ;
    sh:description "The tracking template to use as a default for all landing page URLs. The following validation rules apply to tracking templates. For more details about supported templates and parameters, see the Microsoft Advertising help article What tracking or URL parameters can I use? - Tracking templates defined for lower level entities e.g. ads override those set for higher level entities e.g. campaign. For more information, see Entity Limits. - The length of the tracking template is limited to 2,048 characters. The HTTP or HTTPS protocol string does count towards the 2,048 character limit. - The tracking template must be a well-formed URL beginning with one of the following: http://, https://, {lpurl}, or {unescapedlpurl}. - Microsoft Advertising does not validate whether custom parameters exist. If you use custom parameters in your tracking template and they do not exist, then the landing page URL will include the key and value placeholders of your custom parameters without substitution. For example, if your tracking template is https://tracker.example.com/?season={_season}&promocode={_promocode}&u={lpurl} and neither {_season} or {_promocode} are defined at the campaign, ad group, criterion, keyword, or ad level, then the landing page URL will be the same. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. If you set this element to an empty string (\"\"), the previous setting will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHotelAd/finalUrlSuffix> ;
    sh:name "final url suffix" ;
    sh:description "The final URL suffix can include tracking parameters that will be appended to the end of your landing page URL. We recommend placing tracking parameters that your landing page requires in a final URL suffix so that your customers are always sent to your landing page. For more details and validation rules see Final URL Suffix in the technical guides. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. If you set this element to an empty string (\"\"), the previous setting will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHotelAd/urlCustomParameters> ;
    sh:name "url custom parameters" ;
    sh:description "Your custom collection of key and value parameters for URL tracking. Microsoft Advertising will accept the first 8 CustomParameter objects that you include within the CustomParameters object, and if you include more than 8 custom parameters an error will be returned. Each CustomParameter includes Key and Value elements. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. Set the UrlCustomParameters element to null or empty to retain any existing custom parameters. To remove all custom parameters, set the Parameters element of the CustomParameters object to null or empty. To remove a subset of custom parameters, specify the custom parameters that you want to keep in the Parameters element of the CustomParameters object." ;
    sh:node microsoftads:CampaignManagementCustomParametersShape ;
    sh:class microsoftads:CampaignManagementCustomParameters ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHotelAd/finalUrls> ;
    sh:name "final urls" ;
    sh:description "Not supported for this ad type." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHotelAd/finalMobileUrls> ;
    sh:name "final mobile urls" ;
    sh:description "Not supported for this ad type." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHotelAd/finalAppUrls> ;
    sh:name "final app urls" ;
    sh:description "Not supported for this ad type." ;
    sh:node microsoftads:CampaignManagementAppUrlShape ;
    sh:class microsoftads:CampaignManagementAppUrl ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHotelAd/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. There are currently not any ForwardCompatibilityMap key and value pairs that are applicable for hotel ads." ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Hotel Advance Booking Window Criterion
microsoftads:CampaignManagementHotelAdvanceBookingWindowCriterionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementHotelAdvanceBookingWindowCriterion ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHotelAdvanceBookingWindowCriterion/type> ;
    sh:name "type" ;
    sh:description "The type of the criterion. This value is HotelAdvanceBookingWindow when you retrieve a hotel advance booking window criterion. For more information about criterion types, see the Criterion Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHotelAdvanceBookingWindowCriterion/minDays> ;
    sh:name "min days" ;
    sh:description "Minimum number of days prior to the hotel stay." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHotelAdvanceBookingWindowCriterion/maxDays> ;
    sh:name "max days" ;
    sh:description "Maxmimum of days prior to the hotel stay. Note: This can't be more than 330." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Hotel Check In Date Criterion
microsoftads:CampaignManagementHotelCheckInDateCriterionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementHotelCheckInDateCriterion ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHotelCheckInDateCriterion/type> ;
    sh:name "type" ;
    sh:description "The type of the criterion. This value is HotelCheckInDate when you retrieve a hotel check in date criterion. For more information about criterion types, see the Criterion Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHotelCheckInDateCriterion/startDate> ;
    sh:name "start date" ;
    sh:description "Start date in the YYYY-MM-DD format." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHotelCheckInDateCriterion/endDate> ;
    sh:name "end date" ;
    sh:description "End date in the YYYY-MM-DD format." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Hotel Check In Day Criterion
microsoftads:CampaignManagementHotelCheckInDayCriterionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementHotelCheckInDayCriterion ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHotelCheckInDayCriterion/type> ;
    sh:name "type" ;
    sh:description "The type of the criterion. This value is HotelCheckInDay when you retrieve a hotel check in day criterion. For more information about criterion types, see the Criterion Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHotelCheckInDayCriterion/checkInDay> ;
    sh:name "check in day" ;
    sh:description "The day of the week for check in." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Sunday" "Monday" "Tuesday" "Wednesday" "Thursday" "Friday" "Saturday" ) ;
  ] .

# Shape for Campaign Management Hotel Date Selection Type Criterion
microsoftads:CampaignManagementHotelDateSelectionTypeCriterionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementHotelDateSelectionTypeCriterion ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHotelDateSelectionTypeCriterion/type> ;
    sh:name "type" ;
    sh:description "The type of the criterion. This value is HotelDateSelectionType when you retrieve a hotel date selection type criterion. For more information about criterion types, see the Criterion Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHotelDateSelectionTypeCriterion/hotelDateSelectionType> ;
    sh:name "hotel date selection type" ;
    sh:description "Possible hotel date selection types." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unknown" "DefaultSelection" "UserSelection" ) ;
  ] .

# Shape for Campaign Management Hotel Group
microsoftads:CampaignManagementHotelGroupShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementHotelGroup ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHotelGroup/type> ;
    sh:name "type" ;
    sh:description "The type of the criterion. This value is HotelGroup when you retrieve a hotel group criterion. For more information about criterion types, see the Criterion Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHotelGroup/listing> ;
    sh:name "listing" ;
    sh:description "Defines a hotel listing." ;
    sh:node microsoftads:CampaignManagementHotelListingShape ;
    sh:class microsoftads:CampaignManagementHotelListing ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHotelGroup/listingType> ;
    sh:name "listing type" ;
    sh:description "Defines the type of hotel listing." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Subdivision" "Unit" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHotelGroup/parentCriterionId> ;
    sh:name "parent criterion id" ;
    sh:description "The ID of the parent criterion." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Hotel Length Of Stay Criterion
microsoftads:CampaignManagementHotelLengthOfStayCriterionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementHotelLengthOfStayCriterion ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHotelLengthOfStayCriterion/type> ;
    sh:name "type" ;
    sh:description "The type of the criterion. This value is HotelLengthOfStay when you retrieve a hotel length of stay criterion. For more information about criterion types, see the Criterion Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHotelLengthOfStayCriterion/minNights> ;
    sh:name "min nights" ;
    sh:description "Minimum of days prior to the hotel stay." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHotelLengthOfStayCriterion/maxNights> ;
    sh:name "max nights" ;
    sh:description "Maxmimum of nights prior to the hotel stay. Note: This can't be more than 30." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Hotel Setting
microsoftads:CampaignManagementHotelSettingShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementHotelSetting ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHotelSetting/type> ;
    sh:name "type" ;
    sh:description "The type of setting. For more information, see Setting Data Object Remarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementHotelSetting/hotelAdGroupType> ;
    sh:name "hotel ad group type" ;
    sh:description "The type of ad. Can either by HPA or PPA." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Image Ad Extension
microsoftads:CampaignManagementImageAdExtensionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementImageAdExtension ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImageAdExtension/status> ;
    sh:name "status" ;
    sh:description "The status of the ad extension. The value will always be Active because the Campaign Management service does not return deleted ad extensions. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Deleted" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImageAdExtension/scheduling> ;
    sh:name "scheduling" ;
    sh:description "Determines the calendar day and time ranges when the ad extension is eligible to be shown in ads. Add: Optional Update: Optional. If you set this element null, any existing scheduling set for the ad extension will remain unchanged. If you set this to any non-null Schedule object, you are effectively replacing existing scheduling settings for the ad extension. To remove all scheduling set this element to an empty Schedule object." ;
    sh:node microsoftads:CampaignManagementScheduleShape ;
    sh:class microsoftads:CampaignManagementSchedule ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImageAdExtension/devicePreference> ;
    sh:name "device preference" ;
    sh:description "Not supported for this ad extension type." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImageAdExtension/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier of the ad extension. Add: Read-only Update: Read-only and Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImageAdExtension/type> ;
    sh:name "type" ;
    sh:description "The type of the ad extension. This value is ImageAdExtension when you retrieve an image ad extension. Add: Read-only Update: Read-only For more information about ad extension types, see the Ad Extension Data Object Remarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImageAdExtension/version> ;
    sh:name "version" ;
    sh:description "Tracks the number of times the ad extension has been updated. The version is set to 1 when the ad extension is created, and increments by one after each update. Add: Not allowed Update: Not allowed" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImageAdExtension/alternativeText> ;
    sh:name "alternative text" ;
    sh:description "Alternative description of the image media for usability. If the image could not be displayed, the alternative text is used instead. The maximum length for this element is 35 characters. Add: Required Update: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImageAdExtension/description> ;
    sh:name "description" ;
    sh:description "Description that can be used by the advertiser, agency, or account manager to track, label, or manage image media. This description is not displayed with the ad or image. The maximum length for this element is 100 characters. Add: Optional Update: Optional. If you set this element null, the previous setting will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImageAdExtension/destinationUrl> ;
    sh:name "destination url" ;
    sh:description "The URL of the webpage to take the user to when they click the image. The URL can contain dynamic text strings such as {keyword}. For more information, see What tracking or URL parameters can I use?. The URL can contain a maximum of 1,024 characters. If the URL does not specify a protocol, the system uses the HTTP protocol when a user clicks the ad. If the URL specifies the HTTP protocol when you add an ad, the service will remove the http:// protocol string (the HTTP protocol string does not count against the 1,024 character limit); however, the service will not remove an HTTPS protocol string (https://) from the URL. If the URL is not specified for the image ad extension, the URL of the ad is used. Add: Optional Update: Optional. If you set this element null, the previous setting will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImageAdExtension/imageMediaIds> ;
    sh:name "image media ids" ;
    sh:description "The identifiers of the images to include in the ad. You may not specify media identifiers for more than one image of the same aspect ratio. In other words each of the referenced images must have different aspect ratios. You can specify up to four (4) image media identifiers. While the minimum required is one image media ID, in order to qualify for all ad placements you must provide four image media identifiers, where each ID corresponds to an Image of one of the four supported Media types (aspect ratios). The supported aspect ratios for audience ads are 16:9, 1.5:1, 4:3, and 1.2:1. For more information see the Image data object reference documentation. You can get the identifier of each Image when you add them to the image library by calling the AddMedia operation. Otherwise after the media has been added to your image library you can get the media identifiers with the GetMediaMetaDataByAccountId operation. Add: Required Update: Required" ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImageAdExtension/trackingUrlTemplate> ;
    sh:name "tracking url template" ;
    sh:description "The tracking template to use as a default for all FinalUrls and FinalMobileUrls. The following validation rules apply to tracking templates. For more details about supported templates and parameters, see the Microsoft Advertising help article What tracking or URL parameters can I use? - Tracking templates defined for lower level entities e.g. ads override those set for higher level entities e.g. campaign. For more information, see Entity Limits. - The length of the tracking template is limited to 2,048 characters. The HTTP or HTTPS protocol string does count towards the 2,048 character limit. - The tracking template must be a well-formed URL beginning with one of the following: http://, https://, {lpurl}, or {unescapedlpurl}. - Microsoft Advertising does not validate whether custom parameters exist. If you use custom parameters in your tracking template and they do not exist, then the landing page URL will include the key and value placeholders of your custom parameters without substitution. For example, if your tracking template is https://tracker.example.com/?season={_season}&promocode={_promocode}&u={lpurl} and neither {_season} or {_promocode} are defined at the campaign, ad group, criterion, keyword, or ad level, then the landing page URL will be the same. Add: Optional Update: Optional. If no value is set for the update, the prior setting is removed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImageAdExtension/finalUrlSuffix> ;
    sh:name "final url suffix" ;
    sh:description "The final URL suffix can include tracking parameters that will be appended to the end of your landing page URL. We recommend placing tracking parameters that your landing page requires in a final URL suffix so that your customers are always sent to your landing page. For more details and validation rules see Final URL Suffix in the technical guides. Add: Optional Update: Optional. If no value is set for the update, the prior setting is removed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImageAdExtension/urlCustomParameters> ;
    sh:name "url custom parameters" ;
    sh:description "Your custom collection of key and value parameters for URL tracking. Microsoft Advertising will accept the first 3 CustomParameter objects that you include within the CustomParameters object, and any additional custom parameters will be ignored. Each CustomParameter includes Key and Value elements. For customers in the Custom Parameters Limit Increase Phase 3 pilot (GetCustomerPilotFeatures returns 635), Microsoft Advertising will accept the first 8 custom parameter key and value pairs that you include, and if you include more than 8 custom parameters an error will be returned. Add: Optional Update: Optional. If no value is set for the update, the prior setting is removed." ;
    sh:node microsoftads:CampaignManagementCustomParametersShape ;
    sh:class microsoftads:CampaignManagementCustomParameters ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImageAdExtension/finalUrls> ;
    sh:name "final urls" ;
    sh:description "The landing page URL. The following validation rules apply to Final URLs and Final Mobile URLs. - The length of the URL is limited to 2,048 characters. The HTTP or HTTPS protocol string does count towards the 2,048 character limit. - You may specify up to 10 list items for both FinalUrls and FinalMobileUrls; however, only the first item in each list is used for delivery. The service allows up to 10 list items for potential forward compatibility. - Usage of '{' and '}' is only allowed to delineate tags, for example {lpurl}. - Final URLs must each be a well-formed URL starting with either http:// or https://. - If you specify FinalMobileUrls, you must also specify FinalUrls. - You may not specify FinalMobileUrls if the DevicePreference is set to 30001 (mobile). Add: Optional Update: Optional. If no value is set for the update, the prior setting is removed." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImageAdExtension/finalMobileUrls> ;
    sh:name "final mobile urls" ;
    sh:description "The landing page URL for mobile devices. The following validation rules apply to Final URLs and Final Mobile URLs. - The length of the URL is limited to 2,048 characters. The HTTP or HTTPS protocol string does count towards the 2,048 character limit. - You may specify up to 10 list items for both FinalUrls and FinalMobileUrls; however, only the first item in each list is used for delivery. The service allows up to 10 list items for potential forward compatibility. - Usage of '{' and '}' is only allowed to delineate tags, for example {lpurl}. - Final URLs must each be a well-formed URL starting with either http:// or https://. - If you specify FinalMobileUrls, you must also specify FinalUrls. - You may not specify FinalMobileUrls if the DevicePreference is set to 30001 (mobile). Add: Optional Update: Optional. If no value is set for the update, the prior setting is removed." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImageAdExtension/finalAppUrls> ;
    sh:name "final app urls" ;
    sh:description "For future use." ;
    sh:node microsoftads:CampaignManagementAppUrlShape ;
    sh:class microsoftads:CampaignManagementAppUrl ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImageAdExtension/images> ;
    sh:name "images" ;
    sh:description "Image assets with different sizes and aspect ratios so they can flexibly display across a variety of publishers and placements. Include one or more AssetLink objects that each contain an ImageAsset with SubType and crop settings that match the desired aspect ratio. Add: Required Update: Optional. If no value is set for the update, this setting is not changed. If you include images during update, any previously set images will be replaced." ;
    sh:node microsoftads:CampaignManagementAssetLinkShape ;
    sh:class microsoftads:CampaignManagementAssetLink ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImageAdExtension/displayText> ;
    sh:name "display text" ;
    sh:description "The display text of your image extension. The maximum length for this element is 35 characters. Add: Required when Layouts contains SearchMultiple, else Optional. Update: Required when Layouts contains SearchMultiple, else Optional. If you set this element null, the previous setting will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImageAdExtension/layouts> ;
    sh:name "layouts" ;
    sh:description "The list of eligible image layouts. Supported values are SearchSingle and SearchMultiple. New layouts might be added in the future, so you should not take any dependency on a fixed set of values. Add: Required Update: Optional. If no value is set for the update, this setting is not changed. If you include layouts during update, any previously set layouts will be replaced." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImageAdExtension/sourceType> ;
    sh:name "source type" ;
    sh:description "The source type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImageAdExtension/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. There are currently no forward compatibility changes for the AdExtension object. Add: Read-only Update: Read-only" ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Image Media Representation
microsoftads:CampaignManagementImageMediaRepresentationShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementImageMediaRepresentation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImageMediaRepresentation/name> ;
    sh:name "name" ;
    sh:description "The name of the media representation. For ImageAdExtension media representations, the possible values are Preview, Thumbnail, and Original. For ResponsiveAd media representations, the only possible value is Original." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImageMediaRepresentation/url> ;
    sh:name "url" ;
    sh:description "The media download URL." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImageMediaRepresentation/type> ;
    sh:name "type" ;
    sh:description "The type of the media representation. This value is ImageMediaRepresentation when you retrieve an image media representation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImageMediaRepresentation/height> ;
    sh:name "height" ;
    sh:description "The height of the image in pixels. For more information, see Remarks below." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImageMediaRepresentation/width> ;
    sh:name "width" ;
    sh:description "The width of the image in pixels. For more information, see Remarks below." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Import Job Base
microsoftads:CampaignManagementImportJobBaseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementImportJobBase ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportJobBase/name> ;
    sh:name "name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportJobBase/id> ;
    sh:name "id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportJobBase/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportJobBase/status> ;
    sh:name "status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportJobBase/notificationType> ;
    sh:name "notification type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportJobBase/createdByUserId> ;
    sh:name "created by user id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportJobBase/createdByUserName> ;
    sh:name "created by user name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportJobBase/frequency> ;
    sh:name "frequency" ;
    sh:node microsoftads:CampaignManagementFrequencyShape ;
    sh:class microsoftads:CampaignManagementFrequency ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportJobBase/lastRunTimeInUTC> ;
    sh:name "last run time in utc" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportJobBase/createdDateTimeInUTC> ;
    sh:name "created date time in utc" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportJobBase/importOption> ;
    sh:name "import option" ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementFileImportOptionShape ; sh:class microsoftads:CampaignManagementFileImportOption ]
      [ sh:node microsoftads:CampaignManagementGoogleImportOptionShape ; sh:class microsoftads:CampaignManagementGoogleImportOption ]
      [ sh:node microsoftads:CampaignManagementImportOptionShape ; sh:class microsoftads:CampaignManagementImportOption ]
      [ sh:node microsoftads:CampaignManagementImportOptionBaseShape ; sh:class microsoftads:CampaignManagementImportOptionBase ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportJobBase/notificationEmail> ;
    sh:name "notification email" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Import Option Base
microsoftads:CampaignManagementImportOptionBaseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementImportOptionBase ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOptionBase/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImportOptionBase/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Impression Based Remarketing List
microsoftads:CampaignManagementImpressionBasedRemarketingListShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementImpressionBasedRemarketingList ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImpressionBasedRemarketingList/scope> ;
    sh:name "scope" ;
    sh:description "Scope defines what accounts can use this audience. For a custom audience the only supported scope is Customer, and the audience can be associated with campaigns and ad groups in all of the customer's accounts. Add: Not supported Update: Not supported" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Account" "Customer" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImpressionBasedRemarketingList/membershipDuration> ;
    sh:name "membership duration" ;
    sh:description "The membership duration determines how far back in time Microsoft Advertising should look for actions that match your custom audience definition in order to add people to your list. For a custom audience the membership duration is not set in the Microsoft Advertising web application, and Microsoft Advertising defers to your custom audience provider settings. When you request the custom audience via Bing Ads API, the returned membership duration will be null. Add: Not supported Update: Not supported" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImpressionBasedRemarketingList/searchSize> ;
    sh:name "search size" ;
    sh:description "The total number of people who are active members of this audience in the Search network. This gives you an idea of how many search users you can target. The audience needs to have at least 300 people before Microsoft Advertising will use it for optimizations. This property will be nil or empty for up to 24 hours while the audience is being built, for example if you have imported new custom audiences from DMP, it takes 24 hours to build the audience, and in the meantime this property will be nil or empty. Add: Not supported Update: Read-only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImpressionBasedRemarketingList/audienceNetworkSize> ;
    sh:name "audience network size" ;
    sh:description "The total number of people who are active members of this audience in the Audience network. This gives you an idea of how many Audience network users you can target. The audience needs to have at least 300 people before Microsoft Advertising will use it for optimizations. Add: Not supported Update: Read-only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImpressionBasedRemarketingList/supportedCampaignTypes> ;
    sh:name "supported campaign types" ;
    sh:description "The list of campaign types that support this audience. Supported values are Audience, DynamicSearchAds, Search, and Shopping. New campaign types might be added in the future, so you should not take any dependency on a fixed set of values. Add: Not supported Update: Read-only" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImpressionBasedRemarketingList/customerShare> ;
    sh:name "customer share" ;
    sh:description "This element is not supported for custom audiences. Add: Not supported Update: Not supported" ;
    sh:node microsoftads:CampaignManagementCustomerShareShape ;
    sh:class microsoftads:CampaignManagementCustomerShare ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImpressionBasedRemarketingList/id> ;
    sh:name "id" ;
    sh:description "The Microsoft Advertising identifier of the audience. Add: Not supported Update: Required and read-only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImpressionBasedRemarketingList/name> ;
    sh:name "name" ;
    sh:description "The name of the audience. The name can contain a maximum of 128 characters. Add: Not supported Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImpressionBasedRemarketingList/description> ;
    sh:name "description" ;
    sh:description "The description of the audience. Use a description to help you remember what audience you are targeting. The description can contain a maximum of 1,024 characters. Add: Not supported Update: Optional. If no value is set for the update, this setting is not changed. To remove the previous setting, set this elemment to an empty string value (\"\")." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImpressionBasedRemarketingList/type> ;
    sh:name "type" ;
    sh:description "The type of the audience. This value is Custom when you retrieve a custom audience. For more information about audience types, see the Audience Data Object Remarks. Add: Not supported Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImpressionBasedRemarketingList/parentId> ;
    sh:name "parent id" ;
    sh:description "The Microsoft Advertising identifier of the customer that contains the custom audience. Add: Not supported Update: Not supported" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImpressionBasedRemarketingList/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. Forward compatibility changes will be noted here in future releases. There are currently no forward compatibility changes for the Audience object." ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImpressionBasedRemarketingList/entityType> ;
    sh:name "entity type" ;
    sh:description "The entity type of an impression-based remarketing list." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "None" "Campaign" "AdGroup" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImpressionBasedRemarketingList/campaignId> ;
    sh:name "campaign id" ;
    sh:description "The campaign identifier to associate with the impression-based remarketing list." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImpressionBasedRemarketingList/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "The ad group identifier to associate with the impression-based remarketing list. Note: The AdGroupId is null for an impression-based remarketing list with users who have viewed an ad under campaign." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImpressionBasedRemarketingList/campaignIds> ;
    sh:name "campaign ids" ;
    sh:description "A list of unique system identifiers corresponding to the campaigns associated with the impression-based remarketing list. The list of identifiers corresponds directly to the list of campaigns in the request. Items of the list may be returned as null. For each list index where a campaign was not added, the corresponding element will be null." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImpressionBasedRemarketingList/adGroupIds> ;
    sh:name "ad group ids" ;
    sh:description "A list of unique system identifiers corresponding to the ad groups associated with the impression-based remarketing list. The list of identifiers corresponds directly to the list of ad groups in the request. Items of the list may be returned as null. For each list index where an ad group was not added, the corresponding element will be null." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Campaign Management Impression Tracking Setting
microsoftads:CampaignManagementImpressionTrackingSettingShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementImpressionTrackingSetting ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImpressionTrackingSetting/type> ;
    sh:name "type" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementImpressionTrackingSetting/impressionTrackingUrl> ;
    sh:name "impression tracking url" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Inherit From Parent Bidding Scheme
microsoftads:CampaignManagementInheritFromParentBiddingSchemeShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementInheritFromParentBiddingScheme ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementInheritFromParentBiddingScheme/type> ;
    sh:name "type" ;
    sh:description "The type of the bidding scheme. This value is InheritFromParentBiddingScheme when you retrieve an \"inherit from parent\" bidding scheme. For more information about bidding scheme types, see the BiddingScheme Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementInheritFromParentBiddingScheme/inheritedBidStrategyType> ;
    sh:name "inherited bid strategy type" ;
    sh:description "The type of bidding scheme (a.k.a. bid strategy type) that is inherited from the parent campaign or ad group. This value is equal to the Type element of the parent campaign or ad group's BiddingScheme object. Possible values include EnhancedCpc, ManualCpc, MaxClicks, MaxConversions, MaxConversionValue, TargetCpa, TargetImpressionShare, and TargetRoas. New bid strategy types might be added in the future, so you should not take any dependency on a fixed set of values." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management In Market Audience
microsoftads:CampaignManagementInMarketAudienceShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementInMarketAudience ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementInMarketAudience/scope> ;
    sh:name "scope" ;
    sh:description "Scope defines what accounts can use this audience. For an in-market audience the only supported scope is Customer, and the audience can be associated with campaigns and ad groups in all of the customer's accounts. Add: Not supported Update: Not supported" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Account" "Customer" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementInMarketAudience/membershipDuration> ;
    sh:name "membership duration" ;
    sh:description "When you create an audience, you can specify how far back in time Microsoft Advertising should look for actions that match your audience definition. The minimum duration is 1 day and the maximum duration allowed is 180 days. Add: Not supported Update: Not supported" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementInMarketAudience/searchSize> ;
    sh:name "search size" ;
    sh:description "The total number of people who are active members of this audience in the Search network. This gives you an idea of how many search users you can target. Add: Not supported Update: Not supported" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementInMarketAudience/audienceNetworkSize> ;
    sh:name "audience network size" ;
    sh:description "The total number of people who are active members of this audience in the Audience network. This gives you an idea of how many Audience network users you can target. Add: Not supported Update: Not supported" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementInMarketAudience/supportedCampaignTypes> ;
    sh:name "supported campaign types" ;
    sh:description "The list of campaign types that support this audience. Supported values are Audience, DynamicSearchAds, Search, and Shopping. New campaign types might be added in the future, so you should not take any dependency on a fixed set of values. Add: Not supported Update: Not supported" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementInMarketAudience/customerShare> ;
    sh:name "customer share" ;
    sh:description "This element is not supported for in-market audiences. Add: Not supported Update: Not supported" ;
    sh:node microsoftads:CampaignManagementCustomerShareShape ;
    sh:class microsoftads:CampaignManagementCustomerShare ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementInMarketAudience/id> ;
    sh:name "id" ;
    sh:description "The Microsoft Advertising identifier of the audience. Add: Not supported Update: Not supported" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementInMarketAudience/name> ;
    sh:name "name" ;
    sh:description "The name of the audience. The name can contain a maximum of 128 characters. Add: Not supported Update: Not supported" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementInMarketAudience/description> ;
    sh:name "description" ;
    sh:description "The description of the audience. Use a description to help you remember what audience you are targeting. The description can contain a maximum of 1,024 characters. Add: Not supported Update: Not supported" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementInMarketAudience/type> ;
    sh:name "type" ;
    sh:description "The type of the audience. This value is InMarket when you retrieve an in-market audience. For more information about audience types, see the Audience Data Object Remarks. Add: Not supported Update: Not supported" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementInMarketAudience/parentId> ;
    sh:name "parent id" ;
    sh:description "The Microsoft Advertising identifier of the customer that contains the in-market audience. Add: Not supported Update: Not supported" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementInMarketAudience/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. Forward compatibility changes will be noted here in future releases. There are currently no forward compatibility changes for the Audience object." ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management In Store Transaction Goal
microsoftads:CampaignManagementInStoreTransactionGoalShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementInStoreTransactionGoal ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementInStoreTransactionGoal/name> ;
    sh:name "name" ;
    sh:description "The conversion goal name. The maximum length of the name is 100, and the name must be unique among all conversion goals belonging to the same customer. Add: Required Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementInStoreTransactionGoal/status> ;
    sh:name "status" ;
    sh:description "Defines the possible user-determined status values of a conversion goal. These are the status values that a user can decide to set, for example a goal can be set to Paused if you no longer wish to track conversions for that goal. For status values that can be set by the system, see the TrackingStatus element. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Paused" "Deleted" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementInStoreTransactionGoal/scope> ;
    sh:name "scope" ;
    sh:description "Determines if the goal applies to all accounts or only the account specified in the required CustomerAccountId header element. For in-store transaction goals the Account level scope is not supported. You can set this element to Customer or leave it nil. If not specified, the scope will be set to Customer by default. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Account" "Customer" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementInStoreTransactionGoal/countType> ;
    sh:name "count type" ;
    sh:description "This determines how your conversions are recorded within your chosen conversion window. There are two choices, and if you do not set a value the default is All: - All: All conversions that happen after an ad click will be counted. This is a common choice for sales. - Unique: Only one conversion that happens after an ad click will be counted. This is a common choice for leads. For example: You track two conversions: leads and sales. You pick Unique for leads and All for sales. When one ad click turns into two leads and two sales, it's counted as three conversions: one for the unique lead, and two for all the sales. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "All" "Unique" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementInStoreTransactionGoal/revenue> ;
    sh:name "revenue" ;
    sh:description "Determines how much each conversion is worth to your business. When adding a conversion goal if you do not specify any revenue tracking preferences, then each ConversionGoalRevenue will be set to their respective default values. When updating a conversion goal, if the Revenue element is nil or empty then none of the nested properties will be updated. However, if this element is not nil or empty then you are effectively replacing any existing revenue properties. You must specify the ConversionGoalRevenue CurrencyCode when adding or updating an in-store transaction goal. Add: Optional Update: Optional" ;
    sh:node microsoftads:CampaignManagementConversionGoalRevenueShape ;
    sh:class microsoftads:CampaignManagementConversionGoalRevenue ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementInStoreTransactionGoal/conversionWindowInMinutes> ;
    sh:name "conversion window in minutes" ;
    sh:description "The conversion window is the length of time in minutes after a click that you want to track conversions. If you set this value to 43200 minutes (30 days), then conversions that happen within 30 days after a click are tracked. Past conversions aren't affected. The minimum value supported is 1 minute, although keep in mind that a shorter conversion window will reduce the number of conversions your account records. The maximum value supported is 129600 minutes (90 days). Add: Optional Update: Optional" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementInStoreTransactionGoal/tagId> ;
    sh:name "tag id" ;
    sh:description "Not applicable for in-store transaction goals." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementInStoreTransactionGoal/trackingStatus> ;
    sh:name "tracking status" ;
    sh:description "Not applicable for in-store transaction goals." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "TagUnverified" "NoRecentConversions" "RecordingConversions" "TagInactive" "InactiveDueToTagUnavailable" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementInStoreTransactionGoal/excludeFromBidding> ;
    sh:name "exclude from bidding" ;
    sh:description "Determines whether or not to exclude data otherwise related to this conversion goal from a subset of performance report columns. This element is only available for customers who are enabled for the Include in Conversions feature (GetCustomerPilotFeatures returns 574). If this element is set to true, data otherwise related to this conversion goal will be excluded from the Conversions, ConversionRate, CostPerConversion, ReturnOnAdSpend, RevenuePerConversion, and Revenue report columns. Also, if you use an automated bidding bid strategy, setting this property true will result in the goal's conversions no longer factoring into automated bidding calculations. Setting this property \"true\" is effectively the same as unchecking \"Include in Conversions\" in the Microsoft Advertising web application. Regardless of this element value, the AllConversions, AllConversionRate, AllCostPerConversion, AllReturnOnAdSpend, AllRevenuePerConversion, and AllRevenue report columns will include data for all conversion goals. By default this element is false, and data related to this conversion goal are included in all report columns. For more information, see Report Attributes and Performance Statistics and the help article Conversion goals: \"Conversions\" versus \"All conversions\". Add: Optional Update: Optional" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementInStoreTransactionGoal/viewThroughConversionWindowInMinutes> ;
    sh:name "view through conversion window in minutes" ;
    sh:description "Not applicable for in-store transaction goals." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementInStoreTransactionGoal/goalCategory> ;
    sh:name "goal category" ;
    sh:description "The category used to segment the conversion goal. Categorize your conversion goals however makes sense for your business. Goal categories don't affect performance - they are here to help you segment your goals and their performance metrics. The supported category values vary by conversion goal type. In-store transaction goals only support the Purchase category. Add: Optional. If you leave this element nil or empty, the default category will be set to Purchase. Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unknown" "None" "Purchase" "AddToCart" "BeginCheckout" "Subscribe" "SubmitLeadForm" "BookAppointment" "Signup" "RequestQuote" "GetDirections" "OutboundClick" "Contact" "PageView" "Download" "Other" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementInStoreTransactionGoal/attributionModelType> ;
    sh:name "attribution model type" ;
    sh:description "Not applicable for in-store transaction goals." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "LastClick" "LastTouch" "DataDriven" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementInStoreTransactionGoal/isEnhancedConversionsEnabled> ;
    sh:name "is enhanced conversions enabled" ;
    sh:description "Determines whether enhanced conversions are enabled for a conversion goal." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementInStoreTransactionGoal/isAutoGoal> ;
    sh:name "is auto goal" ;
    sh:description "Only available for event goal." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementInStoreTransactionGoal/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier for the conversion goal. Add: Read-only Update: Required and Read-Only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementInStoreTransactionGoal/type> ;
    sh:name "type" ;
    sh:description "The type of the conversion goal. This value is InStoreTransaction when you retrieve an in-store transaction goal. For more information about conversion goal types, see the ConversionGoal Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Lead Form Ad Extension
microsoftads:CampaignManagementLeadFormAdExtensionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementLeadFormAdExtension ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLeadFormAdExtension/status> ;
    sh:name "status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Deleted" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLeadFormAdExtension/scheduling> ;
    sh:name "scheduling" ;
    sh:node microsoftads:CampaignManagementScheduleShape ;
    sh:class microsoftads:CampaignManagementSchedule ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLeadFormAdExtension/devicePreference> ;
    sh:name "device preference" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLeadFormAdExtension/id> ;
    sh:name "id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLeadFormAdExtension/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLeadFormAdExtension/version> ;
    sh:name "version" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLeadFormAdExtension/callToAction> ;
    sh:name "call to action" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unknown" "CustomText" "ApplyNow" "BookNow" "ContactUs" "Download" "GetOffer" "GetQuote" "LearnMore" "SignUp" "Subscribe" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLeadFormAdExtension/actionName> ;
    sh:name "action name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLeadFormAdExtension/actionDescription> ;
    sh:name "action description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLeadFormAdExtension/corporateImage> ;
    sh:name "corporate image" ;
    sh:node microsoftads:CampaignManagementImageAssetShape ;
    sh:class microsoftads:CampaignManagementImageAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLeadFormAdExtension/corporateImageInternalUrl> ;
    sh:name "corporate image internal url" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLeadFormAdExtension/formHeadline> ;
    sh:name "form headline" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLeadFormAdExtension/formBusinessName> ;
    sh:name "form business name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLeadFormAdExtension/formDescription> ;
    sh:name "form description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLeadFormAdExtension/formPolicyUrl> ;
    sh:name "form policy url" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLeadFormAdExtension/formQuestions> ;
    sh:name "form questions" ;
    sh:node microsoftads:CampaignManagementLeadFormQuestionDefinitionShape ;
    sh:class microsoftads:CampaignManagementLeadFormQuestionDefinition ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLeadFormAdExtension/confirmationMessage> ;
    sh:name "confirmation message" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLeadFormAdExtension/confirmationDescription> ;
    sh:name "confirmation description" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLeadFormAdExtension/confirmationAction> ;
    sh:name "confirmation action" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unknown" "None" "VisitWebsite" "DownloadFile" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLeadFormAdExtension/confirmationUrl> ;
    sh:name "confirmation url" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLeadFormAdExtension/leadDelivery> ;
    sh:name "lead delivery" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unknown" "CSV" "Email" "Webhook" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLeadFormAdExtension/leadEmails> ;
    sh:name "lead emails" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLeadFormAdExtension/leadWebhookUrl> ;
    sh:name "lead webhook url" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLeadFormAdExtension/leadWebhookKey> ;
    sh:name "lead webhook key" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLeadFormAdExtension/language> ;
    sh:name "language" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLeadFormAdExtension/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Linked In Segment Base
microsoftads:CampaignManagementLinkedInSegmentBaseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementLinkedInSegmentBase ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLinkedInSegmentBase/id> ;
    sh:name "id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLinkedInSegmentBase/name> ;
    sh:name "name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLinkedInSegmentBase/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLinkedInSegmentBase/status> ;
    sh:name "status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Building" "Ready" "ReachTooSmall" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLinkedInSegmentBase/reach> ;
    sh:name "reach" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Location Ad Extension
microsoftads:CampaignManagementLocationAdExtensionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementLocationAdExtension ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLocationAdExtension/status> ;
    sh:name "status" ;
    sh:description "The status of the ad extension. The value will always be Active because the Campaign Management service does not return deleted ad extensions. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Deleted" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLocationAdExtension/scheduling> ;
    sh:name "scheduling" ;
    sh:description "Determines the calendar day and time ranges when the ad extension is eligible to be shown in ads. Add: Optional Update: Optional. If you set this element null, any existing scheduling set for the ad extension will remain unchanged. If you set this to any non-null Schedule object, you are effectively replacing existing scheduling settings for the ad extension. To remove all scheduling set this element to an empty Schedule object." ;
    sh:node microsoftads:CampaignManagementScheduleShape ;
    sh:class microsoftads:CampaignManagementSchedule ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLocationAdExtension/devicePreference> ;
    sh:name "device preference" ;
    sh:description "Not supported for this ad extension type." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLocationAdExtension/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier of the ad extension. Add: Read-only Update: Read-only and Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLocationAdExtension/type> ;
    sh:name "type" ;
    sh:description "The type of the ad extension. This value is LocationAdExtension when you retrieve a location ad extension. Add: Read-only Update: Read-only For more information about ad extension types, see the Ad Extension Data Object Remarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLocationAdExtension/version> ;
    sh:name "version" ;
    sh:description "Tracks the number of times the ad extension has been updated. The version is set to 1 when the ad extension is created, and increments by one after each update. Add: Not allowed Update: Not allowed" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLocationAdExtension/address> ;
    sh:name "address" ;
    sh:description "The business address. The supported country code values include AR, AT, AU, BR, CA, CH, CL, CO, DE, DK, ES, FI, FR, GB, HK, ID, IE, IN, IT, MX, MY, NL, NZ, NO, PE, PH, SE, SG, TH, TW, US, VE, and VN. Add: Required Update: Required" ;
    sh:node microsoftads:CampaignManagementAddressShape ;
    sh:class microsoftads:CampaignManagementAddress ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLocationAdExtension/geoPoint> ;
    sh:name "geo point" ;
    sh:description "The latitude and longitude coordinates of the specified Address element. The coordinates are used to mark the business location on Bing Maps when the user clicks the address on the ad. If the specified coordinates are not within the range of valid values, the service determines the coordinates based on the address. If you specify the known coordinates, the service does not confirm whether the specified coordinates match the specified business address. If you do not provide the coordinates, the AddAdExtensions operation uses the business address to determine the coordinates. When adding more than 10 location ad extensions, the service resolves coordinates offline, and otherwise resolves coordinates up front during execution of the service operation. The location will not be used in an ad until the coordinates are determined, which can take from seconds to minutes depending on the number of location ad extensions being added and the current demand. To determine whether the coordinates have been resolved, call the GetAdExtensionsByIds operation and access the GeoCodeStatus element. For a list of possible status values see BusinessGeoCodeStatus. Add: Optional Update: Optional" ;
    sh:node microsoftads:CampaignManagementGeoPointShape ;
    sh:class microsoftads:CampaignManagementGeoPoint ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLocationAdExtension/geoCodeStatus> ;
    sh:name "geo code status" ;
    sh:description "A status value that indicates whether the business latitude and longitude coordinates have been determined. If you provide the coordinates, the status will be set to Complete; otherwise, the status will indicate the progress of determining the coordinates of the specified business address. Add: Not allowed Update: Not allowed" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Pending" "Complete" "Invalid" "Failed" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLocationAdExtension/companyName> ;
    sh:name "company name" ;
    sh:description "The name of the business. The name can contain a maximum of 80 characters. Add: Required Update: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLocationAdExtension/phoneNumber> ;
    sh:name "phone number" ;
    sh:description "The business phone number to include in the ad. The phone number is clickable on hi-fi mobile devices. The phone number can contain a maximum of 35 characters and must be valid for the specified country or region. If the campaign also includes a call extension, the phone number in the call extension, will override this phone number. Add: Optional Update: Optional. If you set this element null, the previous setting will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLocationAdExtension/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. There are currently no forward compatibility changes for the AdExtension object. Add: Read-only Update: Read-only" ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Location Criterion
microsoftads:CampaignManagementLocationCriterionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementLocationCriterion ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLocationCriterion/type> ;
    sh:name "type" ;
    sh:description "The type of the criterion. This value is Location when you retrieve a location criterion. For more information about criterion types, see the Criterion Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLocationCriterion/locationId> ;
    sh:name "location id" ;
    sh:description "The unique Microsoft Advertising identifier for the location where you want to show your ads. For possible values, see the Location Id field of the geographical locations file. You can call the GetGeoLocationsFileUrl operation to download the file. IMPORTANT: Please check the Status field in the geographical locations file before adding or updating a location criterion. If the status is PendingDeprecation, the location criterion is no longer used for targeting or exclusions. Deprecated location criteria can still be retrieved, but you cannot add or update deprecated location criteria. Add: Required Update: Not allowed. If you specify this element it must match the existing setting." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLocationCriterion/locationType> ;
    sh:name "location type" ;
    sh:description "The location type. Possible values include, but are not limited to City, Country, MetroArea, Neighborhood, PostalCode, and State. New location sub types can be added anytime. Rarely will the location type change for a given location ID. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLocationCriterion/displayName> ;
    sh:name "display name" ;
    sh:description "The location display name. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLocationCriterion/enclosedLocationIds> ;
    sh:name "enclosed location ids" ;
    sh:description "Reserved for internal use. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:long ;
  ] .

# Shape for Campaign Management Location Intent Criterion
microsoftads:CampaignManagementLocationIntentCriterionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementLocationIntentCriterion ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLocationIntentCriterion/type> ;
    sh:name "type" ;
    sh:description "The type of the criterion. This value is LocationIntent when you retrieve a location intent criterion. For more information about criterion types, see the Criterion Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLocationIntentCriterion/intentOption> ;
    sh:name "intent option" ;
    sh:description "Determines whether a person must be physically located in the targeted location in order for the ad to display. The following values are supported. The default value is PeopleInOrSearchingForOrViewingPages. - Use PeopleInOrSearchingForOrViewingPages if you want to show ads to people in, searching for, or viewing pages about your targeted location. - Use PeopleIn if you want to show ads to people in your targeted location. Add: Optional. If no value is specified the default value is PeopleInOrSearchingForOrViewingPages. Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "PeopleInOrSearchingForOrViewingPages" "PeopleIn" "PeopleSearchingForOrViewingPages" ) ;
  ] .

# Shape for Campaign Management Logo Ad Extension
microsoftads:CampaignManagementLogoAdExtensionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementLogoAdExtension ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLogoAdExtension/status> ;
    sh:name "status" ;
    sh:description "The status of the ad extension. The value will always be Active because the Campaign Management service does not return deleted ad extensions." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Deleted" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLogoAdExtension/scheduling> ;
    sh:name "scheduling" ;
    sh:description "Determines the calendar day and time ranges when the ad extension is eligible to be shown in ads." ;
    sh:node microsoftads:CampaignManagementScheduleShape ;
    sh:class microsoftads:CampaignManagementSchedule ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLogoAdExtension/devicePreference> ;
    sh:name "device preference" ;
    sh:description "Not supported for this ad extension type." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLogoAdExtension/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier of the ad extension." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLogoAdExtension/type> ;
    sh:name "type" ;
    sh:description "The type of ad extension. For more information, see Remarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLogoAdExtension/version> ;
    sh:name "version" ;
    sh:description "Tracks the number of times the ad extension has been updated. The version is set to 1 when the ad extension is created, and increments by one after each update." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLogoAdExtension/businessName> ;
    sh:name "business name" ;
    sh:description "The business name. Maximum length is 25 characters. Add: Required Update: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLogoAdExtension/businessLogo> ;
    sh:name "business logo" ;
    sh:description "The asset ID for the business logo. The business logo must have a 1:1 aspect ratio. The minimum image size is 128px by 128px. The maximum image size is 5120 KB. Add: Required Update: Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLogoAdExtension/businessLogoUrl> ;
    sh:name "business logo url" ;
    sh:description "The URL of the business logo. This is used internally. Add: Not allowed Update: Not allowed" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLogoAdExtension/domainName> ;
    sh:name "domain name" ;
    sh:description "The domain name. Note: Use the domain name, not a URL. For example, use \"contoso.com\", not \"https://contoso.com\". The maximum length is 50 characters. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementLogoAdExtension/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. Forward compatibility changes will be noted here in future releases. There are currently no forward compatibility changes for this object." ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Manual Cpa Bidding Scheme
microsoftads:CampaignManagementManualCpaBiddingSchemeShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementManualCpaBiddingScheme ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementManualCpaBiddingScheme/type> ;
    sh:name "type" ;
    sh:description "The type of the bidding scheme This value is ManualCpaBiddingScheme when you retrieve a manual CPA bidding scheme. For more information about bidding scheme types, see the BiddingScheme Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementManualCpaBiddingScheme/manualCpi> ;
    sh:name "manual cpi" ;
    sh:description "The manual cost per install." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Manual Cpc Bidding Scheme
microsoftads:CampaignManagementManualCpcBiddingSchemeShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementManualCpcBiddingScheme ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementManualCpcBiddingScheme/type> ;
    sh:name "type" ;
    sh:description "The type of the bidding scheme This value is ManualCpcBiddingScheme when you retrieve a manual CPC bidding scheme. For more information about bidding scheme types, see the BiddingScheme Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementManualCpcBiddingScheme/manualCpc> ;
    sh:name "manual cpc" ;
    sh:description "Reserved." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Manual Cpm Bidding Scheme
microsoftads:CampaignManagementManualCpmBiddingSchemeShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementManualCpmBiddingScheme ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementManualCpmBiddingScheme/type> ;
    sh:name "type" ;
    sh:description "The type of the bidding scheme. This value is ManualCpmBiddingScheme when you retrieve a manual CPM bidding scheme. For more information about bidding scheme types, see the BiddingScheme Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Manual Cpv Bidding Scheme
microsoftads:CampaignManagementManualCpvBiddingSchemeShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementManualCpvBiddingScheme ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementManualCpvBiddingScheme/type> ;
    sh:name "type" ;
    sh:description "The type of the bidding scheme. This value is ManualCpvBiddingScheme when you retrieve a manual CPV bidding scheme. For more information about bidding scheme types, see the BiddingScheme Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Max Clicks Bidding Scheme
microsoftads:CampaignManagementMaxClicksBiddingSchemeShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementMaxClicksBiddingScheme ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementMaxClicksBiddingScheme/type> ;
    sh:name "type" ;
    sh:description "The type of the bidding scheme. This value is MaxClicksBiddingScheme when you retrieve a maximum clicks bidding scheme. For more information about bidding scheme types, see the BiddingScheme Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementMaxClicksBiddingScheme/maxCpc> ;
    sh:name "max cpc" ;
    sh:description "The maximum cost per click that you want to spend. Add: Optional Update: Optional" ;
    sh:node microsoftads:CampaignManagementBidShape ;
    sh:class microsoftads:CampaignManagementBid ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Max Conversions Bidding Scheme
microsoftads:CampaignManagementMaxConversionsBiddingSchemeShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementMaxConversionsBiddingScheme ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementMaxConversionsBiddingScheme/type> ;
    sh:name "type" ;
    sh:description "The type of the bidding scheme. This value is MaxConversionsBiddingScheme when you retrieve a maximum conversions bidding scheme. For more information about bidding scheme types, see the BiddingScheme Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementMaxConversionsBiddingScheme/maxCpc> ;
    sh:name "max cpc" ;
    sh:description "The maximum cost per click that you want to spend. Note: MaxCpc shouldn't be set for Smart Shopping or Performance Max campaigns as it doesn't apply. Add: Optional Update: Optional" ;
    sh:node microsoftads:CampaignManagementBidShape ;
    sh:class microsoftads:CampaignManagementBid ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementMaxConversionsBiddingScheme/targetCpa> ;
    sh:name "target cpa" ;
    sh:description "The target cost per action that you want to spend. Note: TargetCpa is used by Audience, Search, Smart Shopping, and Performance Max campaigns. Add: Optional Update: Optional" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Max Conversion Value Bidding Scheme
microsoftads:CampaignManagementMaxConversionValueBiddingSchemeShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementMaxConversionValueBiddingScheme ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementMaxConversionValueBiddingScheme/type> ;
    sh:name "type" ;
    sh:description "The type of the bidding scheme. This value is MaxConversionValueBiddingScheme when you retrieve a maximum conversion value bidding scheme. For more information about bidding scheme types, see the BiddingScheme Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementMaxConversionValueBiddingScheme/targetRoas> ;
    sh:name "target roas" ;
    sh:description "The target return on ad spend. Note: TargetRoas is used by Search, Shopping, Smart Shopping and Performance Max campaigns." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementMaxConversionValueBiddingScheme/maxCpc> ;
    sh:name "max cpc" ;
    sh:description "The maximum cost per click filter criteria for all keyword estimates in the ad group. You can override this setting for specific keywords with the corresponding keyword estimators." ;
    sh:node microsoftads:CampaignManagementBidShape ;
    sh:class microsoftads:CampaignManagementBid ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Max Roas Bidding Scheme
microsoftads:CampaignManagementMaxRoasBiddingSchemeShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementMaxRoasBiddingScheme ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementMaxRoasBiddingScheme/type> ;
    sh:name "type" ;
    sh:description "The MaxRoasBiddingScheme object is not in use and will be removed from a future version of the API." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementMaxRoasBiddingScheme/maxCpc> ;
    sh:name "max cpc" ;
    sh:description "The MaxRoasBiddingScheme object is not in use and will be removed from a future version of the API." ;
    sh:node microsoftads:CampaignManagementBidShape ;
    sh:class microsoftads:CampaignManagementBid ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Media Base
microsoftads:CampaignManagementMediaBaseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementMediaBase ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementMediaBase/id> ;
    sh:name "id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementMediaBase/mediaType> ;
    sh:name "media type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementMediaBase/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementMediaBase/text> ;
    sh:name "text" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Media Representation Base
microsoftads:CampaignManagementMediaRepresentationBaseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementMediaRepresentationBase ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementMediaRepresentationBase/name> ;
    sh:name "name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementMediaRepresentationBase/url> ;
    sh:name "url" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementMediaRepresentationBase/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Negative Ad Group Criterion
microsoftads:CampaignManagementNegativeAdGroupCriterionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementNegativeAdGroupCriterion ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementNegativeAdGroupCriterion/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "The identifier of the ad group to apply the criterion to. Add: Required Update: Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementNegativeAdGroupCriterion/status> ;
    sh:name "status" ;
    sh:description "A status value that determines whether the criterion applies for the ad group. Currently the only supported status for negative ad group criterions is Active. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Paused" "Deleted" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementNegativeAdGroupCriterion/criterion> ;
    sh:name "criterion" ;
    sh:description "The criterion to apply to the ad group. The criterion helps determine whether ads in the ad group are served. For a list of available criterion types, see AdGroupCriterionType. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementAgeCriterionShape ; sh:class microsoftads:CampaignManagementAgeCriterion ]
      [ sh:node microsoftads:CampaignManagementAudienceCriterionShape ; sh:class microsoftads:CampaignManagementAudienceCriterion ]
      [ sh:node microsoftads:CampaignManagementChannelPlacementCriterionShape ; sh:class microsoftads:CampaignManagementChannelPlacementCriterion ]
      [ sh:node microsoftads:CampaignManagementCriterionShape ; sh:class microsoftads:CampaignManagementCriterion ]
      [ sh:node microsoftads:CampaignManagementCriterionBaseShape ; sh:class microsoftads:CampaignManagementCriterionBase ]
      [ sh:node microsoftads:CampaignManagementCustomLinkedInCriterionShape ; sh:class microsoftads:CampaignManagementCustomLinkedInCriterion ]
      [ sh:node microsoftads:CampaignManagementDayTimeCriterionShape ; sh:class microsoftads:CampaignManagementDayTimeCriterion ]
      [ sh:node microsoftads:CampaignManagementDealCriterionShape ; sh:class microsoftads:CampaignManagementDealCriterion ]
      [ sh:node microsoftads:CampaignManagementDeviceCriterionShape ; sh:class microsoftads:CampaignManagementDeviceCriterion ]
      [ sh:node microsoftads:CampaignManagementGenderCriterionShape ; sh:class microsoftads:CampaignManagementGenderCriterion ]
      [ sh:node microsoftads:CampaignManagementGenreCriterionShape ; sh:class microsoftads:CampaignManagementGenreCriterion ]
      [ sh:node microsoftads:CampaignManagementHotelAdvanceBookingWindowCriterionShape ; sh:class microsoftads:CampaignManagementHotelAdvanceBookingWindowCriterion ]
      [ sh:node microsoftads:CampaignManagementHotelCheckInDateCriterionShape ; sh:class microsoftads:CampaignManagementHotelCheckInDateCriterion ]
      [ sh:node microsoftads:CampaignManagementHotelCheckInDayCriterionShape ; sh:class microsoftads:CampaignManagementHotelCheckInDayCriterion ]
      [ sh:node microsoftads:CampaignManagementHotelDateSelectionTypeCriterionShape ; sh:class microsoftads:CampaignManagementHotelDateSelectionTypeCriterion ]
      [ sh:node microsoftads:CampaignManagementHotelGroupShape ; sh:class microsoftads:CampaignManagementHotelGroup ]
      [ sh:node microsoftads:CampaignManagementHotelLengthOfStayCriterionShape ; sh:class microsoftads:CampaignManagementHotelLengthOfStayCriterion ]
      [ sh:node microsoftads:CampaignManagementLocationCriterionShape ; sh:class microsoftads:CampaignManagementLocationCriterion ]
      [ sh:node microsoftads:CampaignManagementLocationIntentCriterionShape ; sh:class microsoftads:CampaignManagementLocationIntentCriterion ]
      [ sh:node microsoftads:CampaignManagementPlacementCriterionShape ; sh:class microsoftads:CampaignManagementPlacementCriterion ]
      [ sh:node microsoftads:CampaignManagementProductPartitionShape ; sh:class microsoftads:CampaignManagementProductPartition ]
      [ sh:node microsoftads:CampaignManagementProductScopeShape ; sh:class microsoftads:CampaignManagementProductScope ]
      [ sh:node microsoftads:CampaignManagementProfileCriterionShape ; sh:class microsoftads:CampaignManagementProfileCriterion ]
      [ sh:node microsoftads:CampaignManagementRadiusCriterionShape ; sh:class microsoftads:CampaignManagementRadiusCriterion ]
      [ sh:node microsoftads:CampaignManagementStoreCriterionShape ; sh:class microsoftads:CampaignManagementStoreCriterion ]
      [ sh:node microsoftads:CampaignManagementTopicCriterionShape ; sh:class microsoftads:CampaignManagementTopicCriterion ]
      [ sh:node microsoftads:CampaignManagementWebpageShape ; sh:class microsoftads:CampaignManagementWebpage ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementNegativeAdGroupCriterion/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier for the ad group criterion. Add: Read-only Update: Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementNegativeAdGroupCriterion/type> ;
    sh:name "type" ;
    sh:description "The type of the ad group criterion. This value is NegativeAdGroupCriterion when you retrieve a negative ad group criterion. For more information about ad group criterion types, see the AdGroupCriterion Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Negative Campaign Criterion
microsoftads:CampaignManagementNegativeCampaignCriterionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementNegativeCampaignCriterion ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementNegativeCampaignCriterion/campaignId> ;
    sh:name "campaign id" ;
    sh:description "The identifier of the campaign to apply the criterion to. Add: Required Update: Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementNegativeCampaignCriterion/criterion> ;
    sh:name "criterion" ;
    sh:description "The criterion to apply to the campaign. The criterion helps determine whether ads in the campaign are served. For a list of available criterion types, see CampaignCriterionType. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementAgeCriterionShape ; sh:class microsoftads:CampaignManagementAgeCriterion ]
      [ sh:node microsoftads:CampaignManagementAudienceCriterionShape ; sh:class microsoftads:CampaignManagementAudienceCriterion ]
      [ sh:node microsoftads:CampaignManagementChannelPlacementCriterionShape ; sh:class microsoftads:CampaignManagementChannelPlacementCriterion ]
      [ sh:node microsoftads:CampaignManagementCriterionShape ; sh:class microsoftads:CampaignManagementCriterion ]
      [ sh:node microsoftads:CampaignManagementCriterionBaseShape ; sh:class microsoftads:CampaignManagementCriterionBase ]
      [ sh:node microsoftads:CampaignManagementCustomLinkedInCriterionShape ; sh:class microsoftads:CampaignManagementCustomLinkedInCriterion ]
      [ sh:node microsoftads:CampaignManagementDayTimeCriterionShape ; sh:class microsoftads:CampaignManagementDayTimeCriterion ]
      [ sh:node microsoftads:CampaignManagementDealCriterionShape ; sh:class microsoftads:CampaignManagementDealCriterion ]
      [ sh:node microsoftads:CampaignManagementDeviceCriterionShape ; sh:class microsoftads:CampaignManagementDeviceCriterion ]
      [ sh:node microsoftads:CampaignManagementGenderCriterionShape ; sh:class microsoftads:CampaignManagementGenderCriterion ]
      [ sh:node microsoftads:CampaignManagementGenreCriterionShape ; sh:class microsoftads:CampaignManagementGenreCriterion ]
      [ sh:node microsoftads:CampaignManagementHotelAdvanceBookingWindowCriterionShape ; sh:class microsoftads:CampaignManagementHotelAdvanceBookingWindowCriterion ]
      [ sh:node microsoftads:CampaignManagementHotelCheckInDateCriterionShape ; sh:class microsoftads:CampaignManagementHotelCheckInDateCriterion ]
      [ sh:node microsoftads:CampaignManagementHotelCheckInDayCriterionShape ; sh:class microsoftads:CampaignManagementHotelCheckInDayCriterion ]
      [ sh:node microsoftads:CampaignManagementHotelDateSelectionTypeCriterionShape ; sh:class microsoftads:CampaignManagementHotelDateSelectionTypeCriterion ]
      [ sh:node microsoftads:CampaignManagementHotelGroupShape ; sh:class microsoftads:CampaignManagementHotelGroup ]
      [ sh:node microsoftads:CampaignManagementHotelLengthOfStayCriterionShape ; sh:class microsoftads:CampaignManagementHotelLengthOfStayCriterion ]
      [ sh:node microsoftads:CampaignManagementLocationCriterionShape ; sh:class microsoftads:CampaignManagementLocationCriterion ]
      [ sh:node microsoftads:CampaignManagementLocationIntentCriterionShape ; sh:class microsoftads:CampaignManagementLocationIntentCriterion ]
      [ sh:node microsoftads:CampaignManagementPlacementCriterionShape ; sh:class microsoftads:CampaignManagementPlacementCriterion ]
      [ sh:node microsoftads:CampaignManagementProductPartitionShape ; sh:class microsoftads:CampaignManagementProductPartition ]
      [ sh:node microsoftads:CampaignManagementProductScopeShape ; sh:class microsoftads:CampaignManagementProductScope ]
      [ sh:node microsoftads:CampaignManagementProfileCriterionShape ; sh:class microsoftads:CampaignManagementProfileCriterion ]
      [ sh:node microsoftads:CampaignManagementRadiusCriterionShape ; sh:class microsoftads:CampaignManagementRadiusCriterion ]
      [ sh:node microsoftads:CampaignManagementStoreCriterionShape ; sh:class microsoftads:CampaignManagementStoreCriterion ]
      [ sh:node microsoftads:CampaignManagementTopicCriterionShape ; sh:class microsoftads:CampaignManagementTopicCriterion ]
      [ sh:node microsoftads:CampaignManagementWebpageShape ; sh:class microsoftads:CampaignManagementWebpage ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementNegativeCampaignCriterion/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version." ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementNegativeCampaignCriterion/status> ;
    sh:name "status" ;
    sh:description "A status value that determines whether the criterion applies for the campaign. Currently the only supported status for negative campaign criterions is Active. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Paused" "Deleted" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementNegativeCampaignCriterion/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier for the campaign criterion. Add: Read-only Update: Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementNegativeCampaignCriterion/type> ;
    sh:name "type" ;
    sh:description "The type of the campaign criterion. This value is NegativeCampaignCriterion when you retrieve a negative campaign criterion. For more information about campaign criterion types, see the CampaignCriterion Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Negative Keyword List
microsoftads:CampaignManagementNegativeKeywordListShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementNegativeKeywordList ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementNegativeKeywordList/itemCount> ;
    sh:name "item count" ;
    sh:description "The number of SharedListItem objects that are added to this shared list. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementNegativeKeywordList/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier of the shared entity. Add: Read-only Update: Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementNegativeKeywordList/name> ;
    sh:name "name" ;
    sh:description "The name of the shared entity. The maximum string length is 255. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementNegativeKeywordList/type> ;
    sh:name "type" ;
    sh:description "The type of the shared entity. This value is NegativeKeywordList when you retrieve a NegativeKeywordList. This value is PlacementExclusionList when you retrieve a PlacementExclusionList. This value is AccountNegativeKeywordList when you retrieve an AccountNegativeKeywordList. For more information about shared entity types, see SharedEntity Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementNegativeKeywordList/associationCount> ;
    sh:name "association count" ;
    sh:description "The number of active associations between this shared entity and another entity such as campaign or ad account. For a NegativeKeywordList, the maximum number of active associations between the negative keyword list and campaign is 20. For a PlacementExclusionList, the maximum number of active associations between the website exclusion list and ad account is undefined. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementNegativeKeywordList/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. Forward compatibility changes will be noted here in future releases. There are currently no forward compatibility changes for this object." ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Negative Site
microsoftads:CampaignManagementNegativeSiteShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementNegativeSite ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementNegativeSite/type> ;
    sh:name "type" ;
    sh:description "The type of the shared list item. This value is NegativeSite when you retrieve a negative site. For more information about shared list item types, see SharedListItem Data Object Remarks. Add: Read-only Delete: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementNegativeSite/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. Forward compatibility changes will be noted here in future releases. There are currently no forward compatibility changes for this object." ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementNegativeSite/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier of the negative site. Add: Read-only Delete: Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementNegativeSite/url> ;
    sh:name "url" ;
    sh:description "The URL of the website where you do not want your ads displayed. Each URL must specify the domain name e.g., contoso.com which can include up to three subdomains and two subdirectories. The subdomain count includes the www prefix. For example one.two.three.contoso.com/1/2, www.two.three.contoso.com/1/2, and one.two.contoso.co.uk/1/2 are valid URLs, whereas one.two.three.contoso.co.uk/1/2 (too many subdomains) and one.two.three.contoso.com/1/2/3 (too many subdirectories) are not. Duplicate URLs in a website exclusion list (Placement Exclusion List or Account Placement Exclusion List) are not allowed. You can only exclude websites for syndicated search websites. The ad group's network must be set to OwnedAndOperatedAndSyndicatedSearch. For more information about network distribution, see Network. If you associate any ebsite exclusion lists (Placement Exclusion List or Account Placement Exclusion List) with an ad account, the list of negative sites are used in addition to the campaign negative sites or ad group negative sites. Negative site URLs specified at the ad group level are used instead of any negative site URLs specified at the campaign level. Add: Required Delete: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Network Distribution Setting
microsoftads:CampaignManagementNetworkDistributionSettingShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementNetworkDistributionSetting ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementNetworkDistributionSetting/type> ;
    sh:name "type" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementNetworkDistributionSetting/networkOption> ;
    sh:name "network option" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "OwnedAndOperatedAndSyndicatedSearch" "OwnedAndOperatedOnly" "SyndicatedSearchOnly" "InHousePromotion" ) ;
  ] .

# Shape for Campaign Management New Customer Acquisition Goal Setting
microsoftads:CampaignManagementNewCustomerAcquisitionGoalSettingShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementNewCustomerAcquisitionGoalSetting ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementNewCustomerAcquisitionGoalSetting/type> ;
    sh:name "type" ;
    sh:description "The type of setting. For more information, see Setting Data Object Remarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementNewCustomerAcquisitionGoalSetting/newCustomerAcquisitionGoalId> ;
    sh:name "new customer acquisition goal id" ;
    sh:description "The identifier for the new customer acquisition goal." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementNewCustomerAcquisitionGoalSetting/newCustomerAcquisitionBidOnlyMode> ;
    sh:name "new customer acquisition bid only mode" ;
    sh:description "Enable new customer acqisition bid only mode." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementNewCustomerAcquisitionGoalSetting/additionalConversionValue> ;
    sh:name "additional conversion value" ;
    sh:description "The target amount you want to pay for a new customer's purchase of your product or service." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management News Ad Extension
microsoftads:CampaignManagementNewsAdExtensionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementNewsAdExtension ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementNewsAdExtension/status> ;
    sh:name "status" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Deleted" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementNewsAdExtension/scheduling> ;
    sh:name "scheduling" ;
    sh:node microsoftads:CampaignManagementScheduleShape ;
    sh:class microsoftads:CampaignManagementSchedule ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementNewsAdExtension/devicePreference> ;
    sh:name "device preference" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementNewsAdExtension/id> ;
    sh:name "id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementNewsAdExtension/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementNewsAdExtension/version> ;
    sh:name "version" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementNewsAdExtension/name> ;
    sh:name "name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementNewsAdExtension/sourceUrl> ;
    sh:name "source url" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementNewsAdExtension/filter> ;
    sh:name "filter" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementNewsAdExtension/priority> ;
    sh:name "priority" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementNewsAdExtension/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Number Rule Item
microsoftads:CampaignManagementNumberRuleItemShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementNumberRuleItem ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementNumberRuleItem/type> ;
    sh:name "type" ;
    sh:description "The type of rule item. For more information, see RuleItem Data Object Remarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementNumberRuleItem/operand> ;
    sh:name "operand" ;
    sh:description "The rule operand or key on the left hand side of the operator. Supported values are Url and ReferrerUrl. For example to define a rule where the page Url must contain page.html, set the Operand to Url, Operator to Contains, and Value to page.html. Add: Required Update: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementNumberRuleItem/operator> ;
    sh:name "operator" ;
    sh:description "The rule item operator. Add: Required Update: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "None" "Equals" "GreaterThan" "LessThan" "GreaterThanEqualTo" "LessThanEqualTo" "NotEquals" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementNumberRuleItem/value> ;
    sh:name "value" ;
    sh:description "The rule value on the right hand side of the operator. Add: Required Update: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Offline Conversion Goal
microsoftads:CampaignManagementOfflineConversionGoalShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementOfflineConversionGoal ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOfflineConversionGoal/name> ;
    sh:name "name" ;
    sh:description "The conversion goal name. The maximum length of the name is 100, and the name must be unique among all conversion goals belonging to the same customer. Add: Required Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOfflineConversionGoal/status> ;
    sh:name "status" ;
    sh:description "Defines the possible user-determined status values of a conversion goal. These are the status values that a user can decide to set, for example a goal can be set to Paused if you no longer wish to track conversions for that goal. For status values that can be set by the system, see the TrackingStatus element. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Paused" "Deleted" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOfflineConversionGoal/scope> ;
    sh:name "scope" ;
    sh:description "Determines if the goal applies to all accounts or only the account specified in the required CustomerAccountId header element. If you have multiple Microsoft Advertising accounts, you can track conversions across all of those accounts. If you associate a goal with one account, conversions will be tracked for that account only. Possible values are Account and Customer. Once you set scope, you can't change it. If you want to change the scope, you need to create a new conversion goal and pause the old one. Add: Optional. If not specified, the scope will be set to Account by default. Update: Read-only. You cannot update the offline conversion goal scope." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Account" "Customer" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOfflineConversionGoal/countType> ;
    sh:name "count type" ;
    sh:description "This determines how your conversions are recorded within your chosen conversion window. There are two choices, and if you do not set a value the default is All: - All: All conversions with different offline conversion times that happen after an ad click will be counted. This is a common choice for sales. - Unique: Only the first conversion that happens after an ad click will be counted. This is a common choice for leads. For example: You track two conversions: leads and sales. You pick Unique for leads and All for sales. When one ad click turns into two leads and two sales, it's counted as three conversions: one for the unique lead, and two for all the sales. Duplicate offline conversions with the same MicrosoftClickId and ConversionTime will be ignored. In other words only the first offline conversion for a given MicrosoftClickId and ConversionTime will be counted. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "All" "Unique" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOfflineConversionGoal/revenue> ;
    sh:name "revenue" ;
    sh:description "Determines how much each conversion is worth to your business. When adding a conversion goal if you do not specify any revenue tracking preferences, then each ConversionGoalRevenue will be set to their respective default values. When updating a conversion goal, if the Revenue element is nil or empty then none of the nested properties will be updated. However, if this element is not nil or empty then you are effectively replacing any existing revenue properties. If the revenue type is FixedValue or VariableValue, then the ConversionCurrencyCode and ConversionValue elements of the applied OfflineConversion data takes precedence over the ConversionGoalRevenue currency code and value. Add: Optional Update: Optional" ;
    sh:node microsoftads:CampaignManagementConversionGoalRevenueShape ;
    sh:class microsoftads:CampaignManagementConversionGoalRevenue ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOfflineConversionGoal/conversionWindowInMinutes> ;
    sh:name "conversion window in minutes" ;
    sh:description "The conversion window is the length of time in minutes after a click that you want to track conversions. If you set this value to 43200 minutes (30 days), then conversions that happen within 30 days after a click are tracked. Past conversions aren't affected. The default value is 43200. The minimum value supported is 1 minute, although keep in mind that a shorter conversion window will reduce the number of conversions your account records. The maximum value supported is 129600 minutes (90 days). Add: Optional Update: Optional" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOfflineConversionGoal/tagId> ;
    sh:name "tag id" ;
    sh:description "Not applicable for offline conversion goals." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOfflineConversionGoal/trackingStatus> ;
    sh:name "tracking status" ;
    sh:description "Not applicable for offline conversion goals." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "TagUnverified" "NoRecentConversions" "RecordingConversions" "TagInactive" "InactiveDueToTagUnavailable" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOfflineConversionGoal/excludeFromBidding> ;
    sh:name "exclude from bidding" ;
    sh:description "Determines whether or not to exclude data otherwise related to this conversion goal from a subset of performance report columns. This element is only available for customers who are enabled for the Include in Conversions feature (GetCustomerPilotFeatures returns 574). If this element is set to true, data otherwise related to this conversion goal will be excluded from the Conversions, ConversionRate, CostPerConversion, ReturnOnAdSpend, RevenuePerConversion, and Revenue report columns. Also, if you use an automated bidding bid strategy, setting this property true will result in the goal's conversions no longer factoring into automated bidding calculations. Setting this property \"true\" is effectively the same as unchecking \"Include in Conversions\" in the Microsoft Advertising web application. Regardless of this element value, the AllConversions, AllConversionRate, AllCostPerConversion, AllReturnOnAdSpend, AllRevenuePerConversion, and AllRevenue report columns will include data for all conversion goals. By default this element is false, and data related to this conversion goal are included in all report columns. For more information, see Report Attributes and Performance Statistics and the help article Conversion goals: \"Conversions\" versus \"All conversions\". Add: Optional Update: Optional" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOfflineConversionGoal/viewThroughConversionWindowInMinutes> ;
    sh:name "view through conversion window in minutes" ;
    sh:description "Not applicable for offline conversion goals." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOfflineConversionGoal/goalCategory> ;
    sh:name "goal category" ;
    sh:description "The category used to segment the conversion goal. Categorize your conversion goals however makes sense for your business. Goal categories don't affect performance - they are here to help you segment your goals and their performance metrics. The supported category values vary by conversion goal type. Offline conversion goals support the AddToCart, BeginCheckout, BookAppointment, Contact, GetDirections, Other, OutboundClick, PageView, Purchase, RequestQuote, Signup, SubmitLeadForm, and Subscribe categories. Add: Required as of June 2021. Previously if you left this element nil or empty, the default category was set to None. Update: Optional if the conversion goal already has a category set other than None. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unknown" "None" "Purchase" "AddToCart" "BeginCheckout" "Subscribe" "SubmitLeadForm" "BookAppointment" "Signup" "RequestQuote" "GetDirections" "OutboundClick" "Contact" "PageView" "Download" "Other" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOfflineConversionGoal/attributionModelType> ;
    sh:name "attribution model type" ;
    sh:description "Not applicable for offline conversion goals." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "LastClick" "LastTouch" "DataDriven" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOfflineConversionGoal/isEnhancedConversionsEnabled> ;
    sh:name "is enhanced conversions enabled" ;
    sh:description "Determines whether enhanced conversions are enabled for a conversion goal." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOfflineConversionGoal/isAutoGoal> ;
    sh:name "is auto goal" ;
    sh:description "Only available for event goal." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOfflineConversionGoal/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier for the conversion goal. Add: Read-only Update: Required and Read-Only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOfflineConversionGoal/type> ;
    sh:name "type" ;
    sh:description "The type of the conversion goal. This value is OfflineConversion when you retrieve an offline conversion goal. For more information about conversion goal types, see the ConversionGoal Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementOfflineConversionGoal/isExternallyAttributed> ;
    sh:name "is externally attributed" ;
    sh:description "This determines if your offline conversion goal uses your own attribution model and allows you to import fractional credit for each MSCLKID. This element is not returned by default. To get this element, include the IsExternallyAttributed value in the ReturnAdditionalFields element when you call the GetConversionGoalsByIds and GetConversionGoalsByTagIds service operations. Note: You can only set IsExternallyAttributed via the Campaign Management API. Add: Optional Update: Optional" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Pages Viewed Per Visit Goal
microsoftads:CampaignManagementPagesViewedPerVisitGoalShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementPagesViewedPerVisitGoal ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPagesViewedPerVisitGoal/name> ;
    sh:name "name" ;
    sh:description "The conversion goal name. The maximum length of the name is 100, and the name must be unique among all conversion goals belonging to the same customer. Add: Required Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPagesViewedPerVisitGoal/status> ;
    sh:name "status" ;
    sh:description "Defines the possible user-determined status values of a conversion goal. These are the status values that a user can decide to set, for example a goal can be set to Paused if you no longer wish to track conversions for that goal. For status values that can be set by the system, for example whether or not the UET tag is verified, see the TrackingStatus element. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Paused" "Deleted" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPagesViewedPerVisitGoal/scope> ;
    sh:name "scope" ;
    sh:description "Determines if the goal applies to all accounts or only the account specified in the required CustomerAccountId header element. If you have multiple Microsoft Advertising accounts, you can track conversions across all of those accounts. If you associate a goal with one account, conversions will be tracked for that account only. Possible values are Account and Customer. If not specified, the scope will be set to Customer by default. Once you set scope, you can't change it. If you want to change the scope, you need to create a new conversion goal and pause the old one. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Account" "Customer" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPagesViewedPerVisitGoal/countType> ;
    sh:name "count type" ;
    sh:description "This determines how your conversions are recorded within your chosen conversion window. There are two choices, and if you do not set a value the default is All: - All: All conversions that happen after an ad click will be counted. This is a common choice for sales. - Unique: Only one conversion that happens after an ad click will be counted. This is a common choice for leads. For example: You track two conversions: leads and sales. You pick Unique for leads and All for sales. When one ad click turns into two leads and two sales, it's counted as three conversions: one for the unique lead, and two for all the sales. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "All" "Unique" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPagesViewedPerVisitGoal/revenue> ;
    sh:name "revenue" ;
    sh:description "Determines how much each conversion is worth to your business. When adding a conversion goal if you do not specify any revenue tracking preferences, then each ConversionGoalRevenue will be set to their respective default values. When updating a conversion goal, if the Revenue element is nil or empty then none of the nested properties will be updated. However, if this element is not nil or empty then you are effectively replacing any existing revenue properties. The VariableValue option is not available for pages viewed per visit conversion goals. Add: Optional Update: Optional" ;
    sh:node microsoftads:CampaignManagementConversionGoalRevenueShape ;
    sh:class microsoftads:CampaignManagementConversionGoalRevenue ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPagesViewedPerVisitGoal/conversionWindowInMinutes> ;
    sh:name "conversion window in minutes" ;
    sh:description "The conversion window is the length of time in minutes after a click that you want to track conversions. If you set this value to 43200 minutes (30 days), then conversions that happen within 30 days after a click are tracked. Past conversions aren't affected. The minimum value supported is 1 minute, although keep in mind that a shorter conversion window will reduce the number of conversions your account records. The maximum value supported is 129600 minutes (90 days). Add: Optional Update: Optional" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPagesViewedPerVisitGoal/tagId> ;
    sh:name "tag id" ;
    sh:description "The unique Microsoft Advertising identifier of the UET tag that you added to your website to allow Microsoft Advertising to collect actions people take on your website. Before you take a dependency on the tag ID, please note that the UET tag can be shared with or from another customer. Shared UET tags and audiences are only available for pilot customers. For an overview of sharing audiences and UET tags in a customer hierarchy, see the Share Audiences and UET Tags technical guide. Add: Required Update: Optional" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPagesViewedPerVisitGoal/trackingStatus> ;
    sh:name "tracking status" ;
    sh:description "Defines the possible system-determined status values of a conversion goal. These are the status values that can be set by the system, for example the system sets the status to TagUnverified if the UET tag has not yet been verified. For status values that a user can decide to set, for example setting the status to Paused if you no longer wish to track conversions for that goal, see the Status element. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "TagUnverified" "NoRecentConversions" "RecordingConversions" "TagInactive" "InactiveDueToTagUnavailable" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPagesViewedPerVisitGoal/excludeFromBidding> ;
    sh:name "exclude from bidding" ;
    sh:description "Determines whether or not to exclude data otherwise related to this conversion goal from a subset of performance report columns. This element is only available for customers who are enabled for the Include in Conversions feature (GetCustomerPilotFeatures returns 574). If this element is set to true, data otherwise related to this conversion goal will be excluded from the Conversions, ConversionRate, CostPerConversion, ReturnOnAdSpend, RevenuePerConversion, and Revenue report columns. Also, if you use an automated bidding bid strategy, setting this property true will result in the goal's conversions no longer factoring into automated bidding calculations. Setting this property \"true\" is effectively the same as unchecking \"Include in Conversions\" in the Microsoft Advertising web application. Regardless of this element value, the AllConversions, AllConversionRate, AllCostPerConversion, AllReturnOnAdSpend, AllRevenuePerConversion, and AllRevenue report columns will include data for all conversion goals. By default this element is false, and data related to this conversion goal are included in all report columns. For more information, see Report Attributes and Performance Statistics and the help article Conversion goals: \"Conversions\" versus \"All conversions\". Add: Optional Update: Optional" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPagesViewedPerVisitGoal/viewThroughConversionWindowInMinutes> ;
    sh:name "view through conversion window in minutes" ;
    sh:description "The view-through conversion window is the length of time in minutes after a click that you want to track view-through conversions. If you set this value to 43200 minutes (30 days), then view-through conversions that happen within 30 days after a click are tracked. Past conversions aren't affected. The minimum value supported is 1 minute, although keep in mind that a shorter conversion window will reduce the number of conversions your account records. The maximum value supported is 43200 minutes (30 days). The IncludeViewThroughConversions account property must also be set to true for view-through conversions to be tracked. This element is not returned by default. To get this element, include the ViewThroughConversionWindowInMinutes value in the ReturnAdditionalFields element when you call the GetConversionGoalsByIds and GetConversionGoalsByTagIds service operations. Add: Optional Update: Optional" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPagesViewedPerVisitGoal/goalCategory> ;
    sh:name "goal category" ;
    sh:description "The category used to segment the conversion goal. Categorize your conversion goals however makes sense for your business. Goal categories don't affect performance - they are here to help you segment your goals and their performance metrics. The supported category values vary by conversion goal type. Pages viewed per visit goals only support the Other category. Add: Optional. If you leave this element nil or empty, the default category will be set to Other. Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unknown" "None" "Purchase" "AddToCart" "BeginCheckout" "Subscribe" "SubmitLeadForm" "BookAppointment" "Signup" "RequestQuote" "GetDirections" "OutboundClick" "Contact" "PageView" "Download" "Other" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPagesViewedPerVisitGoal/attributionModelType> ;
    sh:name "attribution model type" ;
    sh:description "Determines which attribution model, _LastTouch_ or _LastClick_, is used with a conversion goal." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "LastClick" "LastTouch" "DataDriven" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPagesViewedPerVisitGoal/isEnhancedConversionsEnabled> ;
    sh:name "is enhanced conversions enabled" ;
    sh:description "Determines whether enhanced conversions are enabled for a conversion goal." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPagesViewedPerVisitGoal/isAutoGoal> ;
    sh:name "is auto goal" ;
    sh:description "Only available for event goal." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPagesViewedPerVisitGoal/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier for the conversion goal. Add: Read-only Update: Required and Read-Only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPagesViewedPerVisitGoal/type> ;
    sh:name "type" ;
    sh:description "The type of the conversion goal. This value is PagesViewedPerVisit when you retrieve a pages viewed per visit goal. For more information about conversion goal types, see the ConversionGoal Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPagesViewedPerVisitGoal/minimumPagesViewed> ;
    sh:name "minimum pages viewed" ;
    sh:description "The minimum number of pages the user must visit, in order to count as a conversion. Add: Required Update: Optional" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Page Visitors Rule
microsoftads:CampaignManagementPageVisitorsRuleShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementPageVisitorsRule ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPageVisitorsRule/type> ;
    sh:name "type" ;
    sh:description "The type of the remarketing rule. For more information about remarketing rule types, see the RemarketingRule Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPageVisitorsRule/ruleItemGroups> ;
    sh:name "rule item groups" ;
    sh:description "The list of rule item groups that you want applied to the remarketing list. The maximum number of rule item groups in this element is 100. The maximum number of rule items per rule item group is 100. Add: Required Update: Required. If you want to keep any of the previous rule item groups, then you must explicitly set them again during update." ;
    sh:node microsoftads:CampaignManagementRuleItemGroupShape ;
    sh:class microsoftads:CampaignManagementRuleItemGroup ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPageVisitorsRule/normalForm> ;
    sh:name "normal form" ;
    sh:description "Determines whether the rule item groups are evaluated based on conjunctive normal form (CNF) or disjunctive normal form (DNF). This element is not returned by default. To get this element, include the NormalForm value in the ReturnAdditionalFields element when you call the GetAudiencesByIds service operation. Add: Optional. The default value is \"Disjunctive\". Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Conjunctive" "Disjunctive" ) ;
  ] .

# Shape for Campaign Management Page Visitors Who Did Not Visit Another Page Rule
microsoftads:CampaignManagementPageVisitorsWhoDidNotVisitAnotherPageRuleShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementPageVisitorsWhoDidNotVisitAnotherPageRule ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPageVisitorsWhoDidNotVisitAnotherPageRule/type> ;
    sh:name "type" ;
    sh:description "The type of the remarketing rule. For more information about remarketing rule types, see the RemarketingRule Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPageVisitorsWhoDidNotVisitAnotherPageRule/includeRuleItemGroups> ;
    sh:name "include rule item groups" ;
    sh:description "The list of rule item groups that you want applied to the remarketing list. The maximum number of rule item groups in this element is 100. The maximum number of rule items per rule item group is 100. Add: Required Update: Required. If you want to keep any of the previous rule item groups, then you must explicitly set them again during update." ;
    sh:node microsoftads:CampaignManagementRuleItemGroupShape ;
    sh:class microsoftads:CampaignManagementRuleItemGroup ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPageVisitorsWhoDidNotVisitAnotherPageRule/excludeRuleItemGroups> ;
    sh:name "exclude rule item groups" ;
    sh:description "The list of rule item groups that you want applied as exclusions to the remarketing list. The maximum number of rule item groups in this element is 100. The maximum number of rule items per rule item group is 100. Exclusions take precedence over inclusions. In other words if the user visited any excluded page within the RemarketingList membership duration e.g. previous 30 days, then they cannot be added to the list even if other page views satisfy conditions in the included rule item groups. If the excluded page views occurred prior to the membership duration lookback, and if the user's page views satisfy conditions in the included rule item groups within the membership duration, then they can be added to the remarketing list. Add: Required Update: Required. If you want to keep any of the previous rule item groups, then you must explicitly set them again during update." ;
    sh:node microsoftads:CampaignManagementRuleItemGroupShape ;
    sh:class microsoftads:CampaignManagementRuleItemGroup ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Page Visitors Who Visited Another Page Rule
microsoftads:CampaignManagementPageVisitorsWhoVisitedAnotherPageRuleShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementPageVisitorsWhoVisitedAnotherPageRule ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPageVisitorsWhoVisitedAnotherPageRule/type> ;
    sh:name "type" ;
    sh:description "The type of the remarketing rule. For more information about remarketing rule types, see the RemarketingRule Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPageVisitorsWhoVisitedAnotherPageRule/ruleItemGroups> ;
    sh:name "rule item groups" ;
    sh:description "The list of rule item groups related to pages the audience visited. The maximum number of rule item groups in this element is 100. The maximum number of rule items per rule item group is 100. Add: Required Update: Required. If you want to keep any of the previous rule item groups, then you must explicitly set them again during update." ;
    sh:node microsoftads:CampaignManagementRuleItemGroupShape ;
    sh:class microsoftads:CampaignManagementRuleItemGroup ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPageVisitorsWhoVisitedAnotherPageRule/anotherRuleItemGroups> ;
    sh:name "another rule item groups" ;
    sh:description "The list of rule item groups related to other pages the audience visited. The maximum number of rule item groups in this element is 100. The maximum number of rule items per rule item group is 100. Add: Required Update: Required. If you want to keep any of the previous rule item groups, then you must explicitly set them again during update." ;
    sh:node microsoftads:CampaignManagementRuleItemGroupShape ;
    sh:class microsoftads:CampaignManagementRuleItemGroup ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Percent Cpc Bidding Scheme
microsoftads:CampaignManagementPercentCpcBiddingSchemeShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementPercentCpcBiddingScheme ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPercentCpcBiddingScheme/type> ;
    sh:name "type" ;
    sh:description "The type of bidding scheme that is set for this campaign, ad group, or keyword. For more information about bidding scheme types, see the Remarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPercentCpcBiddingScheme/maxPercentCpc> ;
    sh:name "max percent cpc" ;
    sh:description "The maximum effective bid limit, in absolute form, at the campaign level. The actual CPC bid amount, in percent form, must be set at the ad group level and can optionally be set at the hotel group level again. For example, for a maximum percent CPC bid of $10.60, the MaxPercentCpc value should be 10.60. Campaigns with PercentCpc and ManualCPC bidding scheme can participate in a shared budget. MaxPercentCpc must be greater than 0." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Performance Max Setting
microsoftads:CampaignManagementPerformanceMaxSettingShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementPerformanceMaxSetting ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPerformanceMaxSetting/type> ;
    sh:name "type" ;
    sh:description "The type of setting. For more information, see Setting Data Object Remarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPerformanceMaxSetting/finalUrlExpansionOptOut> ;
    sh:name "final url expansion opt out" ;
    sh:description "If false, then the entire domain will be targeted. If true (opted out), then only the final URLs in the asset groups and feed will be targeted. Add: Optional. The default value is false. Update: Optional" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPerformanceMaxSetting/pageFeedIds> ;
    sh:name "page feed ids" ;
    sh:description "The page feed identifiers for performance max ads. See the Page Feeds technical guide for an implementation overview. Add: Optional Update: Optional. You cannot delete page feed IDs, but you can replace the previous set with a new set." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPerformanceMaxSetting/autoGeneratedTextOptOut> ;
    sh:name "auto generated text opt out" ;
    sh:description "If false, then text assets will be dynamically generated. If true (opted out), then text assets will not be dynamically generated. Add: Optional. The default value is false. Update: Optional" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPerformanceMaxSetting/autoGeneratedImageOptOut> ;
    sh:name "auto generated image opt out" ;
    sh:description "If false, then image assets will be dynamically generated. If true (opted out), then image assets will not be dynamically generated. Add: Optional. The default value is false. Update: Optional" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPerformanceMaxSetting/costPerSaleOptOut> ;
    sh:name "cost per sale opt out" ;
    sh:description "If true, then bidding will be opted out of cost per sale." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Placement Criterion
microsoftads:CampaignManagementPlacementCriterionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementPlacementCriterion ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPlacementCriterion/type> ;
    sh:name "type" ;
    sh:description "The type of the criterion. This value is Placement when you retrieve a placement criterion. For more information about criterion types, see the Criterion Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPlacementCriterion/placementId> ;
    sh:name "placement id" ;
    sh:description "The ID of the placement. Possible values include 12: Microsoft Edge New Tab Page, 13: Productivity, 14: Gaming, 15: MSN." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPlacementCriterion/placementName> ;
    sh:name "placement name" ;
    sh:description "The name of the placement." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Placement Exclusion List
microsoftads:CampaignManagementPlacementExclusionListShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementPlacementExclusionList ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPlacementExclusionList/itemCount> ;
    sh:name "item count" ;
    sh:description "The number of SharedListItem objects that are added to this shared list. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPlacementExclusionList/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier of the shared entity. Add: Read-only Update: Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPlacementExclusionList/name> ;
    sh:name "name" ;
    sh:description "The name of the shared entity. The maximum string length is 255. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPlacementExclusionList/type> ;
    sh:name "type" ;
    sh:description "The type of the shared entity. This value is NegativeKeywordList when you retrieve a NegativeKeywordList. This value is PlacementExclusionList when you retrieve a PlacementExclusionList. This value is AccountNegativeKeywordList when you retrieve an AccountNegativeKeywordList. For more information about shared entity types, see SharedEntity Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPlacementExclusionList/associationCount> ;
    sh:name "association count" ;
    sh:description "The number of active associations between this shared entity and another entity such as campaign or ad account. For a NegativeKeywordList, the maximum number of active associations between the negative keyword list and campaign is 20. For a PlacementExclusionList, the maximum number of active associations between the website exclusion list and ad account is undefined. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPlacementExclusionList/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. Forward compatibility changes will be noted here in future releases. There are currently no forward compatibility changes for this object." ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Price Ad Extension
microsoftads:CampaignManagementPriceAdExtensionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementPriceAdExtension ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPriceAdExtension/status> ;
    sh:name "status" ;
    sh:description "The status of the ad extension. The value will always be Active because the Campaign Management service does not return deleted ad extensions. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Deleted" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPriceAdExtension/scheduling> ;
    sh:name "scheduling" ;
    sh:description "Determines the calendar day and time ranges when the ad extension is eligible to be shown in ads. Add: Optional Update: Optional. If you set this element null, any existing scheduling set for the ad extension will remain unchanged. If you set this to any non-null Schedule object, you are effectively replacing existing scheduling settings for the ad extension. To remove all scheduling set this element to an empty Schedule object." ;
    sh:node microsoftads:CampaignManagementScheduleShape ;
    sh:class microsoftads:CampaignManagementSchedule ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPriceAdExtension/devicePreference> ;
    sh:name "device preference" ;
    sh:description "Not supported for this ad extension type." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPriceAdExtension/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier of the ad extension. Add: Read-only Update: Read-only and Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPriceAdExtension/type> ;
    sh:name "type" ;
    sh:description "The type of the ad extension. This value is PriceAdExtension when you retrieve a price ad extension. Add: Read-only Update: Read-only For more information about ad extension types, see the Ad Extension Data Object Remarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPriceAdExtension/version> ;
    sh:name "version" ;
    sh:description "Tracks the number of times the ad extension has been updated. The version is set to 1 when the ad extension is created, and increments by one after each update. Add: Not allowed Update: Not allowed" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPriceAdExtension/priceExtensionType> ;
    sh:name "price extension type" ;
    sh:description "The type of the price ad extension. Possible values include: Brands, Events, Locations, Neighborhoods, ProductCategories, ProductTiers, ServiceCategories, Services, ServiceTiers, and Unknown. Add: Required Update: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unknown" "Brands" "Events" "Locations" "Neighborhoods" "ProductCategories" "ProductTiers" "Services" "ServiceCategories" "ServiceTiers" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPriceAdExtension/trackingUrlTemplate> ;
    sh:name "tracking url template" ;
    sh:description "The tracking template to use as a default for all landing page URLs. The following validation rules apply to tracking templates. For more details about supported templates and parameters, see the Microsoft Advertising help article What tracking or URL parameters can I use? - Tracking templates defined for lower level entities e.g. ads override those set for higher level entities e.g. campaign. For more information, see Entity Limits. - The length of the tracking template is limited to 2,048 characters. The HTTP or HTTPS protocol string does count towards the 2,048 character limit. - The tracking template must be a well-formed URL beginning with one of the following: http://, https://, {lpurl}, or {unescapedlpurl}. - Microsoft Advertising does not validate whether custom parameters exist. If you use custom parameters in your tracking template and they do not exist, then the landing page URL will include the key and value placeholders of your custom parameters without substitution. For example, if your tracking template is https://tracker.example.com/?season={_season}&promocode={_promocode}&u={lpurl} and neither {_season} or {_promocode} are defined at the campaign, ad group, criterion, keyword, or ad level, then the landing page URL will be the same. Add: Optional Update: Optional. If you set this element null, the previous setting will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPriceAdExtension/finalUrlSuffix> ;
    sh:name "final url suffix" ;
    sh:description "The final URL suffix can include tracking parameters that will be appended to the end of your landing page URL. We recommend placing tracking parameters that your landing page requires in a final URL suffix so that your customers are always sent to your landing page. For more details and validation rules see Final URL Suffix in the technical guides. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPriceAdExtension/urlCustomParameters> ;
    sh:name "url custom parameters" ;
    sh:description "Your custom collection of key and value parameters for URL tracking. Microsoft Advertising will accept the first 3 CustomParameter objects that you include within the CustomParameters object, and any additional custom parameters will be ignored. Each CustomParameter includes Key and Value elements. For customers in the Custom Parameters Limit Increase Phase 3 pilot (GetCustomerPilotFeatures returns 635), Microsoft Advertising will accept the first 8 custom parameter key and value pairs that you include, and if you include more than 8 custom parameters an error will be returned. Add: Optional Update: Optional. If you set this element null, the previous setting will be deleted." ;
    sh:node microsoftads:CampaignManagementCustomParametersShape ;
    sh:class microsoftads:CampaignManagementCustomParameters ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPriceAdExtension/language> ;
    sh:name "language" ;
    sh:description "The language for the ad copy of your price ad extension. For possible values, see Ad Languages. Add: Required Update: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPriceAdExtension/tableRows> ;
    sh:name "table rows" ;
    sh:description "The price table rows. You must have between 3 and 8 price table rows. The order you create them in is the expected order in the ad but the order is not guaranteed. Add: Required Update: Required" ;
    sh:node microsoftads:CampaignManagementPriceTableRowShape ;
    sh:class microsoftads:CampaignManagementPriceTableRow ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPriceAdExtension/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. There are currently no forward compatibility changes for the AdExtension object. Add: Read-only Update: Read-only" ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Product Ad
microsoftads:CampaignManagementProductAdShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementProductAd ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementProductAd/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier for the ad. Add: Read-only Update: Required and Read-only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementProductAd/type> ;
    sh:name "type" ;
    sh:description "The type of the ad. This value is Product when you retrieve a product ad. For more information about ad types, see the Ad Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Text" "Image" "Product" "AppInstall" "ExpandedText" "DynamicSearch" "ResponsiveAd" "ResponsiveSearch" "Hotel" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementProductAd/status> ;
    sh:name "status" ;
    sh:description "The status of the ad. You can set the ad status to Active or Paused. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Inactive" "Active" "Paused" "Deleted" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementProductAd/editorialStatus> ;
    sh:name "editorial status" ;
    sh:description "The editorial review status of the ad, which indicates whether the ad is pending review, has been approved, or has been disapproved. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Disapproved" "Inactive" "ActiveLimited" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementProductAd/devicePreference> ;
    sh:name "device preference" ;
    sh:description "Not supported for this ad type." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementProductAd/adFormatPreference> ;
    sh:name "ad format preference" ;
    sh:description "Not supported for this ad type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementProductAd/trackingUrlTemplate> ;
    sh:name "tracking url template" ;
    sh:description "Not supported for this ad type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementProductAd/finalUrlSuffix> ;
    sh:name "final url suffix" ;
    sh:description "Not supported for this ad type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementProductAd/urlCustomParameters> ;
    sh:name "url custom parameters" ;
    sh:description "Not supported for this ad type." ;
    sh:node microsoftads:CampaignManagementCustomParametersShape ;
    sh:class microsoftads:CampaignManagementCustomParameters ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementProductAd/finalUrls> ;
    sh:name "final urls" ;
    sh:description "Not supported for this ad type." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementProductAd/finalMobileUrls> ;
    sh:name "final mobile urls" ;
    sh:description "Not supported for this ad type." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementProductAd/finalAppUrls> ;
    sh:name "final app urls" ;
    sh:description "Not supported for this ad type." ;
    sh:node microsoftads:CampaignManagementAppUrlShape ;
    sh:class microsoftads:CampaignManagementAppUrl ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementProductAd/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. There are currently not any ForwardCompatibilityMap key and value pairs that are applicable for product ads." ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementProductAd/promotionalText> ;
    sh:name "promotional text" ;
    sh:description "This property is reserved for internal use and will be removed from a future version of the API. You can use Merchant Promotions if you want tags to appear at the bottom of your product ad as \"special offer\" links, helping to increase customer engagement. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Product Audience
microsoftads:CampaignManagementProductAudienceShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementProductAudience ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementProductAudience/scope> ;
    sh:name "scope" ;
    sh:description "Scope defines what accounts can use this audience. If scope is set to Account, the audience can only be associated with campaigns and ad groups in one account i.e., via the ParentId. If scope is set to Customer, the audience can be associated with campaigns and ad groups in all of the customer's accounts. Add: Required Update: Optional. You can change the scope from Account to Customer, but you cannot change the scope from Customer to Account." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Account" "Customer" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementProductAudience/membershipDuration> ;
    sh:name "membership duration" ;
    sh:description "When you create an audience, you can specify how far back in time Microsoft Advertising should look for actions that match your audience definition. The minimum duration is 1 day and the maximum duration allowed is 180 days. Add: Optional. If not specified, the membership duration will be set to 30 by default. Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementProductAudience/searchSize> ;
    sh:name "search size" ;
    sh:description "The total number of people who are active members of this audience in the Search network. This gives you an idea of how many search users you can target. The audience needs to have at least 300 people before Microsoft Advertising will use it for optimizations. This property will be nil or empty for up to 24 hours while the audience is being built, for example if you add or update the membership duration or tag identifier. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementProductAudience/audienceNetworkSize> ;
    sh:name "audience network size" ;
    sh:description "The total number of people who are active members of this audience in the Audience network. This gives you an idea of how many Audience network users you can target. The audience needs to have at least 300 people before Microsoft Advertising will use it for optimizations. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementProductAudience/supportedCampaignTypes> ;
    sh:name "supported campaign types" ;
    sh:description "The list of campaign types that support this audience. Supported values are Audience, DynamicSearchAds, Search, and Shopping. New campaign types might be added in the future, so you should not take any dependency on a fixed set of values. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementProductAudience/customerShare> ;
    sh:name "customer share" ;
    sh:description "This element is not supported for product audiences. You can use a shared TagId with product audiences, but a product audience itself cannot be shared. Add: Not supported Update: Not supported" ;
    sh:node microsoftads:CampaignManagementCustomerShareShape ;
    sh:class microsoftads:CampaignManagementCustomerShare ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementProductAudience/id> ;
    sh:name "id" ;
    sh:description "The Microsoft Advertising identifier of the audience. Add: Read-only Update: Required and read-only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementProductAudience/name> ;
    sh:name "name" ;
    sh:description "The name of the audience. The name can contain a maximum of 128 characters. Add: Required Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementProductAudience/description> ;
    sh:name "description" ;
    sh:description "The description of the audience. Use a description to help you remember what audience you are targeting. The description can contain a maximum of 1,024 characters. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementProductAudience/type> ;
    sh:name "type" ;
    sh:description "The type of the audience. This value is ProductAudience when you retrieve a product audience. For more information about audience types, see the Audience Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementProductAudience/parentId> ;
    sh:name "parent id" ;
    sh:description "The Microsoft Advertising identifier of the account or customer. If the Scope is set to Account, this is the account ID, and otherwise it is the customer ID. Add: Required Update: Read-only. You cannot change the parent ID." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementProductAudience/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. Forward compatibility changes will be noted here in future releases. There are currently no forward compatibility changes for the Audience object." ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementProductAudience/productAudienceType> ;
    sh:name "product audience type" ;
    sh:description "Determines whether to remarket your products to general visitors, product searchers, product viewers, shopping cart abandoners, or past buyers. Add: Required Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementProductAudience/tagId> ;
    sh:name "tag id" ;
    sh:description "The Microsoft Advertising identifier of the Universal Event Tracking (UET) tag that is used with the remarketing list. Before you take a dependency on the tag ID, please note that the UET tag can be shared with or from another customer. Shared UET tags and audiences are only available for pilot customers. For an overview of sharing audiences and UET tags in a customer hierarchy, see the Share Audiences and UET Tags technical guide. Add: Required Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Product Partition
microsoftads:CampaignManagementProductPartitionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementProductPartition ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementProductPartition/type> ;
    sh:name "type" ;
    sh:description "The type of the criterion. This value is ProductPartition when you retrieve a product partition criterion. For more information about criterion types, see the Criterion Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementProductPartition/parentCriterionId> ;
    sh:name "parent criterion id" ;
    sh:description "The identifier of the parent BiddableAdGroupCriterion or NegativeAdGroupCriterion. This element must be set to null if the product partition represents the root node of a product partition tree. Add: Required Update: Update is not supported for this object Delete: Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementProductPartition/condition> ;
    sh:name "condition" ;
    sh:description "A condition that helps determine whether a product from the Microsoft Merchant Center store gets served as an ad. Multiple product conditions can be specified by creating a tree of ProductPartition objects using ApplyProductPartitionActions. For a catalog item to be served as an ad, it must meet all conditions. To get a list of all conditions for an ad group, call GetAdGroupCriterionsByIds with the AdGroupCriterionIds element set to null and the CriterionType element set to ProductPartition. Add: Required Update: Update is not supported for this object" ;
    sh:node microsoftads:CampaignManagementProductConditionShape ;
    sh:class microsoftads:CampaignManagementProductCondition ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementProductPartition/partitionType> ;
    sh:name "partition type" ;
    sh:description "The type of product partition, for example Subdivision or Unit. Add: Required Update: Update is not supported for this object" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Subdivision" "Unit" ) ;
  ] .

# Shape for Campaign Management Product Scope
microsoftads:CampaignManagementProductScopeShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementProductScope ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementProductScope/type> ;
    sh:name "type" ;
    sh:description "The type of the criterion. This value is ProductScope when you retrieve a product scope criterion. For more information about criterion types, see the Criterion Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementProductScope/conditions> ;
    sh:name "conditions" ;
    sh:description "A list of up to 7 product conditions that helps determine whether a product from the Microsoft Merchant Center store gets served as an ad. Product conditions might not be returned in the order that you submitted them. The available Attribute and Operand values vary depending on the campaign type. For supported attribute and operand values, see ProductCondition Remarks. Conditions might not be returned in the order that you submitted them. Add: Required Update: Required" ;
    sh:node microsoftads:CampaignManagementProductConditionShape ;
    sh:class microsoftads:CampaignManagementProductCondition ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Profile Criterion
microsoftads:CampaignManagementProfileCriterionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementProfileCriterion ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementProfileCriterion/type> ;
    sh:name "type" ;
    sh:description "The type of the criterion. This value is Profile when you retrieve a profile criterion. For more information about criterion types, see the Criterion Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementProfileCriterion/profileId> ;
    sh:name "profile id" ;
    sh:description "The identifier of the company name, industry, or job function profile that you want to target. For details about how to get profile identifiers, see Profile Data. Add: Required Update: Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementProfileCriterion/profileType> ;
    sh:name "profile type" ;
    sh:description "Determines whether the profile criterion corresponds to a company name, industry, or job function. Add: Required Update: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Profile Dimension
microsoftads:CampaignManagementProfileDimensionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementProfileDimension ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementProfileDimension/type> ;
    sh:name "type" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Age" "Gender" "Audience" "Profile" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementProfileDimension/profiles> ;
    sh:name "profiles" ;
    sh:description "Reserved." ;
    sh:node microsoftads:CampaignManagementProfileInfoShape ;
    sh:class microsoftads:CampaignManagementProfileInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Promotion Ad Extension
microsoftads:CampaignManagementPromotionAdExtensionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementPromotionAdExtension ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPromotionAdExtension/status> ;
    sh:name "status" ;
    sh:description "The status of the ad extension. The value will always be Active because the Campaign Management service does not return deleted ad extensions. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Deleted" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPromotionAdExtension/scheduling> ;
    sh:name "scheduling" ;
    sh:description "Determines the calendar day and time ranges when the ad extension is eligible to be shown in ads. Add: Optional Update: Optional. If you set this element null, any existing scheduling set for the ad extension will remain unchanged. If you set this to any non-null Schedule object, you are effectively replacing existing scheduling settings for the ad extension. To remove all scheduling set this element to an empty Schedule object." ;
    sh:node microsoftads:CampaignManagementScheduleShape ;
    sh:class microsoftads:CampaignManagementSchedule ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPromotionAdExtension/devicePreference> ;
    sh:name "device preference" ;
    sh:description "Not supported for this ad extension type." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPromotionAdExtension/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier of the ad extension. Add: Read-only Update: Read-only and Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPromotionAdExtension/type> ;
    sh:name "type" ;
    sh:description "The type of the ad extension. This value is PromotionAdExtension when you retrieve a promotion ad extension. Add: Read-only Update: Read-only For more information about ad extension types, see the Ad Extension Data Object Remarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPromotionAdExtension/version> ;
    sh:name "version" ;
    sh:description "Tracks the number of times the ad extension has been updated. The version is set to 1 when the ad extension is created, and increments by one after each update. Add: Not allowed Update: Not allowed" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPromotionAdExtension/promotionItem> ;
    sh:name "promotion item" ;
    sh:description "The promotion target or item. For example, you might run a promotion for \"shoes\" at either $20 or 20% discount. To run a promotion for \"Up to $20 off shoes\", set the PromotionItem to \"shoes\", set the DiscountModifier to UpTo, set CurrencyCode to \"USD\", and set MoneyAmountOff to 20. The string can contain a maximum of 20 characters. Add: Required Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPromotionAdExtension/discountModifier> ;
    sh:name "discount modifier" ;
    sh:description "The promotion discount modifier. For example, let's say the discount modifier is set to UpTo. Then, if the unmodified promotion discount would be \"$20 off shoes\", the modified promotion is \"Up to $20 off shoes.\" Add: Optional. If you do not specify this element or leave it empty, the default value of None will be set. Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unknown" "UpTo" "None" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPromotionAdExtension/percentOff> ;
    sh:name "percent off" ;
    sh:description "The percent off promotion value. For example, 10.0 represents a 10% discount. Add: Required. You must set either MoneyAmountOff or PercentOff, but you cannot set both. Update: Optional. You can set either MoneyAmountOff or PercentOff, but you cannot set both. If you set this property, then the CurrencyCode setting is no longer applicable and will be deleted if it was previously set." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPromotionAdExtension/moneyAmountOff> ;
    sh:name "money amount off" ;
    sh:description "The money off promotion value. For example, to promote \"$20 off shoes - On orders over $100\", set the PromotionItem to \"shoes\", set CurrencyCode to \"USD\", set MoneyAmountOff to 20, and set OrdersOverAmount to 100. Add: Required. You must set either MoneyAmountOff or PercentOff, but you cannot set both. Update: Optional. You can set either MoneyAmountOff or PercentOff, but you cannot set both." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPromotionAdExtension/promotionCode> ;
    sh:name "promotion code" ;
    sh:description "The promotion code appended to the promotion target. For example, to promote \"$20 off shoes - Promocode SAVE20\", set the PromotionItem to \"shoes\", set CurrencyCode to \"USD\", set MoneyAmountOff to 20, and set PromotionCode to \"SAVE20\". The string can contain a maximum of 15 characters. Add: Optional. You cannot set both OrdersOverAmount and PromotionCode. Update: Optional. You cannot set both OrdersOverAmount and PromotionCode. If no value is set for the update, this setting is not changed. If you set this element to an empty string (\"\"), the previous setting will be deleted. If you set this property, then the CurrencyCode setting is no longer applicable and will be deleted if it was previously set." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPromotionAdExtension/ordersOverAmount> ;
    sh:name "orders over amount" ;
    sh:description "The orders over amount value appended to the promotion target. For example, to promote \"$20 off shoes - On orders over $100\", set the PromotionItem to \"shoes\", set CurrencyCode to \"USD\", set MoneyAmountOff to 20, and set OrdersOverAmount to 100. Add: Optional. You cannot set both OrdersOverAmount and PromotionCode. Update: Optional. You cannot set both OrdersOverAmount and PromotionCode. If no value is set for the update, this setting is not changed. If you set this element to '0' (zero), the previous setting will be deleted." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPromotionAdExtension/promotionStartDate> ;
    sh:name "promotion start date" ;
    sh:description "The start date helps to inform the promotion date or dates that will be displayed in the ad. For example if the PromotionStartDate and PromotionEndDate dates are both set to February 14th, the text \"Valid Feb 14\" could be included in the displayed promotion. The PromotionStartDate date must be earlier than, or equal to, the PromotionEndDate date. This property does not override the inherent delivery range for a promotion. Both the promotion PromotionOccasion and Scheduling determine when the promotion is eligible to be shown in ads. If the end date has already passed for the current year, then each start and end date must be set for dates during the following year. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. To delete the current end date and effectively set no end date, set the Day, Month, and Year each to '0' (zero). When you retrieve the promotion ad extension next time, this element will not be set." ;
    sh:node microsoftads:CampaignManagementDateShape ;
    sh:class microsoftads:CampaignManagementDate ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPromotionAdExtension/promotionEndDate> ;
    sh:name "promotion end date" ;
    sh:description "The end date helps to inform the promotion date or dates that will be displayed in the ad. For example if the PromotionStartDate and PromotionEndDate dates are both set to February 14th, the text \"Valid Feb 14\" could be included in the displayed promotion. The PromotionStartDate date must be earlier than, or equal to, the PromotionEndDate date. This property does not override the inherent delivery range for a promotion. Both the promotion PromotionOccasion and Scheduling determine when the promotion is eligible to be shown in ads. If the end date has already passed for the current year, then each start and end date must be set for dates during the following year. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. To delete the current end date and effectively set no end date, set the Day, Month, and Year each to '0' (zero). When you retrieve the promotion ad extension next time, this element will not be set." ;
    sh:node microsoftads:CampaignManagementDateShape ;
    sh:class microsoftads:CampaignManagementDate ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPromotionAdExtension/promotionOccasion> ;
    sh:name "promotion occasion" ;
    sh:description "The promotion occasion. Both the PromotionOccasion and Scheduling elements determine when the promotion is eligible to be shown in ads. The PromotionOccasion determines the time period or seasonality e.g., WomensDay from February 15 through March 31 each year. The promotion will only run within the dates corresponding to the occasion that you set. See PromotionOccasion for details about the defined date range for each occasion. The Scheduling can limit the promotion to a shorter timeframe within the occasion's date range e.g., limit the promotion to run from February 20 through March 8. The Scheduling can also be used to run the same promotion multiple years e.g., run the WomensDay promotion every year from February 15 through March 31. Add: Optional. If you do not specify this element or leave it empty, the default value of None will be set. Update: Optional. If no value is set for the update, this setting is not changed. If you set this element, then PromotionStartDate and PromotionEndDate must also be set to retain or update the previous settings." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unknown" "NewYears" "ValentinesDay" "Easter" "MothersDay" "FathersDay" "LaborDay" "BackToSchool" "Halloween" "BlackFriday" "CyberMonday" "Christmas" "BoxingDay" "None" "IndependenceDay" "NationalDay" "EndOfSeason" "WinterSale" "SummerSale" "FallSale" "SpringSale" "Ramadan" "EidAlFitr" "EidAlAdha" "SinglesDay" "WomensDay" "Holi" "ParentsDay" "StNicholasDay" "ChineseNewYear" "Carnival" "Epiphany" "RoshHashanah" "Passover" "Hanukkah" "Diwali" "Navratri" "Songkran" "YearEndGift" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPromotionAdExtension/language> ;
    sh:name "language" ;
    sh:description "The language that the ad extension will be served in. The extension will always be served in this language, regardless of the campaign or ad group's language settings. The supported language strings are: Danish, Dutch, English, Finnish, French, German, Italian, Norwegian, Portuguese, Spanish, Swedish, and TraditionalChinese. Add: Required Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPromotionAdExtension/currencyCode> ;
    sh:name "currency code" ;
    sh:description "The currency code for the promotion price or discount. This field is only applicable if you set MoneyAmountOff or OrdersOverAmount. The supported currency codes are ARS, AUD, BRL, CAD, CHF, CLP, CNY, COP, DKK, EUR, GBP, HKD, INR, MXN, NZD, PEN, PHP, PLN, SEK, SGD, USD, TWD, and VEF. Add: Required if MoneyAmountOff or OrdersOverAmount are set. Update: Optional. If no value is set for the update, this setting is not changed. If you set either PercentOff or PromotionCode, this setting is no longer applicable and will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPromotionAdExtension/finalAppUrls> ;
    sh:name "final app urls" ;
    sh:description "For future use." ;
    sh:node microsoftads:CampaignManagementAppUrlShape ;
    sh:class microsoftads:CampaignManagementAppUrl ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPromotionAdExtension/finalMobileUrls> ;
    sh:name "final mobile urls" ;
    sh:description "The landing page URL for mobile devices. The following validation rules apply to Final URLs and Final Mobile URLs. - The length of the URL is limited to 2,048 characters. The HTTP or HTTPS protocol string does count towards the 2,048 character limit. - You may specify up to 10 list items for both FinalUrls and FinalMobileUrls; however, only the first item in each list is used for delivery. The service allows up to 10 list items for potential forward compatibility. - Usage of '{' and '}' is only allowed to delineate tags, for example {lpurl}. - Final URLs must each be a well-formed URL starting with either http:// or https://. - If you specify FinalMobileUrls, you must also specify FinalUrls. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. If you set this element to an empty list, the previous setting will be deleted." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPromotionAdExtension/finalUrls> ;
    sh:name "final urls" ;
    sh:description "The landing page URL. The following validation rules apply to Final URLs and Final Mobile URLs. - The length of the URL is limited to 2,048 characters. The HTTP or HTTPS protocol string does count towards the 2,048 character limit. - You may specify up to 10 list items for both FinalUrls and FinalMobileUrls; however, only the first item in each list is used for delivery. The service allows up to 10 list items for potential forward compatibility. - Usage of '{' and '}' is only allowed to delineate tags, for example {lpurl}. - Final URLs must each be a well-formed URL starting with either http:// or https://. - If you specify FinalMobileUrls, you must also specify FinalUrls. Add: Required Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPromotionAdExtension/urlCustomParameters> ;
    sh:name "url custom parameters" ;
    sh:description "Your custom collection of key and value parameters for URL tracking. Microsoft Advertising will accept the first 3 CustomParameter objects that you include within the CustomParameters object, and any additional custom parameters will be ignored. Each CustomParameter includes Key and Value elements. For customers in the Custom Parameters Limit Increase Phase 3 pilot (GetCustomerPilotFeatures returns 635), Microsoft Advertising will accept the first 8 custom parameter key and value pairs that you include, and if you include more than 8 custom parameters an error will be returned. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. Set the UrlCustomParameters element to null or empty to retain any existing custom parameters. To remove all custom parameters, set the Parameters element of the CustomParameters object to null or empty. To remove a subset of custom parameters, specify the custom parameters that you want to keep in the Parameters element of the CustomParameters object." ;
    sh:node microsoftads:CampaignManagementCustomParametersShape ;
    sh:class microsoftads:CampaignManagementCustomParameters ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPromotionAdExtension/trackingUrlTemplate> ;
    sh:name "tracking url template" ;
    sh:description "The tracking template to use as a default for all FinalUrls and FinalMobileUrls. The following validation rules apply to tracking templates. For more details about supported templates and parameters, see the Microsoft Advertising help article What tracking or URL parameters can I use? - Tracking templates defined for lower level entities e.g. ads override those set for higher level entities e.g. campaign. For more information, see Entity Limits. - The length of the tracking template is limited to 2,048 characters. The HTTP or HTTPS protocol string does count towards the 2,048 character limit. - The tracking template must be a well-formed URL beginning with one of the following: http://, https://, {lpurl}, or {unescapedlpurl}. - Microsoft Advertising does not validate whether custom parameters exist. If you use custom parameters in your tracking template and they do not exist, then the landing page URL will include the key and value placeholders of your custom parameters without substitution. For example, if your tracking template is https://tracker.example.com/?season={_season}&promocode={_promocode}&u={lpurl} and neither {_season} or {_promocode} are defined at the campaign, ad group, criterion, keyword, or ad level, then the landing page URL will be the same. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. If you set this element to an empty string (\"\"), the previous setting will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPromotionAdExtension/finalUrlSuffix> ;
    sh:name "final url suffix" ;
    sh:description "The final URL suffix can include tracking parameters that will be appended to the end of your landing page URL. We recommend placing tracking parameters that your landing page requires in a final URL suffix so that your customers are always sent to your landing page. For more details and validation rules see Final URL Suffix in the technical guides. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. If you set this element to an empty string (\"\"), the previous setting will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementPromotionAdExtension/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. There are currently no forward compatibility changes for the AdExtension object. Add: Read-only Update: Read-only" ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Radius Criterion
microsoftads:CampaignManagementRadiusCriterionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementRadiusCriterion ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRadiusCriterion/type> ;
    sh:name "type" ;
    sh:description "The type of the criterion. This value is Radius when you retrieve a radius criterion. For more information about criterion types, see the Criterion Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRadiusCriterion/name> ;
    sh:name "name" ;
    sh:description "The name of the geographical location being targeted. The name can contain a maximum of 50 characters. Add: Optional Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRadiusCriterion/radius> ;
    sh:name "radius" ;
    sh:description "The radius that specifies the area surrounding the geographical location to target. If the RadiusUnit is set to Miles, then positive integer values from 1 to 500 are accepted. If the RadiusUnit is set to Kilometers, then positive integer values from 1 to 800 are accepted. The data type is double and may be supported in a future release. Currently the service only accepts and returns integer values. Add: Required Update: Not allowed. If you specify this element it must match the existing setting." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRadiusCriterion/radiusUnit> ;
    sh:name "radius unit" ;
    sh:description "The unit of measurement for the specified radius, for example kilometers or miles. Add: Required Update: Not allowed. If you specify this element it must match the existing setting." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Miles" "Kilometers" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRadiusCriterion/latitudeDegrees> ;
    sh:name "latitude degrees" ;
    sh:description "The latitude, in degrees, of the target location. The latitude must be greater than or equal to -85.0 and less than or equal to +85.0. Add: Required Update: Not allowed. If you specify this element it must match the existing setting." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRadiusCriterion/longitudeDegrees> ;
    sh:name "longitude degrees" ;
    sh:description "The longitude, in degrees, of the target location. The longitude must be greater than or equal to -180.0 and less than or equal to +180.0. Add: Required Update: Not allowed. If you specify this element it must match the existing setting." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Reach Optimization Goal Setting
microsoftads:CampaignManagementReachOptimizationGoalSettingShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementReachOptimizationGoalSetting ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementReachOptimizationGoalSetting/type> ;
    sh:name "type" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementReachOptimizationGoalSetting/optimizationGoal> ;
    sh:name "optimization goal" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unspecified" "MaxImpressions" "MaxUniqueReach" ) ;
  ] .

# Shape for Campaign Management Refine Asset Group Recommendation Request
microsoftads:CampaignManagementRefineAssetGroupRecommendationRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementRefineAssetGroupRecommendationRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRefineAssetGroupRecommendationRequest/assetGroup> ;
    sh:name "asset group" ;
    sh:description "An asset group object containing recommended text assets." ;
    sh:node microsoftads:CampaignManagementAssetGroupShape ;
    sh:class microsoftads:CampaignManagementAssetGroup ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRefineAssetGroupRecommendationRequest/textRefineOperations> ;
    sh:name "text refine operations" ;
    sh:description "Reserved." ;
    sh:node microsoftads:CampaignManagementAdRecommendationTextRefineOperationShape ;
    sh:class microsoftads:CampaignManagementAdRecommendationTextRefineOperation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRefineAssetGroupRecommendationRequest/imageSuggestions> ;
    sh:name "image suggestions" ;
    sh:description "Reserved." ;
    sh:node microsoftads:CampaignManagementAdRecommendationImageSuggestionShape ;
    sh:class microsoftads:CampaignManagementAdRecommendationImageSuggestion ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRefineAssetGroupRecommendationRequest/imageRefineOperations> ;
    sh:name "image refine operations" ;
    sh:description "Array of image refine operations." ;
    sh:node microsoftads:CampaignManagementAdRecommendationImageRefineOperationShape ;
    sh:class microsoftads:CampaignManagementAdRecommendationImageRefineOperation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRefineAssetGroupRecommendationRequest/returnAdditionalFields> ;
    sh:name "return additional fields" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "None" "ImageSuggestionMetadata" "MediaRefineResults" "PromptBrandWarning" ) ;
  ] .

# Shape for Campaign Management Refine Asset Group Recommendation Response
microsoftads:CampaignManagementRefineAssetGroupRecommendationResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementRefineAssetGroupRecommendationResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRefineAssetGroupRecommendationResponse/textRefineResults> ;
    sh:name "text refine results" ;
    sh:description "Reserved." ;
    sh:node microsoftads:CampaignManagementAdRecommendationTextRefineResultShape ;
    sh:class microsoftads:CampaignManagementAdRecommendationTextRefineResult ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRefineAssetGroupRecommendationResponse/mediaRefineResults> ;
    sh:name "media refine results" ;
    sh:description "Reserved." ;
    sh:node microsoftads:CampaignManagementAdRecommendationMediaRefineResultShape ;
    sh:class microsoftads:CampaignManagementAdRecommendationMediaRefineResult ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Refine Responsive Ad Recommendation Request
microsoftads:CampaignManagementRefineResponsiveAdRecommendationRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementRefineResponsiveAdRecommendationRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRefineResponsiveAdRecommendationRequest/responsiveAd> ;
    sh:name "responsive ad" ;
    sh:description "Reserved." ;
    sh:node microsoftads:CampaignManagementResponsiveAdShape ;
    sh:class microsoftads:CampaignManagementResponsiveAd ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRefineResponsiveAdRecommendationRequest/textRefineOperations> ;
    sh:name "text refine operations" ;
    sh:description "Reserved." ;
    sh:node microsoftads:CampaignManagementAdRecommendationTextRefineOperationShape ;
    sh:class microsoftads:CampaignManagementAdRecommendationTextRefineOperation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRefineResponsiveAdRecommendationRequest/imageRefineOperations> ;
    sh:name "image refine operations" ;
    sh:description "Reserved." ;
    sh:node microsoftads:CampaignManagementAdRecommendationImageRefineOperationShape ;
    sh:class microsoftads:CampaignManagementAdRecommendationImageRefineOperation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRefineResponsiveAdRecommendationRequest/imageSuggestions> ;
    sh:name "image suggestions" ;
    sh:description "Reserved." ;
    sh:node microsoftads:CampaignManagementAdRecommendationImageSuggestionShape ;
    sh:class microsoftads:CampaignManagementAdRecommendationImageSuggestion ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRefineResponsiveAdRecommendationRequest/returnAdditionalFields> ;
    sh:name "return additional fields" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "None" "ImageSuggestionMetadata" "MediaRefineResults" "PromptBrandWarning" ) ;
  ] .

# Shape for Campaign Management Refine Responsive Ad Recommendation Response
microsoftads:CampaignManagementRefineResponsiveAdRecommendationResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementRefineResponsiveAdRecommendationResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRefineResponsiveAdRecommendationResponse/textRefineResults> ;
    sh:name "text refine results" ;
    sh:description "Reserved." ;
    sh:node microsoftads:CampaignManagementAdRecommendationTextRefineResultShape ;
    sh:class microsoftads:CampaignManagementAdRecommendationTextRefineResult ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRefineResponsiveAdRecommendationResponse/mediaRefineResults> ;
    sh:name "media refine results" ;
    sh:description "Reserved." ;
    sh:node microsoftads:CampaignManagementAdRecommendationMediaRefineResultShape ;
    sh:class microsoftads:CampaignManagementAdRecommendationMediaRefineResult ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Refine Responsive Search Ad Recommendation Request
microsoftads:CampaignManagementRefineResponsiveSearchAdRecommendationRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementRefineResponsiveSearchAdRecommendationRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRefineResponsiveSearchAdRecommendationRequest/responsiveSearchAd> ;
    sh:name "responsive search ad" ;
    sh:description "Reserved." ;
    sh:node microsoftads:CampaignManagementResponsiveSearchAdShape ;
    sh:class microsoftads:CampaignManagementResponsiveSearchAd ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRefineResponsiveSearchAdRecommendationRequest/textRefineOperations> ;
    sh:name "text refine operations" ;
    sh:description "Reserved." ;
    sh:node microsoftads:CampaignManagementAdRecommendationTextRefineOperationShape ;
    sh:class microsoftads:CampaignManagementAdRecommendationTextRefineOperation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Refine Responsive Search Ad Recommendation Response
microsoftads:CampaignManagementRefineResponsiveSearchAdRecommendationResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementRefineResponsiveSearchAdRecommendationResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRefineResponsiveSearchAdRecommendationResponse/textRefineResults> ;
    sh:name "text refine results" ;
    sh:description "A list of the text refine results." ;
    sh:node microsoftads:CampaignManagementAdRecommendationTextRefineResultShape ;
    sh:class microsoftads:CampaignManagementAdRecommendationTextRefineResult ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Remarketing List
microsoftads:CampaignManagementRemarketingListShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementRemarketingList ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRemarketingList/scope> ;
    sh:name "scope" ;
    sh:description "Scope defines what accounts can use this audience. If scope is set to Account, the audience can only be associated with campaigns and ad groups in one account i.e., via the ParentId. If scope is set to Customer, the audience can be associated with campaigns and ad groups in all of the customer's accounts. Add: Required Update: Optional. You can change the scope from Account to Customer, but you cannot change the scope from Customer to Account." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Account" "Customer" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRemarketingList/membershipDuration> ;
    sh:name "membership duration" ;
    sh:description "When you create an audience, you can specify how far back in time Microsoft Advertising should look for actions that match your audience definition. The minimum duration is 1 day and the maximum duration allowed is 180 days. Add: Optional. If not specified, the membership duration will be set to 30 by default. Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRemarketingList/searchSize> ;
    sh:name "search size" ;
    sh:description "The total number of people who are active members of this audience in the Search network. This gives you an idea of how many search users you can target. The audience needs to have at least 300 people before Microsoft Advertising will use it for optimizations. This property will be nil or empty for up to 24 hours while the audience is being built, for example if you add or update the remarketing list membership duration, rule, or tag identifier. This property will be nil or empty if the UET tag associated with the remarketing list has a status of Unverified or Inactive, because the remarketing list can't receive the customer information from your website that it needs to build the list. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRemarketingList/audienceNetworkSize> ;
    sh:name "audience network size" ;
    sh:description "The total number of people who are active members of this audience in the Audience network. This gives you an idea of how many Audience network users you can target. The audience needs to have at least 300 people before Microsoft Advertising will use it for optimizations. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRemarketingList/supportedCampaignTypes> ;
    sh:name "supported campaign types" ;
    sh:description "The list of campaign types that support this audience. Supported values are Audience, DynamicSearchAds, Search, and Shopping. New campaign types might be added in the future, so you should not take any dependency on a fixed set of values. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRemarketingList/customerShare> ;
    sh:name "customer share" ;
    sh:description "Determines the list of customers and accounts that share the audience. Details include audience association counts. Shared UET tags and audiences are only available for pilot customers. For an overview of sharing audiences and UET tags in a customer hierarchy, see the Share Audiences and UET Tags technical guide. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. Set this element to null or empty to retain any existing customer account shares. To remove all customer account shares, set the CustomerAccountShares element of the CustomerShare object to null or empty. To remove a subset of customer account shares, specify the customer account shares that you want to keep in the CustomerAccountShares element of the CustomerShare object." ;
    sh:node microsoftads:CampaignManagementCustomerShareShape ;
    sh:class microsoftads:CampaignManagementCustomerShare ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRemarketingList/id> ;
    sh:name "id" ;
    sh:description "The Microsoft Advertising identifier of the audience. Add: Read-only Update: Required and read-only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRemarketingList/name> ;
    sh:name "name" ;
    sh:description "The name of the audience. The name can contain a maximum of 128 characters. Add: Required Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRemarketingList/description> ;
    sh:name "description" ;
    sh:description "The description of the audience. Use a description to help you remember what audience you are targeting. The description can contain a maximum of 1,024 characters. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRemarketingList/type> ;
    sh:name "type" ;
    sh:description "The type of the audience. This value is RemarketingList when you retrieve a remarketing list audience. For more information about audience types, see the Audience Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRemarketingList/parentId> ;
    sh:name "parent id" ;
    sh:description "The Microsoft Advertising identifier of the account or customer. If the Scope is set to Account, this is the account ID, and otherwise it is the customer ID. Add: Required Update: Read-only. You cannot change the parent ID." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRemarketingList/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. Forward compatibility changes will be noted here in future releases. There are currently no forward compatibility changes for the Audience object." ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRemarketingList/rule> ;
    sh:name "rule" ;
    sh:description "A rule includes conditions used to determine who to add to your remarketing list. You can choose one of the four types of rules to target different audiences: CustomEventsRule, PageVisitorsRule, PageVisitorsWhoDidNotVisitAnotherPageRule, and PageVisitorsWhoVisitedAnotherPageRule. Add: Required Update: Optional. If no value is set for the update, this setting is not changed. If you want to keep any of the previous rule items, then you must explicitly set them again during update. You can choose to change the type of rule during update." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementCustomEventsRuleShape ; sh:class microsoftads:CampaignManagementCustomEventsRule ]
      [ sh:node microsoftads:CampaignManagementPageVisitorsRuleShape ; sh:class microsoftads:CampaignManagementPageVisitorsRule ]
      [ sh:node microsoftads:CampaignManagementPageVisitorsWhoDidNotVisitAnotherPageRuleShape ; sh:class microsoftads:CampaignManagementPageVisitorsWhoDidNotVisitAnotherPageRule ]
      [ sh:node microsoftads:CampaignManagementPageVisitorsWhoVisitedAnotherPageRuleShape ; sh:class microsoftads:CampaignManagementPageVisitorsWhoVisitedAnotherPageRule ]
      [ sh:node microsoftads:CampaignManagementRemarketingRuleShape ; sh:class microsoftads:CampaignManagementRemarketingRule ]
      [ sh:node microsoftads:CampaignManagementRemarketingRuleBaseShape ; sh:class microsoftads:CampaignManagementRemarketingRuleBase ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRemarketingList/tagId> ;
    sh:name "tag id" ;
    sh:description "The Microsoft Advertising identifier of the Universal Event Tracking (UET) tag that is used with the remarketing list. Before you take a dependency on the tag ID, please note that the UET tag can be shared with or from another customer. Shared UET tags and audiences are only available for pilot customers. For an overview of sharing audiences and UET tags in a customer hierarchy, see the Share Audiences and UET Tags technical guide. Add: Required Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Remarketing Rule Base
microsoftads:CampaignManagementRemarketingRuleBaseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementRemarketingRuleBase ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRemarketingRuleBase/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Responsive Search Ads Setting
microsoftads:CampaignManagementResponsiveSearchAdsSettingShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementResponsiveSearchAdsSetting ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementResponsiveSearchAdsSetting/type> ;
    sh:name "type" ;
    sh:description "The type of the setting. This value is ResponsiveSearchAds when you retrieve a dynamic search ads setting. For more information about setting types, see the Setting Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementResponsiveSearchAdsSetting/autoGeneratedAssetsEnabled> ;
    sh:name "auto generated assets enabled" ;
    sh:description "Not everyone has this feature yet. If you don't, don't worry - it's coming soon! Determines whether to automatically generate responsive search ad assets in addition to the ad text you provide. During ad delivery, we will use artificial intelligence to choose the best assets available from these options. Add: Optional. The default value of true will be set if not otherwise specified. Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Review Ad Extension
microsoftads:CampaignManagementReviewAdExtensionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementReviewAdExtension ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementReviewAdExtension/status> ;
    sh:name "status" ;
    sh:description "The status of the ad extension. The value will always be Active because the Campaign Management service does not return deleted ad extensions. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Deleted" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementReviewAdExtension/scheduling> ;
    sh:name "scheduling" ;
    sh:description "Determines the calendar day and time ranges when the ad extension is eligible to be shown in ads. Add: Optional Update: Optional. If you set this element null, any existing scheduling set for the ad extension will remain unchanged. If you set this to any non-null Schedule object, you are effectively replacing existing scheduling settings for the ad extension. To remove all scheduling set this element to an empty Schedule object." ;
    sh:node microsoftads:CampaignManagementScheduleShape ;
    sh:class microsoftads:CampaignManagementSchedule ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementReviewAdExtension/devicePreference> ;
    sh:name "device preference" ;
    sh:description "Not supported for this ad extension type." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementReviewAdExtension/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier of the ad extension. Add: Read-only Update: Read-only and Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementReviewAdExtension/type> ;
    sh:name "type" ;
    sh:description "The type of the ad extension. This value is ReviewAdExtension when you retrieve a review ad extension. Add: Read-only Update: Read-only For more information about ad extension types, see the Ad Extension Data Object Remarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementReviewAdExtension/version> ;
    sh:name "version" ;
    sh:description "Tracks the number of times the ad extension has been updated. The version is set to 1 when the ad extension is created, and increments by one after each update. Add: Not allowed Update: Not allowed" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementReviewAdExtension/isExact> ;
    sh:name "is exact" ;
    sh:description "Determines whether the review text is an exact quote or paraphrased. If not specified, the default value of false indicates that the review text is paraphrased from the source. If set to true, the review text will be surrounded automatically with quotation marks when displayed with the ad. Add: Optional Update: Optional. If you set this element null, the previous setting will be deleted." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementReviewAdExtension/text> ;
    sh:name "text" ;
    sh:description "The text that is either a paraphrase or an exact quote from the review source. The combined length of the Source and Text strings must not exceed 67 characters. Note that for Traditional Chinese characters, the combined length of the Source and Text Source and Text strings is limited to 33 characters. Do not surround the text with quotation marks. If IsExact is set to True, the review text will be surrounded automatically with quotation marks when displayed with the ad. Add: Required Update: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementReviewAdExtension/source> ;
    sh:name "source" ;
    sh:description "The review source name. The combined length of the Source and Text strings must not exceed 67 characters. Note that for Traditional Chinese characters, the combined length of the Source and Text Source and Text strings is limited to 33 characters. Add: Required Update: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementReviewAdExtension/url> ;
    sh:name "url" ;
    sh:description "The review source Url. The Url must begin with either the http:// or https:// prefix. The length of this string is limited to 2,048 characters. Add: Required Update: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementReviewAdExtension/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. There are currently no forward compatibility changes for the AdExtension object. Add: Read-only Update: Read-only" ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Rule Item Base
microsoftads:CampaignManagementRuleItemBaseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementRuleItemBase ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementRuleItemBase/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Search Companies Request
microsoftads:CampaignManagementSearchCompaniesRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementSearchCompaniesRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSearchCompaniesRequest/companyNameFilter> ;
    sh:name "company name filter" ;
    sh:description "The company name filter string. You can search using partial or full company name. The minimum length of the string is 3. The service searches across all language-locales for the string. The company name will be returned in the requested LanguageLocale if available." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSearchCompaniesRequest/languageLocale> ;
    sh:name "language locale" ;
    sh:description "The language and locale of the profile display names. The supported language locale values are zh-Hant (Traditional Chinese), en (English), fr (French), de (German), it (Italian), pt-BR (Brazilian Portuguese), and es (Spanish). Please note if LinkedIn does not provide the localized profile name, then it will default to the universal name (usually defined in English)." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Search Companies Response
microsoftads:CampaignManagementSearchCompaniesResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementSearchCompaniesResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSearchCompaniesResponse/companies> ;
    sh:name "companies" ;
    sh:description "The list of companies that match the requested company name filter." ;
    sh:node microsoftads:CampaignManagementCompanyShape ;
    sh:class microsoftads:CampaignManagementCompany ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Set Account Properties Request
microsoftads:CampaignManagementSetAccountPropertiesRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementSetAccountPropertiesRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetAccountPropertiesRequest/accountProperties> ;
    sh:name "account properties" ;
    sh:description "The list of account properties that you want to set. For example, you can enable Microsoft Click Id auto-tagging for tracking offline conversions. Partial success is not supported i.e., if any account property cannot be set, then none of the account properties will be set." ;
    sh:node microsoftads:CampaignManagementAccountPropertyShape ;
    sh:class microsoftads:CampaignManagementAccountProperty ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Set Ad Extensions Associations Request
microsoftads:CampaignManagementSetAdExtensionsAssociationsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementSetAdExtensionsAssociationsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetAdExtensionsAssociationsRequest/accountId> ;
    sh:name "account id" ;
    sh:description "The identifier of the account that owns the extensions." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetAdExtensionsAssociationsRequest/adExtensionIdToEntityIdAssociations> ;
    sh:name "ad extension id to entity id associations" ;
    sh:description "The list of ad extensions with associated account, campaign, or ad group. You can only associate ad extensions with one type of entity per service call. Specify the entity type with the AssociationType element. Call and Location ad extensions cannot be associated with an ad group. Call ad extensions cannot be associated with an account. You may set a maximum of 100 associations per service call." ;
    sh:node microsoftads:CampaignManagementAdExtensionIdToEntityIdAssociationShape ;
    sh:class microsoftads:CampaignManagementAdExtensionIdToEntityIdAssociation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetAdExtensionsAssociationsRequest/associationType> ;
    sh:name "association type" ;
    sh:description "The type of all entities specified in the AdExtensionIdToEntityIdAssociations list." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Campaign" "AdGroup" "Account" ) ;
  ] .

# Shape for Campaign Management Set Ad Extensions Associations Response
microsoftads:CampaignManagementSetAdExtensionsAssociationsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementSetAdExtensionsAssociationsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetAdExtensionsAssociationsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Set Audience Group Asset Group Associations Request
microsoftads:CampaignManagementSetAudienceGroupAssetGroupAssociationsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementSetAudienceGroupAssetGroupAssociationsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetAudienceGroupAssetGroupAssociationsRequest/audienceGroupAssetGroupAssociations> ;
    sh:name "audience group asset group associations" ;
    sh:description "The list of Audience Group associations to set. The maximum size of the list is 100 items per service request. Only 1 audience group can be associated to each asset group. Note: You will overwrite an existing association if you set a new one. AudienceGroupAssetGroupAssociation will update with the new audience group." ;
    sh:node microsoftads:CampaignManagementAudienceGroupAssetGroupAssociationShape ;
    sh:class microsoftads:CampaignManagementAudienceGroupAssetGroupAssociation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Set Audience Group Asset Group Associations Response
microsoftads:CampaignManagementSetAudienceGroupAssetGroupAssociationsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementSetAudienceGroupAssetGroupAssociationsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetAudienceGroupAssetGroupAssociationsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Set Label Associations Request
microsoftads:CampaignManagementSetLabelAssociationsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementSetLabelAssociationsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetLabelAssociationsRequest/entityType> ;
    sh:name "entity type" ;
    sh:description "Indicates the entity type associated with the label. The supported entity type values are Campaign, AdGroup, Ad, and Keyword." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "None" "Campaign" "AdGroup" "Ad" "Keyword" "AssetGroup" "TextAsset" "ImageAsset" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetLabelAssociationsRequest/labelAssociations> ;
    sh:name "label associations" ;
    sh:description "The list of label associations to set. Each label association includes label and entity identifiers. The maximum size of the list is 100 items per service request. Each entity can be associated with a maximum of 50 labels. For example Campaign A can be associated with up to 50 labels." ;
    sh:node microsoftads:CampaignManagementLabelAssociationShape ;
    sh:class microsoftads:CampaignManagementLabelAssociation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Set Label Associations Response
microsoftads:CampaignManagementSetLabelAssociationsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementSetLabelAssociationsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetLabelAssociationsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any associations that were not successfully retrieved. The list of errors corresponds directly to the list of associations in the request. Items of the list may be returned as null. For each list index where an association was successfully retrieved, the corresponding error element will be null. Ideally all associations are retrieved successfully and all elements in this list are null." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Set Negative Sites To Ad Groups Request
microsoftads:CampaignManagementSetNegativeSitesToAdGroupsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementSetNegativeSitesToAdGroupsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetNegativeSitesToAdGroupsRequest/campaignId> ;
    sh:name "campaign id" ;
    sh:description "The identifier of the campaign that contains the ad groups." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetNegativeSitesToAdGroupsRequest/adGroupNegativeSites> ;
    sh:name "ad group negative sites" ;
    sh:description "An array of AdGroupNegativeSites objects that identify the ad groups to update with the specified negative site URLs. The array can contain a maximum of 5,000 objects. The total number of URLs that you can specify per request for all ad groups combined is 30,000. For example, if you specify 2,500 URLs per ad group, the maximum number of AdGroupNegativeSites objects that you should pass is 12." ;
    sh:node microsoftads:CampaignManagementAdGroupNegativeSitesShape ;
    sh:class microsoftads:CampaignManagementAdGroupNegativeSites ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Set Negative Sites To Ad Groups Response
microsoftads:CampaignManagementSetNegativeSitesToAdGroupsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementSetNegativeSitesToAdGroupsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetNegativeSitesToAdGroupsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Set Negative Sites To Campaigns Request
microsoftads:CampaignManagementSetNegativeSitesToCampaignsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementSetNegativeSitesToCampaignsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetNegativeSitesToCampaignsRequest/accountId> ;
    sh:name "account id" ;
    sh:description "The identifier of the account that contains the campaigns." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetNegativeSitesToCampaignsRequest/campaignNegativeSites> ;
    sh:name "campaign negative sites" ;
    sh:description "An array of CampaignNegativeSites objects that identify the campaigns to update with the specified negative site URLs. The array can contain a maximum of 5,000 objects. The total number of URLs that you can specify per request for all ad campaigns combined is 30,000. For example, if you specify 2,500 URLs per campaign, the maximum number of CampaignNegativeSites objects that you should pass is 12." ;
    sh:node microsoftads:CampaignManagementCampaignNegativeSitesShape ;
    sh:class microsoftads:CampaignManagementCampaignNegativeSites ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Set Negative Sites To Campaigns Response
microsoftads:CampaignManagementSetNegativeSitesToCampaignsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementSetNegativeSitesToCampaignsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetNegativeSitesToCampaignsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Set Shared Entity Associations Request
microsoftads:CampaignManagementSetSharedEntityAssociationsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementSetSharedEntityAssociationsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetSharedEntityAssociationsRequest/associations> ;
    sh:name "associations" ;
    sh:description "The list of negative keyword list to campaign associations, or website exclusion list to ad account associations. This array can contain a maximum of 10,000 elements." ;
    sh:node microsoftads:CampaignManagementSharedEntityAssociationShape ;
    sh:class microsoftads:CampaignManagementSharedEntityAssociation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetSharedEntityAssociationsRequest/sharedEntityScope> ;
    sh:name "shared entity scope" ;
    sh:description "Indicates whether the shared entity is available at the ad account (Account) or manager account (Customer) level. This element is optional and defaults to Account scope. The ad account scope is only applicable for negative keyword list to campaign associations. Set this element to Customer to set website exclusion list to ad account associations in your manager account (customer) shared library." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Account" "Customer" ) ;
  ] .

# Shape for Campaign Management Set Shared Entity Associations Response
microsoftads:CampaignManagementSetSharedEntityAssociationsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementSetSharedEntityAssociationsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetSharedEntityAssociationsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Setting Base
microsoftads:CampaignManagementSettingBaseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementSettingBase ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSettingBase/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Shared List Base
microsoftads:CampaignManagementSharedListBaseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementSharedListBase ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSharedListBase/itemCount> ;
    sh:name "item count" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSharedListBase/id> ;
    sh:name "id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSharedListBase/name> ;
    sh:name "name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSharedListBase/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSharedListBase/associationCount> ;
    sh:name "association count" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSharedListBase/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Shared List Item Base
microsoftads:CampaignManagementSharedListItemBaseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementSharedListItemBase ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSharedListItemBase/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSharedListItemBase/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Shopping Setting
microsoftads:CampaignManagementShoppingSettingShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementShoppingSetting ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementShoppingSetting/type> ;
    sh:name "type" ;
    sh:description "The type of the setting. This value is Shopping when you retrieve a shopping setting. For more information about setting types, see the Setting Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementShoppingSetting/priority> ;
    sh:name "priority" ;
    sh:description "Helps determine which Microsoft Shopping campaign serves ads, in the event that two or more campaigns use the product catalog feed from the same Microsoft Merchant Center store. A higher priority value denotes a higher priority. The supported values for most shopping campaigns are 0, 1, and 2. For smart shopping campaigns (campaign SubType set to ShoppingSmartAds), you must set the priority to 3. For Performance Max campaigns, you must set the priority to 4. In the Microsoft Advertising web application, the default priority selected is \"Low\" which is the equivalent of '0'. Add: Required Update: Optional" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementShoppingSetting/salesCountryCode> ;
    sh:name "sales country code" ;
    sh:description "The country code for the Microsoft Merchant Center store. The Microsoft Merchant Center store catalog will be filtered to only include products for the specified country. To get the list of supported country codes use the GetBSCCountries operation. For example, supported country codes include \"AU\" (Australia), \"AT\" (Austria), \"BE\" (Belgium), \"CA\" (Canada), \"CH\" (Switzerland), \"DE\" (Germany), \"ES\" (Spain), \"FR\" (France), \"GB\" (United Kingdom), \"IN\" (India), \"IT\" (Italy), \"NL\" (Netherlands), \"SE\" (Sweden), and \"US\" (United States). Add: Optional Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementShoppingSetting/storeId> ;
    sh:name "store id" ;
    sh:description "The unique identifier for the Microsoft Merchant Center store that contains a product catalog feed that you want to use for the campaign. Once you choose a store for a campaign, you can't change it. If at some point you want to use a different store, you would need to create a new shopping campaign with a new shopping setting. With Shopping Campaigns for Brands a single campaign can target all your retailer partners, and there's no need to create individual campaigns for each retailer. We recommend that you set this to the ID of your manager account's global store (store SubType set to GlobalStore). By initially targeting all linked stores via the campaign shopping setting, you can then add up to 10 campaign negative StoreCriterion to exclude specific retailers as needed. To get the store ID, call the GetBMCStoresByCustomerId operation. The Id element of each BMCStore represents a store ID. Add: Required Update: Read-only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementShoppingSetting/localInventoryAdsEnabled> ;
    sh:name "local inventory ads enabled" ;
    sh:description "Determines whether local inventory ads are enabled for the Microsoft Merchant Center store. Not everyone has this feature yet. If you don't, don't worry. It's coming soon. Set this property to true if you want to enable local inventory ads, and otherwise set it to false. Add: Optional. If you do not specify this element or leave it empty, the default value of false will be set and local inventory ads will not be enabled. Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementShoppingSetting/shoppableAdsEnabled> ;
    sh:name "shoppable ads enabled" ;
    sh:description "Determines whether shoppable ads are enabled for the Microsoft Merchant Center store. Not everyone has this feature yet. If you don't, don't worry. It's coming soon. Set this property to true if you want to enable shoppable ads, and otherwise set it to false. Add: Optional. If you do not specify this element or leave it empty, the default value of false will be set and shoppable ads will not be enabled. Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementShoppingSetting/feedLabel> ;
    sh:name "feed label" ;
    sh:description "Lets you advertise all products with the same feed label in a Shopping or Performance Max campaign. There can only be one feed label per campaign. FeedLabel and SalesCountryCode are mutually exclusive You can set only one of these properties.Each feed label can have a maximum of 20 characters.You can't use FeedLabel with Shopping CoOp campaigns. Add: Optional. Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Similar Remarketing List
microsoftads:CampaignManagementSimilarRemarketingListShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementSimilarRemarketingList ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSimilarRemarketingList/scope> ;
    sh:name "scope" ;
    sh:description "Scope defines what accounts can use this audience. The scope of a similar audience is automatically set to the scope of the source remarketing list. If scope is set to Account, the audience can only be associated with campaigns and ad groups in one account i.e., via the ParentId. If scope is set to Customer, the audience can be associated with campaigns and ad groups in all of the customer's accounts. Add: Not supported Update: Not supported" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Account" "Customer" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSimilarRemarketingList/membershipDuration> ;
    sh:name "membership duration" ;
    sh:description "This element is not applicable for similar audiences. Add: Not supported Update: Not supported" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSimilarRemarketingList/searchSize> ;
    sh:name "search size" ;
    sh:description "The total number of people who are active members of this audience in the Search network. This gives you an idea of how many search users you can target. The audience needs to have at least 300 people before Microsoft Advertising will use it for optimizations. The search size of a similar audience can differ from the search size of the source remarketing list. This property will be nil or empty for up to 24 hours while the source remarketing list is being built, for example if you add or update the remarketing list membership duration, rule, or tag identifier of the source remarketing list. This property will be nil or empty if the UET tag associated with the source remarketing list has a status of Unverified or Inactive, because the remarketing list can't receive the customer information from your website that it needs to build the list. Add: Not supported Update: Not supported" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSimilarRemarketingList/audienceNetworkSize> ;
    sh:name "audience network size" ;
    sh:description "The total number of people who are active members of this audience in the Audience network. This gives you an idea of how many Audience network users you can target. The audience needs to have at least 300 people before Microsoft Advertising will use it for optimizations. The audience network size of a similar audience can differ from the audience network size of the source remarketing list. Add: Not supported Update: Not supported" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSimilarRemarketingList/supportedCampaignTypes> ;
    sh:name "supported campaign types" ;
    sh:description "The list of campaign types that support this audience. Supported values are Audience, DynamicSearchAds, Search, and Shopping. New campaign types might be added in the future, so you should not take any dependency on a fixed set of values. Add: Not supported Update: Not supported" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSimilarRemarketingList/customerShare> ;
    sh:name "customer share" ;
    sh:description "This element is not supported for similar remarketing lists. Add: Not supported Update: Not supported" ;
    sh:node microsoftads:CampaignManagementCustomerShareShape ;
    sh:class microsoftads:CampaignManagementCustomerShare ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSimilarRemarketingList/id> ;
    sh:name "id" ;
    sh:description "The Microsoft Advertising identifier of the similar audience. Add: Not supported Update: Not supported" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSimilarRemarketingList/name> ;
    sh:name "name" ;
    sh:description "The name of the similar audience is set by Microsoft Advertising. The name can contain a maximum of 128 characters. Add: Not supported Update: Not supported" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSimilarRemarketingList/description> ;
    sh:name "description" ;
    sh:description "This element is not applicable for similar audiences. Add: Not supported Update: Not supported" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSimilarRemarketingList/type> ;
    sh:name "type" ;
    sh:description "The type of the audience. This value is SimilarRemarketingList when you retrieve a similar audience for remarketing lists. For more information about audience types, see the Audience Data Object Remarks. Add: Not supported Update: Not supported" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSimilarRemarketingList/parentId> ;
    sh:name "parent id" ;
    sh:description "The Microsoft Advertising identifier of the account or customer. If the Scope is set to Account, this is the account ID, and otherwise it is the customer ID. Add: Not supported Update: Not supported" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSimilarRemarketingList/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. Forward compatibility changes will be noted here in future releases. There are currently no forward compatibility changes for the Audience object. Add: Not supported Update: Not supported" ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSimilarRemarketingList/sourceId> ;
    sh:name "source id" ;
    sh:description "The Microsoft Advertising identifier of the remarketing list that Microsoft Advertising used to generate this similar audience. Add: Not supported Update: Not supported" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Site
microsoftads:CampaignManagementSiteShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementSite ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSite/type> ;
    sh:name "type" ;
    sh:description "The type of the site. This value is NegativeKeywordList when you retrieve an Negative Keyword List. This value is AccountPlacementInclusionList when you retrieve a AccountPlacementInclusionList." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSite/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. Forward compatibility changes will be noted here in future releases. There are currently no forward compatibility changes for this object." ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSite/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier of the site. Add: Read-only Update: Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSite/url> ;
    sh:name "url" ;
    sh:description "The URL of the site." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Sitelink Ad Extension
microsoftads:CampaignManagementSitelinkAdExtensionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementSitelinkAdExtension ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSitelinkAdExtension/status> ;
    sh:name "status" ;
    sh:description "The status of the ad extension. The value will always be Active because the Campaign Management service does not return deleted ad extensions. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Deleted" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSitelinkAdExtension/scheduling> ;
    sh:name "scheduling" ;
    sh:description "Determines the calendar day and time ranges when the ad extension is eligible to be shown in ads. Add: Optional Update: Optional. If you set this element null, any existing scheduling set for the ad extension will remain unchanged. If you set this to any non-null Schedule object, you are effectively replacing existing scheduling settings for the ad extension. To remove all scheduling set this element to an empty Schedule object." ;
    sh:node microsoftads:CampaignManagementScheduleShape ;
    sh:class microsoftads:CampaignManagementSchedule ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSitelinkAdExtension/devicePreference> ;
    sh:name "device preference" ;
    sh:description "This element determines whether the preference is for the ad extension to be displayed on mobile devices or all devices. To specify a preference for mobile devices, set this element to 30001. To specify all devices, set this element to 0 (zero) or leave the element nil. By default, this element will be nil. Add: Optional Update: Optional. If no value is set for the update, the prior setting is removed." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSitelinkAdExtension/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier of the ad extension. Add: Read-only Update: Read-only and Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSitelinkAdExtension/type> ;
    sh:name "type" ;
    sh:description "The type of the ad extension. This value is SitelinkAdExtension when you retrieve a sitelink ad extension. Add: Read-only Update: Read-only For more information about ad extension types, see the Ad Extension Data Object Remarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSitelinkAdExtension/version> ;
    sh:name "version" ;
    sh:description "Tracks the number of times the ad extension has been updated. The version is set to 1 when the ad extension is created, and increments by one after each update. Add: Not allowed Update: Not allowed" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSitelinkAdExtension/displayText> ;
    sh:name "display text" ;
    sh:description "The site-link text displayed in the ad. If you specify Description1 or Description2 then the display text can contain a maximum of 25 characters; otherwise, the display text can contain a maximum of 35 characters. If any Traditional Chinese characters are included, the limits are 11 characters given Description1 or Description2, and 15 characters otherwise. Each Traditional Chinese character countes as two characters and each English character will count only as one character. Add: Required Update: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSitelinkAdExtension/destinationUrl> ;
    sh:name "destination url" ;
    sh:description "The URL of the webpage that users are taken to when they click the site link. Important: If you are currently using Destination URLs, you must replace them with Final URLs. For more information, see URL Tracking with Upgraded URLs. The URL can contain dynamic parameters such as {MatchType}. For a list of supported parameters, see the Microsoft Advertising help article What tracking or URL parameters can I use?. The URL can contain a maximum of 1,024 characters. If the URL does not specify a protocol, the system uses the HTTP protocol when a user clicks the ad. If the URL specifies the HTTP protocol when you add an ad, the service will remove the http:// protocol string (the HTTP protocol string does not count against the 1,024 character limit); however, the service will not remove an HTTPS protocol string (https://) from the URL. Add: Not allowed. The destination URL is deprecated, and instead you must set the FinalUrls element. Update: Optional. The destination URL is deprecated, and instead you must set the FinalUrls element. You can either leave this element empty or set it to an empty string." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSitelinkAdExtension/description1> ;
    sh:name "description1" ;
    sh:description "The site link description line 1. The maximum input length is 35 characters. If any Traditional Chinese characters are included, the limit is 15 characters. Each Traditional Chinese character countes as two characters and each English character will count only as one character. If you specify Description1 then Description2 is required. Add: Optional Update: Optional. If no value is set for the update, the prior setting is removed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSitelinkAdExtension/description2> ;
    sh:name "description2" ;
    sh:description "The site link description line 2. The maximum input length is 35 characters. If any Traditional Chinese characters are included, the limit is 15 characters. Each Traditional Chinese character countes as two characters and each English character will count only as one character. If you specify Description2 then Description1 is required. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. If you set this element to an empty string (\"\"), the previous setting will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSitelinkAdExtension/finalAppUrls> ;
    sh:name "final app urls" ;
    sh:description "For future use." ;
    sh:node microsoftads:CampaignManagementAppUrlShape ;
    sh:class microsoftads:CampaignManagementAppUrl ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSitelinkAdExtension/finalMobileUrls> ;
    sh:name "final mobile urls" ;
    sh:description "The landing page URL for mobile devices. The following validation rules apply to Final URLs and Final Mobile URLs. - The length of the URL is limited to 2,048 characters. The HTTP or HTTPS protocol string does count towards the 2,048 character limit. - You may specify up to 10 list items for both FinalUrls and FinalMobileUrls; however, only the first item in each list is used for delivery. The service allows up to 10 list items for potential forward compatibility. - Usage of '{' and '}' is only allowed to delineate tags, for example {lpurl}. - Final URLs must each be a well-formed URL starting with either http:// or https://. - If you specify FinalMobileUrls, you must also specify FinalUrls. - You may not specify FinalMobileUrls if the DevicePreference is set to 30001 (mobile). Add: Optional Update: Optional. If no value is set for the update, the prior setting is removed." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSitelinkAdExtension/finalUrls> ;
    sh:name "final urls" ;
    sh:description "The landing page URL. The following validation rules apply to Final URLs and Final Mobile URLs. - The length of the URL is limited to 2,048 characters. The HTTP or HTTPS protocol string does count towards the 2,048 character limit. - You may specify up to 10 list items for both FinalUrls and FinalMobileUrls; however, only the first item in each list is used for delivery. The service allows up to 10 list items for potential forward compatibility. - Usage of '{' and '}' is only allowed to delineate tags, for example {lpurl}. - Final URLs must each be a well-formed URL starting with either http:// or https://. - If you specify FinalMobileUrls, you must also specify FinalUrls. - You may not specify FinalMobileUrls if the DevicePreference is set to 30001 (mobile). Add: Required Update: Required" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSitelinkAdExtension/trackingUrlTemplate> ;
    sh:name "tracking url template" ;
    sh:description "The tracking template to use as a default for all FinalUrls and FinalMobileUrls. The following validation rules apply to tracking templates. For more details about supported templates and parameters, see the Microsoft Advertising help article What tracking or URL parameters can I use? - Tracking templates defined for lower level entities e.g. ads override those set for higher level entities e.g. campaign. For more information, see Entity Limits. - The length of the tracking template is limited to 2,048 characters. The HTTP or HTTPS protocol string does count towards the 2,048 character limit. - The tracking template must be a well-formed URL beginning with one of the following: http://, https://, {lpurl}, or {unescapedlpurl}. - Microsoft Advertising does not validate whether custom parameters exist. If you use custom parameters in your tracking template and they do not exist, then the landing page URL will include the key and value placeholders of your custom parameters without substitution. For example, if your tracking template is https://tracker.example.com/?season={_season}&promocode={_promocode}&u={lpurl} and neither {_season} or {_promocode} are defined at the campaign, ad group, criterion, keyword, or ad level, then the landing page URL will be the same. Add: Optional Update: Optional. If no value is set for the update, the prior setting is removed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSitelinkAdExtension/finalUrlSuffix> ;
    sh:name "final url suffix" ;
    sh:description "The final URL suffix can include tracking parameters that will be appended to the end of your landing page URL. We recommend placing tracking parameters that your landing page requires in a final URL suffix so that your customers are always sent to your landing page. For more details and validation rules see Final URL Suffix in the technical guides. Add: Optional Update: Optional. If no value is set for the update, the prior setting is removed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSitelinkAdExtension/urlCustomParameters> ;
    sh:name "url custom parameters" ;
    sh:description "Your custom collection of key and value parameters for URL tracking. Microsoft Advertising will accept the first 3 CustomParameter objects that you include within the CustomParameters object, and any additional custom parameters will be ignored. Each CustomParameter includes Key and Value elements. For customers in the Custom Parameters Limit Increase Phase 3 pilot (GetCustomerPilotFeatures returns 635), Microsoft Advertising will accept the first 8 custom parameter key and value pairs that you include, and if you include more than 8 custom parameters an error will be returned. Add: Optional Update: Optional. If no value is set for the update, the prior setting is removed." ;
    sh:node microsoftads:CampaignManagementCustomParametersShape ;
    sh:class microsoftads:CampaignManagementCustomParameters ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSitelinkAdExtension/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. There are currently no forward compatibility changes for the AdExtension object. Add: Read-only Update: Read-only" ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Store Criterion
microsoftads:CampaignManagementStoreCriterionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementStoreCriterion ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementStoreCriterion/type> ;
    sh:name "type" ;
    sh:description "The type of the criterion. This value is Store when you retrieve a store criterion. For more information about criterion types, see the Criterion Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementStoreCriterion/storeId> ;
    sh:name "store id" ;
    sh:description "The system-generated identifier of the Microsoft Merchant Center store to exclude. You cannot exclude the global store (store SubType set to GlobalStore)." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management String Rule Item
microsoftads:CampaignManagementStringRuleItemShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementStringRuleItem ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementStringRuleItem/type> ;
    sh:name "type" ;
    sh:description "The type of rule item. For more information, see RuleItem Data Object Remarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementStringRuleItem/operand> ;
    sh:name "operand" ;
    sh:description "The rule operand or key on the left hand side of the operator. Supported values are Url and ReferrerUrl. For example to define a rule where the page Url must contain page.html, set the Operand to Url, Operator to Contains, and Value to page.html. Add: Required Update: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementStringRuleItem/operator> ;
    sh:name "operator" ;
    sh:description "The rule item operator. Add: Required Update: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "None" "Equals" "Contains" "BeginsWith" "EndsWith" "NotEquals" "DoesNotContain" "DoesNotBeginWith" "DoesNotEndWith" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementStringRuleItem/value> ;
    sh:name "value" ;
    sh:description "The rule value on the right hand side of the operator. Add: Required Update: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Structured Snippet Ad Extension
microsoftads:CampaignManagementStructuredSnippetAdExtensionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementStructuredSnippetAdExtension ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementStructuredSnippetAdExtension/status> ;
    sh:name "status" ;
    sh:description "The status of the ad extension. The value will always be Active because the Campaign Management service does not return deleted ad extensions. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Deleted" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementStructuredSnippetAdExtension/scheduling> ;
    sh:name "scheduling" ;
    sh:description "Determines the calendar day and time ranges when the ad extension is eligible to be shown in ads. Add: Optional Update: Optional. If you set this element null, any existing scheduling set for the ad extension will remain unchanged. If you set this to any non-null Schedule object, you are effectively replacing existing scheduling settings for the ad extension. To remove all scheduling set this element to an empty Schedule object." ;
    sh:node microsoftads:CampaignManagementScheduleShape ;
    sh:class microsoftads:CampaignManagementSchedule ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementStructuredSnippetAdExtension/devicePreference> ;
    sh:name "device preference" ;
    sh:description "Not supported for this ad extension type." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementStructuredSnippetAdExtension/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier of the ad extension. Add: Read-only Update: Read-only and Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementStructuredSnippetAdExtension/type> ;
    sh:name "type" ;
    sh:description "The type of the ad extension. This value is StructuredSnippetAdExtension when you retrieve a structured snippet ad extension. Add: Read-only Update: Read-only For more information about ad extension types, see the Ad Extension Data Object Remarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementStructuredSnippetAdExtension/version> ;
    sh:name "version" ;
    sh:description "Tracks the number of times the ad extension has been updated. The version is set to 1 when the ad extension is created, and increments by one after each update. Add: Not allowed Update: Not allowed" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementStructuredSnippetAdExtension/header> ;
    sh:name "header" ;
    sh:description "The header that is appended with a colon (:) and precedes the snippet values. Structured Snippet headers must be specified in the same language that you intend it to be shown. For example, if you want header Amenities in English you must specify the header as Amenities. If you want header Ausstattung in German you must specify the header as Ausstattung (Amenities in German). For a list of supported headers per language, please see Ad Extension Header Languages. Add: Required Update: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementStructuredSnippetAdExtension/values> ;
    sh:name "values" ;
    sh:description "The snippet values that follow after the Header component of the ad that is shown. Each text value that you choose can have a maximum length of 25 characters. Note that for Traditional Chinese characters, each value can have a maximum length of 12 characters. Add: Required Update: Required" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementStructuredSnippetAdExtension/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. There are currently no forward compatibility changes for the AdExtension object. Add: Read-only Update: Read-only" ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Target Cpa Bidding Scheme
microsoftads:CampaignManagementTargetCpaBiddingSchemeShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementTargetCpaBiddingScheme ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementTargetCpaBiddingScheme/type> ;
    sh:name "type" ;
    sh:description "The type of the bidding scheme. This value is TargetCpaBiddingScheme when you retrieve a target CPA bidding scheme. For more information about bidding scheme types, see the BiddingScheme Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementTargetCpaBiddingScheme/maxCpc> ;
    sh:name "max cpc" ;
    sh:description "The maximum cost per click that you want to spend. Add: Optional Update: Optional" ;
    sh:node microsoftads:CampaignManagementBidShape ;
    sh:class microsoftads:CampaignManagementBid ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementTargetCpaBiddingScheme/targetCpa> ;
    sh:name "target cpa" ;
    sh:description "The target cost per acquisition (CPA) that you want used by Microsoft Advertising to maximize conversions. Add: Required Update: Optional" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Target Impression Share Bidding Scheme
microsoftads:CampaignManagementTargetImpressionShareBiddingSchemeShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementTargetImpressionShareBiddingScheme ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementTargetImpressionShareBiddingScheme/type> ;
    sh:name "type" ;
    sh:description "The type of the bidding scheme. This value is TargetImpressionShareBiddingScheme when you retrieve a target impression share bidding scheme. For more information about bidding scheme types, see the BiddingScheme Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementTargetImpressionShareBiddingScheme/targetImpressionShare> ;
    sh:name "target impression share" ;
    sh:description "The target impression share for the ad position where you want your ads to appear. Add: Required Update: Optional" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementTargetImpressionShareBiddingScheme/targetAdPosition> ;
    sh:name "target ad position" ;
    sh:description "This is where on search results pages you want your ads to appear for the target impression share you set. Possible values include FirstPage, MainLine, and MainLine1. - FirstPage: In any position on the first search results page. - MainLine: In the first set of ads that appear on the first search results page. - MainLine1: The very first ad that appears on the first search results page. Add: Required Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementTargetImpressionShareBiddingScheme/maxCpc> ;
    sh:name "max cpc" ;
    sh:description "This is the maximum amount that you're willing to pay for a click on your ad. Add: Optional Update: Optional" ;
    sh:node microsoftads:CampaignManagementBidShape ;
    sh:class microsoftads:CampaignManagementBid ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Target Roas Bidding Scheme
microsoftads:CampaignManagementTargetRoasBiddingSchemeShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementTargetRoasBiddingScheme ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementTargetRoasBiddingScheme/type> ;
    sh:name "type" ;
    sh:description "The type of the bidding scheme. This value is TargetRoasBiddingScheme when you retrieve a target ROAS bidding scheme. For more information about bidding scheme types, see the BiddingScheme Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementTargetRoasBiddingScheme/maxCpc> ;
    sh:name "max cpc" ;
    sh:description "The maximum cost per click that you want to spend. Add: Optional Update: Optional. The MaxCpc setting is cleared if the update value is empty." ;
    sh:node microsoftads:CampaignManagementBidShape ;
    sh:class microsoftads:CampaignManagementBid ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementTargetRoasBiddingScheme/targetRoas> ;
    sh:name "target roas" ;
    sh:description "The target return on ad spend (ROAS) that you want used by Microsoft Advertising to maximize conversions. The supported target ROAS values range from 0.01 (1 percent) to 1,000.00 (100,000 percent). Add: Required Update: Optional" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Target Setting
microsoftads:CampaignManagementTargetSettingShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementTargetSetting ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementTargetSetting/type> ;
    sh:name "type" ;
    sh:description "The type of the setting. This value is Target when you retrieve a target setting. For more information about setting types, see the Setting Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementTargetSetting/details> ;
    sh:name "details" ;
    sh:description "Determines whether the Age, Audience, CompanyName, Gender, Industry, and JobFunction criterion type groups use the \"target and bid\" option or the \"bid only\" target option. If the Campaign Type is set to Audience, the supported values for the CriterionTypeGroup element of each TargetSettingDetail item are Age, Audience, CompanyName, Gender, Industry, and JobFunction. Otherwise the only value currently supported for other campaign types e.g., Search is Audience. Each criterion type group name is specified in a separate TargetSettingDetail object. When you retrieve this TargetSetting object, a TargetSettingDetail object will only be returned for each of the types that are setup to use the \"target and bid\" option. Include a TargetSettingDetail in this list for each specific criterion type group that you want to use the \"target and bid\" option. In this case we will only deliver ads to people who meet at least one of your criteria, while letting you make bid adjustments for specific criteria. The TargetSettingDetail applies to all criteria of the specified type e.g., all LocationCriterion that were added to the ad group. Exclude the TargetSettingDetail for a specific criterion type group name from this list if you want the \"bid only\" option. In this case we will deliver ads to everyone who meets your other targeting criteria, while letting you make bid adjustments for specific criteria. An entity such as a remarketing list can be associated with multiple ad groups, and each ad group's target settings (e.g., the Audience criterion group name for remarketing lists) are applied independently for delivery. For example the same remarketing list can be associated with Ad Group A and Ad Group B. The TargetSettingDetail for each ad group are set independently, and therefore the same remarketing list might be associated via the \"target and bid\" option for Ad Group A while associated via the \"bid only\" option for Ad Group B. Add: Optional. For each criterion type group name that is excluded from this list, the default setting is effectively \"bid only\". Update: Optional. Once you create this TargetSetting object, the existing list of TargetSettingDetail will be removed or replaced. To remove all existing TargetSettingDetail create this TargetSetting object and set the Details element to nil. To replace or append to the list of TargetSettingDetail, create this TargetSetting object and assign to the Details element a new list of TargetSettingDetail objects, including any previous TargetSettingDetail items that you want to retain. To retain all of the existing TargetSettingDetail, set the element that uses this TargetSetting object to nil. For example set the Settings element of an AdGroup to nil if you do not want to update any of the TargetSettingDetail." ;
    sh:node microsoftads:CampaignManagementTargetSettingDetailShape ;
    sh:class microsoftads:CampaignManagementTargetSettingDetail ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Target Setting Detail
microsoftads:CampaignManagementTargetSettingDetailShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementTargetSettingDetail ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementTargetSettingDetail/criterionTypeGroup> ;
    sh:name "criterion type group" ;
    sh:description "The criterion type group that you want to set either the \"target and bid\" option or the \"bid only\" target option. If the Campaign Type is set to Audience, the supported values are Age, Audience, CompanyName, Gender, Industry, and JobFunction. Otherwise the only value currently supported for other campaign types e.g., Search is Audience. For more details see the Remarks below. Add: Required Update: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unknown" "Gender" "Age" "Audience" "CompanyName" "JobFunction" "Industry" "IncomeRange" "JobSeniority" "CustomLinkedIn" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementTargetSettingDetail/targetAndBid> ;
    sh:name "target and bid" ;
    sh:description "Determines whether you want to use the \"target and bid\" option or the \"bid only\" target option for the criterion type group. A value of True corresponds to the \"target and bid\" option, and in this case we will only deliver ads to people who meet at least one of your criteria, while letting you make bid adjustments for specific criteria. A value of False corresponds to the \"bid only\" option, and in this case we will deliver ads to everyone who meets your other targeting criteria, while letting you make bid adjustments for specific criteria. Add: Required Update: Required" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Text Ad
microsoftads:CampaignManagementTextAdShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementTextAd ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementTextAd/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier for the ad. Add: Not supported Update: Required and Read-only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementTextAd/type> ;
    sh:name "type" ;
    sh:description "The type of the ad. This value is Text when you retrieve a text ad. For more information about ad types, see the Ad Data Object Remarks. Add: Not supported Update: Not supported" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Text" "Image" "Product" "AppInstall" "ExpandedText" "DynamicSearch" "ResponsiveAd" "ResponsiveSearch" "Hotel" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementTextAd/status> ;
    sh:name "status" ;
    sh:description "The status of the ad. You can set the ad status to Active or Paused. Add: Not supported Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Inactive" "Active" "Paused" "Deleted" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementTextAd/editorialStatus> ;
    sh:name "editorial status" ;
    sh:description "The editorial review status of the ad, which indicates whether the ad is pending review, has been approved, or has been disapproved. Add: Not supported Update: Not supported" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Disapproved" "Inactive" "ActiveLimited" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementTextAd/devicePreference> ;
    sh:name "device preference" ;
    sh:description "This element determines whether the preference is for text ads to be displayed on mobile devices or all devices. To specify a preference for mobile devices, set this element to 30001. To specify all devices, set this element to 0 (zero) or leave the element nil. By default, this element will be nil. You must define at least one text ad per ad group that is not mobile preferred, otherwise the ad will be eligible for all devices. Add: Not supported Update: Not supported" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementTextAd/adFormatPreference> ;
    sh:name "ad format preference" ;
    sh:description "The Ad Format Preference is used to indicate whether or not you prefer the ad copy to be shown to users as a search or audience ad. Search ads tend to be written as a call to action, whereas audience ads should be written in more of an informational style. While you have the option to use search text ads as audience ads, designating an ad as Audience ads preferred format allows you to optimize its messaging for native delivery. IMPORTANT: You must define at least one text ad per ad group that does not prefer audience ads, otherwise the ad copy of all text ads will be eligible for both search and audience ads. Possible values are AudienceAd and All. If set to All, the ad will be eligible for both search and audience ad formats. If set to AudienceAd, the ad will only be eligible for the audience ad format. Add: Not supported Update: Not supported" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementTextAd/trackingUrlTemplate> ;
    sh:name "tracking url template" ;
    sh:description "The tracking template to use as a default for all landing page URLs. The following validation rules apply to tracking templates. For more details about supported templates and parameters, see the Microsoft Advertising help article What tracking or URL parameters can I use? - Tracking templates defined for lower level entities e.g. ads override those set for higher level entities e.g. campaign. For more information, see Entity Limits. - The length of the tracking template is limited to 2,048 characters. The HTTP or HTTPS protocol string does count towards the 2,048 character limit. - The tracking template must be a well-formed URL beginning with one of the following: http://, https://, {lpurl}, or {unescapedlpurl}. - Microsoft Advertising does not validate whether custom parameters exist. If you use custom parameters in your tracking template and they do not exist, then the landing page URL will include the key and value placeholders of your custom parameters without substitution. For example, if your tracking template is https://tracker.example.com/?season={_season}&promocode={_promocode}&u={lpurl} and neither {_season} or {_promocode} are defined at the campaign, ad group, criterion, keyword, or ad level, then the landing page URL will be the same. Add: Not supported Update: Not supported" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementTextAd/finalUrlSuffix> ;
    sh:name "final url suffix" ;
    sh:description "Not supported for text ads." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementTextAd/urlCustomParameters> ;
    sh:name "url custom parameters" ;
    sh:description "Your custom collection of key and value parameters for URL tracking. Microsoft Advertising will accept the first 8 CustomParameter objects that you include within the CustomParameters object, and if you include more than 8 custom parameters an error will be returned. Each CustomParameter includes Key and Value elements. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. Set the UrlCustomParameters element to null or empty to retain any existing custom parameters. To remove all custom parameters, set the Parameters element of the CustomParameters object to null or empty. To remove a subset of custom parameters, specify the custom parameters that you want to keep in the Parameters element of the CustomParameters object." ;
    sh:node microsoftads:CampaignManagementCustomParametersShape ;
    sh:class microsoftads:CampaignManagementCustomParameters ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementTextAd/finalUrls> ;
    sh:name "final urls" ;
    sh:description "The landing page URL. This URL is used only if the keyword does not specify a final URL. The following validation rules apply to Final URLs and Final Mobile URLs. - The length of the URL is limited to 2,048 characters. The HTTP or HTTPS protocol string does count towards the 2,048 character limit. - You may specify up to 10 items for both FinalUrls and FinalMobileUrls; however, only the first item in each list is used for delivery. The service allows up to 10 for potential forward compatibility. - Usage of '{' and '}' is only allowed to delineate tags, for example {lpurl}. - Final URLs must each be a well-formed URL starting with either http:// or https://. - If you specify FinalMobileUrls, you must also specify FinalUrls. - You may not specify FinalMobileUrls if the device preference is set to mobile. Also note that if this ad's TrackingUrlTemplate or UrlCustomParameters element are set, then at least one final URL is required. Add: Not supported Update: Not supported" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementTextAd/finalMobileUrls> ;
    sh:name "final mobile urls" ;
    sh:description "The mobile landing page URL. This URL is used only if the keyword does not specify a final mobile URL. The following validation rules apply to Final URLs and Final Mobile URLs. - The length of the URL is limited to 2,048 characters. The HTTP or HTTPS protocol string does count towards the 2,048 character limit. - You may specify up to 10 items for both FinalUrls and FinalMobileUrls; however, only the first item in each list is used for delivery. The service allows up to 10 for potential forward compatibility. - Usage of '{' and '}' is only allowed to delineate tags, for example {lpurl}. - Final URLs must each be a well-formed URL starting with either http:// or https://. - If you specify FinalMobileUrls, you must also specify FinalUrls. - You may not specify FinalMobileUrls if the device preference is set to mobile. Also note that for TextAd objects you may not specify FinalMobileUrls if the DevicePreference is set to 30001 (mobile). Add: Not supported Update: Not supported" ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementTextAd/finalAppUrls> ;
    sh:name "final app urls" ;
    sh:description "Not supported for text ads." ;
    sh:node microsoftads:CampaignManagementAppUrlShape ;
    sh:class microsoftads:CampaignManagementAppUrl ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementTextAd/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. Forward compatibility changes will be noted here in future releases. There are currently no forward compatibility changes for this object." ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementTextAd/destinationUrl> ;
    sh:name "destination url" ;
    sh:description "The URL of the webpage to take the user to when they click the ad. The URL can contain dynamic parameters such as {MatchType}. For a list of supported parameters, see the Microsoft Advertising help article What tracking or URL parameters can I use?. The URL can contain a maximum of 1,024 characters. If the URL does not specify a protocol, the system uses the HTTP protocol when a user clicks the ad. If the URL specifies the HTTP protocol when you add an ad, the service will remove the http:// protocol string (the HTTP protocol string does not count against the 1,024 character limit); however, the service will not remove an HTTPS protocol string (https://) from the URL. Important: If you are currently using Destination URLs, you must replace them with Final URLs. For more information, see URL Tracking with Upgraded URLs. This URL is used only if the keyword does not specify a destination URL. Add: Not supported Update: Not supported" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementTextAd/title> ;
    sh:name "title" ;
    sh:description "The title of the ad. The title must contain at least one word. The ad's copy and title combined must total at least three words. The title can contain dynamic text strings such as {keyword}. For more information, see the Microsoft Advertising help article Automatically customize your ads with dynamic text parameters. The maximum input length of the title is 80 characters, and can contain dynamic text strings. The ad will fail to display or default text will be used if the length exceeds 25 characters after dynamic text substitution occurs. Note that for ad groups that use Traditional Chinese, the title is limited to 15 characters after substitution. The title cannot contain the newline (\\n) character. Add: Not supported Update: Not supported" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementTextAd/text> ;
    sh:name "text" ;
    sh:description "The ad copy. The copy must contain at least one word. The ad's copy and title combined must total at least three words. The text can contain dynamic text strings such as {keyword}. For more information, see the Microsoft Advertising help article Automatically customize your ads with dynamic text parameters. The maximum input length of the copy is 300 characters, and can contain dynamic text strings. The ad will fail to display or default text will be used if the length exceeds 71 characters after dynamic text substitution occurs. Note that for ad groups that use Traditional Chinese, the text is limited to 38 characters after substitution. The text cannot contain the newline (\\n) character. Add: Not supported Update: Not supported" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementTextAd/displayUrl> ;
    sh:name "display url" ;
    sh:description "The URL to display in the ad. The subdirectory of the display URL can contain dynamic text strings such as {keyword}; however, the URL hostname cannot contain dynamic text. For more information, see the Microsoft Advertising help article Automatically customize your ads with dynamic text parameters. The maximum input length of the URL is 200 characters, and can contain dynamic text strings. The ad will fail to display or default text will be used if the length exceeds 35 characters after dynamic text substitution occurs. Add: Not supported Update: Not supported" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Text Asset
microsoftads:CampaignManagementTextAssetShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementTextAsset ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementTextAsset/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier for the asset in a Microsoft Advertising account. The same asset can be used by multiple ads. For example if Seemless Integration is a text asset, it will have the same asset identifier across all ads in the same Microsoft Advertising account. After you link a text asset to an ad and then retrieve the ad e.g., via GetAdsByIds, the response will include the asset identifier e.g., \"\"id:\"\"123, whether the asset is new or already existed in the account's asset library. Add: Read-only. Even if the asset already exists and you specify an invalid identifier, this value will be ignored. Update: Read-only. Even if the asset already exists and you specify an invalid identifier, this value will be ignored." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementTextAsset/name> ;
    sh:name "name" ;
    sh:description "The Name element is deprecated." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementTextAsset/type> ;
    sh:name "type" ;
    sh:description "The type of the asset. This value is TextAsset when you retrieve a text asset. For more information about asset types, see the Asset Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementTextAsset/text> ;
    sh:name "text" ;
    sh:description "The meaning and business rules for the text asset vary depending on where it is used. For example, see responsive search ad Descriptions and Headlines. Add: Required Update: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Third Party Measurement Setting
microsoftads:CampaignManagementThirdPartyMeasurementSettingShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementThirdPartyMeasurementSetting ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementThirdPartyMeasurementSetting/type> ;
    sh:name "type" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementThirdPartyMeasurementSetting/details> ;
    sh:name "details" ;
    sh:description "Reserved." ;
    sh:node <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementThirdPartyMeasurementSetting/details/ListLevel1Shape> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Topic Criterion
microsoftads:CampaignManagementTopicCriterionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementTopicCriterion ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementTopicCriterion/type> ;
    sh:name "type" ;
    sh:description "The type of the criterion. This value is Topic when you retrieve a topic criterion. For more information about criterion types, see the Criterion Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementTopicCriterion/topicId> ;
    sh:name "topic id" ;
    sh:description "The ID of the topic. Possible values include: 1: Games2: Shopping3: Business & Industrial4: Sports5: Home & Garden6: News7: Travel & Transportation8: Finance9: Health10: Jobs & Education11: Arts & Entertainment12: Autos & Vehicles13: Computers & Electronics14: Real Estate15: Hobbies & Leisure16: Beauty & Fitness17: Internet & Telecom18: Books & Literature19: Law & Government20: Food & Drink21: People & Society22: Online Communities23: Science24: Pets & Animals25: Reference26: World Localities" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementTopicCriterion/topicName> ;
    sh:name "topic name" ;
    sh:description "The name of the topic." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Unified Automation Setting
microsoftads:CampaignManagementUnifiedAutomationSettingShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUnifiedAutomationSetting ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUnifiedAutomationSetting/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUnifiedAutomationSetting/channelOptimizationOptOut> ;
    sh:name "channel optimization opt out" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUnifiedAutomationSetting/audienceOptimizationOptOut> ;
    sh:name "audience optimization opt out" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUnifiedAutomationSetting/finalUrlExpansionOptOut> ;
    sh:name "final url expansion opt out" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUnifiedAutomationSetting/autoGeneratedTextOptOut> ;
    sh:name "auto generated text opt out" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUnifiedAutomationSetting/autoGeneratedImageOptOut> ;
    sh:name "auto generated image opt out" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUnifiedAutomationSetting/searchTermMatchingOptOut> ;
    sh:name "search term matching opt out" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Update Ad Extensions Request
microsoftads:CampaignManagementUpdateAdExtensionsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateAdExtensionsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateAdExtensionsRequest/accountId> ;
    sh:name "account id" ;
    sh:description "The identifier of the account which contains the extensions." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateAdExtensionsRequest/adExtensions> ;
    sh:name "ad extensions" ;
    sh:description "The list of ad extensions of any type, to update within the account. You may specify a maximum of 100 extensions per call." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementActionAdExtensionShape ; sh:class microsoftads:CampaignManagementActionAdExtension ]
      [ sh:node microsoftads:CampaignManagementAdExtensionShape ; sh:class microsoftads:CampaignManagementAdExtension ]
      [ sh:node microsoftads:CampaignManagementAdExtensionBaseShape ; sh:class microsoftads:CampaignManagementAdExtensionBase ]
      [ sh:node microsoftads:CampaignManagementAppAdExtensionShape ; sh:class microsoftads:CampaignManagementAppAdExtension ]
      [ sh:node microsoftads:CampaignManagementCallAdExtensionShape ; sh:class microsoftads:CampaignManagementCallAdExtension ]
      [ sh:node microsoftads:CampaignManagementCalloutAdExtensionShape ; sh:class microsoftads:CampaignManagementCalloutAdExtension ]
      [ sh:node microsoftads:CampaignManagementDataTableAdExtensionShape ; sh:class microsoftads:CampaignManagementDataTableAdExtension ]
      [ sh:node microsoftads:CampaignManagementDisclaimerAdExtensionShape ; sh:class microsoftads:CampaignManagementDisclaimerAdExtension ]
      [ sh:node microsoftads:CampaignManagementFilterLinkAdExtensionShape ; sh:class microsoftads:CampaignManagementFilterLinkAdExtension ]
      [ sh:node microsoftads:CampaignManagementFlyerAdExtensionShape ; sh:class microsoftads:CampaignManagementFlyerAdExtension ]
      [ sh:node microsoftads:CampaignManagementImageAdExtensionShape ; sh:class microsoftads:CampaignManagementImageAdExtension ]
      [ sh:node microsoftads:CampaignManagementLeadFormAdExtensionShape ; sh:class microsoftads:CampaignManagementLeadFormAdExtension ]
      [ sh:node microsoftads:CampaignManagementLocationAdExtensionShape ; sh:class microsoftads:CampaignManagementLocationAdExtension ]
      [ sh:node microsoftads:CampaignManagementLogoAdExtensionShape ; sh:class microsoftads:CampaignManagementLogoAdExtension ]
      [ sh:node microsoftads:CampaignManagementNewsAdExtensionShape ; sh:class microsoftads:CampaignManagementNewsAdExtension ]
      [ sh:node microsoftads:CampaignManagementPriceAdExtensionShape ; sh:class microsoftads:CampaignManagementPriceAdExtension ]
      [ sh:node microsoftads:CampaignManagementPromotionAdExtensionShape ; sh:class microsoftads:CampaignManagementPromotionAdExtension ]
      [ sh:node microsoftads:CampaignManagementReviewAdExtensionShape ; sh:class microsoftads:CampaignManagementReviewAdExtension ]
      [ sh:node microsoftads:CampaignManagementSitelinkAdExtensionShape ; sh:class microsoftads:CampaignManagementSitelinkAdExtension ]
      [ sh:node microsoftads:CampaignManagementStructuredSnippetAdExtensionShape ; sh:class microsoftads:CampaignManagementStructuredSnippetAdExtension ]
      [ sh:node microsoftads:CampaignManagementVideoAdExtensionShape ; sh:class microsoftads:CampaignManagementVideoAdExtension ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Update Ad Extensions Response
microsoftads:CampaignManagementUpdateAdExtensionsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateAdExtensionsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateAdExtensionsResponse/nestedPartialErrors> ;
    sh:name "nested partial errors" ;
    sh:description "An array of BatchErrorCollection objects that contain details for any ad extensions that were not successfully updated. The top level error within each BatchErrorCollection object corresponds to potential ad extension errors. The nested list of BatchError objects would include any errors specific to the list items within an ad extension (if applicable). The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorCollectionShape ; sh:class microsoftads:CampaignManagementBatchErrorCollection ]
      [ sh:node microsoftads:CampaignManagementBatchErrorCollectionBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorCollectionBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorCollectionShape ; sh:class microsoftads:CampaignManagementEditorialErrorCollection ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Update Ad Group Criterions Request
microsoftads:CampaignManagementUpdateAdGroupCriterionsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateAdGroupCriterionsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateAdGroupCriterionsRequest/criterionType> ;
    sh:name "criterion type" ;
    sh:description "The type of criterion to update, for example Webpage. You can specify only one criterion type value per call. To add, delete, or update target criterions i.e., age, company name, day and time, device, gender, industry, job function, location, location intent, and radius criterions, you must specify the CriterionType value as Targets. You can add, delete, and update multiple target criterion types in the same operation. To retrieve these target criterions via GetAdGroupCriterionsByIds you must request the specific type individually i.e., Age, CompanyName, DayTime, Device, Gender, Industry, JobFunction, Location, LocationIntent, and Radius. To add, delete, or update audience criterions i.e., custom audiences, in-market audiences, and remarketing lists, you must specify the CriterionType value as Audience. You can add, delete, and update multiple target criterion types in the same operation. To retrieve these audience criterions via GetAdGroupCriterionsByIds you must request the specific type individually i.e., CustomAudience, InMarketAudience, ProductAudience, and RemarketingList. You cannot update a ProductPartition with this operation. Instead, you should use ApplyProductPartitionActions." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateAdGroupCriterionsRequest/adGroupCriterions> ;
    sh:name "ad group criterions" ;
    sh:description "The list of criterions to update. You can include up to 1,000 ad group criterions per request. Within each AdGroupCriterion object, you must specify the criterion's ID and the ID of the ad group that it belongs to." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementAdGroupCriterionShape ; sh:class microsoftads:CampaignManagementAdGroupCriterion ]
      [ sh:node microsoftads:CampaignManagementAdGroupCriterionBaseShape ; sh:class microsoftads:CampaignManagementAdGroupCriterionBase ]
      [ sh:node microsoftads:CampaignManagementBiddableAdGroupCriterionShape ; sh:class microsoftads:CampaignManagementBiddableAdGroupCriterion ]
      [ sh:node microsoftads:CampaignManagementNegativeAdGroupCriterionShape ; sh:class microsoftads:CampaignManagementNegativeAdGroupCriterion ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Update Ad Group Criterions Response
microsoftads:CampaignManagementUpdateAdGroupCriterionsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateAdGroupCriterionsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateAdGroupCriterionsResponse/nestedPartialErrors> ;
    sh:name "nested partial errors" ;
    sh:description "An array of BatchErrorCollection objects that contain details for any criterion that were not successfully updated. The top level error within each BatchErrorCollection object corresponds to potential criterion errors. The nested list of BatchError objects would include any errors specific to the list of items a criterion can have. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorCollectionShape ; sh:class microsoftads:CampaignManagementBatchErrorCollection ]
      [ sh:node microsoftads:CampaignManagementBatchErrorCollectionBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorCollectionBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorCollectionShape ; sh:class microsoftads:CampaignManagementEditorialErrorCollection ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Update Ad Groups Request
microsoftads:CampaignManagementUpdateAdGroupsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateAdGroupsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateAdGroupsRequest/campaignId> ;
    sh:name "campaign id" ;
    sh:description "The identifier of the campaign that owns the ad groups to update." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateAdGroupsRequest/adGroups> ;
    sh:name "ad groups" ;
    sh:description "An array that can contain a maximum of 1,000 AdGroup objects to update." ;
    sh:node microsoftads:CampaignManagementAdGroupShape ;
    sh:class microsoftads:CampaignManagementAdGroup ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateAdGroupsRequest/updateAudienceAdsBidAdjustment> ;
    sh:name "update audience ads bid adjustment" ;
    sh:description "Determines whether or not the service should use the AudienceAdsBidAdjustment element of each specified AdGroup during update. If set to True, the AudienceAdsBidAdjustment will be used, and otherwise it will be ignored and your existing native bid adjustment setting will be retained during update. The default value is False if this element is not set." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateAdGroupsRequest/returnInheritedBidStrategyTypes> ;
    sh:name "return inherited bid strategy types" ;
    sh:description "Reserved for future use." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Update Ad Groups Response
microsoftads:CampaignManagementUpdateAdGroupsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateAdGroupsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateAdGroupsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateAdGroupsResponse/inheritedBidStrategyTypes> ;
    sh:name "inherited bid strategy types" ;
    sh:description "Reserved for future use." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Campaign Management Update Ads Request
microsoftads:CampaignManagementUpdateAdsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateAdsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateAdsRequest/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "The ID of the ad group that contains the ads to update." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateAdsRequest/ads> ;
    sh:name "ads" ;
    sh:description "A list of ads to update. You may update a maximum of 50 ads. The Id element must specify the ID of the ad to update. Specify only those elements that you want to update. The call will fail if you specify a non-null value for a read-only element such as Id." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementAdShape ; sh:class microsoftads:CampaignManagementAd ]
      [ sh:node microsoftads:CampaignManagementAdBaseShape ; sh:class microsoftads:CampaignManagementAdBase ]
      [ sh:node microsoftads:CampaignManagementAppInstallAdShape ; sh:class microsoftads:CampaignManagementAppInstallAd ]
      [ sh:node microsoftads:CampaignManagementDynamicSearchAdShape ; sh:class microsoftads:CampaignManagementDynamicSearchAd ]
      [ sh:node microsoftads:CampaignManagementExpandedTextAdShape ; sh:class microsoftads:CampaignManagementExpandedTextAd ]
      [ sh:node microsoftads:CampaignManagementHotelAdShape ; sh:class microsoftads:CampaignManagementHotelAd ]
      [ sh:node microsoftads:CampaignManagementProductAdShape ; sh:class microsoftads:CampaignManagementProductAd ]
      [ sh:node microsoftads:CampaignManagementResponsiveAdShape ; sh:class microsoftads:CampaignManagementResponsiveAd ]
      [ sh:node microsoftads:CampaignManagementResponsiveSearchAdShape ; sh:class microsoftads:CampaignManagementResponsiveSearchAd ]
      [ sh:node microsoftads:CampaignManagementTextAdShape ; sh:class microsoftads:CampaignManagementTextAd ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Update Ads Response
microsoftads:CampaignManagementUpdateAdsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateAdsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateAdsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Update Annotation Opt Out Request
microsoftads:CampaignManagementUpdateAnnotationOptOutRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateAnnotationOptOutRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateAnnotationOptOutRequest/justification> ;
    sh:name "justification" ;
    sh:description "The justification text." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateAnnotationOptOutRequest/annotationOptOuts> ;
    sh:name "annotation opt outs" ;
    sh:description "An array of annotation opt out data objects." ;
    sh:node microsoftads:CampaignManagementAnnotationOptOutShape ;
    sh:class microsoftads:CampaignManagementAnnotationOptOut ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Update Asset Groups Request
microsoftads:CampaignManagementUpdateAssetGroupsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateAssetGroupsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateAssetGroupsRequest/campaignId> ;
    sh:name "campaign id" ;
    sh:description "The ID of the performance max campaign." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateAssetGroupsRequest/assetGroups> ;
    sh:name "asset groups" ;
    sh:description "Array of asset groups to update for the specified campaign. A maximum of 100 asset groups can be specified in a single call." ;
    sh:node microsoftads:CampaignManagementAssetGroupShape ;
    sh:class microsoftads:CampaignManagementAssetGroup ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Update Asset Groups Response
microsoftads:CampaignManagementUpdateAssetGroupsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateAssetGroupsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateAssetGroupsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Update Audience Groups Request
microsoftads:CampaignManagementUpdateAudienceGroupsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateAudienceGroupsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateAudienceGroupsRequest/audienceGroups> ;
    sh:name "audience groups" ;
    sh:description "Array of audience groups to update. The maximum size of the list is 100 items per service request." ;
    sh:node microsoftads:CampaignManagementAudienceGroupShape ;
    sh:class microsoftads:CampaignManagementAudienceGroup ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Update Audience Groups Response
microsoftads:CampaignManagementUpdateAudienceGroupsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateAudienceGroupsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateAudienceGroupsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Update Audiences Request
microsoftads:CampaignManagementUpdateAudiencesRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateAudiencesRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateAudiencesRequest/audiences> ;
    sh:name "audiences" ;
    sh:description "A list of audiences to update. The maximum size of the array is 100. You can only update RemarketingList and CustomAudience objects. You cannot update InMarketAudience objects." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementAudienceShape ; sh:class microsoftads:CampaignManagementAudience ]
      [ sh:node microsoftads:CampaignManagementAudienceBaseShape ; sh:class microsoftads:CampaignManagementAudienceBase ]
      [ sh:node microsoftads:CampaignManagementCombinedListShape ; sh:class microsoftads:CampaignManagementCombinedList ]
      [ sh:node microsoftads:CampaignManagementCustomAudienceShape ; sh:class microsoftads:CampaignManagementCustomAudience ]
      [ sh:node microsoftads:CampaignManagementCustomSegmentShape ; sh:class microsoftads:CampaignManagementCustomSegment ]
      [ sh:node microsoftads:CampaignManagementCustomerListShape ; sh:class microsoftads:CampaignManagementCustomerList ]
      [ sh:node microsoftads:CampaignManagementImpressionBasedRemarketingListShape ; sh:class microsoftads:CampaignManagementImpressionBasedRemarketingList ]
      [ sh:node microsoftads:CampaignManagementInMarketAudienceShape ; sh:class microsoftads:CampaignManagementInMarketAudience ]
      [ sh:node microsoftads:CampaignManagementProductAudienceShape ; sh:class microsoftads:CampaignManagementProductAudience ]
      [ sh:node microsoftads:CampaignManagementRemarketingListShape ; sh:class microsoftads:CampaignManagementRemarketingList ]
      [ sh:node microsoftads:CampaignManagementSimilarRemarketingListShape ; sh:class microsoftads:CampaignManagementSimilarRemarketingList ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Update Audiences Response
microsoftads:CampaignManagementUpdateAudiencesResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateAudiencesResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateAudiencesResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Update Bid Strategies Request
microsoftads:CampaignManagementUpdateBidStrategiesRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateBidStrategiesRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateBidStrategiesRequest/bidStrategies> ;
    sh:name "bid strategies" ;
    sh:description "An array of BidStrategy objects to update in the account's portfolio bid strategy library. You can include a maximum of 100 bid strategies in a single call. The account is determined by the required CustomerAccountId header element." ;
    sh:node microsoftads:CampaignManagementBidStrategyShape ;
    sh:class microsoftads:CampaignManagementBidStrategy ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Update Bid Strategies Response
microsoftads:CampaignManagementUpdateBidStrategiesResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateBidStrategiesResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateBidStrategiesResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Update Brand Kits Request
microsoftads:CampaignManagementUpdateBrandKitsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateBrandKitsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateBrandKitsRequest/accountId> ;
    sh:name "account id" ;
    sh:description "The Microsoft Advertising identifier of the account." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateBrandKitsRequest/brandKits> ;
    sh:name "brand kits" ;
    sh:description "A list of BrandKits to be created for the specified account." ;
    sh:node microsoftads:CampaignManagementBrandKitShape ;
    sh:class microsoftads:CampaignManagementBrandKit ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Update Brand Kits Response
microsoftads:CampaignManagementUpdateBrandKitsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateBrandKitsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateBrandKitsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array BatchError that contains details for any request items that were not successful. The list of errors does not correspond directly to the list of items in the request. The list can be empty if there were no errors, or it can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Update Budgets Request
microsoftads:CampaignManagementUpdateBudgetsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateBudgetsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateBudgetsRequest/budgets> ;
    sh:name "budgets" ;
    sh:description "An array of Budget objects to update in the account's shared budget library. You can update a maximum of 100 budgets in a single call. The account is determined by the required CustomerAccountId header element." ;
    sh:node microsoftads:CampaignManagementBudgetShape ;
    sh:class microsoftads:CampaignManagementBudget ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Update Budgets Response
microsoftads:CampaignManagementUpdateBudgetsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateBudgetsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateBudgetsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Update Campaign Criterions Request
microsoftads:CampaignManagementUpdateCampaignCriterionsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateCampaignCriterionsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateCampaignCriterionsRequest/criterionType> ;
    sh:name "criterion type" ;
    sh:description "The type of criterion to update, for example Webpage. You can specify only one criterion type value per call. To add, delete, or update target criterions i.e., age, day and time, device, gender, location, location intent, and radius criterions, you must specify the CriterionType value as Targets. You can add, delete, and update multiple target criterion types in the same operation. To retrieve these target criterions via GetCampaignCriterionsByIds you must request the specific type individually i.e., Age, DayTime, Device, Gender, Location, LocationIntent, and Radius." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateCampaignCriterionsRequest/campaignCriterions> ;
    sh:name "campaign criterions" ;
    sh:description "The list of campaign criterions to update. You can include up to 100 campaign criterions per request. Within each CampaignCriterion object, you must specify the criterion's ID and the ID of the campaign that it belongs to." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBiddableCampaignCriterionShape ; sh:class microsoftads:CampaignManagementBiddableCampaignCriterion ]
      [ sh:node microsoftads:CampaignManagementCampaignCriterionShape ; sh:class microsoftads:CampaignManagementCampaignCriterion ]
      [ sh:node microsoftads:CampaignManagementCampaignCriterionBaseShape ; sh:class microsoftads:CampaignManagementCampaignCriterionBase ]
      [ sh:node microsoftads:CampaignManagementNegativeCampaignCriterionShape ; sh:class microsoftads:CampaignManagementNegativeCampaignCriterion ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Update Campaign Criterions Response
microsoftads:CampaignManagementUpdateCampaignCriterionsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateCampaignCriterionsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateCampaignCriterionsResponse/nestedPartialErrors> ;
    sh:name "nested partial errors" ;
    sh:description "An array of BatchErrorCollection objects that contain details for any criterion that were not successfully updated. The top level error within each BatchErrorCollection object corresponds to potential criterion errors. The nested list of BatchError objects would include any errors specific to the list of items a criterion can have, for example a list of product conditions. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorCollectionShape ; sh:class microsoftads:CampaignManagementBatchErrorCollection ]
      [ sh:node microsoftads:CampaignManagementBatchErrorCollectionBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorCollectionBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorCollectionShape ; sh:class microsoftads:CampaignManagementEditorialErrorCollection ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Update Campaigns Request
microsoftads:CampaignManagementUpdateCampaignsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateCampaignsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateCampaignsRequest/accountId> ;
    sh:name "account id" ;
    sh:description "The identifier of the account that contains the campaign to update." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateCampaignsRequest/campaigns> ;
    sh:name "campaigns" ;
    sh:description "An array that can contain a maximum of 100 Campaign objects to update." ;
    sh:node microsoftads:CampaignManagementCampaignShape ;
    sh:class microsoftads:CampaignManagementCampaign ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Update Campaigns Response
microsoftads:CampaignManagementUpdateCampaignsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateCampaignsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateCampaignsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Update Conversion Goals Request
microsoftads:CampaignManagementUpdateConversionGoalsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateConversionGoalsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateConversionGoalsRequest/conversionGoals> ;
    sh:name "conversion goals" ;
    sh:description "An array of ConversionGoal objects to update within the account's shared conversion goal library. You can update a maximum of 100 conversion goals in a single call. The account is determined by the required CustomerAccountId header element." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementAppDownloadGoalShape ; sh:class microsoftads:CampaignManagementAppDownloadGoal ]
      [ sh:node microsoftads:CampaignManagementAppInstallGoalShape ; sh:class microsoftads:CampaignManagementAppInstallGoal ]
      [ sh:node microsoftads:CampaignManagementConversionGoalShape ; sh:class microsoftads:CampaignManagementConversionGoal ]
      [ sh:node microsoftads:CampaignManagementConversionGoalBaseShape ; sh:class microsoftads:CampaignManagementConversionGoalBase ]
      [ sh:node microsoftads:CampaignManagementDurationGoalShape ; sh:class microsoftads:CampaignManagementDurationGoal ]
      [ sh:node microsoftads:CampaignManagementEventGoalShape ; sh:class microsoftads:CampaignManagementEventGoal ]
      [ sh:node microsoftads:CampaignManagementInStoreTransactionGoalShape ; sh:class microsoftads:CampaignManagementInStoreTransactionGoal ]
      [ sh:node microsoftads:CampaignManagementOfflineConversionGoalShape ; sh:class microsoftads:CampaignManagementOfflineConversionGoal ]
      [ sh:node microsoftads:CampaignManagementPagesViewedPerVisitGoalShape ; sh:class microsoftads:CampaignManagementPagesViewedPerVisitGoal ]
      [ sh:node microsoftads:CampaignManagementUrlGoalShape ; sh:class microsoftads:CampaignManagementUrlGoal ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Update Conversion Goals Response
microsoftads:CampaignManagementUpdateConversionGoalsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateConversionGoalsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateConversionGoalsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Update Conversion Value Rules Request
microsoftads:CampaignManagementUpdateConversionValueRulesRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateConversionValueRulesRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateConversionValueRulesRequest/conversionValueRules> ;
    sh:name "conversion value rules" ;
    sh:description "The conversion value rules to update." ;
    sh:node microsoftads:CampaignManagementConversionValueRuleShape ;
    sh:class microsoftads:CampaignManagementConversionValueRule ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateConversionValueRulesRequest/lcid> ;
    sh:name "lcid" ;
    sh:description "The locale identifier (LCID) for the request. The default value is 1033 for EnglishUS. For more LCID values, see LCID Value Set" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Update Conversion Value Rules Response
microsoftads:CampaignManagementUpdateConversionValueRulesResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateConversionValueRulesResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateConversionValueRulesResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Update Conversion Value Rules Status Request
microsoftads:CampaignManagementUpdateConversionValueRulesStatusRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateConversionValueRulesStatusRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateConversionValueRulesStatusRequest/ruleIds> ;
    sh:name "rule ids" ;
    sh:description "Update the status of the conversion value rules with these IDs." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateConversionValueRulesStatusRequest/status> ;
    sh:name "status" ;
    sh:description "The new status to be applied to the specified conversion value rules." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Paused" "Deleted" "Invalid" ) ;
  ] .

# Shape for Campaign Management Update Conversion Value Rules Status Response
microsoftads:CampaignManagementUpdateConversionValueRulesStatusResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateConversionValueRulesStatusResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateConversionValueRulesStatusResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Update Data Exclusions Request
microsoftads:CampaignManagementUpdateDataExclusionsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateDataExclusionsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateDataExclusionsRequest/accountId> ;
    sh:name "account id" ;
    sh:description "The account ID." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateDataExclusionsRequest/dataExclusions> ;
    sh:name "data exclusions" ;
    sh:description "The data exclusions to update." ;
    sh:node microsoftads:CampaignManagementDataExclusionShape ;
    sh:class microsoftads:CampaignManagementDataExclusion ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Update Data Exclusions Response
microsoftads:CampaignManagementUpdateDataExclusionsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateDataExclusionsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateDataExclusionsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array BatchError that contains details for any request items that were not successful. The list of errors does not correspond directly to the list of items in the request. The list can be empty if there were no errors, or it can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Update Experiments Request
microsoftads:CampaignManagementUpdateExperimentsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateExperimentsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateExperimentsRequest/experiments> ;
    sh:name "experiments" ;
    sh:description "An array of Experiment objects to update within the account. You can update a maximum of 100 experiments in a single call. The account is determined by the required CustomerAccountId header element." ;
    sh:node microsoftads:CampaignManagementExperimentShape ;
    sh:class microsoftads:CampaignManagementExperiment ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Update Experiments Response
microsoftads:CampaignManagementUpdateExperimentsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateExperimentsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateExperimentsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Update Import Jobs Request
microsoftads:CampaignManagementUpdateImportJobsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateImportJobsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateImportJobsRequest/importJobs> ;
    sh:name "import jobs" ;
    sh:description "The import jobs to update. Although this element is an array, you can include a maximum of one GoogleImportJob object per call." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementFileImportJobShape ; sh:class microsoftads:CampaignManagementFileImportJob ]
      [ sh:node microsoftads:CampaignManagementGoogleImportJobShape ; sh:class microsoftads:CampaignManagementGoogleImportJob ]
      [ sh:node microsoftads:CampaignManagementImportJobShape ; sh:class microsoftads:CampaignManagementImportJob ]
      [ sh:node microsoftads:CampaignManagementImportJobBaseShape ; sh:class microsoftads:CampaignManagementImportJobBase ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Update Import Jobs Response
microsoftads:CampaignManagementUpdateImportJobsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateImportJobsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateImportJobsResponse/importJobIds> ;
    sh:name "import job ids" ;
    sh:description "A list of unique system identifiers corresponding to the replacement import jobs. The list of replacement identifiers corresponds directly to the list of replaced import jobs in the request. Items of the list may be returned as null. For each list index where an import job was not updated, the corresponding element will be null." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateImportJobsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Update Keywords Request
microsoftads:CampaignManagementUpdateKeywordsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateKeywordsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateKeywordsRequest/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "The identifier of the ad group whose keywords will be updated." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateKeywordsRequest/keywords> ;
    sh:name "keywords" ;
    sh:description "An array of Keyword objects that contains the updated keyword information. The Id element of each of these objects identifies the keyword to update. This array can contain a maximum of 1,000 elements." ;
    sh:node microsoftads:CampaignManagementKeywordShape ;
    sh:class microsoftads:CampaignManagementKeyword ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateKeywordsRequest/returnInheritedBidStrategyTypes> ;
    sh:name "return inherited bid strategy types" ;
    sh:description "Determines whether or not the service should return the bid strategy type that is inherited from the parent campaign or ad group. The default value is false, and the InheritedBidStrategyTypes element will only be returned if you set this element true." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Update Keywords Response
microsoftads:CampaignManagementUpdateKeywordsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateKeywordsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateKeywordsResponse/inheritedBidStrategyTypes> ;
    sh:name "inherited bid strategy types" ;
    sh:description "The value of each string represents the type of bidding scheme or bid strategy type that is inherited from the parent campaign or ad group. Each string in the list is returned in the same order and corresponds to the keywords in the request message. If a keyword does not inherit from the ad group or campaign, the corresponding item in the list will be nil. This element is not returned by default. You must set ReturnInheritedBidStrategyTypes true in the request." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateKeywordsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Update Labels Request
microsoftads:CampaignManagementUpdateLabelsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateLabelsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateLabelsRequest/labels> ;
    sh:name "labels" ;
    sh:description "The list of labels that you want to update. The maximum size of the list is 100 items per service request." ;
    sh:node microsoftads:CampaignManagementLabelShape ;
    sh:class microsoftads:CampaignManagementLabel ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Update Labels Response
microsoftads:CampaignManagementUpdateLabelsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateLabelsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateLabelsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Update Linked In Segments Request
microsoftads:CampaignManagementUpdateLinkedInSegmentsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateLinkedInSegmentsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateLinkedInSegmentsRequest/linkedInSegments> ;
    sh:name "linked in segments" ;
    sh:description "An array of the LinkedIn segments to update." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementCompanyListShape ; sh:class microsoftads:CampaignManagementCompanyList ]
      [ sh:node microsoftads:CampaignManagementLinkedInSegmentShape ; sh:class microsoftads:CampaignManagementLinkedInSegment ]
      [ sh:node microsoftads:CampaignManagementLinkedInSegmentBaseShape ; sh:class microsoftads:CampaignManagementLinkedInSegmentBase ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Update Linked In Segments Response
microsoftads:CampaignManagementUpdateLinkedInSegmentsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateLinkedInSegmentsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateLinkedInSegmentsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "n array BatchError that contains details for any request items that were not successful. The list of errors does not correspond directly to the list of items in the request. The list can be empty if there were no errors, or it can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Update New Customer Acquisition Goals Request
microsoftads:CampaignManagementUpdateNewCustomerAcquisitionGoalsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateNewCustomerAcquisitionGoalsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateNewCustomerAcquisitionGoalsRequest/newCustomerAcquisitionGoals> ;
    sh:name "new customer acquisition goals" ;
    sh:description "Reserved." ;
    sh:node microsoftads:CampaignManagementNewCustomerAcquisitionGoalShape ;
    sh:class microsoftads:CampaignManagementNewCustomerAcquisitionGoal ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Update New Customer Acquisition Goals Response
microsoftads:CampaignManagementUpdateNewCustomerAcquisitionGoalsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateNewCustomerAcquisitionGoalsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateNewCustomerAcquisitionGoalsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "Reserved." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Update Seasonality Adjustments Request
microsoftads:CampaignManagementUpdateSeasonalityAdjustmentsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateSeasonalityAdjustmentsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateSeasonalityAdjustmentsRequest/accountId> ;
    sh:name "account id" ;
    sh:description "The account ID." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateSeasonalityAdjustmentsRequest/seasonalityAdjustments> ;
    sh:name "seasonality adjustments" ;
    sh:description "The seasonality adjustments to update." ;
    sh:node microsoftads:CampaignManagementSeasonalityAdjustmentShape ;
    sh:class microsoftads:CampaignManagementSeasonalityAdjustment ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Update Seasonality Adjustments Response
microsoftads:CampaignManagementUpdateSeasonalityAdjustmentsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateSeasonalityAdjustmentsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateSeasonalityAdjustmentsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array BatchError that contains details for any request items that were not successful. The list of errors does not correspond directly to the list of items in the request. The list can be empty if there were no errors, or it can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Update Shared Entities Request
microsoftads:CampaignManagementUpdateSharedEntitiesRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateSharedEntitiesRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateSharedEntitiesRequest/sharedEntities> ;
    sh:name "shared entities" ;
    sh:description "The negative keyword lists or website exclusion lists to update. If the SharedEntityScope is either empty or set to Account, then the SharedEntities must be negative keyword list (NegativeKeywordList) objects. If the SharedEntityScope is set to Customer, then the SharedEntities must be website exclusion list (PlacementExclusionList) objects. The list can contain a maximum of 20 items per service call." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementAccountContentNegativeKeywordListShape ; sh:class microsoftads:CampaignManagementAccountContentNegativeKeywordList ]
      [ sh:node microsoftads:CampaignManagementAccountNegativeKeywordListShape ; sh:class microsoftads:CampaignManagementAccountNegativeKeywordList ]
      [ sh:node microsoftads:CampaignManagementAccountPlacementExclusionListShape ; sh:class microsoftads:CampaignManagementAccountPlacementExclusionList ]
      [ sh:node microsoftads:CampaignManagementAccountPlacementInclusionListShape ; sh:class microsoftads:CampaignManagementAccountPlacementInclusionList ]
      [ sh:node microsoftads:CampaignManagementBrandListShape ; sh:class microsoftads:CampaignManagementBrandList ]
      [ sh:node microsoftads:CampaignManagementNegativeKeywordListShape ; sh:class microsoftads:CampaignManagementNegativeKeywordList ]
      [ sh:node microsoftads:CampaignManagementPlacementExclusionListShape ; sh:class microsoftads:CampaignManagementPlacementExclusionList ]
      [ sh:node microsoftads:CampaignManagementSharedEntityShape ; sh:class microsoftads:CampaignManagementSharedEntity ]
      [ sh:node microsoftads:CampaignManagementSharedListShape ; sh:class microsoftads:CampaignManagementSharedList ]
      [ sh:node microsoftads:CampaignManagementSharedListBaseShape ; sh:class microsoftads:CampaignManagementSharedListBase ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateSharedEntitiesRequest/sharedEntityScope> ;
    sh:name "shared entity scope" ;
    sh:description "Indicates whether the shared entity is available at the ad account (Account) or manager account (Customer) level. This element is optional and defaults to Account scope. The ad account scope is only applicable for negative keyword lists. Set this element to Customer to update website exclusion lists in your manager account (customer) shared library." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Account" "Customer" ) ;
  ] .

# Shape for Campaign Management Update Shared Entities Response
microsoftads:CampaignManagementUpdateSharedEntitiesResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateSharedEntitiesResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateSharedEntitiesResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Update Uet Tags Request
microsoftads:CampaignManagementUpdateUetTagsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateUetTagsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateUetTagsRequest/uetTags> ;
    sh:name "uet tags" ;
    sh:description "An array of UetTag objects to update within the customer's shared UET tag library. You can update a maximum of 100 UET tags in a single call." ;
    sh:node microsoftads:CampaignManagementUetTagShape ;
    sh:class microsoftads:CampaignManagementUetTag ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Update Uet Tags Response
microsoftads:CampaignManagementUpdateUetTagsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateUetTagsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateUetTagsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Update Videos Request
microsoftads:CampaignManagementUpdateVideosRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateVideosRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateVideosRequest/videos> ;
    sh:name "videos" ;
    sh:description "The list of videos that you want to update. The maximum size of the list is 100 items per service request." ;
    sh:node microsoftads:CampaignManagementVideoShape ;
    sh:class microsoftads:CampaignManagementVideo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Update Videos Response
microsoftads:CampaignManagementUpdateVideosResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUpdateVideosResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUpdateVideosResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that contain details for any request items that were not successful. The list of errors do not correspond directly to the list of items in the request. The list can be empty if there were no errors, or can include one or more error objects corresponding to each unsuccessful list item in the request." ;
    sh:or (
      [ sh:node microsoftads:CampaignManagementBatchErrorShape ; sh:class microsoftads:CampaignManagementBatchError ]
      [ sh:node microsoftads:CampaignManagementBatchErrorBaseShape ; sh:class microsoftads:CampaignManagementBatchErrorBase ]
      [ sh:node microsoftads:CampaignManagementEditorialErrorShape ; sh:class microsoftads:CampaignManagementEditorialError ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Url Goal
microsoftads:CampaignManagementUrlGoalShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementUrlGoal ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUrlGoal/name> ;
    sh:name "name" ;
    sh:description "The conversion goal name. The maximum length of the name is 100, and the name must be unique among all conversion goals belonging to the same customer. Add: Required Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUrlGoal/status> ;
    sh:name "status" ;
    sh:description "Defines the possible user-determined status values of a conversion goal. These are the status values that a user can decide to set, for example a goal can be set to Paused if you no longer wish to track conversions for that goal. For status values that can be set by the system, for example whether or not the UET tag is verified, see the TrackingStatus element. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Paused" "Deleted" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUrlGoal/scope> ;
    sh:name "scope" ;
    sh:description "Determines if the goal applies to all accounts or only the account specified in the required CustomerAccountId header element. If you have multiple Microsoft Advertising accounts, you can track conversions across all of those accounts. If you associate a goal with one account, conversions will be tracked for that account only. Possible values are Account and Customer. If not specified, the scope will be set to Customer by default. Once you set scope, you can't change it. If you want to change the scope, you need to create a new conversion goal and pause the old one. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Account" "Customer" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUrlGoal/countType> ;
    sh:name "count type" ;
    sh:description "This determines how your conversions are recorded within your chosen conversion window. There are two choices, and if you do not set a value the default is All: - All: All conversions that happen after an ad click will be counted. This is a common choice for sales. - Unique: Only one conversion that happens after an ad click will be counted. This is a common choice for leads. For example: You track two conversions: leads and sales. You pick Unique for leads and All for sales. When one ad click turns into two leads and two sales, it's counted as three conversions: one for the unique lead, and two for all the sales. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "All" "Unique" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUrlGoal/revenue> ;
    sh:name "revenue" ;
    sh:description "Determines how much each conversion is worth to your business. When adding a conversion goal if you do not specify any revenue tracking preferences, then each ConversionGoalRevenue will be set to their respective default values. When updating a conversion goal, if the Revenue element is nil or empty then none of the nested properties will be updated. However, if this element is not nil or empty then you are effectively replacing any existing revenue properties. Add: Optional Update: Optional" ;
    sh:node microsoftads:CampaignManagementConversionGoalRevenueShape ;
    sh:class microsoftads:CampaignManagementConversionGoalRevenue ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUrlGoal/conversionWindowInMinutes> ;
    sh:name "conversion window in minutes" ;
    sh:description "The conversion window is the length of time in minutes after a click that you want to track conversions. If you set this value to 43200 minutes (30 days), then conversions that happen within 30 days after a click are tracked. Past conversions aren't affected. The minimum value supported is 1 minute, although keep in mind that a shorter conversion window will reduce the number of conversions your account records. The maximum value supported is 129600 minutes (90 days). Add: Optional Update: Optional" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUrlGoal/tagId> ;
    sh:name "tag id" ;
    sh:description "The unique Microsoft Advertising identifier of the UET tag that you added to your website to allow Microsoft Advertising to collect actions people take on your website. Before you take a dependency on the tag ID, please note that the UET tag can be shared with or from another customer. Shared UET tags and audiences are only available for pilot customers. For an overview of sharing audiences and UET tags in a customer hierarchy, see the Share Audiences and UET Tags technical guide. Add: Required Update: Optional" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUrlGoal/trackingStatus> ;
    sh:name "tracking status" ;
    sh:description "Defines the possible system-determined status values of a conversion goal. These are the status values that can be set by the system, for example the system sets the status to TagUnverified if the UET tag has not yet been verified. For status values that a user can decide to set, for example setting the status to Paused if you no longer wish to track conversions for that goal, see the Status element. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "TagUnverified" "NoRecentConversions" "RecordingConversions" "TagInactive" "InactiveDueToTagUnavailable" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUrlGoal/excludeFromBidding> ;
    sh:name "exclude from bidding" ;
    sh:description "Determines whether or not to exclude data otherwise related to this conversion goal from a subset of performance report columns. This element is only available for customers who are enabled for the Include in Conversions feature (GetCustomerPilotFeatures returns 574). If this element is set to true, data otherwise related to this conversion goal will be excluded from the Conversions, ConversionRate, CostPerConversion, ReturnOnAdSpend, RevenuePerConversion, and Revenue report columns. Also, if you use an automated bidding bid strategy, setting this property true will result in the goal's conversions no longer factoring into automated bidding calculations. Setting this property \"true\" is effectively the same as unchecking \"Include in Conversions\" in the Microsoft Advertising web application. Regardless of this element value, the AllConversions, AllConversionRate, AllCostPerConversion, AllReturnOnAdSpend, AllRevenuePerConversion, and AllRevenue report columns will include data for all conversion goals. By default this element is false, and data related to this conversion goal are included in all report columns. For more information, see Report Attributes and Performance Statistics and the help article Conversion goals: \"Conversions\" versus \"All conversions\". Add: Optional Update: Optional" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUrlGoal/viewThroughConversionWindowInMinutes> ;
    sh:name "view through conversion window in minutes" ;
    sh:description "The view-through conversion window is the length of time in minutes after a click that you want to track view-through conversions. If you set this value to 43200 minutes (30 days), then view-through conversions that happen within 30 days after a click are tracked. Past conversions aren't affected. The minimum value supported is 1 minute, although keep in mind that a shorter conversion window will reduce the number of conversions your account records. The maximum value supported is 43200 minutes (30 days). The IncludeViewThroughConversions account property must also be set to true for view-through conversions to be tracked. This element is not returned by default. To get this element, include the ViewThroughConversionWindowInMinutes value in the ReturnAdditionalFields element when you call the GetConversionGoalsByIds and GetConversionGoalsByTagIds service operations. Add: Optional Update: Optional" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUrlGoal/goalCategory> ;
    sh:name "goal category" ;
    sh:description "The category used to segment the conversion goal. Categorize your conversion goals however makes sense for your business. Goal categories don't affect performance - they are here to help you segment your goals and their performance metrics. The supported category values vary by conversion goal type. Url goals support the AddToCart, BeginCheckout, BookAppointment, Contact, GetDirections, Other, OutboundClick, PageView, Purchase, RequestQuote, Signup, SubmitLeadForm, and Subscribe categories. Add: Required as of June 2021. Previously if you left this element nil or empty, the default category was set to None. Update: Optional if the conversion goal already has a category set other than None. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unknown" "None" "Purchase" "AddToCart" "BeginCheckout" "Subscribe" "SubmitLeadForm" "BookAppointment" "Signup" "RequestQuote" "GetDirections" "OutboundClick" "Contact" "PageView" "Download" "Other" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUrlGoal/attributionModelType> ;
    sh:name "attribution model type" ;
    sh:description "Determines which attribution model, _LastTouch_ or _LastClick_, is used with a conversion goal." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "LastClick" "LastTouch" "DataDriven" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUrlGoal/isEnhancedConversionsEnabled> ;
    sh:name "is enhanced conversions enabled" ;
    sh:description "Determines whether enhanced conversions are enabled for a conversion goal." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUrlGoal/isAutoGoal> ;
    sh:name "is auto goal" ;
    sh:description "Only available for event goal." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUrlGoal/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier for the conversion goal. Add: Read-only Update: Required and Read-Only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUrlGoal/type> ;
    sh:name "type" ;
    sh:description "The type of the conversion goal. This value is Url when you retrieve a Url goal. For more information about conversion goal types, see the ConversionGoal Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUrlGoal/urlOperator> ;
    sh:name "url operator" ;
    sh:description "The operator that can be applied to the value of the Url element. Add: Optional; If not specified, the default operator is Equals. Update: Optional; If not specified during update, the previous setting is retained." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Equals" "BeginsWith" "RegularExpression" "Contains" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementUrlGoal/urlExpression> ;
    sh:name "url expression" ;
    sh:description "The expression used to determine the page or pages the user has to visit in order to count as a conversion. Add: Required Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Vanity Pharma Setting
microsoftads:CampaignManagementVanityPharmaSettingShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementVanityPharmaSetting ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVanityPharmaSetting/type> ;
    sh:name "type" ;
    sh:description "The type of setting. For more information, see Remarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVanityPharmaSetting/displayUrlMode> ;
    sh:name "display url mode" ;
    sh:description "The display mode for vanity pharma URLs for a campaign. Note: VanityPharmaDisplayUrlMode is available for limited pilot usage (e.g., pharmaceutical customers). Add: Optional. If you do not specify this field or leave it empty, the default value of ManufacturerWebsiteUrl will be set. Update: Optional. If no value is set for the update, this setting is not changed. Delete: Read-only." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "ManufacturerWebsiteUrl" "WebsiteDescription" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVanityPharmaSetting/websiteDescription> ;
    sh:name "website description" ;
    sh:description "The text that shows in the display URL of a text ad when WebsiteDescription is the selected display mode for vanity pharma URLs for the campaign. Note: VanityPharmaWebsiteDescription is available for limited pilot usage (e.g., pharmaceutical customers). Add: Optional. If you do not specify this field or leave it empty, the default value of Unspecified is set. Update: Optional. If no value is set for the update, this setting is not changed. If no value is set but the value for VanityPharmaDisplayURLMode is set to ManufacturerWebsiteUrl, the value of Unspecified is set. If no value is set but the value for VanityPharmaDisplayURLMode is set to WebsiteDescription, the campaign service will return the TBD error code. If a value other than Unspecified is set but the value for VanityPharmaDisplayURLMode is set to ManufacturerWebsiteUrl, the campaign service will return the TBD error code. Delete: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Unspecified" "PrescriptionTreatmentWebsite_En" "PrescriptionTreatmentWebsite_Es" "PrescriptionDeviceWebsite_En" "PrescriptionDeviceWebsite_Es" "MedicalDeviceWebsite_En" "MedicalDeviceWebsite_Es" "PreventativeTreatmentWebsite_En" "PreventativeTreatmentWebsite_Es" "PrescriptionContraceptionWebsite_En" "PrescriptionContraceptionWebsite_Es" "PrescriptionVaccineWebsite_En" "PrescriptionVaccineWebsite_Es" ) ;
  ] .

# Shape for Campaign Management Video Ad Extension
microsoftads:CampaignManagementVideoAdExtensionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementVideoAdExtension ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideoAdExtension/status> ;
    sh:name "status" ;
    sh:description "The status of the ad extension. The value will always be Active because the Campaign Management service does not return deleted ad extensions." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Deleted" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideoAdExtension/scheduling> ;
    sh:name "scheduling" ;
    sh:description "Determines the calendar day and time ranges when the ad extension is eligible to be shown in ads." ;
    sh:node microsoftads:CampaignManagementScheduleShape ;
    sh:class microsoftads:CampaignManagementSchedule ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideoAdExtension/devicePreference> ;
    sh:name "device preference" ;
    sh:description "This element determines whether the preference is for the ad extension to be displayed on mobile devices or all devices. To specify a preference for mobile devices, set this element to 30001. To specify all devices, set this element to 0 (zero) or leave the element nil. By default, this element will be nil. This element is only applicable for the AppAdExtension and SitelinkAdExtension types." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideoAdExtension/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier of the ad extension." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideoAdExtension/type> ;
    sh:name "type" ;
    sh:description "The type of ad extension. For more information, see Remarks." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideoAdExtension/version> ;
    sh:name "version" ;
    sh:description "Tracks the number of times the ad extension has been updated. The version is set to 1 when the ad extension is created, and increments by one after each update." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideoAdExtension/name> ;
    sh:name "name" ;
    sh:description "The name of the video asset." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideoAdExtension/displayText> ;
    sh:name "display text" ;
    sh:description "The display text for the video asset." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideoAdExtension/alternativeText> ;
    sh:name "alternative text" ;
    sh:description "The alt text for the video asset." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideoAdExtension/actionText> ;
    sh:name "action text" ;
    sh:description "The action text for the video asset." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideoAdExtension/videoId> ;
    sh:name "video id" ;
    sh:description "The ID of the video." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideoAdExtension/thumbnailId> ;
    sh:name "thumbnail id" ;
    sh:description "The ID of the thumbnail asset." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideoAdExtension/thumbnailUrl> ;
    sh:name "thumbnail url" ;
    sh:description "The thumbnail URL of the video asset. Add: Unsupported Update: Unsupported" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideoAdExtension/finalMobileUrls> ;
    sh:name "final mobile urls" ;
    sh:description "The landing page URL for mobile devices. The following validation rules apply to Final URLs and Final Mobile URLs. - The length of the URL is limited to 2,048 characters. The HTTP or HTTPS protocol string does count towards the 2,048 character limit. - You may specify up to 10 list items for both FinalUrls and FinalMobileUrls; however, only the first item in each list is used for delivery. The service allows up to 10 list items for potential forward compatibility. - Usage of '{' and '}' is only allowed to delineate tags, for example {lpurl}. - Final URLs must each be a well-formed URL starting with either http:// or https://. - If you specify FinalMobileUrls, you must also specify FinalUrls. - You may not specify FinalMobileUrls if the DevicePreference is set to 30001 (mobile). Add: Optional Update: Optional. If no value is set for the update, the prior setting is removed." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideoAdExtension/finalUrls> ;
    sh:name "final urls" ;
    sh:description "The landing page URL. The following validation rules apply to Final URLs and Final Mobile URLs. - The length of the URL is limited to 2,048 characters. The HTTP or HTTPS protocol string does count towards the 2,048 character limit. - You may specify up to 10 list items for both FinalUrls and FinalMobileUrls; however, only the first item in each list is used for delivery. The service allows up to 10 list items for potential forward compatibility. - Usage of '{' and '}' is only allowed to delineate tags, for example {lpurl}. - Final URLs must each be a well-formed URL starting with either http:// or https://. - If you specify FinalMobileUrls, you must also specify FinalUrls. - You may not specify FinalMobileUrls if the DevicePreference is set to 30001 (mobile). Add: Optional Update: Optional. If no value is set for the update, the prior setting is removed." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideoAdExtension/urlCustomParameters> ;
    sh:name "url custom parameters" ;
    sh:description "Your custom collection of key and value parameters for URL tracking. Microsoft Advertising will accept the first 8 CustomParameter objects that you include within the CustomParameters object, and if you include more than 8 custom parameters an error will be returned. Each CustomParameter includes Key and Value elements. For customers in the Custom Parameters Limit Increase Phase 3 pilot (GetCustomerPilotFeatures returns 635), Microsoft Advertising will accept the first 8 custom parameter key and value pairs that you include, and if you include more than 8 custom parameters an error will be returned. Add: Optional Update: Optional. If you set this element null, the previous setting will be deleted." ;
    sh:node microsoftads:CampaignManagementCustomParametersShape ;
    sh:class microsoftads:CampaignManagementCustomParameters ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideoAdExtension/trackingUrlTemplate> ;
    sh:name "tracking url template" ;
    sh:description "The tracking template to use as a default for all FinalUrls and FinalMobileUrls. The following validation rules apply to tracking templates. For more details about supported templates and parameters, see the Microsoft Advertising help article What tracking or URL parameters can I use? - Tracking templates defined for lower level entities e.g. ads override those set for higher level entities e.g. campaign. For more information, see Entity Limits. - The length of the tracking template is limited to 2,048 characters. The HTTP or HTTPS protocol string does count towards the 2,048 character limit. - The tracking template must be a well-formed URL beginning with one of the following: http://, https://, {lpurl}, or {unescapedlpurl}. - Microsoft Advertising does not validate whether custom parameters exist. If you use custom parameters in your tracking template and they do not exist, then the landing page URL will include the key and value placeholders of your custom parameters without substitution. For example, if your tracking template is https://tracker.example.com/?season={_season}&promocode={_promocode}&u={lpurl} and neither {_season} or {_promocode} are defined at the campaign, ad group, criterion, keyword, or ad level, then the landing page URL will be the same. Add: Optional Update: Optional. If you set this element null, the previous setting will be deleted." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideoAdExtension/finalUrlSuffix> ;
    sh:name "final url suffix" ;
    sh:description "The final URL suffix can include tracking parameters that will be appended to the end of your landing page URL. We recommend placing tracking parameters that your landing page requires in a final URL suffix so that your customers are always sent to your landing page. For more details and validation rules see Final URL Suffix in the technical guides. Add: Optional Update: Optional. If no value is set for the update, the prior setting is removed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideoAdExtension/finalAppUrls> ;
    sh:name "final app urls" ;
    sh:description "For future use." ;
    sh:node microsoftads:CampaignManagementAppUrlShape ;
    sh:class microsoftads:CampaignManagementAppUrl ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideoAdExtension/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. Forward compatibility changes will be noted here in future releases. There are currently no forward compatibility changes for this object." ;
    sh:node microsoftads:CampaignManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Campaign Management Video Asset
microsoftads:CampaignManagementVideoAssetShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementVideoAsset ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideoAsset/id> ;
    sh:name "id" ;
    sh:description "The unique Microsoft Advertising identifier for the asset in a Microsoft Advertising account. The same image asset identifier can be used multiple times in the same ad for different aspect ratios, and can also be used by multiple ads in the same Microsoft Advertising account. Add: Read-only. Even if the asset already exists and you specify an invalid identifier, this value will be ignored. Update: Read-only. Even if the asset already exists and you specify an invalid identifier, this value will be ignored." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideoAsset/name> ;
    sh:name "name" ;
    sh:description "For future use." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideoAsset/type> ;
    sh:name "type" ;
    sh:description "The type of the asset. This value is VideoAsset when you retrieve a video asset. For more information about asset types, see the Asset Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideoAsset/subType> ;
    sh:name "sub type" ;
    sh:description "Represents the aspect ratio for this Video asset. The possible subtype values include VideoMedia16X9, VideoMedia5X4, VideoMedia1X1, VideoMedia4X5, VideoMedia9X16 Add: Required Update: Read-only. You cannot update the subtype while updating VideoAsset." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVideoAsset/thumbnailImage> ;
    sh:name "thumbnail image" ;
    sh:description "The image to use as a thumbnail." ;
    sh:node microsoftads:CampaignManagementImageAssetShape ;
    sh:class microsoftads:CampaignManagementImageAsset ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Campaign Management Webpage
microsoftads:CampaignManagementWebpageShape a sh:NodeShape ;
  sh:targetClass microsoftads:CampaignManagementWebpage ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementWebpage/type> ;
    sh:name "type" ;
    sh:description "The type of the criterion. This value is Webpage when you retrieve a webpage criterion. For more information about criterion types, see the Criterion Data Object Remarks. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementWebpage/parameter> ;
    sh:name "parameter" ;
    sh:description "The webpage parameter that contains a list of webpage conditions or criteria. Add: Required Update: Optional. You can update the criterion name, but cannot update the webpage conditions. To update the conditions you must delete the criterion and add a new criterion." ;
    sh:node microsoftads:CampaignManagementWebpageParameterShape ;
    sh:class microsoftads:CampaignManagementWebpageParameter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Billing Ad Api Error
microsoftads:CustomerBillingAdApiErrorShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingAdApiError ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingAdApiError/code> ;
    sh:name "code" ;
    sh:description "A numeric error code that identifies the error." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingAdApiError/message> ;
    sh:name "message" ;
    sh:description "A message that describes the error. For more information about troubleshooting and error handling, see Handling Service Errors and Exceptions and Operation Error Codes." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingAdApiError/detail> ;
    sh:name "detail" ;
    sh:description "A message that contains additional details about the error. This string can be empty." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingAdApiError/errorCode> ;
    sh:name "error code" ;
    sh:description "A symbolic string constant that identifies the error. For example, UserIsNotAuthorized." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Billing Ad Api Fault Detail
microsoftads:CustomerBillingAdApiFaultDetailShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingAdApiFaultDetail ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingAdApiFaultDetail/trackingId> ;
    sh:name "tracking id" ;
    sh:description "The identifier of the log entry that contains the details of the API call." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingAdApiFaultDetail/errors> ;
    sh:name "errors" ;
    sh:description "An array of AdApiError objects that contains the details that explain why the service operation failed." ;
    sh:node microsoftads:CustomerBillingAdApiErrorShape ;
    sh:class microsoftads:CustomerBillingAdApiError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingAdApiFaultDetail/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Billing Add Insertion Order Request
microsoftads:CustomerBillingAddInsertionOrderRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingAddInsertionOrderRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingAddInsertionOrderRequest/insertionOrder> ;
    sh:name "insertion order" ;
    sh:description "An insertion order to add to the account." ;
    sh:node microsoftads:CustomerBillingInsertionOrderShape ;
    sh:class microsoftads:CustomerBillingInsertionOrder ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Billing Insertion Order
microsoftads:CustomerBillingInsertionOrderShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingInsertionOrder ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingInsertionOrder/accountId> ;
    sh:name "account id" ;
    sh:description "The identifier of the account to which the insertion order applies. You cannot update the account identifier after you create the insertion order. Add: Required Update: Read-only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingInsertionOrder/bookingCountryCode> ;
    sh:name "booking country code" ;
    sh:description "Reserved for internal use. Add: Required for some accounts; Optional for some accounts. Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingInsertionOrder/comment> ;
    sh:name "comment" ;
    sh:description "A description of the insertion order. The description is limited to 100 characters. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingInsertionOrder/endDate> ;
    sh:name "end date" ;
    sh:description "The date that the insertion order expires. The end date must be later than the start date. The date is stored in Coordinated Universal Time (UTC). Only the month, day, and year of the specified string are used. If you specify the hour, minutes, and seconds of a date they will be ignored. For information about the format of the date and time, see the dateTime entry in Primitive XML Data Types. Note: If the insertion order has no end date, EndDate is empty. Adding or updating unlimited insertion orders isn't supported. EndDate operates in read-only mode. Add: Required Update: Optional. If you attempt to update the StartDate or EndDate of an insertion order that is part of a recurring series the API will return an error." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingInsertionOrder/id> ;
    sh:name "id" ;
    sh:description "A system-generated identifier that identifies the insertion order. Add: Read-only Update: Read-only and Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingInsertionOrder/lastModifiedByUserId> ;
    sh:name "last modified by user id" ;
    sh:description "An identifier of the last user to update the insertion order. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingInsertionOrder/lastModifiedTime> ;
    sh:name "last modified time" ;
    sh:description "The date and time that the insertion order was last updated. The date is stored in Coordinated Universal Time (UTC). For information about the format of the date and time, see the dateTime entry in Primitive XML Data Types. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingInsertionOrder/notificationThreshold> ;
    sh:name "notification threshold" ;
    sh:description "A percentage of the budget that has been spent. Specify the percentage as a value from 0 to 100. Notification is sent when the threshold is reached. For example, if you set the threshold to 70, the Billing service sends notification when you have spent 70 percent of the budget. If you do not want to receive notification, set to NULL. Reserved for internal use. Add: Optional Update: Optional" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingInsertionOrder/referenceId> ;
    sh:name "reference id" ;
    sh:description "Reserved for internal use only. Add: Optional Update: Optional" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingInsertionOrder/spendCapAmount> ;
    sh:name "spend cap amount" ;
    sh:description "The budget for this insertion order. The budget is a hard limit. When the account reaches this limit and there is not another insertion order available, the account's lifecycle status value is set to Pause. This element is empty if the insertion order has unlimited budget. The budget is the maximum amount of money you want to spend for an insertion order. For insertion orders with unlimited budget, your budget is bounded by your credit limit. In that case each campaign's daily budget determines the maximum spend. Note: Adding or updating unlimited insertion orders isn't supported. SpendCapAmount operates in read-only mode. Add: Required Update: Optional" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingInsertionOrder/startDate> ;
    sh:name "start date" ;
    sh:description "The date that the insertion order can begin accruing charges. The start date must be later than the current date. The date is stored in Coordinated Universal Time (UTC). Only the month, day, and year of the specified string are used. If you specify the hour, minutes, and seconds of a date they will be ignored. For information about the format of the date and time, see the dateTime entry in Primitive XML Data Types. Add: Required Update: Optional. You can only update the start date via this element if the Status is PendingUserReview. If the start date has already passed, then you cannot change it. If you attempt to update the StartDate or EndDate of an insertion order that is part of a recurring series the API will return an error." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingInsertionOrder/name> ;
    sh:name "name" ;
    sh:description "The friendly name that can be used to reference this insertion order. The name can contain a maximum of 100 characters. The name does not need to be unique compared to other insertion orders for the customer. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingInsertionOrder/status> ;
    sh:name "status" ;
    sh:description "The status of the insertion order. Add: Read-only. Insertion orders that you create are immediately set to Active, NotStarted, or Declined. Update: Required to approve or decline an insertion order that is not yet approved, or cancel an insertion order that has already be approved. You can only approve or decline via this element if the current status is set to PendingUserReview. You can only cancel via this element if the current status is set to Active, Exhausted, or NotStarted. Once the insertion order status is Active, Exhausted, Expired, or NotStarted, then you can either make new changes or approve or decline the current pending changes via the PendingChanges element. When you call UpdateInsertionOrder you can either set this Status element or modify other elements of this object, but you cannot change the status in parallel with other property updates. If you update the Status of an insertion order that is part of a recurring series, the status update will be applied to all insertion orders in the series." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "PendingUserReview" "Active" "Declined" "Expired" "Canceled" "NotStarted" "Exhausted" "Queued" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingInsertionOrder/purchaseOrder> ;
    sh:name "purchase order" ;
    sh:description "A purchase order value that can be used to reference this insertion order in monthly invoices. This value will be printed as the purchase order in the monthly invoices. The purchase order can contain a maximum of 50 characters. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingInsertionOrder/pendingChanges> ;
    sh:name "pending changes" ;
    sh:description "Can be used to manage changes for an approved insertion order with status set to either Active, Exhausted, Expired, or NotStarted. Add: Read-only Update: Optional" ;
    sh:node microsoftads:CustomerBillingInsertionOrderPendingChangesShape ;
    sh:class microsoftads:CustomerBillingInsertionOrderPendingChanges ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingInsertionOrder/accountNumber> ;
    sh:name "account number" ;
    sh:description "The system-generated account number that is used to identify the account in the Microsoft Advertising web application. The account number has the form xxxxxxxx, where xxxxxxxx is a series of any eight alphanumeric characters. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingInsertionOrder/budgetRemaining> ;
    sh:name "budget remaining" ;
    sh:description "The running balance of the insertion order. The running balance value is initially the same as the SpendCapAmount, and then decreases each time an ad in the account is served. This element is empty if the insertion order has unlimited budget. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingInsertionOrder/budgetSpent> ;
    sh:name "budget spent" ;
    sh:description "The remaining balance of the insertion order. The remaining balance is initially 0 (zero), and then increases towards the SpendCapAmount each time an ad in the account is served. This element is empty if the insertion order has unlimited budget. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingInsertionOrder/budgetRemainingPercent> ;
    sh:name "budget remaining percent" ;
    sh:description "The percent of budget remaining for the insertion order. This value is calculated as BudgetRemaining / SpendCapAmount. This element is empty if the insertion order has unlimited budget. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingInsertionOrder/budgetSpentPercent> ;
    sh:name "budget spent percent" ;
    sh:description "The percent of budget spent for the insertion order. This value is calculated as BudgetSpent / SpendCapAmount. This element is empty if the insertion order has unlimited budget. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingInsertionOrder/seriesName> ;
    sh:name "series name" ;
    sh:description "The name of the recurring insertion order series. The name can contain a maximum of 100 characters. Even if the insertion order is later removed from the recurring series, this element will continue to reflect the name of the series it was created in. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingInsertionOrder/isInSeries> ;
    sh:name "is in series" ;
    sh:description "Determines whether the insertion order is in a recurring series. If the value is True, the insertion order is part of a recurring series. If you attempt to update the StartDate or EndDate of an insertion order that is part of a recurring series the API will return an error. If you update the Status of an insertion order that is part of a recurring series, the status update will be applied to all insertion orders in the series. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingInsertionOrder/seriesFrequencyType> ;
    sh:name "series frequency type" ;
    sh:description "Determines how an order recurs in the series. The possible values are Monthly, BiMonthly, Quarterly, and Yearly. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingInsertionOrder/isUnlimited> ;
    sh:name "is unlimited" ;
    sh:description "Determines whether the insertion order has unlimited budget. If the value is True, the insertion order will have unlimited budget and the SpendCapAmount of this insertion order will be ignored. Add: Optional Update: Optional" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingInsertionOrder/isEndless> ;
    sh:name "is endless" ;
    sh:description "Determines whether the insertion order has no end date. If the value is True, the insertion order will have no end date and the EndDate of this insertion order will be ignored. Add: Optional Update: Optional" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Billing Insertion Order Pending Changes
microsoftads:CustomerBillingInsertionOrderPendingChangesShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingInsertionOrderPendingChanges ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingInsertionOrderPendingChanges/comment> ;
    sh:name "comment" ;
    sh:description "A description of the insertion order. The description is limited to 100 characters. Add: Read-only Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingInsertionOrderPendingChanges/endDate> ;
    sh:name "end date" ;
    sh:description "The date that the insertion order expires. The end date must be later than the start date. The date is stored in Coordinated Universal Time (UTC). Only the month, day, and year of the specified string are used. If you specify the hour, minutes, and seconds of a date they will be ignored. For information about the format of the date and time, see the dateTime entry in Primitive XML Data Types. This element is empty if the insertion order has no end date. Add: Read-only Update: Optional" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingInsertionOrderPendingChanges/requestedByUserId> ;
    sh:name "requested by user id" ;
    sh:description "An identifier of the last user to request a change to the insertion order. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingInsertionOrderPendingChanges/modifiedDateTime> ;
    sh:name "modified date time" ;
    sh:description "The date and time that the insertion order change request was submitted. The date is stored in Coordinated Universal Time (UTC). For information about the format of the date and time, see the dateTime entry in Primitive XML Data Types. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingInsertionOrderPendingChanges/notificationThreshold> ;
    sh:name "notification threshold" ;
    sh:description "A percentage of the budget that has been spent. Specify the percentage as a value from 0 to 100. Notification is sent when the threshold is reached. For example, if you set the threshold to 70, the Billing service sends notification when you have spent 70 percent of the budget. If you do not want to receive notification, set to NULL. Reserved for internal use. Add: Read-only Update: Optional" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingInsertionOrderPendingChanges/referenceId> ;
    sh:name "reference id" ;
    sh:description "Internal use only. Add: Read-only Update: Optional" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingInsertionOrderPendingChanges/spendCapAmount> ;
    sh:name "spend cap amount" ;
    sh:description "The budget for this insertion order. The budget is a hard limit. When the account reaches this limit and there is not another insertion order available, the account's lifecycle status value is set to Pause. This element is empty if the insertion order has unlimited budget. Add: Read-only Update: Optional" ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingInsertionOrderPendingChanges/startDate> ;
    sh:name "start date" ;
    sh:description "The date that the insertion order can begin accruing charges. The start date must be later than the current date. The date is stored in Coordinated Universal Time (UTC). Only the month, day, and year of the specified string are used. If you specify the hour, minutes, and seconds of a date they will be ignored. For information about the format of the date and time, see the dateTime entry in Primitive XML Data Types. Add: Read-only Update: Optional. You can only update the start date via this element if the Status element of the InsertionOrder is NotStarted. If the start date has already passed, then you cannot change it." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingInsertionOrderPendingChanges/name> ;
    sh:name "name" ;
    sh:description "The friendly name that can be used to reference this insertion order. The name can contain a maximum of 100 characters. The name does not need to be unique compared to other insertion orders for the customer. Add: Read-only Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingInsertionOrderPendingChanges/purchaseOrder> ;
    sh:name "purchase order" ;
    sh:description "A purchase order value that can be used to reference this insertion order in monthly invoices. This value will be printed as the purchase order in the monthly invoices. The purchase order can contain a maximum of 50 characters. Add: Read-only Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingInsertionOrderPendingChanges/changeStatus> ;
    sh:name "change status" ;
    sh:description "Can be used to accept or decline the insertion order pending changes. When you call UpdateInsertionOrder you can either set this ChangeStatus element or modify other elements of this object, but you cannot change the status in parallel with other property updates." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "PendingUserReview" "ApproveChanges" "DeclineChanges" "CancelChanges" ) ;
  ] .

# Shape for Customer Billing Add Insertion Order Response
microsoftads:CustomerBillingAddInsertionOrderResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingAddInsertionOrderResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingAddInsertionOrderResponse/insertionOrderId> ;
    sh:name "insertion order id" ;
    sh:description "A long value that represents the identifier for the insertion order that was added." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingAddInsertionOrderResponse/createTime> ;
    sh:name "create time" ;
    sh:description "Identifies the server time in UTC when the insertion order was added." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Billing Api Batch Fault
microsoftads:CustomerBillingApiBatchFaultShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingApiBatchFault ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingApiBatchFault/trackingId> ;
    sh:name "tracking id" ;
    sh:description "The identifier of the log entry that contains the details of the API call." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingApiBatchFault/batchErrors> ;
    sh:name "batch errors" ;
    sh:description "An array of BatchError objects that identifies the items in the batch of items in the request message that caused the operation to fail. Each object contains the details that explain why the item caused the failure." ;
    sh:node microsoftads:CustomerBillingBatchErrorShape ;
    sh:class microsoftads:CustomerBillingBatchError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingApiBatchFault/operationErrors> ;
    sh:name "operation errors" ;
    sh:description "An array of OperationError objects that contains the reasons that explain why the service operation failed when the error is not related to a specific item in the batch of items." ;
    sh:node microsoftads:CustomerBillingOperationErrorShape ;
    sh:class microsoftads:CustomerBillingOperationError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Customer Billing Batch Error
microsoftads:CustomerBillingBatchErrorShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingBatchError ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingBatchError/code> ;
    sh:name "code" ;
    sh:description "A numeric error code that identifies the error." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingBatchError/details> ;
    sh:name "details" ;
    sh:description "A message that provides additional details about the batch error. This string can be empty." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingBatchError/index> ;
    sh:name "index" ;
    sh:description "The zero-based index of the item in the batch of items in the request message that failed." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingBatchError/message> ;
    sh:name "message" ;
    sh:description "A message that describes the error. For more information about troubleshooting and error handling, see Handling Service Errors and Exceptions and Operation Error Codes." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Billing Operation Error
microsoftads:CustomerBillingOperationErrorShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingOperationError ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingOperationError/code> ;
    sh:name "code" ;
    sh:description "A numeric error code that identifies the error." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingOperationError/details> ;
    sh:name "details" ;
    sh:description "A message that provides additional details about the error. This string can be empty." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingOperationError/message> ;
    sh:name "message" ;
    sh:description "A message that describes the error. For more information about troubleshooting and error handling, see Handling Service Errors and Exceptions and Operation Error Codes." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Billing Api Fault
microsoftads:CustomerBillingApiFaultShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingApiFault ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingApiFault/trackingId> ;
    sh:name "tracking id" ;
    sh:description "The identifier of the log entry that contains the details of the API call." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingApiFault/operationErrors> ;
    sh:name "operation errors" ;
    sh:description "An array of OperationError objects that contains the reasons that explain why the service operation failed when the error is not related to a specific item in the batch of items." ;
    sh:node microsoftads:CustomerBillingOperationErrorShape ;
    sh:class microsoftads:CustomerBillingOperationError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingApiFault/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Billing Application Fault
microsoftads:CustomerBillingApplicationFaultShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingApplicationFault ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingApplicationFault/trackingId> ;
    sh:name "tracking id" ;
    sh:description "The identifier of the log entry that contains the details of the API call." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingApplicationFault/errors> ;
    sh:name "errors" ;
    sh:node microsoftads:CustomerBillingAdApiErrorShape ;
    sh:class microsoftads:CustomerBillingAdApiError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingApplicationFault/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingApplicationFault/batchErrors> ;
    sh:name "batch errors" ;
    sh:node microsoftads:CustomerBillingBatchErrorShape ;
    sh:class microsoftads:CustomerBillingBatchError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingApplicationFault/operationErrors> ;
    sh:name "operation errors" ;
    sh:node microsoftads:CustomerBillingOperationErrorShape ;
    sh:class microsoftads:CustomerBillingOperationError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Customer Billing Application Fault Base
microsoftads:CustomerBillingApplicationFaultBaseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingApplicationFaultBase ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingApplicationFaultBase/trackingId> ;
    sh:name "tracking id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Billing Billing Document
microsoftads:CustomerBillingBillingDocumentShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingBillingDocument ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingBillingDocument/data> ;
    sh:name "data" ;
    sh:description "The billing document." ;
    sh:datatype xsd:base64Binary ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingBillingDocument/id> ;
    sh:name "id" ;
    sh:description "The identifier of the billing document." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingBillingDocument/type> ;
    sh:name "type" ;
    sh:description "The format of the billing document." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Xml" "Pdf" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingBillingDocument/number> ;
    sh:name "number" ;
    sh:description "The number of the billing document." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Billing Billing Document Info
microsoftads:CustomerBillingBillingDocumentInfoShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingBillingDocumentInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingBillingDocumentInfo/accountId> ;
    sh:name "account id" ;
    sh:description "The identifier of the account for which the billing document was generated." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingBillingDocumentInfo/accountName> ;
    sh:name "account name" ;
    sh:description "The account name." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingBillingDocumentInfo/accountNumber> ;
    sh:name "account number" ;
    sh:description "The account number." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingBillingDocumentInfo/amount> ;
    sh:name "amount" ;
    sh:description "The amount of the billing document." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingBillingDocumentInfo/currencyCode> ;
    sh:name "currency code" ;
    sh:description "The currency of the billing document. For possible values, see Currencies." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingBillingDocumentInfo/documentDate> ;
    sh:name "document date" ;
    sh:description "The date of the billing document." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingBillingDocumentInfo/documentId> ;
    sh:name "document id" ;
    sh:description "An identifier of the billing document." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingBillingDocumentInfo/customerId> ;
    sh:name "customer id" ;
    sh:description "The identifier of the customer for which the billing document was generated." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingBillingDocumentInfo/campaignId> ;
    sh:name "campaign id" ;
    sh:description "The campaign identifier." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingBillingDocumentInfo/documentNumber> ;
    sh:name "document number" ;
    sh:description "The number of the billing document." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Billing Billing Group
microsoftads:CustomerBillingBillingGroupShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingBillingGroup ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingBillingGroup/billingGroupId> ;
    sh:name "billing group id" ;
    sh:description "Reserved." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingBillingGroup/customerId> ;
    sh:name "customer id" ;
    sh:description "Reserved." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingBillingGroup/name> ;
    sh:name "name" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingBillingGroup/description> ;
    sh:name "description" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Billing Check Feature Adoption Coupon Eligibility Request
microsoftads:CustomerBillingCheckFeatureAdoptionCouponEligibilityRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingCheckFeatureAdoptionCouponEligibilityRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingCheckFeatureAdoptionCouponEligibilityRequest/featureId> ;
    sh:name "feature id" ;
    sh:description "The identifier of the feature." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingCheckFeatureAdoptionCouponEligibilityRequest/accountIds> ;
    sh:name "account ids" ;
    sh:description "A list of account identifiers to check for eligibility." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Customer Billing Check Feature Adoption Coupon Eligibility Response
microsoftads:CustomerBillingCheckFeatureAdoptionCouponEligibilityResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingCheckFeatureAdoptionCouponEligibilityResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingCheckFeatureAdoptionCouponEligibilityResponse/eligibleAccountIds> ;
    sh:name "eligible account ids" ;
    sh:description "The IDs of eligible accounts." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Customer Billing Claim Feature Adoption Coupons Request
microsoftads:CustomerBillingClaimFeatureAdoptionCouponsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingClaimFeatureAdoptionCouponsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingClaimFeatureAdoptionCouponsRequest/accountCouponPairs> ;
    sh:name "account coupon pairs" ;
    sh:description "A list of account id and coupon code pairs." ;
    sh:node microsoftads:CustomerBillingKeyValueEntityOflongAndstringShape ;
    sh:class microsoftads:CustomerBillingKeyValueEntityOflongAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Customer Billing Key Value Entity Oflong Andstring
microsoftads:CustomerBillingKeyValueEntityOflongAndstringShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingKeyValueEntityOflongAndstring ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingKeyValueEntityOflongAndstring/key> ;
    sh:name "key" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingKeyValueEntityOflongAndstring/value> ;
    sh:name "value" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Billing Claim Feature Adoption Coupons Response
microsoftads:CustomerBillingClaimFeatureAdoptionCouponsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingClaimFeatureAdoptionCouponsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingClaimFeatureAdoptionCouponsResponse/claimedDateByAccountId> ;
    sh:name "claimed date by account id" ;
    sh:description "The date a claim was made for an account." ;
    sh:node microsoftads:CustomerBillingKeyValueEntityOflongAndDateTimeShape ;
    sh:class microsoftads:CustomerBillingKeyValueEntityOflongAndDateTime ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingClaimFeatureAdoptionCouponsResponse/operationErrors> ;
    sh:name "operation errors" ;
    sh:description "An array of OperationError objects that contains the reasons that explain why the service operation failed when the error is not related to a specific item in the batch of items." ;
    sh:node microsoftads:CustomerBillingOperationErrorShape ;
    sh:class microsoftads:CustomerBillingOperationError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingClaimFeatureAdoptionCouponsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of OperationError objects that correspond to any email addresses where the coupon code could not be sent to. The list can be empty if there were no errors." ;
    sh:node <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingClaimFeatureAdoptionCouponsResponse/partialErrors/ListLevel1Shape> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Billing Key Value Entity Oflong And Date Time
microsoftads:CustomerBillingKeyValueEntityOflongAndDateTimeShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingKeyValueEntityOflongAndDateTime ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingKeyValueEntityOflongAndDateTime/key> ;
    sh:name "key" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingKeyValueEntityOflongAndDateTime/value> ;
    sh:name "value" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Billing Coupon
microsoftads:CustomerBillingCouponShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingCoupon ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingCoupon/couponCode> ;
    sh:name "coupon code" ;
    sh:description "The code that can be used to redeem the coupon." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingCoupon/className> ;
    sh:name "class name" ;
    sh:description "The class name that the coupon was minted from." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingCoupon/couponType> ;
    sh:name "coupon type" ;
    sh:description "The coupon's type. Supported types include: Acquisition: Acquisition coupon is used to acquire new customers. Only new customers can redeem this coupon. Retention: Retention coupons can be used by both new and existing customers." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingCoupon/amount> ;
    sh:name "amount" ;
    sh:description "The value amount of the coupon. The CurrencyCode element determines the currency." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingCoupon/spendThreshold> ;
    sh:name "spend threshold" ;
    sh:description "The coupon can't be consumed until the account's spend reaches this threshold from the time coupon was redeemed. The CurrencyCode element determines the currency." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingCoupon/currencyCode> ;
    sh:name "currency code" ;
    sh:description "The currency of the coupon amount and spend threshold. For possible values, see Currencies." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingCoupon/percentOff> ;
    sh:name "percent off" ;
    sh:description "The percent off coupon value. This is only applicable for a percentage coupon. For example, 10.0 represents a 10% discount." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingCoupon/activeDuration> ;
    sh:name "active duration" ;
    sh:description "Active days since coupon has been redeemed. After these days, the coupon can't be consumed." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingCoupon/expirationDate> ;
    sh:name "expiration date" ;
    sh:description "The coupon expiration date. After this date, the coupon can't be consumed." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingCoupon/startDate> ;
    sh:name "start date" ;
    sh:description "The coupon cannot be redeemed before the start date." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingCoupon/endDate> ;
    sh:name "end date" ;
    sh:description "The last date that the coupon can be redeemed." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingCoupon/sendToEmail> ;
    sh:name "send to email" ;
    sh:description "The email address the coupon has been emailed by the DispatchCoupons operation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingCoupon/sendToDate> ;
    sh:name "send to date" ;
    sh:description "The date the coupon was emailed by the DispatchCoupons operation." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingCoupon/isRedeemed> ;
    sh:name "is redeemed" ;
    sh:description "Has the coupon been redeemed. Value will be true if the coupon has been redeemed, and otherwise the value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingCoupon/redemptionInfo> ;
    sh:name "redemption info" ;
    sh:description "Contains redemption and consuming details. Returned only when the account where the coupon was redeemed bills to the coupon's owner customer." ;
    sh:node microsoftads:CustomerBillingCouponRedemptionShape ;
    sh:class microsoftads:CustomerBillingCouponRedemption ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingCoupon/claimInfo> ;
    sh:name "claim info" ;
    sh:description "The AccountId, AccountNumber, and ClaimDate of the claim." ;
    sh:node microsoftads:CustomerBillingCouponClaimInfoShape ;
    sh:class microsoftads:CustomerBillingCouponClaimInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Billing Coupon Redemption
microsoftads:CustomerBillingCouponRedemptionShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingCouponRedemption ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingCouponRedemption/accountId> ;
    sh:name "account id" ;
    sh:description "The identifier of the account to which the coupon was redeemed." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingCouponRedemption/accountNumber> ;
    sh:name "account number" ;
    sh:description "The account number." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingCouponRedemption/spendToThreshold> ;
    sh:name "spend to threshold" ;
    sh:description "The coupon can't be consumed until the account's spend reaches this threshold from the time coupon was redeemed. The CurrencyCode element determines the currency." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingCouponRedemption/balance> ;
    sh:name "balance" ;
    sh:description "The remaining amount of the coupon in account currency." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingCouponRedemption/currencyCode> ;
    sh:name "currency code" ;
    sh:description "The currency of the coupon balance and spend threshold." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingCouponRedemption/redemptionDate> ;
    sh:name "redemption date" ;
    sh:description "The date that coupon was redeemed to the account." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingCouponRedemption/expirationDate> ;
    sh:name "expiration date" ;
    sh:description "The coupon expiration date. After this date, the coupon can't be consumed." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingCouponRedemption/activationDate> ;
    sh:name "activation date" ;
    sh:description "The date that the coupon is ready to be consumed." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Billing Coupon Claim Info
microsoftads:CustomerBillingCouponClaimInfoShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingCouponClaimInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingCouponClaimInfo/accountId> ;
    sh:name "account id" ;
    sh:description "The identifier of the account related to the claim." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingCouponClaimInfo/accountNumber> ;
    sh:name "account number" ;
    sh:description "The account number of the account related to the claim." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingCouponClaimInfo/claimDate> ;
    sh:name "claim date" ;
    sh:description "The date of the claim." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Billing Coupon Info Data
microsoftads:CustomerBillingCouponInfoDataShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingCouponInfoData ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingCouponInfoData/accountId> ;
    sh:name "account id" ;
    sh:description "The account ID." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingCouponInfoData/couponId> ;
    sh:name "coupon id" ;
    sh:description "The coupon ID." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingCouponInfoData/claimDate> ;
    sh:name "claim date" ;
    sh:description "The coupon's claim date." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingCouponInfoData/status> ;
    sh:name "status" ;
    sh:description "The coupon's status." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingCouponInfoData/redemptionDate> ;
    sh:name "redemption date" ;
    sh:description "The date the coupon was redeemed." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingCouponInfoData/expirationDate> ;
    sh:name "expiration date" ;
    sh:description "The coupon's expiration date." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingCouponInfoData/percentOff> ;
    sh:name "percent off" ;
    sh:description "The coupon's discount percentage." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingCouponInfoData/couponValue> ;
    sh:name "coupon value" ;
    sh:description "The coupon's value." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingCouponInfoData/upfrontSpending> ;
    sh:name "upfront spending" ;
    sh:description "The value of the upfront spending coupon." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingCouponInfoData/activeDuration> ;
    sh:name "active duration" ;
    sh:description "The length of time in which the coupon may be used." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingCouponInfoData/spendToThreshold> ;
    sh:name "spend to threshold" ;
    sh:description "The amount that must be spent before the coupon is applied." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingCouponInfoData/startDate> ;
    sh:name "start date" ;
    sh:description "The coupon's start date." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingCouponInfoData/endDate> ;
    sh:name "end date" ;
    sh:description "The coupon's end date." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingCouponInfoData/balance> ;
    sh:name "balance" ;
    sh:description "The balance after the coupon is applied." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingCouponInfoData/currencyCode> ;
    sh:name "currency code" ;
    sh:description "The currency code for the coupon." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingCouponInfoData/featureId> ;
    sh:name "feature id" ;
    sh:description "The feature ID attached to the coupon." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingCouponInfoData/couponType> ;
    sh:name "coupon type" ;
    sh:description "The type of coupon." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Billing Dispatch Coupons Request
microsoftads:CustomerBillingDispatchCouponsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingDispatchCouponsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingDispatchCouponsRequest/sendToEmails> ;
    sh:name "send to emails" ;
    sh:description "Email addresses to which the coupons are dispatched. Email address count should not exceed 1000." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingDispatchCouponsRequest/customerId> ;
    sh:name "customer id" ;
    sh:description "The identifier of the customer that the coupon class belongs to." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingDispatchCouponsRequest/couponClassName> ;
    sh:name "coupon class name" ;
    sh:description "The name of coupon class whose available coupons are dispatched." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Billing Dispatch Coupons Response
microsoftads:CustomerBillingDispatchCouponsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingDispatchCouponsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingDispatchCouponsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of BatchError objects that correspond to any email addresses where the coupon code could not be sent to. The list can be empty if there were no errors." ;
    sh:node microsoftads:CustomerBillingBatchErrorShape ;
    sh:class microsoftads:CustomerBillingBatchError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Customer Billing Distribute Coupons Request
microsoftads:CustomerBillingDistributeCouponsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingDistributeCouponsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingDistributeCouponsRequest/accountIds> ;
    sh:name "account ids" ;
    sh:description "The account IDs." ;
    sh:datatype xsd:int ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingDistributeCouponsRequest/className> ;
    sh:name "class name" ;
    sh:description "The class name of the distributed coupons." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingDistributeCouponsRequest/featureId> ;
    sh:name "feature id" ;
    sh:description "The feature ID attached to the coupon." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingDistributeCouponsRequest/sendNotification> ;
    sh:name "send notification" ;
    sh:description "Whether or not a notification is sent." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Billing Distribute Coupons Response
microsoftads:CustomerBillingDistributeCouponsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingDistributeCouponsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingDistributeCouponsResponse/operationErrors> ;
    sh:name "operation errors" ;
    sh:description "An array of operation errors that contains the reasons that explain why the service operation failed when the error is not related to a specific item in the batch of items." ;
    sh:node microsoftads:CustomerBillingOperationErrorShape ;
    sh:class microsoftads:CustomerBillingOperationError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingDistributeCouponsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of OperationError objects that correspond to any email addresses where the coupon could not be distributed. The list can be empty if there were no errors." ;
    sh:node <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingDistributeCouponsResponse/partialErrors/ListLevel1Shape> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Billing Get Account Monthly Spend Request
microsoftads:CustomerBillingGetAccountMonthlySpendRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingGetAccountMonthlySpendRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingGetAccountMonthlySpendRequest/accountId> ;
    sh:name "account id" ;
    sh:description "The identifier of the account that contains the spend information to get. The account must use the invoice payment method; credit card accounts are not supported. If the account identifier belongs to an aggregator, the operation sums the account balances for all the accounts of all the customers that the aggregator manages. If the aggregator has ten customers and each customer has ten accounts, the operation returns the sum of the monthly spend of all 100 accounts. To get the monthly spend of a single account of a customer that the aggregator manages, set the AccountId element to the specified account identifier. To get the monthly spend of all the accounts of a customer that the aggregator manages, call this operation for each account, and then sum the monthly spend amounts." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingGetAccountMonthlySpendRequest/monthYear> ;
    sh:name "month year" ;
    sh:description "The month and year for which you want to get the monthly spend information (the operation ignores the day and time values). The service uses the month and year components corresponding to the specified dateTime. For example 2020-05-15T00:00:00 and 2020-05 are both valid and will return the same results. If you specify the current month, the operation returns the month-to-date spend amount. For example, if the current date is May 15, 2020 and you set MonthYear to May 2020, the operation returns the spend amount for May 1 to May 15, inclusively. You cannot specify a future month and year. If you specify a prior month for which there is no data, the call returns 0 (zero). The spend amount can span multiple insertion orders (IOs). If the credits are greater than the actual spend, the returned monthly spend amount is a negative value." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Billing Get Account Monthly Spend Response
microsoftads:CustomerBillingGetAccountMonthlySpendResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingGetAccountMonthlySpendResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingGetAccountMonthlySpendResponse/amount> ;
    sh:name "amount" ;
    sh:description "The amount spent by the account in the specified period. The account must be Yahoo!-managed. If the account is not Yahoo!-managed, the return value is 0." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Billing Get Billing Documents Info Request
microsoftads:CustomerBillingGetBillingDocumentsInfoRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingGetBillingDocumentsInfoRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingGetBillingDocumentsInfoRequest/accountIds> ;
    sh:name "account ids" ;
    sh:description "A list of identifiers of the accounts whose billing document information you want to get." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingGetBillingDocumentsInfoRequest/startDate> ;
    sh:name "start date" ;
    sh:description "The start date to use for specifying the billing documents to get. The start date cannot be later than the end date. You must specify the date in Coordinated Universal Time (UTC)." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingGetBillingDocumentsInfoRequest/endDate> ;
    sh:name "end date" ;
    sh:description "The end date to use for specifying the billing documents to get. To specify today's date as the end date, set EndDate to NULL. The end date cannot be earlier than the start date. You must specify the date in Coordinated Universal Time (UTC)." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingGetBillingDocumentsInfoRequest/returnInvoiceNumber> ;
    sh:name "return invoice number" ;
    sh:description "Include the invoice number with the request." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Billing Get Billing Documents Info Response
microsoftads:CustomerBillingGetBillingDocumentsInfoResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingGetBillingDocumentsInfoResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingGetBillingDocumentsInfoResponse/billingDocumentsInfo> ;
    sh:name "billing documents info" ;
    sh:description "The list of billing document information objects that were retrieved." ;
    sh:node microsoftads:CustomerBillingBillingDocumentInfoShape ;
    sh:class microsoftads:CustomerBillingBillingDocumentInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Customer Billing Get Billing Documents Request
microsoftads:CustomerBillingGetBillingDocumentsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingGetBillingDocumentsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingGetBillingDocumentsRequest/billingDocumentsInfo> ;
    sh:name "billing documents info" ;
    sh:description "Identifies the list of billing documents that you want to get. Each BillingDocumentInfo object in the list must contain the CustomerId and DocumentId. The other properties are ignored. You can include up to 25 items in the list." ;
    sh:node microsoftads:CustomerBillingBillingDocumentInfoShape ;
    sh:class microsoftads:CustomerBillingBillingDocumentInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingGetBillingDocumentsRequest/type> ;
    sh:name "type" ;
    sh:description "The format to use to generate the billing document. For example, you can generate the billing document in PDF or XML format." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Xml" "Pdf" ) ;
  ] .

# Shape for Customer Billing Get Billing Documents Response
microsoftads:CustomerBillingGetBillingDocumentsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingGetBillingDocumentsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingGetBillingDocumentsResponse/billingDocuments> ;
    sh:name "billing documents" ;
    sh:description "The list of billing documents that were retrieved." ;
    sh:node microsoftads:CustomerBillingBillingDocumentShape ;
    sh:class microsoftads:CustomerBillingBillingDocument ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Customer Billing Get Billing Groups Request
microsoftads:CustomerBillingGetBillingGroupsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingGetBillingGroupsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingGetBillingGroupsRequest/customerId> ;
    sh:name "customer id" ;
    sh:description "Reserved." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Billing Get Billing Groups Response
microsoftads:CustomerBillingGetBillingGroupsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingGetBillingGroupsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingGetBillingGroupsResponse/billingGroups> ;
    sh:name "billing groups" ;
    sh:description "Reserved." ;
    sh:node microsoftads:CustomerBillingBillingGroupShape ;
    sh:class microsoftads:CustomerBillingBillingGroup ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Customer Billing Get Coupon Info Request
microsoftads:CustomerBillingGetCouponInfoRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingGetCouponInfoRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingGetCouponInfoRequest/customerId> ;
    sh:name "customer id" ;
    sh:description "The customer ID." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Billing Get Coupon Info Response
microsoftads:CustomerBillingGetCouponInfoResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingGetCouponInfoResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingGetCouponInfoResponse/couponInfoData> ;
    sh:name "coupon info data" ;
    sh:description "A list of coupon info data objects." ;
    sh:node microsoftads:CustomerBillingCouponInfoDataShape ;
    sh:class microsoftads:CustomerBillingCouponInfoData ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Customer Billing Get Ungrouped Accounts Request
microsoftads:CustomerBillingGetUngroupedAccountsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingGetUngroupedAccountsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingGetUngroupedAccountsRequest/customerId> ;
    sh:name "customer id" ;
    sh:description "Reserved." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Billing Get Ungrouped Accounts Response
microsoftads:CustomerBillingGetUngroupedAccountsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingGetUngroupedAccountsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingGetUngroupedAccountsResponse/ungroupedAccounts> ;
    sh:name "ungrouped accounts" ;
    sh:description "Reserved." ;
    sh:node microsoftads:CustomerBillingUngroupedAccountShape ;
    sh:class microsoftads:CustomerBillingUngroupedAccount ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Customer Billing Ungrouped Account
microsoftads:CustomerBillingUngroupedAccountShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingUngroupedAccount ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingUngroupedAccount/accountId> ;
    sh:name "account id" ;
    sh:description "Reserved." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingUngroupedAccount/accountNumber> ;
    sh:name "account number" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingUngroupedAccount/accountName> ;
    sh:name "account name" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingUngroupedAccount/potentialBillingGroups> ;
    sh:name "potential billing groups" ;
    sh:description "Reserved." ;
    sh:node microsoftads:CustomerBillingKeyValueEntityOflongAndstringShape ;
    sh:class microsoftads:CustomerBillingKeyValueEntityOflongAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Customer Billing Order By
microsoftads:CustomerBillingOrderByShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingOrderBy ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingOrderBy/field> ;
    sh:name "field" ;
    sh:description "Determines the field to order the results. For example order the results by Id." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Id" "Name" "Number" "LifeCycleStatus" "CouponClassName" "CouponStartDate" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingOrderBy/order> ;
    sh:name "order" ;
    sh:description "Determines whether the results are ascending or descending." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Ascending" "Descending" ) ;
  ] .

# Shape for Customer Billing Paging
microsoftads:CustomerBillingPagingShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingPaging ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingPaging/index> ;
    sh:name "index" ;
    sh:description "The zero-based results page index. For example to request the first page of results, set this value to 0 (zero)." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingPaging/size> ;
    sh:name "size" ;
    sh:description "The page size and the number of results to return in the specified page. The maximum size is 100. If you do not set this element the default size is 0 (zero)." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Billing Predicate
microsoftads:CustomerBillingPredicateShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingPredicate ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingPredicate/field> ;
    sh:name "field" ;
    sh:description "The name of the element for the object you are searching. For possible values, see the SearchInsertionOrders operation." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingPredicate/operator> ;
    sh:name "operator" ;
    sh:description "Defines the relationship between the field and the value." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Equals" "NotEquals" "Contains" "In" "GreaterThanEquals" "LessThanEquals" "StartsWith" "NotContains" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingPredicate/value> ;
    sh:name "value" ;
    sh:description "The string to search in the specified field. The length of this string must be four or greater, unless the field is set to MarketCountry or MarketLanguage." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Billing Redeem Coupon Request
microsoftads:CustomerBillingRedeemCouponRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingRedeemCouponRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingRedeemCouponRequest/accountId> ;
    sh:name "account id" ;
    sh:description "The identifier of the account to which the coupon is redeemed." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingRedeemCouponRequest/couponCode> ;
    sh:name "coupon code" ;
    sh:description "The code of coupon to redeem." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Billing Redeem Coupon Response
microsoftads:CustomerBillingRedeemCouponResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingRedeemCouponResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingRedeemCouponResponse/redemptionDate> ;
    sh:name "redemption date" ;
    sh:description "The date and time that the coupon was redeemed." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Billing Search Coupons Request
microsoftads:CustomerBillingSearchCouponsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingSearchCouponsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingSearchCouponsRequest/predicates> ;
    sh:name "predicates" ;
    sh:description "Determines the request conditions. This operation's response will include coupons that match all of the specified predicates. You may specify up to 4 predicates, and one of the predicate fields must be CustomerId. For a list of supported Field and Operator elements of a Predicate object for this service operation, see Predicate Remarks." ;
    sh:node microsoftads:CustomerBillingPredicateShape ;
    sh:class microsoftads:CustomerBillingPredicate ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingSearchCouponsRequest/ordering> ;
    sh:name "ordering" ;
    sh:description "Determines the order of results by the specified property of a coupon. You should only specify one OrderBy element in the array. Additional elements are not supported and will be ignored by the service. For this service operation, the following values are supported in the Field element of a OrderBy object. CouponClassName - The order is determined by the CouponClassName element of the returned Coupon. CouponStartDate - The order is determined by the CouponStartDate element of the returned Coupon." ;
    sh:node microsoftads:CustomerBillingOrderByShape ;
    sh:class microsoftads:CustomerBillingOrderBy ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingSearchCouponsRequest/pageInfo> ;
    sh:name "page info" ;
    sh:description "Determines the index and size of results per page." ;
    sh:node microsoftads:CustomerBillingPagingShape ;
    sh:class microsoftads:CustomerBillingPaging ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingSearchCouponsRequest/returnAdditionalFields> ;
    sh:name "return additional fields" ;
    sh:description "If set to \"CouponClaimInfo\", return CouponClaimInfo in the response." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Billing Search Coupons Response
microsoftads:CustomerBillingSearchCouponsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingSearchCouponsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingSearchCouponsResponse/coupons> ;
    sh:name "coupons" ;
    sh:description "A list of coupons that meet the specified criteria." ;
    sh:node microsoftads:CustomerBillingCouponShape ;
    sh:class microsoftads:CustomerBillingCoupon ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Customer Billing Search Insertion Orders Request
microsoftads:CustomerBillingSearchInsertionOrdersRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingSearchInsertionOrdersRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingSearchInsertionOrdersRequest/predicates> ;
    sh:name "predicates" ;
    sh:description "Determines the request conditions. This operation's response will include accounts that match all of the specified predicates. You may specify up to 6 predicates, and one of the predicate fields must be AccountId. You may use the StartDate and EndDate predicate fields twice each to specify start and end date ranges, and otherwise may only use each predicate field once. For a list of supported Field and Operator elements of a Predicate object for this service operation, see Predicate Remarks." ;
    sh:node microsoftads:CustomerBillingPredicateShape ;
    sh:class microsoftads:CustomerBillingPredicate ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingSearchInsertionOrdersRequest/ordering> ;
    sh:name "ordering" ;
    sh:description "Determines the order of results by the specified property of an account. You should only specify one OrderBy element in the array. Additional elements are not supported and will be ignored by the service. For this service operation, the following values are supported in the Field element of a OrderBy object. Id - The order is determined by the Id element of the returned InsertionOrder. Name - The order is determined by the Name element of the returned InsertionOrder." ;
    sh:node microsoftads:CustomerBillingOrderByShape ;
    sh:class microsoftads:CustomerBillingOrderBy ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingSearchInsertionOrdersRequest/pageInfo> ;
    sh:name "page info" ;
    sh:description "Determines the index and size of results per page." ;
    sh:node microsoftads:CustomerBillingPagingShape ;
    sh:class microsoftads:CustomerBillingPaging ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingSearchInsertionOrdersRequest/returnAdditionalFields> ;
    sh:name "return additional fields" ;
    sh:description "The list of additional properties that you want included within each returned insertion order. The additional field values enable you to get the latest features using the current version of Customer Billing API. Note: Corresponding elements will be included by default in a future update. This request element is optional." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Billing Search Insertion Orders Response
microsoftads:CustomerBillingSearchInsertionOrdersResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingSearchInsertionOrdersResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingSearchInsertionOrdersResponse/insertionOrders> ;
    sh:name "insertion orders" ;
    sh:description "A list of insertion orders that meet the specified criteria." ;
    sh:node microsoftads:CustomerBillingInsertionOrderShape ;
    sh:class microsoftads:CustomerBillingInsertionOrder ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Customer Billing Update Billing Group Accounts Request
microsoftads:CustomerBillingUpdateBillingGroupAccountsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingUpdateBillingGroupAccountsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingUpdateBillingGroupAccountsRequest/customerId> ;
    sh:name "customer id" ;
    sh:description "Reserved." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingUpdateBillingGroupAccountsRequest/billingGroupId> ;
    sh:name "billing group id" ;
    sh:description "Reserved." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingUpdateBillingGroupAccountsRequest/accountsToAdd> ;
    sh:name "accounts to add" ;
    sh:description "Reserved." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Customer Billing Update Billing Group Accounts Response
microsoftads:CustomerBillingUpdateBillingGroupAccountsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingUpdateBillingGroupAccountsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingUpdateBillingGroupAccountsResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "Reserved." ;
    sh:node <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingUpdateBillingGroupAccountsResponse/partialErrors/ListLevel1Shape> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Billing Update Insertion Order Request
microsoftads:CustomerBillingUpdateInsertionOrderRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingUpdateInsertionOrderRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingUpdateInsertionOrderRequest/insertionOrder> ;
    sh:name "insertion order" ;
    sh:description "An insertion order to update within the account." ;
    sh:node microsoftads:CustomerBillingInsertionOrderShape ;
    sh:class microsoftads:CustomerBillingInsertionOrder ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Billing Update Insertion Order Response
microsoftads:CustomerBillingUpdateInsertionOrderResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerBillingUpdateInsertionOrderResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingUpdateInsertionOrderResponse/lastModifiedTime> ;
    sh:name "last modified time" ;
    sh:description "Identifies the server time in UTC when the insertion order was last modified." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Account Info
microsoftads:CustomerManagementAccountInfoShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementAccountInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAccountInfo/id> ;
    sh:name "id" ;
    sh:description "The system-generated identifier of the account." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAccountInfo/name> ;
    sh:name "name" ;
    sh:description "The name of the account." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAccountInfo/number> ;
    sh:name "number" ;
    sh:description "The account number." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAccountInfo/accountLifeCycleStatus> ;
    sh:name "account life cycle status" ;
    sh:description "The status of the account." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Draft" "Active" "Inactive" "Pause" "Pending" "Suspended" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAccountInfo/pauseReason> ;
    sh:name "pause reason" ;
    sh:description "A flag value that indicates who paused the account. The following are the possible values: 1 - The user paused the account. 2 - The billing service paused the account. 4 - The user and billing service paused the account." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Account Info With Customer Data
microsoftads:CustomerManagementAccountInfoWithCustomerDataShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementAccountInfoWithCustomerData ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAccountInfoWithCustomerData/customerId> ;
    sh:name "customer id" ;
    sh:description "The system-generated identifier of the customer that manages or owns the account. If this account is the result of an account match using the FindAccountsOrCustomersInfo, the customer identifier is that of the customer that owns the account. However, if the account is the result of a customer match, the customer identifier is that of the aggregator that manages the account, if the account is managed by an aggregator; otherwise, the identifier is that of the customer that owns the account." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAccountInfoWithCustomerData/customerName> ;
    sh:name "customer name" ;
    sh:description "The name of the customer that manages or owns the account." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAccountInfoWithCustomerData/accountId> ;
    sh:name "account id" ;
    sh:description "The system-generated identifier of the account." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAccountInfoWithCustomerData/accountName> ;
    sh:name "account name" ;
    sh:description "The name of the account." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAccountInfoWithCustomerData/accountNumber> ;
    sh:name "account number" ;
    sh:description "The system-generated account number that is used to identify the account in the Microsoft Advertising web application. The account number has the form xxxxxxxx, where xxxxxxxx is a series of any eight alphanumeric characters." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAccountInfoWithCustomerData/accountLifeCycleStatus> ;
    sh:name "account life cycle status" ;
    sh:description "The status of the account." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Draft" "Active" "Inactive" "Pause" "Pending" "Suspended" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAccountInfoWithCustomerData/pauseReason> ;
    sh:name "pause reason" ;
    sh:description "A flag value that indicates who paused the account. The following are the possible values: 1 - The user paused the account. 2 - The billing service paused the account. 4 - The user and billing service paused the account." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAccountInfoWithCustomerData/accountMode> ;
    sh:name "account mode" ;
    sh:description "The account mode distinguishes between smart and expert accounts. The possible values include, but are not limited to: Expert - Expert Mode is the full-feature Microsoft Advertising experience. It gives you more control over campaign management, lets you add more content to your ads, and provides much more in the way of performance reporting and tracking. Smart - Microsoft Advertising will use Microsoft AI to create ads and manage your advertising campaign for you. UnifiedSmart - The account supports advertising across Bing, Google, and Facebook. You can also manage your social network presence on Facebook, Instagram, and LinkedIn. Note: As of April 25, 2023, UnifiedSmart no longer supports Twitter. Most Bing Ads API operations are only supported with Expert accounts. Accounts with any account mode are returned when you request account information e.g., FindAccountsOrCustomersInfo, GetAccount, GetAccountsInfo, GetUser, and SearchAccounts. Add: Read-only for most accounts. Customers in the closed Unified smart campaigns pilot can set the account mode to \"UnifiedSmart\". Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Account Tax Certificate
microsoftads:CustomerManagementAccountTaxCertificateShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementAccountTaxCertificate ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAccountTaxCertificate/taxCertificateBlobContainerName> ;
    sh:name "tax certificate blob container name" ;
    sh:description "The container name of the tax certificate." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAccountTaxCertificate/taxCertificates> ;
    sh:name "tax certificates" ;
    sh:description "A list of tax certificates." ;
    sh:node microsoftads:CustomerManagementKeyValuePairOfstringAndByteArrayShape ;
    sh:class microsoftads:CustomerManagementKeyValuePairOfstringAndByteArray ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAccountTaxCertificate/status> ;
    sh:name "status" ;
    sh:description "The status of the tax certificate: Valid, Invalid, or Pending." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Valid" "Invalid" "Pending" ) ;
  ] .

# Shape for Customer Management Key Value Pair Ofstring And Byte Array
microsoftads:CustomerManagementKeyValuePairOfstringAndByteArrayShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementKeyValuePairOfstringAndByteArray ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementKeyValuePairOfstringAndByteArray/key> ;
    sh:name "key" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementKeyValuePairOfstringAndByteArray/value> ;
    sh:name "value" ;
    sh:datatype xsd:base64Binary ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Ad Api Error
microsoftads:CustomerManagementAdApiErrorShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementAdApiError ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAdApiError/code> ;
    sh:name "code" ;
    sh:description "A numeric error code that identifies the error." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAdApiError/message> ;
    sh:name "message" ;
    sh:description "A message that describes the error. For more information about troubleshooting and error handling, see Handling Service Errors and Exceptions and Operation Error Codes." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAdApiError/detail> ;
    sh:name "detail" ;
    sh:description "A message that contains additional details about the error. This string can be empty." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAdApiError/errorCode> ;
    sh:name "error code" ;
    sh:description "A symbolic string constant that identifies the error. For example, UserIsNotAuthorized." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Ad Api Fault Detail
microsoftads:CustomerManagementAdApiFaultDetailShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementAdApiFaultDetail ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAdApiFaultDetail/trackingId> ;
    sh:name "tracking id" ;
    sh:description "The identifier of the log entry that contains the details of the API call." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAdApiFaultDetail/errors> ;
    sh:name "errors" ;
    sh:description "An array of AdApiError objects that contains the details that explain why the service operation failed." ;
    sh:node microsoftads:CustomerManagementAdApiErrorShape ;
    sh:class microsoftads:CustomerManagementAdApiError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAdApiFaultDetail/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Add Account Request
microsoftads:CustomerManagementAddAccountRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementAddAccountRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAddAccountRequest/account> ;
    sh:name "account" ;
    sh:description "The account that you want to add to the existing customer. You must set the ParentCustomerId in the advertiser account object." ;
    sh:node microsoftads:CustomerManagementAdvertiserAccountShape ;
    sh:class microsoftads:CustomerManagementAdvertiserAccount ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Advertiser Account
microsoftads:CustomerManagementAdvertiserAccountShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementAdvertiserAccount ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAdvertiserAccount/billToCustomerId> ;
    sh:name "bill to customer id" ;
    sh:description "The identifier of the customer that is billed for the charges that the account generates. This is either the aggregator that manages this account on behalf of the owner or the identifier of the customer that owns the account. The service sets the identifier based on the owner of the payment instrument identified in the PaymentMethodId element. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAdvertiserAccount/currencyCode> ;
    sh:name "currency code" ;
    sh:description "The ISO code for the currency that is used to settle the account. The service uses the currency information for billing purposes. Add: Required Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "AED" "ALL" "AMD" "ARS" "AUD" "AZM" "BGL" "BHD" "BND" "BOB" "BRL" "BYB" "BZD" "CAD" "CHF" "CLP" "CNY" "COP" "CRC" "CZK" "DOP" "DKK" "DZD" "EEK" "EGP" "EUR" "GBP" "GEL" "GTQ" "HKD" "HNL" "HRK" "HUF" "IDR" "ILS" "INR" "IQD" "IRR" "ISK" "JMD" "JOD" "JPY" "KES" "KGS" "KRW" "KWD" "KZT" "LBP" "LTL" "LVL" "LYD" "MAD" "MKD" "MOP" "MNT" "MVR" "MXN" "MYR" "NIO" "NOK" "NZD" "OMR" "PAB" "PEN" "PHP" "PKR" "PLN" "PYG" "QAR" "ROL" "RUR" "SAR" "SEK" "SGD" "SIT" "SKK" "SYP" "THB" "TND" "TRY" "TTD" "TWD" "UAH" "USD" "UYU" "UZS" "VEF" "YER" "VND" "YUN" "ZAR" "ZWD" "NGN" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAdvertiserAccount/accountFinancialStatus> ;
    sh:name "account financial status" ;
    sh:description "The financial status of the account. For example, the status can indicate whether the account is in good standing or is past due. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Proposed" "PendingCreditCheck" "ClearFinancialStatus" "SoldToOnly" "CreditWarning" "Hold" "WriteOff" "TaxOnHold" "UserHold" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAdvertiserAccount/id> ;
    sh:name "id" ;
    sh:description "The system-generated identifier of the account. This is the identifier that you set the AccountId element and CustomerAccountId SOAP header to in many of the campaign requests. Add: Read-only Update: Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAdvertiserAccount/language> ;
    sh:name "language" ;
    sh:description "The language used to render the billing documents that you receive from Microsoft Advertising (if you use an invoice as your payment method). This setting is only for billing documents for this account, and doesn't apply to other Microsoft Advertising accounts you might have. If you leave this empty when signing up a customer, the operation uses the language value from the Lcid element of the primary user. If the Lcid is set to a value such as FrenchCanada, then the account language is set to French. Add: Read-only for AddAccount; Required for SignupCustomer if the UserInvitation is set, and otherwise this element is Optional. Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Danish" "Dutch" "English" "Finnish" "French" "German" "Italian" "Japanese" "Norwegian" "Portuguese" "Swedish" "Spanish" "Arabic" "Hebrew" "Korean" "Russian" "TraditionalChinese" "SimplifiedChinese" "Thai" "Turkish" "Filipino" "Indonesian" "Polish" "Vietnamese" "Malay" "Ukrainian" "Czech" "Romanian" "Greek" "Hungarian" "Hindi" "Bulgarian" "Lithuanian" "Croatian" "Latvian" "Slovenian" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAdvertiserAccount/lastModifiedByUserId> ;
    sh:name "last modified by user id" ;
    sh:description "The identifier of the last user to update the account's information. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAdvertiserAccount/lastModifiedTime> ;
    sh:name "last modified time" ;
    sh:description "The date and time that the account was last updated. The value is in Coordinated Universal Time (UTC). The date and time value reflects the date and time at the server, not the client. For information about the format of the date and time, see the dateTime entry in Primitive XML Data Types. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAdvertiserAccount/name> ;
    sh:name "name" ;
    sh:description "The name of the account. The string can contain between 3 and 100 characters and must be unique among all account names within the customer. Add: Required Update: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAdvertiserAccount/number> ;
    sh:name "number" ;
    sh:description "The system-generated account number that is used to identify the account in the Microsoft Advertising web application. The account number has the form xxxxxxxx, where xxxxxxxx is a series of any eight alphanumeric characters. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAdvertiserAccount/parentCustomerId> ;
    sh:name "parent customer id" ;
    sh:description "The identifier of the customer that owns the account. In the campaign requests that require a customer identifier, this is the identifier that you set the CustomerId SOAP header to. Add: Required for AddAccount; Required for SignupCustomer if the UserInvitation is not set, and otherwise this element is ignored. Update: Read-only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAdvertiserAccount/paymentMethodId> ;
    sh:name "payment method id" ;
    sh:description "The identifier of the payment instrument to use to settle the account. Add: Optional for AddAccount; Read-only for SignupCustomer if the UserInvitation is not set. When you call SignupCustomer set this element to NULL. The service picks up the payment method identifier associated with the aggregator customer's invoice automatically. For SignupCustomer if the UserInvitation is set, and if the new client account is being linked to an agency via LinkedAgencies, and if the agency should be billed, set this element to the agency's payment instrument ID. Otherwise you should leave this element null. Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAdvertiserAccount/paymentMethodType> ;
    sh:name "payment method type" ;
    sh:description "The type of payment instrument to use to settle the account. You do not have to set this value because the type is determined by the payment instrument corresponding to the PaymentMethodId element. When you call the GetAccount and SearchAccounts to get the account data, PaymentMethodType is set to NULL, and you cannot determine the payment method that the account uses. Reserved for internal use. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "CreditCard" "Invoice" "Check" "ElectronicFundsTransfer" "PayPal" "ELV" "OfflinePaymentMethod" "VBA" "Boleto" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAdvertiserAccount/primaryUserId> ;
    sh:name "primary user id" ;
    sh:description "The identifier of the account manager who is primarily responsible for managing this account. Only Super Admin and Standard users can be set as the primary contact for an account. Add: For AddAccount if the new client account is being linked to an agency via LinkedAgencies, then you can assign one of the agency users as primary user for the new account. When you call SignupCustomer as an aggregator without including the UserInvitation, you should leave this element empty and the primary user will be set to the aggregator user identifier. When you call SignupCustomer and the UserInvitation is included, you can leave this element empty and the primary user will be set to the identifier of the new client user who accepts the invitation. When you call SignupCustomer and if the UserInvitation is set, and if the new client account is being linked to an agency via LinkedAgencies, then you can assign one of the agency users as primary user for the new account. Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAdvertiserAccount/accountLifeCycleStatus> ;
    sh:name "account life cycle status" ;
    sh:description "The status of the account. You cannot set the status of the account. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Draft" "Active" "Inactive" "Pause" "Pending" "Suspended" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAdvertiserAccount/timeStamp> ;
    sh:name "time stamp" ;
    sh:description "The time-stamp value that the system uses internally to reconcile updates when you call the UpdateAccount and DeleteAccount operations. Add: Read-only Update: Required" ;
    sh:datatype xsd:base64Binary ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAdvertiserAccount/timeZone> ;
    sh:name "time zone" ;
    sh:description "The default time-zone value to use for campaigns in this account. If you do not specify a value when the account is added, the time zone will be set to PacificTimeUSCanadaTijuana by default. This time-zone value is used by the Microsoft Advertising web application to display the account time zone preference, and does not provide a default time-zone value for campaigns that are created by using the Bulk or Campaign Management API. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Nukualofa" "FijiKamchatkaMarshallIsland" "AucklandWellington" "SolomonIslandNewCaledonia" "Vladivostok" "Hobart" "GuamPortMoresby" "CanberraMelbourneSydney" "Brisbane" "Darwin" "Adelaide" "Yakutsk" "Seoul" "OsakaSapporoTokyo" "Taipei" "Perth" "KualaLumpurSingapore" "IrkutskUlaanBataar" "BeijingChongqingHongKongUrumqi" "Krasnoyarsk" "BangkokHanoiJakarta" "Rangoon" "SriJayawardenepura" "AstanaDhaka" "AlmatyNovosibirsk" "Kathmandu" "ChennaiKolkataMumbaiNewDelhi" "IslamabadKarachiTashkent" "Ekaterinburg" "Kabul" "BakuTbilisiYerevan" "AbuDhabiMuscat" "Tehran" "Nairobi" "MoscowStPetersburgVolgograd" "KuwaitRiyadh" "Baghdad" "Jerusalem" "HelsinkiKyivRigaSofiaTallinnVilnius" "HararePretoria" "Cairo" "Bucharest" "AthensBuckarestIstanbul" "WestCentralAfrica" "SarajevoSkopjeWarsawZagreb" "BrusselsCopenhagenMadridParis" "BelgradeBratislavaBudapestLjubljanaPrague" "AmsterdamBerlinBernRomeStockholmVienna" "CasablancaMonrovia" "GreenwichMeanTimeDublinEdinburghLisbonLondon" "Azores" "CapeVerdeIsland" "MidAtlantic" "Brasilia" "BuenosAiresGeorgetown" "Greenland" "Newfoundland" "AtlanticTimeCanada" "CaracasLaPaz" "Santiago" "BogotaLimaQuito" "EasternTimeUSCanada" "IndianaEast" "CentralAmerica" "CentralTimeUSCanada" "GuadalajaraMexicoCityMonterrey" "Saskatchewan" "Arizona" "ChihuahuaLaPazMazatlan" "MountainTimeUSCanada" "PacificTimeUSCanadaTijuana" "Alaska" "Hawaii" "MidwayIslandAndSamoa" "InternationalDateLineWest" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAdvertiserAccount/pauseReason> ;
    sh:name "pause reason" ;
    sh:description "A flag value that indicates who paused the account. The following are the possible values: 1 - The user paused the account. 2 - The billing service paused the account. 4 - The user and billing service paused the account. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAdvertiserAccount/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. Forward compatibility changes will be noted here in future releases. There are currently no forward compatibility changes for this object." ;
    sh:node microsoftads:CustomerManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CustomerManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAdvertiserAccount/linkedAgencies> ;
    sh:name "linked agencies" ;
    sh:description "The list of agencies linked to this account. Currently only one agency customer is supported when you add the account. When you retrieve the account all linked agency customer info will be included. Add: Optional for AddAccount; Optional for SignupCustomer if the agency customer is in the Create Accounts on Behalf of Client pilot (GetCustomerPilotFeatures returns 793). Aggregators cannot link as agencies in this context, and therefore cannot set this element. Update: Read-only" ;
    sh:node microsoftads:CustomerManagementCustomerInfoShape ;
    sh:class microsoftads:CustomerManagementCustomerInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAdvertiserAccount/salesHouseCustomerId> ;
    sh:name "sales house customer id" ;
    sh:description "The identifier of the third party that is responsible for a sales lead. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAdvertiserAccount/taxInformation> ;
    sh:name "tax information" ;
    sh:description "For a list of valid key and value strings for this element, see AdvertiserAccount TaxInformation in the section below. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed. To remove a key and value pair, set the key and then set the value to an empty string (\"\")." ;
    sh:node microsoftads:CustomerManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CustomerManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAdvertiserAccount/backUpPaymentInstrumentId> ;
    sh:name "back up payment instrument id" ;
    sh:description "The identifier of a backup payment instrument to use to settle the account. This element is not applicable for invoiced accounts. Add: Read-only Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAdvertiserAccount/billingThresholdAmount> ;
    sh:name "billing threshold amount" ;
    sh:description "A customer specified amount for settling against the selected payment instrument. Add: Read-only Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:double ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAdvertiserAccount/businessAddress> ;
    sh:name "business address" ;
    sh:description "The location where your business is legally registered. If you are an agency working as an agent for your customer, this is the location where your client is legally registered. If you are an agency working as an aggregator, this is the legally registered business address of your company. The business address is used to determine your tax requirements. Add: Required. The Address BusinessName, City, and Line1 elements are required for all countries or regions. For Brazil (BR) and India (IN), the PostalCode and StateOrProvince elements are also required. Update: Optional for accounts that are not billed by monthly invoice. Having said that, if you want to make any changes to the Address then you must set its BusinessName, City, CountryCode, Line1, and StateOrProvince elements (where applicable); Read-only for monthly invoice accounts. To update the BusinessAddress of an invoice account, contact your account manager or support." ;
    sh:node microsoftads:CustomerManagementAddressShape ;
    sh:class microsoftads:CustomerManagementAddress ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAdvertiserAccount/autoTagType> ;
    sh:name "auto tag type" ;
    sh:description "Determines whether to append or replace the supported UTM tracking codes. Microsoft Advertising can automatically add UTM tags to your destination URL so you can use your website analytics tool, for example Google Analytics, to track how people got to your website. Auto-tags are applied for example to expanded text ads, keywords, Microsoft Shopping Campaigns, and Sitelink Extensions. For details about auto-tagging, please see the Microsoft Advertising help article How do I add UTM tags to my landing page URL?. Add: Optional. If not specified the default value is Inactive. Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Inactive" "Preserve" "Replace" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAdvertiserAccount/soldToPaymentInstrumentId> ;
    sh:name "sold to payment instrument id" ;
    sh:description "The identifier of the payment instrument of your client (the sold-to customer) to use to settle the account. Add: Required for AddAccount if the BillToCustomerId differs from the ParentCustomerId; Read-only and not applicable for SignupCustomer. Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAdvertiserAccount/taxCertificate> ;
    sh:name "tax certificate" ;
    sh:description "The account tax certificate data object." ;
    sh:node microsoftads:CustomerManagementAccountTaxCertificateShape ;
    sh:class microsoftads:CustomerManagementAccountTaxCertificate ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAdvertiserAccount/accountMode> ;
    sh:name "account mode" ;
    sh:description "The account mode distinguishes between smart and expert accounts. The possible values include, but are not limited to: Expert - Expert Mode is the full-feature Microsoft Advertising experience. It gives you more control over campaign management, lets you add more content to your ads, and provides much more in the way of performance reporting and tracking. Smart - Microsoft Advertising will use Microsoft AI to create ads and manage your advertising campaign for you. UnifiedSmart - The account supports advertising across Bing, Google, and Facebook. You can also manage your social network presence on Facebook, Instagram, and LinkedIn. Note: As of April 25, 2023, UnifiedSmart no longer supports Twitter. Most Bing Ads API operations are only supported with Expert accounts. Accounts with any account mode are returned when you request account information e.g., FindAccountsOrCustomersInfo, GetAccount, GetAccountsInfo, GetUser, and SearchAccounts. Add: Read-only for most accounts. Customers in the closed Unified smart campaigns pilot can set the account mode to \"UnifiedSmart\". Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Key Value Pair Ofstring Andstring
microsoftads:CustomerManagementKeyValuePairOfstringAndstringShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementKeyValuePairOfstringAndstring ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementKeyValuePairOfstringAndstring/key> ;
    sh:name "key" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementKeyValuePairOfstringAndstring/value> ;
    sh:name "value" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Customer Info
microsoftads:CustomerManagementCustomerInfoShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementCustomerInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementCustomerInfo/id> ;
    sh:name "id" ;
    sh:description "The system-generated identifier of the customer." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementCustomerInfo/name> ;
    sh:name "name" ;
    sh:description "The name of the customer." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Address
microsoftads:CustomerManagementAddressShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementAddress ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAddress/city> ;
    sh:name "city" ;
    sh:description "The city, which can contain a maximum of 35 characters. Add: Required Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAddress/countryCode> ;
    sh:name "country code" ;
    sh:description "The country/region code. For possible values e.g., \"US\", see Geographical Location Codes. Add: Required Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAddress/id> ;
    sh:name "id" ;
    sh:description "The system-generated identifier of the address object. Add: Read-only Update: Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAddress/line1> ;
    sh:name "line1" ;
    sh:description "The first line of the address, which can contain a maximum of 35 characters. Add: Required Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAddress/line2> ;
    sh:name "line2" ;
    sh:description "The second line of the address, which can contain a maximum of 35 characters. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAddress/line3> ;
    sh:name "line3" ;
    sh:description "The third line of the address, which can contain a maximum of 35 characters. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAddress/line4> ;
    sh:name "line4" ;
    sh:description "The fourth line of the address, which can contain a maximum of 35 characters. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAddress/postalCode> ;
    sh:name "postal code" ;
    sh:description "The Postal or ZIP Code, which can contain a maximum of 10 characters. Add: Required Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAddress/stateOrProvince> ;
    sh:name "state or province" ;
    sh:description "The state or province. You must use the state or province code without country/region prefix. For example given US-WA, you should use only the WA suffix for Washington state. Add: Required for countries or regions that define sub geographies, but should be set to null for countries or regions that do not define sub geographies, such as Singapore. Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAddress/timeStamp> ;
    sh:name "time stamp" ;
    sh:description "The date and time that the address was last updated. The value is in Coordinated Universal Time (UTC). The date and time value reflects the date and time at the server, not the client. For information about the format of the date and time, see the dateTime entry in Primitive XML Data Types. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:base64Binary ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAddress/businessName> ;
    sh:name "business name" ;
    sh:description "The legal business name, which can contain a maximum of 100 characters. Add: Required Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Add Account Response
microsoftads:CustomerManagementAddAccountResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementAddAccountResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAddAccountResponse/accountId> ;
    sh:name "account id" ;
    sh:description "A system-generated account identifier corresponding to the new account specified in the request. Use this identifier with operation requests that require an AccountId body element and a CustomerAccountId SOAP header element." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAddAccountResponse/accountNumber> ;
    sh:name "account number" ;
    sh:description "The system-generated account number that is used to identify the account in the Microsoft Advertising web application. The account number has the form xxxxxxxx, where xxxxxxxx is a series of any eight alphanumeric characters." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAddAccountResponse/createTime> ;
    sh:name "create time" ;
    sh:description "The date and time that the account was added. The date and time value reflects the date and time at the server, not the client. For information about the format of the date and time, see the dateTime entry in Primitive XML Data Types." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Add Client Links Request
microsoftads:CustomerManagementAddClientLinksRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementAddClientLinksRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAddClientLinksRequest/clientLinks> ;
    sh:name "client links" ;
    sh:description "The list of client links to add. You should limit your request to 10 client links per call." ;
    sh:node microsoftads:CustomerManagementClientLinkShape ;
    sh:class microsoftads:CustomerManagementClientLink ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Customer Management Client Link
microsoftads:CustomerManagementClientLinkShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementClientLink ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementClientLink/type> ;
    sh:name "type" ;
    sh:description "Determines whether the link is to a client advertiser account or a client customer. The possible values are AccountLink and CustomerLink. If this element is empty or set to AccountLink, the ClientEntityId, ClientEntityName, and ClientEntityNumber represent a client advertiser account. If this element is set to CustomerLink, the ClientEntityId, ClientEntityName, and ClientEntityNumber represent a client customer. Add: Optional. If this element is not set, the service attempts to create an advertiser account client link. Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementClientLink/clientEntityId> ;
    sh:name "client entity id" ;
    sh:description "The identifier of the client advertiser account or client customer to manage. The Type element determines whether the link is to a client advertiser account or a client customer. Add: Required. Either the ClientEntityId or ClientEntityNumber is required, but specifying both will cause the operation to fail. Update: Read-only and Required." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementClientLink/clientEntityNumber> ;
    sh:name "client entity number" ;
    sh:description "The number of the client advertiser account or client customer to manage. The Type element determines whether the link is to a client advertiser account or a client customer. Add: Required. This element is required if Type is CustomerLink. If required and missing, a ClientLinkFieldInvalid error is returned. If the customer ID doesn't match, a LinkPairMismatch error is returned. Update: Read-only and Required." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementClientLink/clientEntityName> ;
    sh:name "client entity name" ;
    sh:description "The name of the client advertiser account or client customer to manage The Type element determines whether the link is to a client advertiser account or a client customer. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementClientLink/managingCustomerId> ;
    sh:name "managing customer id" ;
    sh:description "The identifier of the customer who manages or is requesting to manage the client advertiser account. Add: Required. Either the ManagingCustomerId or ManagingCustomerNumber is required, but specifying both will cause the operation to fail. Update: Read-only and Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementClientLink/managingCustomerNumber> ;
    sh:name "managing customer number" ;
    sh:description "The number of the customer who manages or is requesting to manage the client advertiser account. Add: Required. Either the ManagingCustomerId or ManagingCustomerNumber is required, but specifying both will cause the operation to fail. Update: Read-only and Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementClientLink/managingCustomerName> ;
    sh:name "managing customer name" ;
    sh:description "The name of the customer who manages or is requesting to manage the client advertiser account. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementClientLink/note> ;
    sh:name "note" ;
    sh:description "Optional message from the requestor providing context and details about the client link invitation. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementClientLink/name> ;
    sh:name "name" ;
    sh:description "The friendly name that can be used to reference this client link. The name can contain a maximum of 40 characters. A default name will be provided if none is specified. The name does not need to be unique compared to other client links for the user. Add: Optional Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementClientLink/inviterEmail> ;
    sh:name "inviter email" ;
    sh:description "The email of the user who created the client link request. This value does not need to be the same as, nor is it used to modify, the email already stored in Microsoft Advertising for the current authenticated user. If not specified, the service will set this value to the email already stored in Microsoft Advertising for the current authenticated user. Add: Optional Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementClientLink/inviterName> ;
    sh:name "inviter name" ;
    sh:description "The name of the parent customer of the user who created the client link request. This value does not need to be the same as, nor is it used to modify, the customer name already stored in Microsoft Advertising. If not specified, the service will set this value to the parent customer name already stored in Microsoft Advertising for the current authenticated user. Add: Optional Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementClientLink/inviterPhone> ;
    sh:name "inviter phone" ;
    sh:description "The phone number of the user who created the client link request. This value does not need to be the same as, nor is it used to modify, the phone number already stored in Microsoft Advertising for the current authenticated user. If not specified, the service will set this value to the phone number already stored in Microsoft Advertising for the current authenticated user. Add: Optional Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementClientLink/isBillToClient> ;
    sh:name "is bill to client" ;
    sh:description "Determines whether the owner of the client advertiser account or the managing customer is responsible for billing payments. This element is only applicable for advertiser account client links, and not applicable for customer links. The client advertiser account must be set up for post-pay billing. Prepaid accounts are not supported for management by agencies. If set to true the client is responsible for billing. If set to false the managing customer is responsible for billing. Add: Required for advertiser account links; Not applicable for customer links. Update: Read-only" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementClientLink/startDate> ;
    sh:name "start date" ;
    sh:description "The date when the status would update. For an accepted link request the status would transition towards Active on this date, and for an unlink request the status would transition towards Inactive on this date. If not specified, this value will be set to the current date and time. Add: Optional Update: Read-only" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementClientLink/status> ;
    sh:name "status" ;
    sh:description "Determines the life cycle status of the client link, for example whether the client link has been accepted or declined. When adding a client link this element cannot be specified, and the service sets the effective status to LinkPending. Add: Read-only Update: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "LinkPending" "LinkCanceled" "LinkExpired" "LinkAccepted" "LinkDeclined" "LinkInProgress" "Active" "LinkFailed" "UnlinkRequested" "UnlinkPending" "UnlinkCanceled" "UnlinkInProgress" "Inactive" "UnlinkFailed" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementClientLink/suppressNotification> ;
    sh:name "suppress notification" ;
    sh:description "Determines whether or not to send email notification of the client link invitation to the primary user of the client advertiser account. If set to true the client will not receive an email and otherwise, since the default value is false, the client will receive an email notification. Add: Optional Update: Read-only" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementClientLink/lastModifiedDateTime> ;
    sh:name "last modified date time" ;
    sh:description "The date and time that the client link was last updated. The value is in Coordinated Universal Time (UTC). The date and time value reflects the date and time at the server, not the client. For information about the format of the date and time, see the dateTime entry in Primitive XML Data Types. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementClientLink/lastModifiedByUserId> ;
    sh:name "last modified by user id" ;
    sh:description "The identifier of the last user to update the client link's information. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementClientLink/timestamp> ;
    sh:name "timestamp" ;
    sh:description "Reserved for future use." ;
    sh:datatype xsd:base64Binary ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementClientLink/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. Forward compatibility changes will be noted here in future releases. There are currently no forward compatibility changes for the ClientLink object." ;
    sh:node microsoftads:CustomerManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CustomerManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementClientLink/customerLinkPermission> ;
    sh:name "customer link permission" ;
    sh:description "Determines whether the user's access to the accounts is restricted by customer hierarchy i.e., customer level client linking. This element is only applicable if Type is set to CustomerLink. In that case, the possible values include Administrative and Standard. Otherwise this field should be nil or empty. If this field is set to \"Administrative\", the user has access to the ClientEntityId through an Administrative customer link. If this field is set to \"Standard\", the user has access to the ClientEntityId through a Standard customer link. The ClientEntityId is part of a customer link hierarchy whereby the user can access other customers below it. For more information, see the User Roles technical guide. Add: Optional Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementClientLink/clientEntityCustomerNumber> ;
    sh:name "client entity customer number" ;
    sh:description "The number of the client advertiser account?s customer to manage. The Type element determines whether the link is to a client advertiser account or a client customer. Add: Required. This element is only applicable and required if Type isn't set or set to AccountLink. If required and missing, a ClientLinkFieldInvalid error is returned. If the account ID doesn't match, a LinkPairMismatch error is returned. Update: Read-only and Required." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Add Client Links Response
microsoftads:CustomerManagementAddClientLinksResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementAddClientLinksResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAddClientLinksResponse/operationErrors> ;
    sh:name "operation errors" ;
    sh:description "A list of one or more reasons why the service operation failed, and no client links were added." ;
    sh:node microsoftads:CustomerManagementOperationErrorShape ;
    sh:class microsoftads:CustomerManagementOperationError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAddClientLinksResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of OperationError lists that contain details for any client links that were not successfully added. Results are returned in the same order corresponding to the requested client links. The number of first dimension list elements is equal to the requested client links count. For successfully added client links, the OperationError element at the corresponding index is null." ;
    sh:node <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAddClientLinksResponse/partialErrors/ListLevel1Shape> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Operation Error
microsoftads:CustomerManagementOperationErrorShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementOperationError ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementOperationError/code> ;
    sh:name "code" ;
    sh:description "A numeric error code that identifies the error." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementOperationError/details> ;
    sh:name "details" ;
    sh:description "A message that provides additional details about the error. This string can be empty." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementOperationError/message> ;
    sh:name "message" ;
    sh:description "A message that describes the error. For more information about troubleshooting and error handling, see Handling Service Errors and Exceptions and Operation Error Codes." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Add Prepay Account Request
microsoftads:CustomerManagementAddPrepayAccountRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementAddPrepayAccountRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAddPrepayAccountRequest/account> ;
    sh:name "account" ;
    sh:node microsoftads:CustomerManagementAdvertiserAccountShape ;
    sh:class microsoftads:CustomerManagementAdvertiserAccount ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Add Prepay Account Response
microsoftads:CustomerManagementAddPrepayAccountResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementAddPrepayAccountResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAddPrepayAccountResponse/accountId> ;
    sh:name "account id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAddPrepayAccountResponse/accountNumber> ;
    sh:name "account number" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAddPrepayAccountResponse/createTime> ;
    sh:name "create time" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Api Batch Fault
microsoftads:CustomerManagementApiBatchFaultShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementApiBatchFault ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementApiBatchFault/trackingId> ;
    sh:name "tracking id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementApiBatchFault/batchErrors> ;
    sh:name "batch errors" ;
    sh:node microsoftads:CustomerManagementBatchErrorShape ;
    sh:class microsoftads:CustomerManagementBatchError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementApiBatchFault/operationErrors> ;
    sh:name "operation errors" ;
    sh:node microsoftads:CustomerManagementOperationErrorShape ;
    sh:class microsoftads:CustomerManagementOperationError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Customer Management Batch Error
microsoftads:CustomerManagementBatchErrorShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementBatchError ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementBatchError/code> ;
    sh:name "code" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementBatchError/details> ;
    sh:name "details" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementBatchError/index> ;
    sh:name "index" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementBatchError/message> ;
    sh:name "message" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Api Fault
microsoftads:CustomerManagementApiFaultShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementApiFault ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementApiFault/trackingId> ;
    sh:name "tracking id" ;
    sh:description "The identifier of the log entry that contains the details of the API call." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementApiFault/operationErrors> ;
    sh:name "operation errors" ;
    sh:description "An array of OperationError objects that contains the reasons that explain why the service operation failed when the error is not related to a specific item in the batch of items." ;
    sh:node microsoftads:CustomerManagementOperationErrorShape ;
    sh:class microsoftads:CustomerManagementOperationError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementApiFault/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Application Fault
microsoftads:CustomerManagementApplicationFaultShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementApplicationFault ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementApplicationFault/trackingId> ;
    sh:name "tracking id" ;
    sh:description "The identifier of the log entry that contains the details of the API call." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementApplicationFault/errors> ;
    sh:name "errors" ;
    sh:node microsoftads:CustomerManagementAdApiErrorShape ;
    sh:class microsoftads:CustomerManagementAdApiError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementApplicationFault/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementApplicationFault/batchErrors> ;
    sh:name "batch errors" ;
    sh:node microsoftads:CustomerManagementBatchErrorShape ;
    sh:class microsoftads:CustomerManagementBatchError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementApplicationFault/operationErrors> ;
    sh:name "operation errors" ;
    sh:node microsoftads:CustomerManagementOperationErrorShape ;
    sh:class microsoftads:CustomerManagementOperationError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Customer Management Application Fault Base
microsoftads:CustomerManagementApplicationFaultBaseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementApplicationFaultBase ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementApplicationFaultBase/trackingId> ;
    sh:name "tracking id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Contact Info
microsoftads:CustomerManagementContactInfoShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementContactInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementContactInfo/address> ;
    sh:name "address" ;
    sh:description "The address of the user. Note that the address BusinessName element is ignored if you try to set it for a user's contact information. The business name is only required for an AdvertiserAccount object. Add: Required Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:node microsoftads:CustomerManagementAddressShape ;
    sh:class microsoftads:CustomerManagementAddress ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementContactInfo/contactByPhone> ;
    sh:name "contact by phone" ;
    sh:description "A value that determines whether the user should be contacted by telephone. If true, the telephone number specified in the Phone1 element is used to contact the user. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementContactInfo/contactByPostalMail> ;
    sh:name "contact by postal mail" ;
    sh:description "A value that determines whether the user should be contacted by postal mail. If true, correspondence is sent to the address specified in the Address element. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementContactInfo/email> ;
    sh:name "email" ;
    sh:description "The email address is used to send the account activation notification to the user, and can contain a maximum of 100 characters. If the user should be contacted by email, set the EmailFormat element to a valid format value. The contact info email address may differ from the email address corresponding to the authenticated Microsoft Account. For more information, see the IsMigratedToMicrosoftAccount and UserName elements of the User. Add: Required Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementContactInfo/emailFormat> ;
    sh:name "email format" ;
    sh:description "The format of the body of an email message to use when correspondence is sent to the user (this does not apply to the activation notification email message). You must set this element if you want the user contacted via email. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Html" "Text" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementContactInfo/fax> ;
    sh:name "fax" ;
    sh:description "The fax telephone number of the user. The telephone number can contain a maximum of 100 characters. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementContactInfo/homePhone> ;
    sh:name "home phone" ;
    sh:description "The home telephone number of the user. The telephone number can contain a maximum of 100 characters. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementContactInfo/id> ;
    sh:name "id" ;
    sh:description "The system-generated identifier of the object. Add: Read-only Update: Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementContactInfo/mobile> ;
    sh:name "mobile" ;
    sh:description "The mobile telephone number of the user. The telephone number can contain a maximum of 100 characters. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementContactInfo/phone1> ;
    sh:name "phone1" ;
    sh:description "The primary telephone number of the user. The telephone number can contain a maximum of 100 characters. Add: Required Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementContactInfo/phone2> ;
    sh:name "phone2" ;
    sh:description "An alternate telephone number for the user. The telephone number can contain a maximum of 100 characters. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Customer
microsoftads:CustomerManagementCustomerShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementCustomer ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementCustomer/customerFinancialStatus> ;
    sh:name "customer financial status" ;
    sh:description "The financial status of the customer. For example, the status indicates whether the customer is in good standing or one or more of the accounts are past due. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "ProposalsOnly" "PendingCreditCheck" "ClearFinancialStatus" "SoldToOnly" "CreditHold" "CreditWarning" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementCustomer/id> ;
    sh:name "id" ;
    sh:description "The system-generated customer identifier. Use this identifier with operation requests that require a CustomerId SOAP header element. Add: Read-only Update: Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementCustomer/industry> ;
    sh:name "industry" ;
    sh:description "The primary business segment of the customer, for example, automotive, food, or entertainment. Add: Required Update: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "NA" "AgencySalesHouse" "Automotive" "ConsumerPackagedGoods" "Education" "Entertainment" "FinancialServices" "FoodServices" "Gaming" "GovernmentNonprofitPolitical" "Healthcare" "Internal" "PublishingAndWebMedia" "RealEstate" "Retail" "Services" "Technology" "Telecommunications" "TravelHospitality" "Other" "Pharmaceuticals" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementCustomer/lastModifiedByUserId> ;
    sh:name "last modified by user id" ;
    sh:description "The identifier of the last user to update the customer's information. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementCustomer/lastModifiedTime> ;
    sh:name "last modified time" ;
    sh:description "The date and time that the customer information was last updated. The value is in Coordinated Universal Time (UTC). The date and time value reflects the date and time at the server, not the client. For information about the format of the date and time, see the dateTime entry in Primitive XML Data Types. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementCustomer/marketCountry> ;
    sh:name "market country" ;
    sh:description "The primary country where the customer operates. For a list of customer market country code values, see Product Language. Add: Required Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementCustomer/marketLanguage> ;
    sh:name "market language" ;
    sh:description "The primary language that the customer uses. Your customer market language determines the language of the Microsoft Advertising interface. For a list of customer market language code values, see Product Language. Add: Required Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Danish" "Dutch" "English" "Finnish" "French" "German" "Italian" "Japanese" "Norwegian" "Portuguese" "Swedish" "Spanish" "Arabic" "Hebrew" "Korean" "Russian" "TraditionalChinese" "SimplifiedChinese" "Thai" "Turkish" "Filipino" "Indonesian" "Polish" "Vietnamese" "Malay" "Ukrainian" "Czech" "Romanian" "Greek" "Hungarian" "Hindi" "Bulgarian" "Lithuanian" "Croatian" "Latvian" "Slovenian" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementCustomer/name> ;
    sh:name "name" ;
    sh:description "The name of the customer. The name can contain a maximum of 90 characters. Add: Required Update: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementCustomer/serviceLevel> ;
    sh:name "service level" ;
    sh:description "For internal use only. If this element is set when calling SignupCustomer an error will be returned. If this element is set when calling UpdateCustomer the element will be ignored. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "SelfServe" "SelfServeTrusted" "Premium" "Internal" "Select" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementCustomer/customerLifeCycleStatus> ;
    sh:name "customer life cycle status" ;
    sh:description "The status of the customer. When you create the customer, the status is set to Active. You cannot change the status. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Active" "Inactive" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementCustomer/timeStamp> ;
    sh:name "time stamp" ;
    sh:description "A time-stamp value that the system uses internally to reconcile updates when you call the UpdateCustomer and DeleteCustomer operations. Add: Read-only Update: Required" ;
    sh:datatype xsd:base64Binary ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementCustomer/number> ;
    sh:name "number" ;
    sh:description "A system-generated customer number that is used in the Microsoft Advertising web application. The customer number has the form xxxxxxxxxx, where xxxxxxxxxx is a series of any ten alphanumeric characters. Add: Read-only Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementCustomer/customerAddress> ;
    sh:name "customer address" ;
    sh:description "The customer's business address. This property is not used by Microsoft Advertising, and you must set the account business address instead. Add: Optional Update: Optional" ;
    sh:node microsoftads:CustomerManagementAddressShape ;
    sh:class microsoftads:CustomerManagementAddress ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementCustomer/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. Forward compatibility changes will be noted here in future releases. There are currently no forward compatibility changes for this object." ;
    sh:node microsoftads:CustomerManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CustomerManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Customer Management Customer Role
microsoftads:CustomerManagementCustomerRoleShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementCustomerRole ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementCustomerRole/roleId> ;
    sh:name "role id" ;
    sh:description "The role that the user has when accessing advertiser accounts through the CustomerId. Possible values include the following: 16 - The user has the Advertiser Campaign Manager role. 33 - The user has the Aggregator role. 41 - The user has the Super Admin role. 100 - The user has the Viewer role. 203 - The user has the Standard User role. For more information, see the User Roles technical guide." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementCustomerRole/customerId> ;
    sh:name "customer id" ;
    sh:description "The identifier of the customer where the user has either signed up or has some account hierarchy relationship." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementCustomerRole/accountIds> ;
    sh:name "account ids" ;
    sh:description "The list of accounts that the user can access in the customer. If the user has CID level of access, then AccountIDs will be not returned. For account level access, the AccountIDs will be returned in the CustomerRole object of the GetUser API." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementCustomerRole/linkedAccountIds> ;
    sh:name "linked account ids" ;
    sh:description "The list of linked accounts that the user can access through the CustomerId as an agency on behalf of another customer. If this element is nil, the user does not have access to individually linked advertiser accounts through the CustomerId. The user might have access to advertiser accounts in other linked customers, so be sure to take into account all CustomerRoles returned by GetUser. Please note that accounts created as an aggregator via SignupCustomer will also be returned in this element. You can delete aggregatee accounts via DeleteAccount, but you cannot delink them via UpdateClientLinks. Call the SearchClientLinks operation to help determine which accounts can be delinked." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementCustomerRole/customerLinkPermission> ;
    sh:name "customer link permission" ;
    sh:description "Determines whether the user's access to the accounts is restricted by customer hierarchy i.e., customer level client linking. The possible values include Administrative, Standard, and LinkedEntityOnly. It is also possible this field can be nil or empty. If this field is nil or empty, the user is signed up directly on the CustomerId. If this field is set to \"Administrative\", the user has access to the CustomerId through an Administrative customer link. If this field is set to \"Standard\", the user has access to the CustomerId through a Standard customer link. If this field is set to \"LinkedEntityOnly\", the user is signed up directly on the CustomerId but cannot access its advertiser accounts. The CustomerId is part of a customer link hierarchy whereby the user can access other customers below it. For more information, see the User Roles technical guide." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Date Range
microsoftads:CustomerManagementDateRangeShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementDateRange ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementDateRange/minDate> ;
    sh:name "min date" ;
    sh:description "The minimum date. The date format should be specified as \"yyyyMMdd\". For example April 3, 2020 should be specified as \"20200403\"." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementDateRange/maxDate> ;
    sh:name "max date" ;
    sh:description "The maximum date. The date format should be specified as \"yyyyMMdd\". For example December 31, 2050 should be specified as \"20501231\"." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Delete Account Request
microsoftads:CustomerManagementDeleteAccountRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementDeleteAccountRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementDeleteAccountRequest/accountId> ;
    sh:name "account id" ;
    sh:description "The identifier of the account to delete." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementDeleteAccountRequest/timeStamp> ;
    sh:name "time stamp" ;
    sh:description "The time-stamp value that the operation uses to reconcile the update. You must call GetAccount to get the time-stamp value. The delete operation fails if the account object has a time-stamp value that differs from the one that you pass." ;
    sh:datatype xsd:base64Binary ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Delete Customer Request
microsoftads:CustomerManagementDeleteCustomerRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementDeleteCustomerRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementDeleteCustomerRequest/customerId> ;
    sh:name "customer id" ;
    sh:description "The identifier of the customer to delete." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementDeleteCustomerRequest/timeStamp> ;
    sh:name "time stamp" ;
    sh:description "The time-stamp value that the operation uses to reconcile the update. You must call GetCustomer to get the time-stamp value. The delete operation fails if the customer object has a time-stamp value that differs from the one that you pass." ;
    sh:datatype xsd:base64Binary ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Delete User Request
microsoftads:CustomerManagementDeleteUserRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementDeleteUserRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementDeleteUserRequest/userId> ;
    sh:name "user id" ;
    sh:description "The identifier of the user to delete." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementDeleteUserRequest/timeStamp> ;
    sh:name "time stamp" ;
    sh:description "The time-stamp value that the operation uses to reconcile the update. You must call GetUser to get the time-stamp value. The delete operation fails if the user object has a time-stamp value that differs from the one that you pass." ;
    sh:datatype xsd:base64Binary ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Dismiss Notifications Request
microsoftads:CustomerManagementDismissNotificationsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementDismissNotificationsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementDismissNotificationsRequest/notificationTypePairs> ;
    sh:name "notification type pairs" ;
    sh:description "The key and value of a notification entity." ;
    sh:node microsoftads:CustomerManagementKeyValueEntityOflongAndintShape ;
    sh:class microsoftads:CustomerManagementKeyValueEntityOflongAndint ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementDismissNotificationsRequest/userId> ;
    sh:name "user id" ;
    sh:description "The user's identification number." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Key Value Entity Oflong Andint
microsoftads:CustomerManagementKeyValueEntityOflongAndintShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementKeyValueEntityOflongAndint ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementKeyValueEntityOflongAndint/key> ;
    sh:name "key" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementKeyValueEntityOflongAndint/value> ;
    sh:name "value" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Find Accounts Or Customers Info Request
microsoftads:CustomerManagementFindAccountsOrCustomersInfoRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementFindAccountsOrCustomersInfoRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementFindAccountsOrCustomersInfoRequest/filter> ;
    sh:name "filter" ;
    sh:description "The criteria to use to filter the list of accounts and customers. You can specify either an account name, account number, or customer name. The filter value can contain a partial or full name or number. The operation includes the account or customer in the result if the name or number begins with the specified filter value. The operation performs a case-insensitive comparison when it compares your filter value to the name or number. For example, if you specify \"t\" as the filter value, the list will include accounts and customers whose names begin with \"t\" or \"T\". The operation filters first for accounts that match the filter criteria. If the number of accounts that match the filter criteria is less than the specified TopN value, the operation searches for customers whose name matches the filter criteria. Setting this element to an empty string is the same as calling the GetAccountsInfo followed by calling the GetCustomersInfo." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementFindAccountsOrCustomersInfoRequest/topN> ;
    sh:name "top n" ;
    sh:description "A nonzero positive integer that specifies the number of accounts to return in the result. You must specify a value from 1 through 5,000." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementFindAccountsOrCustomersInfoRequest/returnAdditionalFields> ;
    sh:name "return additional fields" ;
    sh:description "The list of additional properties that you want included within each returned account. The additional field values enable you to get the latest features using the current version of Customer Management API, and in the next version the corresponding elements will be included by default. This request element is optional." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Find Accounts Or Customers Info Response
microsoftads:CustomerManagementFindAccountsOrCustomersInfoResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementFindAccountsOrCustomersInfoResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementFindAccountsOrCustomersInfoResponse/accountInfoWithCustomerData> ;
    sh:name "account info with customer data" ;
    sh:description "A list of AccountInfoWithCustomerData objects of the accounts and customers that match the specified filter criteria. The objects contain information that identifies the account and customer. To get the complete details of an account in the list, access the AccountId element of the AccountInfoWithCustomerData object and use it to call GetAccount operation. To get the complete details of a customer in the list, access the CustomerId element of the AccountInfoWithCustomerData object and use it to call GetCustomer." ;
    sh:node microsoftads:CustomerManagementAccountInfoWithCustomerDataShape ;
    sh:class microsoftads:CustomerManagementAccountInfoWithCustomerData ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Customer Management Find Accounts Request
microsoftads:CustomerManagementFindAccountsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementFindAccountsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementFindAccountsRequest/customerId> ;
    sh:name "customer id" ;
    sh:description "The identifier of the customer whose accounts you want to get. If null, the operation searches for a match among all of the accounts of the customers that the user manages and owns." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementFindAccountsRequest/accountFilter> ;
    sh:name "account filter" ;
    sh:description "The criteria to use to filter the list of accounts. You can specify either an account name or an account number. If your filter value is of the form, Xnnnnn, where nnnnn is a series of digits, the operation filters by account number. The filter value can contain a partial or full account name or number of the accounts that you want to get. The operation includes the account in the result if the name or number of the account begins with the specified filter value. The operation performs a case-insensitive comparison when it compares your filter value to the account name or number. For example, if you specify \"t\" as the filter value, the list will include accounts whose names begin with \"t\" or \"T\". Setting this element to an empty string is the same as calling the GetAccountsInfo." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementFindAccountsRequest/topN> ;
    sh:name "top n" ;
    sh:description "A nonzero positive integer that specifies the number of accounts to return in the result. You must specify a value from 1 through 5,000." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Find Accounts Response
microsoftads:CustomerManagementFindAccountsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementFindAccountsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementFindAccountsResponse/accountsInfo> ;
    sh:name "accounts info" ;
    sh:description "A list of AccountInfo objects of the accounts that match the specified filter criteria. To get the complete details of an account in the list, access the Id element of the AccountInfo object and use it to call GetAccount." ;
    sh:node microsoftads:CustomerManagementAccountInfoShape ;
    sh:class microsoftads:CustomerManagementAccountInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Customer Management Get Accessible Customer Request
microsoftads:CustomerManagementGetAccessibleCustomerRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementGetAccessibleCustomerRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementGetAccessibleCustomerRequest/customerId> ;
    sh:name "customer id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Get Accessible Customer Response
microsoftads:CustomerManagementGetAccessibleCustomerResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementGetAccessibleCustomerResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementGetAccessibleCustomerResponse/accessibleCustomer> ;
    sh:name "accessible customer" ;
    sh:node microsoftads:CustomerManagementCustomerShape ;
    sh:class microsoftads:CustomerManagementCustomer ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementGetAccessibleCustomerResponse/validFields> ;
    sh:name "valid fields" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Get Account Pilot Features Request
microsoftads:CustomerManagementGetAccountPilotFeaturesRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementGetAccountPilotFeaturesRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementGetAccountPilotFeaturesRequest/accountId> ;
    sh:name "account id" ;
    sh:description "The identifier of the account used to get a list of feature pilot IDs." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Get Account Pilot Features Response
microsoftads:CustomerManagementGetAccountPilotFeaturesResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementGetAccountPilotFeaturesResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementGetAccountPilotFeaturesResponse/featurePilotFlags> ;
    sh:name "feature pilot flags" ;
    sh:description "A list of integers that identify the feature pilots that are enabled for the ad account. For more information about pilot participation please contact your account manager." ;
    sh:datatype xsd:int ;
  ] .

# Shape for Customer Management Get Account Request
microsoftads:CustomerManagementGetAccountRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementGetAccountRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementGetAccountRequest/accountId> ;
    sh:name "account id" ;
    sh:description "The identifier of the account to get." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementGetAccountRequest/returnAdditionalFields> ;
    sh:name "return additional fields" ;
    sh:description "The list of additional properties that you want included within each returned account. The additional field values enable you to get the latest features using the current version of Customer Management API, and in the next version the corresponding elements will be included by default. This request element is optional." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Get Account Response
microsoftads:CustomerManagementGetAccountResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementGetAccountResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementGetAccountResponse/account> ;
    sh:name "account" ;
    sh:description "An account object that contains information about the account, such as payment method, account type, and parent customer." ;
    sh:node microsoftads:CustomerManagementAdvertiserAccountShape ;
    sh:class microsoftads:CustomerManagementAdvertiserAccount ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Get Accounts Info Request
microsoftads:CustomerManagementGetAccountsInfoRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementGetAccountsInfoRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementGetAccountsInfoRequest/customerId> ;
    sh:name "customer id" ;
    sh:description "The identifier of the customer used to get the account information. This request element is optional. If not set, the user's credentials are used to determine the customer." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementGetAccountsInfoRequest/onlyParentAccounts> ;
    sh:name "only parent accounts" ;
    sh:description "Determines whether to return only the advertiser accounts that belong to the customer or to also return linked advertiser accounts under other customers. To limit the results to advertiser accounts directly under the specified customer, set this element to true, and otherwise leave it empty or set the property to false. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Get Accounts Info Response
microsoftads:CustomerManagementGetAccountsInfoResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementGetAccountsInfoResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementGetAccountsInfoResponse/accountsInfo> ;
    sh:name "accounts info" ;
    sh:description "The list of information about advertiser accounts that match the request criteria. Note that there can be a delay of up to five minutes from the time that you create an account until the account information is included in the response." ;
    sh:node microsoftads:CustomerManagementAccountInfoShape ;
    sh:class microsoftads:CustomerManagementAccountInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Customer Management Get Current User Response
microsoftads:CustomerManagementGetCurrentUserResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementGetCurrentUserResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementGetCurrentUserResponse/user> ;
    sh:name "user" ;
    sh:node microsoftads:CustomerManagementUserShape ;
    sh:class microsoftads:CustomerManagementUser ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management User
microsoftads:CustomerManagementUserShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementUser ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementUser/contactInfo> ;
    sh:name "contact info" ;
    sh:description "The user's contact information. Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:node microsoftads:CustomerManagementContactInfoShape ;
    sh:class microsoftads:CustomerManagementContactInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementUser/customerId> ;
    sh:name "customer id" ;
    sh:description "The identifier of the customer for this user to access. Update: Read-only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementUser/id> ;
    sh:name "id" ;
    sh:description "The Microsoft Advertising identifier of the user. Update: Required" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementUser/jobTitle> ;
    sh:name "job title" ;
    sh:description "The user's job title. The title can contain a maximum of 50 characters. Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementUser/lastModifiedByUserId> ;
    sh:name "last modified by user id" ;
    sh:description "The identifier of the last user to update the user's information. Update: Read-only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementUser/lastModifiedTime> ;
    sh:name "last modified time" ;
    sh:description "The date and time that that the user information was last updated. The value is in Coordinated Universal Time (UTC). The date and time value reflects the date and time at the server, not the client. For information about the format of the date and time, see the dateTime entry in Primitive XML Data Types. Update: Read-only" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementUser/lcid> ;
    sh:name "lcid" ;
    sh:description "The locale to use when sending correspondence to the user by email or postal mail. The default is EnglishUS. Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "ArabicSaudiArabia" "Bulgarian" "ChineseTaiwan" "CzechRepublicCZ" "DanishDenmark" "GermanGermany" "GreekGreece" "EnglishUS" "SpanishSpain" "FinnishFinland" "FrenchFrance" "HebrewIsrael" "HungaryHU" "ItalianItaly" "JapaneseJapan" "KoreanKorea" "DutchNetherlands" "NorwegianNorway" "PolandPolish" "PortugueseBrazil" "RomaniaRO" "RussianRussia" "Croatian" "SwedishSweden" "EnglishThailand" "TurkishTurkey" "EnglishIndonesia" "UkrainianUkraine" "Slovenian" "Latvian" "Lithuanian" "EnglishVietnam" "HindiIndia" "MalayMalaysia" "FilipinoPhilippines" "ArabicIraq" "ChineseChina" "GermanSwitzerland" "EnglishUK" "SpanishMexico" "ArabicEgypt" "ChineseHongKong" "GermanAustria" "EnglishAustralia" "SpanishSpainModernSort" "FrenchCanada" "ArabicLibya" "EnglishCanada" "ArabicAlgeria" "EnglishNewZealand" "ArabicMorocco" "EnglishIreland" "ArabicTunisia" "ArabicOman" "SpanishVenezuela" "ArabicYemen" "SpanishColombia" "SpanishPeru" "ArabicJordan" "SpanishArgentina" "ArabicLebanon" "ArabicKuwait" "EnglishPhilippines" "SpanishChile" "ArabicUnitedArabEmirates" "ArabicBahrain" "ArabicQatar" "EnglishIndia" "EnglishMalaysia" "EnglishSingapore" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementUser/name> ;
    sh:name "name" ;
    sh:description "The name of the user. Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:node microsoftads:CustomerManagementPersonNameShape ;
    sh:class microsoftads:CustomerManagementPersonName ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementUser/password> ;
    sh:name "password" ;
    sh:description "This element is reserved for internal use and will be removed from a future version of the API. The GetUser operation does not return the password. Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementUser/secretAnswer> ;
    sh:name "secret answer" ;
    sh:description "This element is reserved for internal use and will be removed from a future version of the API. Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementUser/secretQuestion> ;
    sh:name "secret question" ;
    sh:description "This element is reserved for internal use and will be removed from a future version of the API. Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "None" "FavoritePetsName" "FavoriteMovie" "Anniversary" "FatherMiddleName" "SpouseMiddleName" "FirstChildMiddleName" "HighSchoolName" "FavoriteTeacherName" "FavoriteSportsTeam" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementUser/userLifeCycleStatus> ;
    sh:name "user life cycle status" ;
    sh:description "The status of the user. Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Pending" "Active" "Inactive" "Deleted" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementUser/timeStamp> ;
    sh:name "time stamp" ;
    sh:description "A time-stamp value that the system uses internally to reconcile updates when you call UpdateUser or DeleteUser. Update: Required" ;
    sh:datatype xsd:base64Binary ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementUser/userName> ;
    sh:name "user name" ;
    sh:description "The logon user name of the user. The email address of the Microsoft Account may differ from the Email element of the ContactInfo object. Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementUser/forwardCompatibilityMap> ;
    sh:name "forward compatibility map" ;
    sh:description "The list of key and value strings for forward compatibility to avoid otherwise breaking changes when new elements are added in the current API version. Forward compatibility changes will be noted here in future releases. There are currently no forward compatibility changes for this object." ;
    sh:node microsoftads:CustomerManagementKeyValuePairOfstringAndstringShape ;
    sh:class microsoftads:CustomerManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementUser/authenticationToken> ;
    sh:name "authentication token" ;
    sh:description "The OAuth access token that represents the credentials of the user who has permissions to Microsoft Advertising accounts. For more information see Authentication with OAuth. Update: Read-only" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Person Name
microsoftads:CustomerManagementPersonNameShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementPersonName ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementPersonName/firstName> ;
    sh:name "first name" ;
    sh:description "The first name of the user. The first name is limited to 100 characters. Add: Required Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementPersonName/lastName> ;
    sh:name "last name" ;
    sh:description "The last name of the user. The last name is limited to 100 characters. Add: Required Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementPersonName/middleInitial> ;
    sh:name "middle initial" ;
    sh:description "The middle initial of the user. The middle initial is limited to one character. Add: Optional Update: Optional. If no value is set for the update, this setting is not changed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Get Customer Pilot Features Request
microsoftads:CustomerManagementGetCustomerPilotFeaturesRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementGetCustomerPilotFeaturesRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementGetCustomerPilotFeaturesRequest/customerId> ;
    sh:name "customer id" ;
    sh:description "The identifier of the customer used to get a list of feature pilot IDs." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Get Customer Pilot Features Response
microsoftads:CustomerManagementGetCustomerPilotFeaturesResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementGetCustomerPilotFeaturesResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementGetCustomerPilotFeaturesResponse/featurePilotFlags> ;
    sh:name "feature pilot flags" ;
    sh:description "A list of integers that identify the feature pilots that are enabled for all accounts owned by a customer (manager account). For more information about pilot participation please contact your account manager. For example the following values correspond to customer level feature pilots. 78 - Call Tracking 268 - Dynamic Search Ads 317 - Similar Remarketing Lists 351 - Local Inventory Ads 388 - Microsoft Audience Network 567 - Azure AD Work and School Accounts 574 - Include in Conversions 579 - Customer List Audience 600 - Dynamic Search Ads Text Part 2 616 - View-through conversions 618 - Combined List Audience 626 - Multi-Image Ad Extensions 635 - Custom Parameters Limit Increase Phase 3 636 - Final Url Suffix Phase 3 637 - Cookie-Based Experiments 684 - Shopping Campaigns for Brands 704 - Target ROAS Bid Strategy Type in UK/CA/AU/DE/FR 718 - Smart Shopping Campaigns 720 - Promotion Ad Extensions 721 - Target ROAS Bid Strategy Type in US 734 - Google Import As A Service 762 - Target Impression Share Bid Strategy Type 764 - Site Property Promotion Ad for Hotels 777 - Responsive Ads for Smart Shopping Campaigns 793 - Create Accounts on Behalf of Client 802 - Flyer Ad Extensions Please note the list of pilot IDs might also include account level pilot IDs for internal use. You should ignore account level pilot IDs returned by this operation and use the GetAccountPilotFeatures operation instead." ;
    sh:datatype xsd:int ;
  ] .

# Shape for Customer Management Get Customer Request
microsoftads:CustomerManagementGetCustomerRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementGetCustomerRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementGetCustomerRequest/customerId> ;
    sh:name "customer id" ;
    sh:description "The identifier of the customer whose information you want to get." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Get Customer Response
microsoftads:CustomerManagementGetCustomerResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementGetCustomerResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementGetCustomerResponse/customer> ;
    sh:name "customer" ;
    sh:description "A Customer object that contains information about the customer." ;
    sh:node microsoftads:CustomerManagementCustomerShape ;
    sh:class microsoftads:CustomerManagementCustomer ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Get Customers Info Request
microsoftads:CustomerManagementGetCustomersInfoRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementGetCustomersInfoRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementGetCustomersInfoRequest/customerNameFilter> ;
    sh:name "customer name filter" ;
    sh:description "A partial or full name of the customers that you want to get. The operation includes the customer in the result if the customer's name begins with the specified filter name. This request element is optional. If you do not want to filter by customer name, set this element to an empty string. The operation performs a case-insensitive comparison when it compares your name filter value to the customer names. For example, if you specify \"t\" as the filter value, the list will include customers whose names begin with \"t\" or \"T\"." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementGetCustomersInfoRequest/topN> ;
    sh:name "top n" ;
    sh:description "A nonzero positive integer that specifies the number of customers to return in the result." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Get Customers Info Response
microsoftads:CustomerManagementGetCustomersInfoResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementGetCustomersInfoResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementGetCustomersInfoResponse/customersInfo> ;
    sh:name "customers info" ;
    sh:description "The list of information about customers that match the request criteria." ;
    sh:node microsoftads:CustomerManagementCustomerInfoShape ;
    sh:class microsoftads:CustomerManagementCustomerInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Customer Management Get Linked Accounts And Customers Info Request
microsoftads:CustomerManagementGetLinkedAccountsAndCustomersInfoRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementGetLinkedAccountsAndCustomersInfoRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementGetLinkedAccountsAndCustomersInfoRequest/customerId> ;
    sh:name "customer id" ;
    sh:description "The identifier of the customer whose hierarchy you want to get." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementGetLinkedAccountsAndCustomersInfoRequest/onlyParentAccounts> ;
    sh:name "only parent accounts" ;
    sh:description "Determines whether to return only the advertiser accounts that belong to the customer or to also return linked customers and linked advertiser accounts under other customers. To limit the results to advertiser accounts directly under the specified customer, set this element to true, and otherwise leave it empty or set the property to false. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Get Linked Accounts And Customers Info Response
microsoftads:CustomerManagementGetLinkedAccountsAndCustomersInfoResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementGetLinkedAccountsAndCustomersInfoResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementGetLinkedAccountsAndCustomersInfoResponse/accountsInfo> ;
    sh:name "accounts info" ;
    sh:description "The list of information about advertiser accounts that match the request criteria. Note that there can be a delay of up to five minutes from the time that you create an account until the account information is included in the response." ;
    sh:node microsoftads:CustomerManagementAccountInfoShape ;
    sh:class microsoftads:CustomerManagementAccountInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementGetLinkedAccountsAndCustomersInfoResponse/customersInfo> ;
    sh:name "customers info" ;
    sh:description "The list of information about customers that match the request criteria." ;
    sh:node microsoftads:CustomerManagementCustomerInfoShape ;
    sh:class microsoftads:CustomerManagementCustomerInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Customer Management Get Notifications Request
microsoftads:CustomerManagementGetNotificationsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementGetNotificationsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementGetNotificationsRequest/locale> ;
    sh:name "locale" ;
    sh:description "The locale of the message. The default value is en. Add: Optional Update: Optional" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementGetNotificationsRequest/userId> ;
    sh:name "user id" ;
    sh:description "The UserId filter. Add: Optional Update: Optional" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementGetNotificationsRequest/typeIds> ;
    sh:name "type ids" ;
    sh:description "A list of notification type filter. Add: Optional Update: Optional" ;
    sh:datatype xsd:int ;
  ] .

# Shape for Customer Management Get Notifications Response
microsoftads:CustomerManagementGetNotificationsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementGetNotificationsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementGetNotificationsResponse/notifications> ;
    sh:name "notifications" ;
    sh:description "A collection of Notification objects that contains information about the Notification." ;
    sh:node microsoftads:CustomerManagementNotificationShape ;
    sh:class microsoftads:CustomerManagementNotification ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Customer Management Notification
microsoftads:CustomerManagementNotificationShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementNotification ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementNotification/typeId> ;
    sh:name "type id" ;
    sh:description "The identifier of the type of Notification." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementNotification/id> ;
    sh:name "id" ;
    sh:description "The identifier of the Notification." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementNotification/severity> ;
    sh:name "severity" ;
    sh:description "The severity of the Notification." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementNotification/title> ;
    sh:name "title" ;
    sh:description "The title of the Notification." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementNotification/message> ;
    sh:name "message" ;
    sh:description "The message of the Notification." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementNotification/additionalInfo> ;
    sh:name "additional info" ;
    sh:description "The supporting data of the Notification." ;
    sh:node microsoftads:CustomerManagementKeyValueEntityOfstringAndstringShape ;
    sh:class microsoftads:CustomerManagementKeyValueEntityOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Customer Management Key Value Entity Ofstring Andstring
microsoftads:CustomerManagementKeyValueEntityOfstringAndstringShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementKeyValueEntityOfstringAndstring ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementKeyValueEntityOfstringAndstring/key> ;
    sh:name "key" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementKeyValueEntityOfstringAndstring/value> ;
    sh:name "value" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Get Pilot Features Countries Response
microsoftads:CustomerManagementGetPilotFeaturesCountriesResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementGetPilotFeaturesCountriesResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementGetPilotFeaturesCountriesResponse/pilotFeatures> ;
    sh:name "pilot features" ;
    sh:node microsoftads:CustomerManagementPilotFeatureShape ;
    sh:class microsoftads:CustomerManagementPilotFeature ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Customer Management Pilot Feature
microsoftads:CustomerManagementPilotFeatureShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementPilotFeature ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementPilotFeature/id> ;
    sh:name "id" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementPilotFeature/countries> ;
    sh:name "countries" ;
    sh:datatype xsd:string ;
  ] .

# Shape for Customer Management Get User MFAStatus Response
microsoftads:CustomerManagementGetUserMFAStatusResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementGetUserMFAStatusResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementGetUserMFAStatusResponse/mFAStatus> ;
    sh:name "m fastatus" ;
    sh:description "Used to estimate adoption of multi-factor authentication (MFA) by users of your application. The operation returns true if during calendar year 2021 the user passed through MFA via Microsoft Advertising online, Microsoft Advertising Editor, or Microsoft Advertising mobile. Otherwise this value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Get User Request
microsoftads:CustomerManagementGetUserRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementGetUserRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementGetUserRequest/userId> ;
    sh:name "user id" ;
    sh:description "The identifier of the user to get. If this element is null or not provided, the response will include details for the authenticated user specified in the request header." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Get User Response
microsoftads:CustomerManagementGetUserResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementGetUserResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementGetUserResponse/user> ;
    sh:name "user" ;
    sh:description "A user object that contains information about the user." ;
    sh:node microsoftads:CustomerManagementUserShape ;
    sh:class microsoftads:CustomerManagementUser ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementGetUserResponse/customerRoles> ;
    sh:name "customer roles" ;
    sh:description "The list of roles that a user has for each customer or list of accounts. At minimum one list item will be returned. If a user's credentials can access multiple customers, then one CustomerRole object per customer will be returned. You can view all of your own roles across all customers; however, you will only see the roles of other users as it pertains to customers that you can access. For example let's say you`@contoso`.com and another-user`@contoso`.com can access Customer A. The other user might also have access to Customer B and C; however when you call this operation with their user identifier, you will only see their role under Customer A. When another-user`@contoso`.com calls this operation with their own credentials, the operation would return three CustomerRole objects." ;
    sh:node microsoftads:CustomerManagementCustomerRoleShape ;
    sh:class microsoftads:CustomerManagementCustomerRole ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Customer Management Get Users Info Request
microsoftads:CustomerManagementGetUsersInfoRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementGetUsersInfoRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementGetUsersInfoRequest/customerId> ;
    sh:name "customer id" ;
    sh:description "The identifier of the customer to which the users belong." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementGetUsersInfoRequest/statusFilter> ;
    sh:name "status filter" ;
    sh:description "The status value that the operation uses to filter the list of users that it returns. The operation returns only those users with the specified status." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Pending" "Active" "Inactive" "Deleted" ) ;
  ] .

# Shape for Customer Management Get Users Info Response
microsoftads:CustomerManagementGetUsersInfoResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementGetUsersInfoResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementGetUsersInfoResponse/usersInfo> ;
    sh:name "users info" ;
    sh:description "A list of UserInfo objects that identifies the list of users who meet the filter criteria. To get the user data for a user in the list, access the Id element of the UserInfo object and use it to call GetUser." ;
    sh:node microsoftads:CustomerManagementUserInfoShape ;
    sh:class microsoftads:CustomerManagementUserInfo ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Customer Management User Info
microsoftads:CustomerManagementUserInfoShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementUserInfo ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementUserInfo/id> ;
    sh:name "id" ;
    sh:description "The system-generated identifier of the user." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementUserInfo/userName> ;
    sh:name "user name" ;
    sh:description "The logon user name of the user." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Map Account Id To External Account Ids Request
microsoftads:CustomerManagementMapAccountIdToExternalAccountIdsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementMapAccountIdToExternalAccountIdsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementMapAccountIdToExternalAccountIdsRequest/accountId> ;
    sh:name "account id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementMapAccountIdToExternalAccountIdsRequest/externalAccountIds> ;
    sh:name "external account ids" ;
    sh:datatype xsd:string ;
  ] .

# Shape for Customer Management Map Customer Id To External Customer Id Request
microsoftads:CustomerManagementMapCustomerIdToExternalCustomerIdRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementMapCustomerIdToExternalCustomerIdRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementMapCustomerIdToExternalCustomerIdRequest/customerId> ;
    sh:name "customer id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementMapCustomerIdToExternalCustomerIdRequest/externalCustomerId> ;
    sh:name "external customer id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Order By
microsoftads:CustomerManagementOrderByShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementOrderBy ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementOrderBy/field> ;
    sh:name "field" ;
    sh:description "Determines the field to order the results. For example order the results by Id." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Id" "Name" "Number" "LifeCycleStatus" "CouponClassName" "CouponStartDate" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementOrderBy/order> ;
    sh:name "order" ;
    sh:description "Determines whether the results are ascending or descending." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Ascending" "Descending" ) ;
  ] .

# Shape for Customer Management Paging
microsoftads:CustomerManagementPagingShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementPaging ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementPaging/index> ;
    sh:name "index" ;
    sh:description "The zero-based results page index. For example to request the first page of results, set this value to 0 (zero)." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementPaging/size> ;
    sh:name "size" ;
    sh:description "The page size and the number of results to return in the specified page. The maximum size for SearchAccounts is 1,000. The maximum size for SearchClientLinks is 100. The maximum size for SearchCustomers is 1,024. If you include page info but do not set this element the default size is 0 (zero)." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Predicate
microsoftads:CustomerManagementPredicateShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementPredicate ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementPredicate/field> ;
    sh:name "field" ;
    sh:description "The name of the element for the object you are searching. For possible values, see the Remarks below." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementPredicate/operator> ;
    sh:name "operator" ;
    sh:description "Defines the relationship between the field and the value." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Equals" "NotEquals" "Contains" "In" "GreaterThanEquals" "LessThanEquals" "StartsWith" "NotContains" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementPredicate/value> ;
    sh:name "value" ;
    sh:description "The string to search in the specified field. The length of this string must be four or greater, unless the field is set to MarketCountry or MarketLanguage." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Search Accounts Request
microsoftads:CustomerManagementSearchAccountsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementSearchAccountsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementSearchAccountsRequest/predicates> ;
    sh:name "predicates" ;
    sh:description "Determines the conditions that all must be met to return accounts. You must include exactly one predicate. If the predicate Field is set to \"AccountLifeCycleStatus\", then you must specify one additional predicate with the Field set to another value such as UserId. For details about each supported predicate Field value see Predicate Remarks." ;
    sh:node microsoftads:CustomerManagementPredicateShape ;
    sh:class microsoftads:CustomerManagementPredicate ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementSearchAccountsRequest/ordering> ;
    sh:name "ordering" ;
    sh:description "Determines the order of results by the specified property of an account. This request element is optional. You can specify up to one OrderBy element in the array. Additional elements are not supported and will be ignored by the service. If you set the Field element of the OrderBy object to \"Id\", \"Name\", or \"Number\", the returned Accounts will be ordered by the account identifiers, names, or numbers accordingly. This request element is optional." ;
    sh:node microsoftads:CustomerManagementOrderByShape ;
    sh:class microsoftads:CustomerManagementOrderBy ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementSearchAccountsRequest/pageInfo> ;
    sh:name "page info" ;
    sh:description "Determines the index and size of results per page." ;
    sh:node microsoftads:CustomerManagementPagingShape ;
    sh:class microsoftads:CustomerManagementPaging ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementSearchAccountsRequest/returnAdditionalFields> ;
    sh:name "return additional fields" ;
    sh:description "The list of additional properties that you want included within each returned account. The additional field values enable you to get the latest features using the current version of Customer Management API, and in the next version the corresponding elements will be included by default. This request element is optional." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Search Accounts Response
microsoftads:CustomerManagementSearchAccountsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementSearchAccountsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementSearchAccountsResponse/accounts> ;
    sh:name "accounts" ;
    sh:description "A list of accounts that meet the request criteria." ;
    sh:node microsoftads:CustomerManagementAdvertiserAccountShape ;
    sh:class microsoftads:CustomerManagementAdvertiserAccount ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Customer Management Search Client Links Request
microsoftads:CustomerManagementSearchClientLinksRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementSearchClientLinksRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementSearchClientLinksRequest/predicates> ;
    sh:name "predicates" ;
    sh:description "Determines the conditions that must be met to return client links. You must include one or two predicates. For details about how results are determined for each supported predicate Field value see Predicate Remarks." ;
    sh:node microsoftads:CustomerManagementPredicateShape ;
    sh:class microsoftads:CustomerManagementPredicate ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementSearchClientLinksRequest/ordering> ;
    sh:name "ordering" ;
    sh:description "Determines the order of results. This request element is optional. If specified, you should only include one OrderBy element in the list. Additional elements are not supported and will be ignored by the service. For this service operation, the following values are supported in the Field element of a OrderBy object. Id - The order is determined by the ClientAccountId element of the returned ClientLink. Name - The order is determined by the Name element of the returned ClientLink. Number - The order is determined by the ManagingCustomerNumber element of the returned ClientLink." ;
    sh:node microsoftads:CustomerManagementOrderByShape ;
    sh:class microsoftads:CustomerManagementOrderBy ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementSearchClientLinksRequest/pageInfo> ;
    sh:name "page info" ;
    sh:description "Determines the index and size of results per page." ;
    sh:node microsoftads:CustomerManagementPagingShape ;
    sh:class microsoftads:CustomerManagementPaging ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Search Client Links Response
microsoftads:CustomerManagementSearchClientLinksResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementSearchClientLinksResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementSearchClientLinksResponse/clientLinks> ;
    sh:name "client links" ;
    sh:description "The list of client link invitations." ;
    sh:node microsoftads:CustomerManagementClientLinkShape ;
    sh:class microsoftads:CustomerManagementClientLink ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Customer Management Search Customers Request
microsoftads:CustomerManagementSearchCustomersRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementSearchCustomersRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementSearchCustomersRequest/predicates> ;
    sh:name "predicates" ;
    sh:description "Determines the conditions that all must be met to return customers. You must include between one and 10 predicates. To filter by the created date range, you can include two predicates with the Field value set to CreatedDate, and otherwise may only use each predicate field once. For details about each supported predicate Field value see Predicate Remarks." ;
    sh:node microsoftads:CustomerManagementPredicateShape ;
    sh:class microsoftads:CustomerManagementPredicate ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementSearchCustomersRequest/dateRange> ;
    sh:name "date range" ;
    sh:description "Determines the minimum and maximum customer creation date range. This request element is optional." ;
    sh:node microsoftads:CustomerManagementDateRangeShape ;
    sh:class microsoftads:CustomerManagementDateRange ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementSearchCustomersRequest/ordering> ;
    sh:name "ordering" ;
    sh:description "Determines the order of results by the specified property of a customer. This request element is optional. You can specify up to one OrderBy element in the array. Additional elements are not supported and will be ignored by the service. For this service operation, the following values are supported in the Field element of a OrderBy object: Id - The order is determined by the Id element of the returned Customer. Name - The order is determined by the Name element of the returned Customer. Number - The order is determined by the Number element of the returned Customer." ;
    sh:node microsoftads:CustomerManagementOrderByShape ;
    sh:class microsoftads:CustomerManagementOrderBy ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementSearchCustomersRequest/pageInfo> ;
    sh:name "page info" ;
    sh:description "Determines the index and size of results per page." ;
    sh:node microsoftads:CustomerManagementPagingShape ;
    sh:class microsoftads:CustomerManagementPaging ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Search Customers Response
microsoftads:CustomerManagementSearchCustomersResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementSearchCustomersResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementSearchCustomersResponse/customers> ;
    sh:name "customers" ;
    sh:description "A list of customers that meet the request criteria." ;
    sh:node microsoftads:CustomerManagementCustomerShape ;
    sh:class microsoftads:CustomerManagementCustomer ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Customer Management Search User Invitations Request
microsoftads:CustomerManagementSearchUserInvitationsRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementSearchUserInvitationsRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementSearchUserInvitationsRequest/predicates> ;
    sh:name "predicates" ;
    sh:description "Determines the conditions that all must be met to return user invitations. You must include exactly one predicate. For details about each supported predicate Field value see Predicate Remarks." ;
    sh:node microsoftads:CustomerManagementPredicateShape ;
    sh:class microsoftads:CustomerManagementPredicate ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Customer Management Search User Invitations Response
microsoftads:CustomerManagementSearchUserInvitationsResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementSearchUserInvitationsResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementSearchUserInvitationsResponse/userInvitations> ;
    sh:name "user invitations" ;
    sh:description "A list of user invitations that meet the specified criteria." ;
    sh:node microsoftads:CustomerManagementUserInvitationShape ;
    sh:class microsoftads:CustomerManagementUserInvitation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Customer Management User Invitation
microsoftads:CustomerManagementUserInvitationShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementUserInvitation ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementUserInvitation/id> ;
    sh:name "id" ;
    sh:description "A system-generated unique identifier for the user invitation. Send: Read-only Signup: Read-only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementUserInvitation/firstName> ;
    sh:name "first name" ;
    sh:description "The first name of the user. The first name is limited to 40 characters. Send: Required Signup: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementUserInvitation/lastName> ;
    sh:name "last name" ;
    sh:description "The last name of the user. The last name is limited to 40 characters. Send: Required Signup: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementUserInvitation/email> ;
    sh:name "email" ;
    sh:description "The email address corresponding to the user's Microsoft account. The address can contain a maximum of 100 characters. Send: Required Signup: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementUserInvitation/customerId> ;
    sh:name "customer id" ;
    sh:description "The identifier of the customer this user is invited to manage. The AccountIds element determines which customer accounts the user can manage. Send: Required Signup: Read-only" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementUserInvitation/roleId> ;
    sh:name "role id" ;
    sh:description "The role that the user has for each customer or list of accounts. Possible values include the following: 16 - The user has the Advertiser Campaign Manager role. 33 - The user has the Aggregator role. 41 - The user has the Super Admin role. 100 - The user has the Viewer role. 203 - The user has the Standard User role. For more information, see the User Roles technical guide. Send: Required Signup: Required. The role ID must be set to 41 or 203." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementUserInvitation/accountIds> ;
    sh:name "account ids" ;
    sh:description "An array of identifiers of the accounts that the user can manage. To specify that the user can manage all current and future accounts of the customer to which the user belongs, set to NULL. Users with account level roles such as Advertiser Campaign Manager can be restricted to specific accounts. Users with customer level roles such as Super Admin can access all accounts within the user's customer, and their access cannot be restricted to specific accounts. When attempting to restrict customer level user roles, for example attempting to restrict a Super Admin to specific accounts, the operation will not fail and the user will be granted access for all accounts within the specified customer. Send: Optional Signup: Optional" ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementUserInvitation/expirationDate> ;
    sh:name "expiration date" ;
    sh:description "The date and time that the user invitation will expire. The value is in Coordinated Universal Time (UTC). The duration of a user invitation is subject to change, and currently set at 30 days. You cannot set or update this value. Send: Read-only Signup: Read-only" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementUserInvitation/lcid> ;
    sh:name "lcid" ;
    sh:description "The locale to use when sending correspondence to the user by email or postal mail. The default is EnglishUS. Send: Required Signup: Required" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "ArabicSaudiArabia" "Bulgarian" "ChineseTaiwan" "CzechRepublicCZ" "DanishDenmark" "GermanGermany" "GreekGreece" "EnglishUS" "SpanishSpain" "FinnishFinland" "FrenchFrance" "HebrewIsrael" "HungaryHU" "ItalianItaly" "JapaneseJapan" "KoreanKorea" "DutchNetherlands" "NorwegianNorway" "PolandPolish" "PortugueseBrazil" "RomaniaRO" "RussianRussia" "Croatian" "SwedishSweden" "EnglishThailand" "TurkishTurkey" "EnglishIndonesia" "UkrainianUkraine" "Slovenian" "Latvian" "Lithuanian" "EnglishVietnam" "HindiIndia" "MalayMalaysia" "FilipinoPhilippines" "ArabicIraq" "ChineseChina" "GermanSwitzerland" "EnglishUK" "SpanishMexico" "ArabicEgypt" "ChineseHongKong" "GermanAustria" "EnglishAustralia" "SpanishSpainModernSort" "FrenchCanada" "ArabicLibya" "EnglishCanada" "ArabicAlgeria" "EnglishNewZealand" "ArabicMorocco" "EnglishIreland" "ArabicTunisia" "ArabicOman" "SpanishVenezuela" "ArabicYemen" "SpanishColombia" "SpanishPeru" "ArabicJordan" "SpanishArgentina" "ArabicLebanon" "ArabicKuwait" "EnglishPhilippines" "SpanishChile" "ArabicUnitedArabEmirates" "ArabicBahrain" "ArabicQatar" "EnglishIndia" "EnglishMalaysia" "EnglishSingapore" ) ;
  ] .

# Shape for Customer Management Send User Invitation Request
microsoftads:CustomerManagementSendUserInvitationRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementSendUserInvitationRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementSendUserInvitationRequest/userInvitation> ;
    sh:name "user invitation" ;
    sh:description "The user invitation to send." ;
    sh:node microsoftads:CustomerManagementUserInvitationShape ;
    sh:class microsoftads:CustomerManagementUserInvitation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Send User Invitation Response
microsoftads:CustomerManagementSendUserInvitationResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementSendUserInvitationResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementSendUserInvitationResponse/userInvitationId> ;
    sh:name "user invitation id" ;
    sh:description "A system-generated identifier for the user invitation that was sent." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Signup Customer Request
microsoftads:CustomerManagementSignupCustomerRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementSignupCustomerRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementSignupCustomerRequest/customer> ;
    sh:name "customer" ;
    sh:description "A Customer that specifies the details of the customer that you are adding." ;
    sh:node microsoftads:CustomerManagementCustomerShape ;
    sh:class microsoftads:CustomerManagementCustomer ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementSignupCustomerRequest/account> ;
    sh:name "account" ;
    sh:description "An AdvertiserAccount that specifies the details of the customer's primary account. Customers in the closed Unified smart campaigns pilot must set the AccountMode element to \"UnifiedSmart\"." ;
    sh:node microsoftads:CustomerManagementAdvertiserAccountShape ;
    sh:class microsoftads:CustomerManagementAdvertiserAccount ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementSignupCustomerRequest/parentCustomerId> ;
    sh:name "parent customer id" ;
    sh:description "The customer identifier of the aggregator or agency that will manage the new child customer. This element is required for aggregators but ignored for agencies when the UserInvitation request element is set. Customers in the closed Unified smart campaigns pilot can link the new customer to the parent agency ID or leave this element empty." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementSignupCustomerRequest/userInvitation> ;
    sh:name "user invitation" ;
    sh:description "The user invitation to send if you want to sign up a new customer on behalf of a client and optionally link to the new account as an agency. A client Super Admin user must complete sign up steps via the Microsoft Advertising UI such as accept the terms and conditions. This element is optional for agency customers in the Create Accounts on Behalf of Client pilot. Customers in the closed Unified smart campaigns pilot must set one or more of the UserId or UserInvitation element." ;
    sh:node microsoftads:CustomerManagementUserInvitationShape ;
    sh:class microsoftads:CustomerManagementUserInvitation ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementSignupCustomerRequest/userId> ;
    sh:name "user id" ;
    sh:description "The identifier of an existing user who will be added as Super Admin in the new customer. This element is only available for customers in the closed Unified smart campaigns pilot. One or more of the UserId or UserInvitation element must be set." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementSignupCustomerRequest/user> ;
    sh:name "user" ;
    sh:description "The user to create. You can fulfill this element if you want to sign up a new customer and create a new admin user simultaneously. After the new customer is signed up, the newly created admin user must complete sign up steps via the Microsoft Advertising UI on the Microsoft Advertising activating customer page. The URL is https://ads.microsoft.com/ActivateCustomer?cid={new_customer_Id}&aid={new_account_Id} where new_customer_Id and new_account_Id are the IDs you get in the SignupCustomerResponse. The AuthenticationToken in the User element is the OAuth access token that represents the credentials of the new admin user who will be created during signup. Customers in the seamlessly set up client account and PI pilot must set one or more of the UserId or UserInvitation or User. The required fields in the User object are ContactInfo.Email, Name.FirstName, Name.LastName and AuthenticationToken." ;
    sh:node microsoftads:CustomerManagementUserShape ;
    sh:class microsoftads:CustomerManagementUser ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Signup Customer Response
microsoftads:CustomerManagementSignupCustomerResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementSignupCustomerResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementSignupCustomerResponse/customerId> ;
    sh:name "customer id" ;
    sh:description "A system-generated customer identifier corresponding to the new customer specified in the request. Use this identifier with operation requests that require a CustomerId SOAP header element." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementSignupCustomerResponse/customerNumber> ;
    sh:name "customer number" ;
    sh:description "A system-generated customer number that is used in the Microsoft Advertising web application. The customer number has the form xxxxxxxxxx, where xxxxxxxxxx is a series of any ten alphanumeric characters." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementSignupCustomerResponse/accountId> ;
    sh:name "account id" ;
    sh:description "A system-generated account identifier corresponding to the new account specified in the request. Use this identifier with operation requests that require an AccountId body element and a CustomerAccountId SOAP header element." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementSignupCustomerResponse/accountNumber> ;
    sh:name "account number" ;
    sh:description "The system-generated account number that is used to identify the account in the Microsoft Advertising web application. The account number has the form xxxxxxxx, where xxxxxxxx is a series of any eight alphanumeric characters." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementSignupCustomerResponse/createTime> ;
    sh:name "create time" ;
    sh:description "The date and time that the account was added. The date and time value reflects the date and time at the server, not the client. For information about the format of the date and time, see the dateTime entry in Primitive XML Data Types." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Update Account Request
microsoftads:CustomerManagementUpdateAccountRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementUpdateAccountRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementUpdateAccountRequest/account> ;
    sh:name "account" ;
    sh:description "An AdvertiserAccount object that contains the updated account information. This operation overwrites the existing account data with the contents of the account object that you pass. This operation performs a full update, and not a partial update. The Account object must contain the time stamp value from the last time that the Account object was written to. To ensure that the time stamp contains the correct value, call the GetAccount operation. You can then update the account data as appropriate, and call UpdateAccount." ;
    sh:node microsoftads:CustomerManagementAdvertiserAccountShape ;
    sh:class microsoftads:CustomerManagementAdvertiserAccount ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Update Account Response
microsoftads:CustomerManagementUpdateAccountResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementUpdateAccountResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementUpdateAccountResponse/lastModifiedTime> ;
    sh:name "last modified time" ;
    sh:description "The date and time that the account was last updated. The value is in Coordinated Universal Time (UTC). The date and time value reflects the date and time at the server, not the client. For information about the format of the date and time, see the dateTime entry in Primitive XML Data Types." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Update Client Links Request
microsoftads:CustomerManagementUpdateClientLinksRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementUpdateClientLinksRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementUpdateClientLinksRequest/clientLinks> ;
    sh:name "client links" ;
    sh:description "The list of client links to update. You should limit your request to 10 client links per call." ;
    sh:node microsoftads:CustomerManagementClientLinkShape ;
    sh:class microsoftads:CustomerManagementClientLink ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Customer Management Update Client Links Response
microsoftads:CustomerManagementUpdateClientLinksResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementUpdateClientLinksResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementUpdateClientLinksResponse/operationErrors> ;
    sh:name "operation errors" ;
    sh:description "A list of one or more reasons why the service operation failed, and no client links were added." ;
    sh:node microsoftads:CustomerManagementOperationErrorShape ;
    sh:class microsoftads:CustomerManagementOperationError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementUpdateClientLinksResponse/partialErrors> ;
    sh:name "partial errors" ;
    sh:description "An array of OperationError lists that contain details for any client links that were not successfully added. Results are returned in the same order corresponding to the requested client links. The number of first dimension list elements is equal to the requested client links count. For successfully added client links, the OperationError element at the corresponding index is null." ;
    sh:node <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementUpdateClientLinksResponse/partialErrors/ListLevel1Shape> ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Update Customer Request
microsoftads:CustomerManagementUpdateCustomerRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementUpdateCustomerRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementUpdateCustomerRequest/customer> ;
    sh:name "customer" ;
    sh:description "A customer object that contains the updated customer information. This operation overwrites the existing customer data with the contents of the customer object that you pass. This operation performs a full update, and not a partial update. The Customer object must contain the time stamp value from the last time that the Customer object was written to. To ensure that the time stamp contains the correct value, call the GetCustomer operation. You can then update the customer data as appropriate, and call UpdateCustomer." ;
    sh:node microsoftads:CustomerManagementCustomerShape ;
    sh:class microsoftads:CustomerManagementCustomer ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Update Customer Response
microsoftads:CustomerManagementUpdateCustomerResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementUpdateCustomerResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementUpdateCustomerResponse/lastModifiedTime> ;
    sh:name "last modified time" ;
    sh:description "The date and time that the customer was last updated. The value is in Coordinated Universal Time (UTC). The date and time value reflects the date and time at the server, not the client. For information about the format of the date and time, see the dateTime entry in Primitive XML Data Types." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Update Prepay Account Request
microsoftads:CustomerManagementUpdatePrepayAccountRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementUpdatePrepayAccountRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementUpdatePrepayAccountRequest/account> ;
    sh:name "account" ;
    sh:node microsoftads:CustomerManagementAdvertiserAccountShape ;
    sh:class microsoftads:CustomerManagementAdvertiserAccount ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Update Prepay Account Response
microsoftads:CustomerManagementUpdatePrepayAccountResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementUpdatePrepayAccountResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementUpdatePrepayAccountResponse/lastModifiedTime> ;
    sh:name "last modified time" ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Update User Request
microsoftads:CustomerManagementUpdateUserRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementUpdateUserRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementUpdateUserRequest/user> ;
    sh:name "user" ;
    sh:description "The user object that contains the updated user information. This operation overwrites the existing user data with the contents of the user object that you pass. This operation performs a full update, not a partial update. The User object must contain the time stamp value from the last time that the User object was written to. To ensure that the time stamp contains the correct value, call the GetUser operation. You can then update the user data as appropriate, and call UpdateUser." ;
    sh:node microsoftads:CustomerManagementUserShape ;
    sh:class microsoftads:CustomerManagementUser ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Update User Response
microsoftads:CustomerManagementUpdateUserResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementUpdateUserResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementUpdateUserResponse/lastModifiedTime> ;
    sh:name "last modified time" ;
    sh:description "The date and time that the user was last updated. The value is in Coordinated Universal Time (UTC). The date and time value reflects the date and time at the server, not the client. For information about the format of the date and time, see the dateTime entry in Primitive XML Data Types." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Update User Roles Request
microsoftads:CustomerManagementUpdateUserRolesRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementUpdateUserRolesRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementUpdateUserRolesRequest/customerId> ;
    sh:name "customer id" ;
    sh:description "The identifier of the customer to which the user belongs." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementUpdateUserRolesRequest/userId> ;
    sh:name "user id" ;
    sh:description "The identifier of the user whose role you want to update." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementUpdateUserRolesRequest/newRoleId> ;
    sh:name "new role id" ;
    sh:description "The identifier of the role to which the values specified in the NewAccountIds or NewCustomerIds element applies to, if set. Possible values include the following: 16 - The user has the Advertiser Campaign Manager role. 33 - The user has the Aggregator role. 41 - The user has the Super Admin role. 100 - The user has the Viewer role. 203 - The user has the Standard User role. For more information, see the User Roles technical guide. Important: The list above provides examples of possible return values. Other values might be returned. Deprecated or internal roles can be included in the response." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementUpdateUserRolesRequest/newAccountIds> ;
    sh:name "new account ids" ;
    sh:description "An array of identifiers of the accounts to restrict the user to. The user will be able to manage only these accounts. If the user is currently restricted to a set of accounts, set this element to the new accounts that you want the user to also manage. For example, if the user currently manages accounts 123 and 456, and you want the user to also manage account 789, set this element to 789. For usage, see the Remarks section below." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementUpdateUserRolesRequest/newCustomerIds> ;
    sh:name "new customer ids" ;
    sh:description "An array of identifiers of the customers to restrict the user to. The user will be able to manage only these customers. For usage, see the Remarks section below." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementUpdateUserRolesRequest/deleteRoleId> ;
    sh:name "delete role id" ;
    sh:description "The identifier of the role to which the values specified in the DeleteAccountIds or DeleteCustomerIds element applies, if set. Possible values include the following: 16 - The user has the Advertiser Campaign Manager role. 33 - The user has the Aggregator role. 41 - The user has the Super Admin role. 100 - The user has the Viewer role. 203 - The user has the Standard User role. For more information, see the User Roles technical guide. Important: The list above provides examples of possible return values. Other values might be returned. Deprecated or internal roles can be included in the response." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementUpdateUserRolesRequest/deleteAccountIds> ;
    sh:name "delete account ids" ;
    sh:description "An array of identifiers of the accounts to remove from the list of accounts that the user can manage. For usage, see the Remarks section below." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementUpdateUserRolesRequest/deleteCustomerIds> ;
    sh:name "delete customer ids" ;
    sh:description "An array of identifiers of the customers to remove from the list of customers that the user can manage. For usage, see the Remarks section below." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Customer Management Update User Roles Response
microsoftads:CustomerManagementUpdateUserRolesResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementUpdateUserRolesResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementUpdateUserRolesResponse/lastModifiedTime> ;
    sh:name "last modified time" ;
    sh:description "The date and time that the user roles were last updated. The value is in Coordinated Universal Time (UTC). The date and time value reflects the date and time at the server, not the client. For information about the format of the date and time, see the dateTime entry in Primitive XML Data Types." ;
    sh:datatype xsd:dateTime ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Upgrade Customer To Agency Request
microsoftads:CustomerManagementUpgradeCustomerToAgencyRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementUpgradeCustomerToAgencyRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementUpgradeCustomerToAgencyRequest/customerId> ;
    sh:name "customer id" ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Validate Address Request
microsoftads:CustomerManagementValidateAddressRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementValidateAddressRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementValidateAddressRequest/address> ;
    sh:name "address" ;
    sh:description "The address to validate." ;
    sh:node microsoftads:CustomerManagementAddressShape ;
    sh:class microsoftads:CustomerManagementAddress ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Customer Management Validate Address Response
microsoftads:CustomerManagementValidateAddressResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:CustomerManagementValidateAddressResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementValidateAddressResponse/originalAddress> ;
    sh:name "original address" ;
    sh:description "The address that was submitted for validation. The submitted Address is always passed back here in the response, so this element is always set." ;
    sh:node microsoftads:CustomerManagementAddressShape ;
    sh:class microsoftads:CustomerManagementAddress ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementValidateAddressResponse/status> ;
    sh:name "status" ;
    sh:description "Determines whether or not the submitted address is valid for Microsoft Advertising accounts, and whether or not any address suggestions are available via the SuggestedAddresses response element. Possible string values are AddressValidWithoutSuggestions, AddressValidWithSuggestions, AddressInvalidWithoutSuggestions, and AddressInvalidWithSuggestions." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementValidateAddressResponse/suggestedAddresses> ;
    sh:name "suggested addresses" ;
    sh:description "One or more suggested addresses if the Status is either AddressValidWithSuggestions or AddressInvalidWithSuggestions. This element will be nil if the Status is either AddressValidWithoutSuggestions or AddressInvalidWithoutSuggestions." ;
    sh:node microsoftads:CustomerManagementAddressShape ;
    sh:class microsoftads:CustomerManagementAddress ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Reporting Account Performance Report Filter
microsoftads:ReportingAccountPerformanceReportFilterShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingAccountPerformanceReportFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAccountPerformanceReportFilter/adDistribution> ;
    sh:name "ad distribution" ;
    sh:description "The report will include data for only the specified distribution medium. For example, you can use the filter to include data for only search ads. You can specify one or more distribution mediums." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAccountPerformanceReportFilter/deviceType> ;
    sh:name "device type" ;
    sh:description "The report will include data where the ad is displayed on the specified device types. For example, you may use the filter to include data for only ads displayed on smartphones. You may specify one or more device types." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAccountPerformanceReportFilter/deviceOS> ;
    sh:name "device os" ;
    sh:description "The report will include data where the ad is displayed on the specified device operating systems. For example, you may use the filter to include data for only ads displayed on Windows devices." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAccountPerformanceReportFilter/accountStatus> ;
    sh:name "account status" ;
    sh:description "The report will include data for only the account status. For example, you can use the filter to include data for only active accounts. You can specify one or more account statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Account Performance Report Request
microsoftads:ReportingAccountPerformanceReportRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingAccountPerformanceReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAccountPerformanceReportRequest/reportName> ;
    sh:name "report name" ;
    sh:description "The name of the report. The name is included in the report header. If you do not specify a report name, the system generates a name in the form, ReportType-ReportDateTime. The maximum length of the report name is 200." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAccountPerformanceReportRequest/format> ;
    sh:name "format" ;
    sh:description "The format of the report data. For example, you can request the data in comma-separated values (Csv) format or tab-separated values (Tsv) format. The default value is Csv. All downloaded files are ZIP compressed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Csv" "Tsv" "Xml" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAccountPerformanceReportRequest/returnOnlyCompleteData> ;
    sh:name "return only complete data" ;
    sh:description "Determines whether or not the service must ensure that all the data has been processed and is available. If set to true and if the system has not finished processing all the data based on the requested Aggregation, Scope, and Time, the service returns error code NoCompleteDataAvaliable (2004). Otherwise by default the request can succeed, there is no indication as to whether the data is complete, and the report will contain only the data that the system has finished processing at the time of the request. Please note that because today is still in progress and data is not complete, you cannot set this element to true if the Time period (whether custom or predefined date) includes today's date. For more information, see Time Zones in Reporting." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAccountPerformanceReportRequest/excludeReportHeader> ;
    sh:name "exclude report header" ;
    sh:description "Determines whether or not the downloaded report should contain header metadata such as report name, date range, and aggregation. Set this property true if you want the report header metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAccountPerformanceReportRequest/excludeReportFooter> ;
    sh:name "exclude report footer" ;
    sh:description "Determines whether or not the downloaded report should contain footer metadata such as Microsoft copyright (`@2020` Microsoft Corporation. All rights reserved.). Set this property true if you want the report footer metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAccountPerformanceReportRequest/excludeColumnHeaders> ;
    sh:name "exclude column headers" ;
    sh:description "Determines whether or not the downloaded report should contain header descriptions for each column. The report column header matches the requested column name e.g. Impressions and Clicks. Set this property true if you want the report column headers excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAccountPerformanceReportRequest/formatVersion> ;
    sh:name "format version" ;
    sh:description "Determines the format for certain fields in the downloaded report file. The data format for certain fields can be updated within the current API version without breaking existing client applications. You can get the latest data format by setting this optional request field to 2.0. If you do not set this field, the service defaults to version 1.0. For details about changes between format versions, see Report Format Version." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAccountPerformanceReportRequest/scope> ;
    sh:name "scope" ;
    sh:description "The entity scope of the report. Use this element to limit the report data to specific accounts." ;
    sh:node microsoftads:ReportingAccountReportScopeShape ;
    sh:class microsoftads:ReportingAccountReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAccountPerformanceReportRequest/filter> ;
    sh:name "filter" ;
    sh:description "The filter information to use to filter the report data." ;
    sh:node microsoftads:ReportingAccountPerformanceReportFilterShape ;
    sh:class microsoftads:ReportingAccountPerformanceReportFilter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAccountPerformanceReportRequest/time> ;
    sh:name "time" ;
    sh:description "The time period to use for the report. You can specify a custom date range or select a predefined date range, for example, Today or ThisWeek. For a list of the time periods that you can specify for each aggregation type, see Aggregation and Time. You can set the time zone within the ReportTime object, which helps you accurately scope data for the requested time period. If you do not choose a time zone, the Reporting service uses PacificTimeUSCanadaTijuana by default." ;
    sh:node microsoftads:ReportingReportTimeShape ;
    sh:class microsoftads:ReportingReportTime ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAccountPerformanceReportRequest/aggregation> ;
    sh:name "aggregation" ;
    sh:description "The type of aggregation to use to aggregate the report data. For example, you can aggregate the report data by day or week, or request a summary report. The default aggregation is Summary. It is important to note that if you do not include TimePeriod in the list of Columns, the aggregation you chose will be ignored and Summary aggregation will be used regardless." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Summary" "Hourly" "Daily" "Weekly" "Monthly" "Yearly" "HourOfDay" "DayOfWeek" "WeeklyStartingMonday" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAccountPerformanceReportRequest/columns> ;
    sh:name "columns" ;
    sh:description "The list of attributes and performance statistics to include in the report. The report will include the columns in the order that you specify them." ;
    sh:datatype xsd:string ;
    sh:in ( "AccountName" "AccountNumber" "AccountId" "TimePeriod" "CurrencyCode" "AdDistribution" "Impressions" "Clicks" "Ctr" "AverageCpc" "Spend" "AveragePosition" "Conversions" "ConversionRate" "CostPerConversion" "LowQualityClicks" "LowQualityClicksPercent" "LowQualityImpressions" "LowQualityImpressionsPercent" "LowQualityConversions" "LowQualityConversionRate" "DeviceType" "DeviceOS" "ImpressionSharePercent" "ImpressionLostToBudgetPercent" "ImpressionLostToRankAggPercent" "PhoneImpressions" "PhoneCalls" "Ptr" "Network" "TopVsOther" "BidMatchType" "DeliveredMatchType" "Assists" "Revenue" "ReturnOnAdSpend" "CostPerAssist" "RevenuePerConversion" "RevenuePerAssist" "AccountStatus" "LowQualityGeneralClicks" "LowQualitySophisticatedClicks" "ExactMatchImpressionSharePercent" "CustomerId" "CustomerName" "ClickSharePercent" "AbsoluteTopImpressionSharePercent" "TopImpressionShareLostToRankPercent" "TopImpressionShareLostToBudgetPercent" "AbsoluteTopImpressionShareLostToRankPercent" "AbsoluteTopImpressionShareLostToBudgetPercent" "TopImpressionSharePercent" "AbsoluteTopImpressionRatePercent" "TopImpressionRatePercent" "AllConversions" "AllRevenue" "AllConversionRate" "AllCostPerConversion" "AllReturnOnAdSpend" "AllRevenuePerConversion" "ViewThroughConversions" "Goal" "GoalType" "AudienceImpressionSharePercent" "AudienceImpressionLostToRankPercent" "AudienceImpressionLostToBudgetPercent" "AverageCpm" "ConversionsQualified" "LowQualityConversionsQualified" "AllConversionsQualified" "ViewThroughConversionsQualified" "ViewThroughRevenue" "VideoViews" "ViewThroughRate" "AverageCPV" "VideoViewsAt25Percent" "VideoViewsAt50Percent" "VideoViewsAt75Percent" "CompletedVideoViews" "VideoCompletionRate" "TotalWatchTimeInMS" "AverageWatchTimePerVideoView" "AverageWatchTimePerImpression" "Sales" "CostPerSale" "RevenuePerSale" "Installs" "CostPerInstall" "RevenuePerInstall" "Downloads" "PostClickDownloadRate" "CostPerDownload" "AppInstalls" "PostClickInstallRate" "CPI" "Purchases" "PostInstallPurchaseRate" "CPP" "Subscriptions" "PostInstallSubscriptionRate" "CPS" "NewCustomerConversions" "NewCustomerRevenue" "NewCustomerConversionRate" "NewCustomerCPA" "NewCustomerReturnOnAdSpend" "ConversionDelay" "UnknownCustomerConversions" "UnknownCustomerRevenue" "NewCustomerCount" "NewCustomerSpend" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAccountPerformanceReportRequest/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Account Report Scope
microsoftads:ReportingAccountReportScopeShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingAccountReportScope ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAccountReportScope/accountIds> ;
    sh:name "account ids" ;
    sh:description "A list of up to 1,000 account identifiers to include in the report. This element is required." ;
    sh:datatype xsd:long ;
  ] .

# Shape for Reporting Report Time
microsoftads:ReportingReportTimeShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingReportTime ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingReportTime/predefinedTime> ;
    sh:name "predefined time" ;
    sh:description "A predefined date range value. Each report request type specifies the predefined time periods that you can specify for each aggregation type." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Today" "Yesterday" "LastSevenDays" "ThisWeek" "LastWeek" "Last14Days" "Last30Days" "LastFourWeeks" "ThisMonth" "LastMonth" "LastThreeMonths" "LastSixMonths" "ThisYear" "LastYear" "ThisWeekStartingMonday" "LastWeekStartingMonday" "LastFourWeeksStartingMonday" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingReportTime/customDateRangeStart> ;
    sh:name "custom date range start" ;
    sh:description "The start date of the custom date range. The start date must be earlier than or the same as the end date." ;
    sh:node microsoftads:ReportingDateShape ;
    sh:class microsoftads:ReportingDate ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingReportTime/customDateRangeEnd> ;
    sh:name "custom date range end" ;
    sh:description "The end date of the custom date range. The end date cannot be later than today's date." ;
    sh:node microsoftads:ReportingDateShape ;
    sh:class microsoftads:ReportingDate ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingReportTime/reportTimeZone> ;
    sh:name "report time zone" ;
    sh:description "Determines the time zone that is used to establish today's date. When you submit the report request today's date can vary around the world depending on the time zone. The report time period that you choose e.g., 'Yesterday' is then relative to today's date. If you do not choose a time zone, the Reporting service uses PacificTimeUSCanadaTijuana by default. For example, a report requested without a time zone specified at 2 AM EasternTimeUSCanada on 2/2/2019 for 'Yesterday' will be interpreted as a request for 1/31/2019. A report requested at the same time for 'Yesterday' with time zone set as EasternTimeUSCanada will be interpreted as a request for 2/1/2019." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Nukualofa" "FijiKamchatkaMarshallIsland" "AucklandWellington" "MagadanSolomonIslandNewCaledonia" "Vladivostok" "Hobart" "GuamPortMoresby" "CanberraMelbourneSydney" "Brisbane" "Darwin" "Adelaide" "Yakutsk" "Seoul" "OsakaSapporoTokyo" "Taipei" "Perth" "KualaLumpurSingapore" "IrkutskUlaanBataar" "BeijingChongqingHongKongUrumqi" "Krasnoyarsk" "BangkokHanoiJakarta" "Rangoon" "SriJayawardenepura" "AstanaDhaka" "AlmatyNovosibirsk" "Kathmandu" "ChennaiKolkataMumbaiNewDelhi" "IslandamabadKarachiTashkent" "Ekaterinburg" "Kabul" "BakuTbilisiYerevan" "AbuDhabiMuscat" "Tehran" "Nairobi" "MoscowStPetersburgVolgograd" "KuwaitRiyadh" "Baghdad" "Jerusalem" "HelsinkiKyivRigaSofiaTallinnVilnius" "HararePretoria" "Cairo" "Bucharest" "AthensIslandanbulMinsk" "WestCentralAfrica" "SarajevoSkopjeWarsawZagreb" "BrusselsCopenhagenMadridParis" "BelgradeBratislavaBudapestLjubljanaPrague" "AmsterdamBerlinBernRomeStockholmVienna" "CasablancaMonrovia" "GreenwichMeanTimeDublinEdinburghLisbonLondon" "Azores" "CapeVerdeIsland" "MidAtlantic" "Brasilia" "BuenosAiresGeorgetown" "Greenland" "Newfoundland" "AtlanticTimeCanada" "CaracasLaPaz" "Santiago" "BogotaLimaQuito" "EasternTimeUSCanada" "IndianaEast" "CentralAmerica" "CentralTimeUSCanada" "GuadalajaraMexicoCityMonterrey" "Saskatchewan" "Arizona" "ChihuahuaLaPazMazatlan" "MountainTimeUSCanada" "PacificTimeUSCanadaTijuana" "Alaska" "Hawaii" "MidwayIslandandSamoa" "InternationalDateLineWest" ) ;
  ] .

# Shape for Reporting Date
microsoftads:ReportingDateShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingDate ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDate/year> ;
    sh:name "year" ;
    sh:description "Specifies the year." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDate/month> ;
    sh:name "month" ;
    sh:description "Specifies the month." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDate/day> ;
    sh:name "day" ;
    sh:description "Specifies the day of the month." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Account Through Ad Group Report Scope
microsoftads:ReportingAccountThroughAdGroupReportScopeShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingAccountThroughAdGroupReportScope ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAccountThroughAdGroupReportScope/accountIds> ;
    sh:name "account ids" ;
    sh:description "A list of up to 1,000 account identifiers to include in the report. The report scope includes a union of the AccountIds, AdGroups, and Campaigns elements. You must include at least one of these elements." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAccountThroughAdGroupReportScope/campaigns> ;
    sh:name "campaigns" ;
    sh:description "A list of up to 300 campaigns to include in the report. The report scope includes a union of the AccountIds, AdGroups, and Campaigns elements. You must include at least one of these elements." ;
    sh:node microsoftads:ReportingCampaignReportScopeShape ;
    sh:class microsoftads:ReportingCampaignReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAccountThroughAdGroupReportScope/adGroups> ;
    sh:name "ad groups" ;
    sh:description "A list of up to 300 ad groups to include in the report. The report scope includes a union of the AccountIds, AdGroups, and Campaigns elements. You must include at least one of these elements." ;
    sh:node microsoftads:ReportingAdGroupReportScopeShape ;
    sh:class microsoftads:ReportingAdGroupReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Reporting Campaign Report Scope
microsoftads:ReportingCampaignReportScopeShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingCampaignReportScope ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCampaignReportScope/accountId> ;
    sh:name "account id" ;
    sh:description "The identifier of the account that the campaign belongs to." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCampaignReportScope/campaignId> ;
    sh:name "campaign id" ;
    sh:description "The identifier of the campaign to limit the scope to." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Ad Group Report Scope
microsoftads:ReportingAdGroupReportScopeShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingAdGroupReportScope ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdGroupReportScope/accountId> ;
    sh:name "account id" ;
    sh:description "The identifier of the account that the ad group belongs to." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdGroupReportScope/campaignId> ;
    sh:name "campaign id" ;
    sh:description "The identifier of the campaign that the ad group belongs to." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdGroupReportScope/adGroupId> ;
    sh:name "ad group id" ;
    sh:description "The identifier of the ad group to limit the scope to." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Account Through Asset Group Report Scope
microsoftads:ReportingAccountThroughAssetGroupReportScopeShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingAccountThroughAssetGroupReportScope ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAccountThroughAssetGroupReportScope/accountIds> ;
    sh:name "account ids" ;
    sh:description "A list of up to 1,000 account identifiers to include in the report. The report scope includes a union of the AccountIds and Campaigns elements. You must include at least one of these elements." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAccountThroughAssetGroupReportScope/campaigns> ;
    sh:name "campaigns" ;
    sh:description "list of up to 300 campaigns to include in the report. The report scope includes a union of the AccountIds and Campaigns elements. You must include at least one of these elements." ;
    sh:node microsoftads:ReportingCampaignReportScopeShape ;
    sh:class microsoftads:ReportingCampaignReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAccountThroughAssetGroupReportScope/assetGroups> ;
    sh:name "asset groups" ;
    sh:description "Array of asset groups to update for the specified campaign. A maximum of 100 asset groups can be specified in a single call." ;
    sh:node microsoftads:ReportingAssetGroupReportScopeShape ;
    sh:class microsoftads:ReportingAssetGroupReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Reporting Asset Group Report Scope
microsoftads:ReportingAssetGroupReportScopeShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingAssetGroupReportScope ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAssetGroupReportScope/accountId> ;
    sh:name "account id" ;
    sh:description "The ID of the account." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAssetGroupReportScope/campaignId> ;
    sh:name "campaign id" ;
    sh:description "The ID of the campaign." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAssetGroupReportScope/assetGroupId> ;
    sh:name "asset group id" ;
    sh:description "The ID of the asset group." ;
    sh:datatype xsd:long ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Account Through Campaign Report Scope
microsoftads:ReportingAccountThroughCampaignReportScopeShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingAccountThroughCampaignReportScope ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAccountThroughCampaignReportScope/accountIds> ;
    sh:name "account ids" ;
    sh:description "A list of up to 1,000 account identifiers to include in the report. The report scope includes a union of the AccountIds and Campaigns elements. You must include at least one of these elements." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAccountThroughCampaignReportScope/campaigns> ;
    sh:name "campaigns" ;
    sh:description "A list of up to 300 campaigns to include in the report. The report scope includes a union of the AccountIds and Campaigns elements. You must include at least one of these elements." ;
    sh:node microsoftads:ReportingCampaignReportScopeShape ;
    sh:class microsoftads:ReportingCampaignReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Reporting Ad Api Error
microsoftads:ReportingAdApiErrorShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingAdApiError ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdApiError/code> ;
    sh:name "code" ;
    sh:description "A numeric error code that identifies the error." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdApiError/message> ;
    sh:name "message" ;
    sh:description "A message that describes the error. For more information about troubleshooting and error handling, see Handling Service Errors and Exceptions and Operation Error Codes." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdApiError/detail> ;
    sh:name "detail" ;
    sh:description "A message that contains additional details about the error. This string can be empty." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdApiError/errorCode> ;
    sh:name "error code" ;
    sh:description "A symbolic string constant that identifies the error. For example, UserIsNotAuthorized." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Ad Api Fault Detail
microsoftads:ReportingAdApiFaultDetailShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingAdApiFaultDetail ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdApiFaultDetail/trackingId> ;
    sh:name "tracking id" ;
    sh:description "The identifier of the log entry that contains the details of the API call." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdApiFaultDetail/errors> ;
    sh:name "errors" ;
    sh:description "An array of AdApiError objects that contains the details that explain why the service operation failed." ;
    sh:node microsoftads:ReportingAdApiErrorShape ;
    sh:class microsoftads:ReportingAdApiError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdApiFaultDetail/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Ad Dynamic Text Performance Report Filter
microsoftads:ReportingAdDynamicTextPerformanceReportFilterShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingAdDynamicTextPerformanceReportFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdDynamicTextPerformanceReportFilter/adDistribution> ;
    sh:name "ad distribution" ;
    sh:description "The report will include data for only the specified distribution medium. For example, you can use the filter to include data for only search ads. You can specify one or more distribution mediums." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdDynamicTextPerformanceReportFilter/adType> ;
    sh:name "ad type" ;
    sh:description "The report will include data for only the specified ad types. For example, the report can include data for product or expanded text ads. You can specify one or more ad types." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdDynamicTextPerformanceReportFilter/deviceType> ;
    sh:name "device type" ;
    sh:description "The report will include data for only the specified types of devices on which the ad is displayed. For example, you can use the filter to include data for only text ads displayed on smartphones. You can specify one or more device types." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdDynamicTextPerformanceReportFilter/language> ;
    sh:name "language" ;
    sh:description "The report will include data for only websites that used the specified languages. You can specify one or more languages." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdDynamicTextPerformanceReportFilter/accountStatus> ;
    sh:name "account status" ;
    sh:description "The report will include data for only the account status. For example, you can use the filter to include data for only active accounts. You can specify one or more account statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdDynamicTextPerformanceReportFilter/adGroupStatus> ;
    sh:name "ad group status" ;
    sh:description "The report will include data for only the ad group status. For example, you can use the filter to include data for only active ad groups. You can specify one or more ad group statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdDynamicTextPerformanceReportFilter/adStatus> ;
    sh:name "ad status" ;
    sh:description "The report will include data for only the ad status. For example, you can use the filter to include data for only active ads. You can specify one or more ad statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdDynamicTextPerformanceReportFilter/keywordStatus> ;
    sh:name "keyword status" ;
    sh:description "The report will include data for only the keyword status. For example, you can use the filter to include data for only active keywords. You can specify one or more keyword statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Ad Dynamic Text Performance Report Request
microsoftads:ReportingAdDynamicTextPerformanceReportRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingAdDynamicTextPerformanceReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdDynamicTextPerformanceReportRequest/reportName> ;
    sh:name "report name" ;
    sh:description "The name of the report. The name is included in the report header. If you do not specify a report name, the system generates a name in the form, ReportType-ReportDateTime. The maximum length of the report name is 200." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdDynamicTextPerformanceReportRequest/format> ;
    sh:name "format" ;
    sh:description "The format of the report data. For example, you can request the data in comma-separated values (Csv) format or tab-separated values (Tsv) format. The default value is Csv. All downloaded files are ZIP compressed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Csv" "Tsv" "Xml" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdDynamicTextPerformanceReportRequest/returnOnlyCompleteData> ;
    sh:name "return only complete data" ;
    sh:description "Determines whether or not the service must ensure that all the data has been processed and is available. If set to true and if the system has not finished processing all the data based on the requested Aggregation, Scope, and Time, the service returns error code NoCompleteDataAvaliable (2004). Otherwise by default the request can succeed, there is no indication as to whether the data is complete, and the report will contain only the data that the system has finished processing at the time of the request. Please note that because today is still in progress and data is not complete, you cannot set this element to true if the Time period (whether custom or predefined date) includes today's date. For more information, see Time Zones in Reporting." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdDynamicTextPerformanceReportRequest/excludeReportHeader> ;
    sh:name "exclude report header" ;
    sh:description "Determines whether or not the downloaded report should contain header metadata such as report name, date range, and aggregation. Set this property true if you want the report header metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdDynamicTextPerformanceReportRequest/excludeReportFooter> ;
    sh:name "exclude report footer" ;
    sh:description "Determines whether or not the downloaded report should contain footer metadata such as Microsoft copyright (`@2020` Microsoft Corporation. All rights reserved.). Set this property true if you want the report footer metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdDynamicTextPerformanceReportRequest/excludeColumnHeaders> ;
    sh:name "exclude column headers" ;
    sh:description "Determines whether or not the downloaded report should contain header descriptions for each column. The report column header matches the requested column name e.g. Impressions and Clicks. Set this property true if you want the report column headers excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdDynamicTextPerformanceReportRequest/formatVersion> ;
    sh:name "format version" ;
    sh:description "Determines the format for certain fields in the downloaded report file. The data format for certain fields can be updated within the current API version without breaking existing client applications. You can get the latest data format by setting this optional request field to 2.0. If you do not set this field, the service defaults to version 1.0. For details about changes between format versions, see Report Format Version." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdDynamicTextPerformanceReportRequest/scope> ;
    sh:name "scope" ;
    sh:description "The entity scope of the report. Use this element to limit the report data to specific accounts, ad groups, or campaigns." ;
    sh:node microsoftads:ReportingAccountThroughAdGroupReportScopeShape ;
    sh:class microsoftads:ReportingAccountThroughAdGroupReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdDynamicTextPerformanceReportRequest/filter> ;
    sh:name "filter" ;
    sh:description "The filter information to use to filter the report data." ;
    sh:node microsoftads:ReportingAdDynamicTextPerformanceReportFilterShape ;
    sh:class microsoftads:ReportingAdDynamicTextPerformanceReportFilter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdDynamicTextPerformanceReportRequest/time> ;
    sh:name "time" ;
    sh:description "The time period to use for the report. You can specify a custom date range or select a predefined date range, for example, Today or ThisWeek. For a list of the time periods that you can specify for each aggregation type, see Aggregation and Time. You can set the time zone within the ReportTime object, which helps you accurately scope data for the requested time period. If you do not choose a time zone, the Reporting service uses PacificTimeUSCanadaTijuana by default." ;
    sh:node microsoftads:ReportingReportTimeShape ;
    sh:class microsoftads:ReportingReportTime ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdDynamicTextPerformanceReportRequest/aggregation> ;
    sh:name "aggregation" ;
    sh:description "The type of aggregation to use to aggregate the report data. For example, you can aggregate the report data by day or week, or request a summary report. The default aggregation is Summary. It is important to note that if you do not include TimePeriod in the list of Columns, the aggregation you chose will be ignored and Summary aggregation will be used regardless." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Summary" "Hourly" "Daily" "Weekly" "Monthly" "Yearly" "HourOfDay" "DayOfWeek" "WeeklyStartingMonday" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdDynamicTextPerformanceReportRequest/columns> ;
    sh:name "columns" ;
    sh:description "The list of attributes and performance statistics to include in the report. The report will include the columns in the order that you specify them." ;
    sh:datatype xsd:string ;
    sh:in ( "AccountName" "AccountId" "AccountNumber" "TimePeriod" "AdGroupName" "AdGroupId" "Keyword" "AdId" "AdTitle" "AdType" "DestinationUrl" "Param1" "Param2" "Param3" "CurrencyCode" "AdDistribution" "Impressions" "Clicks" "Ctr" "AverageCpc" "Spend" "AveragePosition" "Conversions" "ConversionRate" "CostPerConversion" "DeviceType" "Language" "AccountStatus" "AdGroupStatus" "AdStatus" "KeywordStatus" "TitlePart1" "TitlePart2" "TitlePart3" "Path1" "Path2" "FinalUrl" "FinalMobileUrl" "FinalAppUrl" "AdDescription" "AdDescription2" "AdLabels" "AllConversions" "AllConversionRate" "AllCostPerConversion" "ViewThroughConversions" "Goal" "GoalType" "AbsoluteTopImpressionRatePercent" "TopImpressionRatePercent" "AverageCpm" "ConversionsQualified" "AllConversionsQualified" "ViewThroughConversionsQualified" "ViewThroughRevenue" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdDynamicTextPerformanceReportRequest/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Ad Extension By Ad Report Filter
microsoftads:ReportingAdExtensionByAdReportFilterShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingAdExtensionByAdReportFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionByAdReportFilter/deviceType> ;
    sh:name "device type" ;
    sh:description "The report will include data where the ad is displayed on the specified device types. For example, you may use the filter to include data for only ads displayed on smartphones. You may specify one or more device types." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionByAdReportFilter/deviceOS> ;
    sh:name "device os" ;
    sh:description "The report will include data where the ad is displayed on the specified device operating systems. For example, you may use the filter to include data for only ads displayed on Windows devices." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionByAdReportFilter/accountStatus> ;
    sh:name "account status" ;
    sh:description "The report will include data for only the account status. For example, you can use the filter to include data for only active accounts. You can specify one or more account statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionByAdReportFilter/campaignStatus> ;
    sh:name "campaign status" ;
    sh:description "The report will include data for only the campaign status. For example, you can use the filter to include data for only active campaigns. You can specify one or more campaign statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionByAdReportFilter/adGroupStatus> ;
    sh:name "ad group status" ;
    sh:description "The report will include data for only the ad group status. For example, you can use the filter to include data for only active ad groups. You can specify one or more ad group statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionByAdReportFilter/adStatus> ;
    sh:name "ad status" ;
    sh:description "The report will include data for only the ad status. For example, you can use the filter to include data for only active ads. You can specify one or more ad statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Ad Extension By Ad Report Request
microsoftads:ReportingAdExtensionByAdReportRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingAdExtensionByAdReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionByAdReportRequest/reportName> ;
    sh:name "report name" ;
    sh:description "The name of the report. The name is included in the report header. If you do not specify a report name, the system generates a name in the form, ReportType-ReportDateTime. The maximum length of the report name is 200." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionByAdReportRequest/format> ;
    sh:name "format" ;
    sh:description "The format of the report data. For example, you can request the data in comma-separated values (Csv) format or tab-separated values (Tsv) format. The default value is Csv. All downloaded files are ZIP compressed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Csv" "Tsv" "Xml" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionByAdReportRequest/returnOnlyCompleteData> ;
    sh:name "return only complete data" ;
    sh:description "Determines whether or not the service must ensure that all the data has been processed and is available. If set to true and if the system has not finished processing all the data based on the requested Aggregation, Scope, and Time, the service returns error code NoCompleteDataAvaliable (2004). Otherwise by default the request can succeed, there is no indication as to whether the data is complete, and the report will contain only the data that the system has finished processing at the time of the request. Please note that because today is still in progress and data is not complete, you cannot set this element to true if the Time period (whether custom or predefined date) includes today's date. For more information, see Time Zones in Reporting." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionByAdReportRequest/excludeReportHeader> ;
    sh:name "exclude report header" ;
    sh:description "Determines whether or not the downloaded report should contain header metadata such as report name, date range, and aggregation. Set this property true if you want the report header metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionByAdReportRequest/excludeReportFooter> ;
    sh:name "exclude report footer" ;
    sh:description "Determines whether or not the downloaded report should contain footer metadata such as Microsoft copyright (`@2020` Microsoft Corporation. All rights reserved.). Set this property true if you want the report footer metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionByAdReportRequest/excludeColumnHeaders> ;
    sh:name "exclude column headers" ;
    sh:description "Determines whether or not the downloaded report should contain header descriptions for each column. The report column header matches the requested column name e.g. Impressions and Clicks. Set this property true if you want the report column headers excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionByAdReportRequest/formatVersion> ;
    sh:name "format version" ;
    sh:description "Determines the format for certain fields in the downloaded report file. The data format for certain fields can be updated within the current API version without breaking existing client applications. You can get the latest data format by setting this optional request field to 2.0. If you do not set this field, the service defaults to version 1.0. For details about changes between format versions, see Report Format Version." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionByAdReportRequest/scope> ;
    sh:name "scope" ;
    sh:description "The entity scope of the report. Use this element to limit the report data to specific accounts, ad groups, or campaigns." ;
    sh:node microsoftads:ReportingAccountThroughAdGroupReportScopeShape ;
    sh:class microsoftads:ReportingAccountThroughAdGroupReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionByAdReportRequest/time> ;
    sh:name "time" ;
    sh:description "The time period to use for the report. You can specify a custom date range or select a predefined date range, for example, Today or ThisWeek. For a list of the time periods that you can specify for each aggregation type, see Aggregation and Time. You can set the time zone within the ReportTime object, which helps you accurately scope data for the requested time period. If you do not choose a time zone, the Reporting service uses PacificTimeUSCanadaTijuana by default." ;
    sh:node microsoftads:ReportingReportTimeShape ;
    sh:class microsoftads:ReportingReportTime ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionByAdReportRequest/aggregation> ;
    sh:name "aggregation" ;
    sh:description "The type of aggregation to use to aggregate the report data. For example, you can aggregate the report data by day or week, or request a summary report. The default aggregation is Summary. It is important to note that if you do not include TimePeriod in the list of Columns, the aggregation you chose will be ignored and Summary aggregation will be used regardless." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Summary" "Hourly" "Daily" "Weekly" "Monthly" "Yearly" "HourOfDay" "DayOfWeek" "WeeklyStartingMonday" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionByAdReportRequest/columns> ;
    sh:name "columns" ;
    sh:description "The list of attributes and performance statistics to include in the report. The report will include the columns in the order that you specify them." ;
    sh:datatype xsd:string ;
    sh:in ( "AccountName" "TimePeriod" "CampaignName" "CampaignId" "AdGroupName" "AdGroupId" "AdTitle" "AdId" "AdExtensionType" "DeviceType" "DeviceOS" "ClickType" "Impressions" "Clicks" "TotalClicks" "Conversions" "Ctr" "AverageCpc" "ConversionRate" "Spend" "AdExtensionId" "AdExtensionVersion" "AccountNumber" "AccountId" "BidMatchType" "DeliveredMatchType" "Network" "TopVsOther" "Assists" "Revenue" "ReturnOnAdSpend" "CostPerConversion" "CostPerAssist" "RevenuePerConversion" "RevenuePerAssist" "AccountStatus" "CampaignStatus" "AdGroupStatus" "AdStatus" "TitlePart1" "TitlePart2" "TitlePart3" "AllConversions" "AllRevenue" "AllConversionRate" "AllCostPerConversion" "AllReturnOnAdSpend" "AllRevenuePerConversion" "Goal" "GoalType" "AverageCpm" "ConversionsQualified" "AllConversionsQualified" "GoalId" "MarketingObjective" "Channel" "SubChannel" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionByAdReportRequest/filter> ;
    sh:name "filter" ;
    sh:description "The criteria to use to filter the report data." ;
    sh:node microsoftads:ReportingAdExtensionByAdReportFilterShape ;
    sh:class microsoftads:ReportingAdExtensionByAdReportFilter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionByAdReportRequest/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Ad Extension By Keyword Report Filter
microsoftads:ReportingAdExtensionByKeywordReportFilterShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingAdExtensionByKeywordReportFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionByKeywordReportFilter/deviceType> ;
    sh:name "device type" ;
    sh:description "The report will include data where the ad is displayed on the specified device types. For example, you may use the filter to include data for only ads displayed on smartphones. You may specify one or more device types." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionByKeywordReportFilter/deviceOS> ;
    sh:name "device os" ;
    sh:description "The report will include data where the ad is displayed on the specified device operating systems. For example, you may use the filter to include data for only ads displayed on Windows devices." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionByKeywordReportFilter/accountStatus> ;
    sh:name "account status" ;
    sh:description "The report will include data for only the account status. For example, you can use the filter to include data for only active accounts. You can specify one or more account statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionByKeywordReportFilter/campaignStatus> ;
    sh:name "campaign status" ;
    sh:description "The report will include data for only the campaign status. For example, you can use the filter to include data for only active campaigns. You can specify one or more campaign statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionByKeywordReportFilter/adGroupStatus> ;
    sh:name "ad group status" ;
    sh:description "The report will include data for only the ad group status. For example, you can use the filter to include data for only active ad groups. You can specify one or more ad group statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionByKeywordReportFilter/keywordStatus> ;
    sh:name "keyword status" ;
    sh:description "The report will include data for only the keyword status. For example, you can use the filter to include data for only active keywords. You can specify one or more keyword statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Ad Extension By Keyword Report Request
microsoftads:ReportingAdExtensionByKeywordReportRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingAdExtensionByKeywordReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionByKeywordReportRequest/reportName> ;
    sh:name "report name" ;
    sh:description "The name of the report. The name is included in the report header. If you do not specify a report name, the system generates a name in the form, ReportType-ReportDateTime. The maximum length of the report name is 200." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionByKeywordReportRequest/format> ;
    sh:name "format" ;
    sh:description "The format of the report data. For example, you can request the data in comma-separated values (Csv) format or tab-separated values (Tsv) format. The default value is Csv. All downloaded files are ZIP compressed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Csv" "Tsv" "Xml" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionByKeywordReportRequest/returnOnlyCompleteData> ;
    sh:name "return only complete data" ;
    sh:description "Determines whether or not the service must ensure that all the data has been processed and is available. If set to true and if the system has not finished processing all the data based on the requested Aggregation, Scope, and Time, the service returns error code NoCompleteDataAvaliable (2004). Otherwise by default the request can succeed, there is no indication as to whether the data is complete, and the report will contain only the data that the system has finished processing at the time of the request. Please note that because today is still in progress and data is not complete, you cannot set this element to true if the Time period (whether custom or predefined date) includes today's date. For more information, see Time Zones in Reporting." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionByKeywordReportRequest/excludeReportHeader> ;
    sh:name "exclude report header" ;
    sh:description "Determines whether or not the downloaded report should contain header metadata such as report name, date range, and aggregation. Set this property true if you want the report header metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionByKeywordReportRequest/excludeReportFooter> ;
    sh:name "exclude report footer" ;
    sh:description "Determines whether or not the downloaded report should contain footer metadata such as Microsoft copyright (`@2020` Microsoft Corporation. All rights reserved.). Set this property true if you want the report footer metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionByKeywordReportRequest/excludeColumnHeaders> ;
    sh:name "exclude column headers" ;
    sh:description "Determines whether or not the downloaded report should contain header descriptions for each column. The report column header matches the requested column name e.g. Impressions and Clicks. Set this property true if you want the report column headers excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionByKeywordReportRequest/formatVersion> ;
    sh:name "format version" ;
    sh:description "Determines the format for certain fields in the downloaded report file. The data format for certain fields can be updated within the current API version without breaking existing client applications. You can get the latest data format by setting this optional request field to 2.0. If you do not set this field, the service defaults to version 1.0. For details about changes between format versions, see Report Format Version." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionByKeywordReportRequest/scope> ;
    sh:name "scope" ;
    sh:description "The entity scope of the report. Use this element to limit the report data to specific accounts, ad groups, or campaigns." ;
    sh:node microsoftads:ReportingAccountThroughAdGroupReportScopeShape ;
    sh:class microsoftads:ReportingAccountThroughAdGroupReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionByKeywordReportRequest/time> ;
    sh:name "time" ;
    sh:description "The time period to use for the report. You can specify a custom date range or select a predefined date range, for example, Today or ThisWeek. For a list of the time periods that you can specify for each aggregation type, see Aggregation and Time. You can set the time zone within the ReportTime object, which helps you accurately scope data for the requested time period. If you do not choose a time zone, the Reporting service uses PacificTimeUSCanadaTijuana by default." ;
    sh:node microsoftads:ReportingReportTimeShape ;
    sh:class microsoftads:ReportingReportTime ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionByKeywordReportRequest/aggregation> ;
    sh:name "aggregation" ;
    sh:description "The type of aggregation to use to aggregate the report data. For example, you can aggregate the report data by day or week, or request a summary report. The default aggregation is Summary. It is important to note that if you do not include TimePeriod in the list of Columns, the aggregation you chose will be ignored and Summary aggregation will be used regardless." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Summary" "Hourly" "Daily" "Weekly" "Monthly" "Yearly" "HourOfDay" "DayOfWeek" "WeeklyStartingMonday" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionByKeywordReportRequest/columns> ;
    sh:name "columns" ;
    sh:description "The list of attributes and performance statistics to include in the report. The report will include the columns in the order that you specify them." ;
    sh:datatype xsd:string ;
    sh:in ( "AccountName" "TimePeriod" "CampaignName" "CampaignId" "AdGroupName" "AdGroupId" "Keyword" "KeywordId" "AdExtensionType" "DeviceType" "DeviceOS" "ClickType" "Impressions" "Clicks" "TotalClicks" "Conversions" "Ctr" "AverageCpc" "ConversionRate" "Spend" "AdExtensionId" "AdExtensionVersion" "AccountNumber" "AccountId" "BidMatchType" "DeliveredMatchType" "Network" "TopVsOther" "Assists" "Revenue" "ReturnOnAdSpend" "CostPerConversion" "CostPerAssist" "RevenuePerConversion" "RevenuePerAssist" "AccountStatus" "CampaignStatus" "AdGroupStatus" "KeywordStatus" "AllConversions" "AllRevenue" "AllConversionRate" "AllCostPerConversion" "AllReturnOnAdSpend" "AllRevenuePerConversion" "Goal" "GoalType" "AverageCpm" "ConversionsQualified" "AllConversionsQualified" "MarketingObjective" "Channel" "SubChannel" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionByKeywordReportRequest/filter> ;
    sh:name "filter" ;
    sh:description "The criteria to use to filter the report data." ;
    sh:node microsoftads:ReportingAdExtensionByKeywordReportFilterShape ;
    sh:class microsoftads:ReportingAdExtensionByKeywordReportFilter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionByKeywordReportRequest/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Ad Extension Detail Report Filter
microsoftads:ReportingAdExtensionDetailReportFilterShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingAdExtensionDetailReportFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionDetailReportFilter/deviceType> ;
    sh:name "device type" ;
    sh:description "The report will include data where the ad is displayed on the specified device types. For example, you may use the filter to include data for only ads displayed on smartphones. You may specify one or more device types." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionDetailReportFilter/deviceOS> ;
    sh:name "device os" ;
    sh:description "The report will include data where the ad is displayed on the specified device operating systems. For example, you may use the filter to include data for only ads displayed on Windows devices." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionDetailReportFilter/accountStatus> ;
    sh:name "account status" ;
    sh:description "The report will include data for only the account status. For example, you can use the filter to include data for only active accounts. You can specify one or more account statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionDetailReportFilter/campaignStatus> ;
    sh:name "campaign status" ;
    sh:description "The report will include data for only the campaign status. For example, you can use the filter to include data for only active campaigns. You can specify one or more campaign statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionDetailReportFilter/adGroupStatus> ;
    sh:name "ad group status" ;
    sh:description "The report will include data for only the ad group status. For example, you can use the filter to include data for only active ad groups. You can specify one or more ad group statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionDetailReportFilter/adStatus> ;
    sh:name "ad status" ;
    sh:description "The report will include data for only the ad status. For example, you can use the filter to include data for only active ads. You can specify one or more ad statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Ad Extension Detail Report Request
microsoftads:ReportingAdExtensionDetailReportRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingAdExtensionDetailReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionDetailReportRequest/reportName> ;
    sh:name "report name" ;
    sh:description "The name of the report. The name is included in the report header. If you do not specify a report name, the system generates a name in the form, ReportType-ReportDateTime. The maximum length of the report name is 200." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionDetailReportRequest/format> ;
    sh:name "format" ;
    sh:description "The format of the report data. For example, you can request the data in comma-separated values (Csv) format or tab-separated values (Tsv) format. The default value is Csv. All downloaded files are ZIP compressed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Csv" "Tsv" "Xml" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionDetailReportRequest/returnOnlyCompleteData> ;
    sh:name "return only complete data" ;
    sh:description "Determines whether or not the service must ensure that all the data has been processed and is available. If set to true and if the system has not finished processing all the data based on the requested Aggregation, Scope, and Time, the service returns error code NoCompleteDataAvaliable (2004). Otherwise by default the request can succeed, there is no indication as to whether the data is complete, and the report will contain only the data that the system has finished processing at the time of the request. Please note that because today is still in progress and data is not complete, you cannot set this element to true if the Time period (whether custom or predefined date) includes today's date. For more information, see Time Zones in Reporting." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionDetailReportRequest/excludeReportHeader> ;
    sh:name "exclude report header" ;
    sh:description "Determines whether or not the downloaded report should contain header metadata such as report name, date range, and aggregation. Set this property true if you want the report header metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionDetailReportRequest/excludeReportFooter> ;
    sh:name "exclude report footer" ;
    sh:description "Determines whether or not the downloaded report should contain footer metadata such as Microsoft copyright (`@2020` Microsoft Corporation. All rights reserved.). Set this property true if you want the report footer metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionDetailReportRequest/excludeColumnHeaders> ;
    sh:name "exclude column headers" ;
    sh:description "Determines whether or not the downloaded report should contain header descriptions for each column. The report column header matches the requested column name e.g. Impressions and Clicks. Set this property true if you want the report column headers excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionDetailReportRequest/formatVersion> ;
    sh:name "format version" ;
    sh:description "Determines the format for certain fields in the downloaded report file. The data format for certain fields can be updated within the current API version without breaking existing client applications. You can get the latest data format by setting this optional request field to 2.0. If you do not set this field, the service defaults to version 1.0. For details about changes between format versions, see Report Format Version." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionDetailReportRequest/scope> ;
    sh:name "scope" ;
    sh:description "The entity scope of the report. Use this element to limit the report data to specific accounts, ad groups, or campaigns." ;
    sh:node microsoftads:ReportingAccountThroughAdGroupReportScopeShape ;
    sh:class microsoftads:ReportingAccountThroughAdGroupReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionDetailReportRequest/time> ;
    sh:name "time" ;
    sh:description "The time period to use for the report. You can specify a custom date range or select a predefined date range, for example, Today or ThisWeek. For a list of the time periods that you can specify for each aggregation type, see Aggregation and Time. You can set the time zone within the ReportTime object, which helps you accurately scope data for the requested time period. If you do not choose a time zone, the Reporting service uses PacificTimeUSCanadaTijuana by default." ;
    sh:node microsoftads:ReportingReportTimeShape ;
    sh:class microsoftads:ReportingReportTime ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionDetailReportRequest/aggregation> ;
    sh:name "aggregation" ;
    sh:description "The type of aggregation to use to aggregate the report data. For example, you can aggregate the report data by day or week, or request a summary report. The default aggregation is Summary. It is important to note that if you do not include TimePeriod in the list of Columns, the aggregation you chose will be ignored and Summary aggregation will be used regardless." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Summary" "Hourly" "Daily" "Weekly" "Monthly" "Yearly" "HourOfDay" "DayOfWeek" "WeeklyStartingMonday" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionDetailReportRequest/columns> ;
    sh:name "columns" ;
    sh:description "The list of attributes and performance statistics to include in the report. The report will include the columns in the order that you specify them." ;
    sh:datatype xsd:string ;
    sh:in ( "AccountName" "AccountId" "TimePeriod" "CampaignName" "CampaignId" "AdGroupName" "AdGroupId" "AdTitle" "AdId" "AdExtensionType" "AdExtensionTypeId" "AdExtensionId" "AdExtensionVersion" "AdExtensionPropertyValue" "Impressions" "DeviceType" "DeviceOS" "Clicks" "Ctr" "Conversions" "CostPerConversion" "ConversionRate" "Spend" "AverageCpc" "BidMatchType" "DeliveredMatchType" "Network" "TopVsOther" "Assists" "Revenue" "ReturnOnAdSpend" "CostPerAssist" "RevenuePerConversion" "RevenuePerAssist" "AccountStatus" "CampaignStatus" "AdGroupStatus" "AdStatus" "AllConversions" "AllRevenue" "AllConversionRate" "AllCostPerConversion" "AllReturnOnAdSpend" "AllRevenuePerConversion" "Goal" "GoalType" "AverageCpm" "ConversionsQualified" "AllConversionsQualified" "MarketingObjective" "Channel" "SubChannel" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionDetailReportRequest/filter> ;
    sh:name "filter" ;
    sh:description "The criteria to use to filter the report data." ;
    sh:node microsoftads:ReportingAdExtensionDetailReportFilterShape ;
    sh:class microsoftads:ReportingAdExtensionDetailReportFilter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdExtensionDetailReportRequest/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Ad Group Performance Report Filter
microsoftads:ReportingAdGroupPerformanceReportFilterShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingAdGroupPerformanceReportFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdGroupPerformanceReportFilter/adDistribution> ;
    sh:name "ad distribution" ;
    sh:description "The report will include data for only the specified distribution medium. For example, you can use the filter to include data for only search ads. You can specify one or more distribution mediums." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdGroupPerformanceReportFilter/status> ;
    sh:name "status" ;
    sh:description "The report will include data for only the specified ad group status values. For example, you can use the filter to include data for only active ad groups. You can specify one or more status values." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdGroupPerformanceReportFilter/deviceType> ;
    sh:name "device type" ;
    sh:description "The report will include data where the ad is displayed on the specified device types. For example, you may use the filter to include data for only ads displayed on smartphones. You may specify one or more device types." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdGroupPerformanceReportFilter/deviceOS> ;
    sh:name "device os" ;
    sh:description "The report will include data where the ad is displayed on the specified device operating systems. For example, you may use the filter to include data for only ads displayed on Windows devices." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdGroupPerformanceReportFilter/language> ;
    sh:name "language" ;
    sh:description "The report will include data for only websites that used the specified languages. You can specify one or more languages." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdGroupPerformanceReportFilter/accountStatus> ;
    sh:name "account status" ;
    sh:description "The report will include data for only the account status. For example, you can use the filter to include data for only active accounts. You can specify one or more account statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdGroupPerformanceReportFilter/campaignStatus> ;
    sh:name "campaign status" ;
    sh:description "The report will include data for only the campaign status. For example, you can use the filter to include data for only active campaigns. You can specify one or more campaign statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Ad Group Performance Report Request
microsoftads:ReportingAdGroupPerformanceReportRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingAdGroupPerformanceReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdGroupPerformanceReportRequest/reportName> ;
    sh:name "report name" ;
    sh:description "The name of the report. The name is included in the report header. If you do not specify a report name, the system generates a name in the form, ReportType-ReportDateTime. The maximum length of the report name is 200." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdGroupPerformanceReportRequest/format> ;
    sh:name "format" ;
    sh:description "The format of the report data. For example, you can request the data in comma-separated values (Csv) format or tab-separated values (Tsv) format. The default value is Csv. All downloaded files are ZIP compressed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Csv" "Tsv" "Xml" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdGroupPerformanceReportRequest/returnOnlyCompleteData> ;
    sh:name "return only complete data" ;
    sh:description "Determines whether or not the service must ensure that all the data has been processed and is available. If set to true and if the system has not finished processing all the data based on the requested Aggregation, Scope, and Time, the service returns error code NoCompleteDataAvaliable (2004). Otherwise by default the request can succeed, there is no indication as to whether the data is complete, and the report will contain only the data that the system has finished processing at the time of the request. Please note that because today is still in progress and data is not complete, you cannot set this element to true if the Time period (whether custom or predefined date) includes today's date. For more information, see Time Zones in Reporting." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdGroupPerformanceReportRequest/excludeReportHeader> ;
    sh:name "exclude report header" ;
    sh:description "Determines whether or not the downloaded report should contain header metadata such as report name, date range, and aggregation. Set this property true if you want the report header metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdGroupPerformanceReportRequest/excludeReportFooter> ;
    sh:name "exclude report footer" ;
    sh:description "Determines whether or not the downloaded report should contain footer metadata such as Microsoft copyright (`@2020` Microsoft Corporation. All rights reserved.). Set this property true if you want the report footer metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdGroupPerformanceReportRequest/excludeColumnHeaders> ;
    sh:name "exclude column headers" ;
    sh:description "Determines whether or not the downloaded report should contain header descriptions for each column. The report column header matches the requested column name e.g. Impressions and Clicks. Set this property true if you want the report column headers excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdGroupPerformanceReportRequest/formatVersion> ;
    sh:name "format version" ;
    sh:description "Determines the format for certain fields in the downloaded report file. The data format for certain fields can be updated within the current API version without breaking existing client applications. You can get the latest data format by setting this optional request field to 2.0. If you do not set this field, the service defaults to version 1.0. For details about changes between format versions, see Report Format Version." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdGroupPerformanceReportRequest/scope> ;
    sh:name "scope" ;
    sh:description "The entity scope of the report. Use this element to limit the report data to specific accounts, ad groups, or campaigns." ;
    sh:node microsoftads:ReportingAccountThroughAdGroupReportScopeShape ;
    sh:class microsoftads:ReportingAccountThroughAdGroupReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdGroupPerformanceReportRequest/filter> ;
    sh:name "filter" ;
    sh:description "The filter information to use to filter the report data." ;
    sh:node microsoftads:ReportingAdGroupPerformanceReportFilterShape ;
    sh:class microsoftads:ReportingAdGroupPerformanceReportFilter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdGroupPerformanceReportRequest/time> ;
    sh:name "time" ;
    sh:description "The time period to use for the report. You can specify a custom date range or select a predefined date range, for example, Today or ThisWeek. For a list of the time periods that you can specify for each aggregation type, see Aggregation and Time. You can set the time zone within the ReportTime object, which helps you accurately scope data for the requested time period. If you do not choose a time zone, the Reporting service uses PacificTimeUSCanadaTijuana by default." ;
    sh:node microsoftads:ReportingReportTimeShape ;
    sh:class microsoftads:ReportingReportTime ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdGroupPerformanceReportRequest/aggregation> ;
    sh:name "aggregation" ;
    sh:description "The type of aggregation to use to aggregate the report data. For example, you can aggregate the report data by day or week, or request a summary report. The default aggregation is Summary. It is important to note that if you do not include TimePeriod in the list of Columns, the aggregation you chose will be ignored and Summary aggregation will be used regardless." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Summary" "Hourly" "Daily" "Weekly" "Monthly" "Yearly" "HourOfDay" "DayOfWeek" "WeeklyStartingMonday" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdGroupPerformanceReportRequest/columns> ;
    sh:name "columns" ;
    sh:description "The list of attributes and performance statistics to include in the report. The report will include the columns in the order that you specify them." ;
    sh:datatype xsd:string ;
    sh:in ( "AccountName" "AccountNumber" "AccountId" "TimePeriod" "Status" "CampaignName" "CampaignId" "AdGroupName" "AdGroupId" "CurrencyCode" "AdDistribution" "Impressions" "Clicks" "Ctr" "AverageCpc" "Spend" "AveragePosition" "Conversions" "ConversionRate" "CostPerConversion" "DeviceType" "Language" "DeviceOS" "ImpressionSharePercent" "ImpressionLostToBudgetPercent" "ImpressionLostToRankAggPercent" "QualityScore" "ExpectedCtr" "AdRelevance" "LandingPageExperience" "HistoricalQualityScore" "HistoricalExpectedCtr" "HistoricalAdRelevance" "HistoricalLandingPageExperience" "PhoneImpressions" "PhoneCalls" "Ptr" "Network" "TopVsOther" "BidMatchType" "DeliveredMatchType" "Assists" "Revenue" "ReturnOnAdSpend" "CostPerAssist" "RevenuePerConversion" "RevenuePerAssist" "TrackingTemplate" "CustomParameters" "AccountStatus" "CampaignStatus" "AdGroupLabels" "ExactMatchImpressionSharePercent" "CustomerId" "CustomerName" "ClickSharePercent" "AbsoluteTopImpressionSharePercent" "FinalUrlSuffix" "CampaignType" "TopImpressionShareLostToRankPercent" "TopImpressionShareLostToBudgetPercent" "AbsoluteTopImpressionShareLostToRankPercent" "AbsoluteTopImpressionShareLostToBudgetPercent" "TopImpressionSharePercent" "AbsoluteTopImpressionRatePercent" "TopImpressionRatePercent" "BaseCampaignId" "AllConversions" "AllRevenue" "AllConversionRate" "AllCostPerConversion" "AllReturnOnAdSpend" "AllRevenuePerConversion" "ViewThroughConversions" "Goal" "GoalType" "AudienceImpressionSharePercent" "AudienceImpressionLostToRankPercent" "AudienceImpressionLostToBudgetPercent" "RelativeCtr" "AdGroupType" "AverageCpm" "ConversionsQualified" "AllConversionsQualified" "ViewThroughConversionsQualified" "ViewThroughRevenue" "VideoViews" "ViewThroughRate" "AverageCPV" "VideoViewsAt25Percent" "VideoViewsAt50Percent" "VideoViewsAt75Percent" "CompletedVideoViews" "VideoCompletionRate" "TotalWatchTimeInMS" "AverageWatchTimePerVideoView" "AverageWatchTimePerImpression" "Sales" "CostPerSale" "RevenuePerSale" "Installs" "CostPerInstall" "RevenuePerInstall" "GoalId" "MarketingObjective" "Channel" "SubChannel" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdGroupPerformanceReportRequest/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Ad Performance Report Filter
microsoftads:ReportingAdPerformanceReportFilterShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingAdPerformanceReportFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdPerformanceReportFilter/adDistribution> ;
    sh:name "ad distribution" ;
    sh:description "The report will include data for only the specified distribution medium. For example, you can use the filter to include data for only search ads. You can specify one or more distribution mediums." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdPerformanceReportFilter/adType> ;
    sh:name "ad type" ;
    sh:description "The report will include data for only the specified ad types. For example, the report can include data for product or expanded text ads. You can specify one or more ad types." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdPerformanceReportFilter/deviceType> ;
    sh:name "device type" ;
    sh:description "The report will include data for only the specified types of devices on which the ad is displayed. For example, you can use the filter to include data for only text ads displayed on smartphones. You can specify one or more device types." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdPerformanceReportFilter/language> ;
    sh:name "language" ;
    sh:description "The report will include data for only websites that used the specified languages. You can specify one or more languages." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdPerformanceReportFilter/accountStatus> ;
    sh:name "account status" ;
    sh:description "The report will include data for only the account status. For example, you can use the filter to include data for only active accounts. You can specify one or more account statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdPerformanceReportFilter/campaignStatus> ;
    sh:name "campaign status" ;
    sh:description "The report will include data for only the campaign status. For example, you can use the filter to include data for only active campaigns. You can specify one or more campaign statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdPerformanceReportFilter/adGroupStatus> ;
    sh:name "ad group status" ;
    sh:description "The report will include data for only the ad group status. For example, you can use the filter to include data for only active ad groups. You can specify one or more ad group statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdPerformanceReportFilter/adStatus> ;
    sh:name "ad status" ;
    sh:description "The report will include data for only the ad status. For example, you can use the filter to include data for only active ads. You can specify one or more ad statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Ad Performance Report Request
microsoftads:ReportingAdPerformanceReportRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingAdPerformanceReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdPerformanceReportRequest/reportName> ;
    sh:name "report name" ;
    sh:description "The name of the report. The name is included in the report header. If you do not specify a report name, the system generates a name in the form, ReportType-ReportDateTime. The maximum length of the report name is 200." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdPerformanceReportRequest/format> ;
    sh:name "format" ;
    sh:description "The format of the report data. For example, you can request the data in comma-separated values (Csv) format or tab-separated values (Tsv) format. The default value is Csv. All downloaded files are ZIP compressed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Csv" "Tsv" "Xml" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdPerformanceReportRequest/returnOnlyCompleteData> ;
    sh:name "return only complete data" ;
    sh:description "Determines whether or not the service must ensure that all the data has been processed and is available. If set to true and if the system has not finished processing all the data based on the requested Aggregation, Scope, and Time, the service returns error code NoCompleteDataAvaliable (2004). Otherwise by default the request can succeed, there is no indication as to whether the data is complete, and the report will contain only the data that the system has finished processing at the time of the request. Please note that because today is still in progress and data is not complete, you cannot set this element to true if the Time period (whether custom or predefined date) includes today's date. For more information, see Time Zones in Reporting." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdPerformanceReportRequest/excludeReportHeader> ;
    sh:name "exclude report header" ;
    sh:description "Determines whether or not the downloaded report should contain header metadata such as report name, date range, and aggregation. Set this property true if you want the report header metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdPerformanceReportRequest/excludeReportFooter> ;
    sh:name "exclude report footer" ;
    sh:description "Determines whether or not the downloaded report should contain footer metadata such as Microsoft copyright (`@2020` Microsoft Corporation. All rights reserved.). Set this property true if you want the report footer metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdPerformanceReportRequest/excludeColumnHeaders> ;
    sh:name "exclude column headers" ;
    sh:description "Determines whether or not the downloaded report should contain header descriptions for each column. The report column header matches the requested column name e.g. Impressions and Clicks. Set this property true if you want the report column headers excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdPerformanceReportRequest/formatVersion> ;
    sh:name "format version" ;
    sh:description "Determines the format for certain fields in the downloaded report file. The data format for certain fields can be updated within the current API version without breaking existing client applications. You can get the latest data format by setting this optional request field to 2.0. If you do not set this field, the service defaults to version 1.0. For details about changes between format versions, see Report Format Version." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdPerformanceReportRequest/scope> ;
    sh:name "scope" ;
    sh:description "The entity scope of the report. Use this element to limit the report data to specific accounts, ad groups, or campaigns." ;
    sh:node microsoftads:ReportingAccountThroughAdGroupReportScopeShape ;
    sh:class microsoftads:ReportingAccountThroughAdGroupReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdPerformanceReportRequest/filter> ;
    sh:name "filter" ;
    sh:description "The filter information to use to filter the report data." ;
    sh:node microsoftads:ReportingAdPerformanceReportFilterShape ;
    sh:class microsoftads:ReportingAdPerformanceReportFilter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdPerformanceReportRequest/time> ;
    sh:name "time" ;
    sh:description "The time period to use for the report. You can specify a custom date range or select a predefined date range, for example, Today or ThisWeek. For a list of the time periods that you can specify for each aggregation type, see Aggregation and Time. You can set the time zone within the ReportTime object, which helps you accurately scope data for the requested time period. If you do not choose a time zone, the Reporting service uses PacificTimeUSCanadaTijuana by default." ;
    sh:node microsoftads:ReportingReportTimeShape ;
    sh:class microsoftads:ReportingReportTime ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdPerformanceReportRequest/aggregation> ;
    sh:name "aggregation" ;
    sh:description "The type of aggregation to use to aggregate the report data. For example, you can aggregate the report data by day or week, or request a summary report. The default aggregation is Summary. It is important to note that if you do not include TimePeriod in the list of Columns, the aggregation you chose will be ignored and Summary aggregation will be used regardless." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Summary" "Hourly" "Daily" "Weekly" "Monthly" "Yearly" "HourOfDay" "DayOfWeek" "WeeklyStartingMonday" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdPerformanceReportRequest/columns> ;
    sh:name "columns" ;
    sh:description "The list of attributes and performance statistics to include in the report. The report will include the columns in the order that you specify them." ;
    sh:datatype xsd:string ;
    sh:in ( "AccountName" "AccountNumber" "AccountId" "TimePeriod" "CampaignName" "CampaignId" "AdGroupName" "AdId" "AdGroupId" "AdTitle" "AdDescription" "AdDescription2" "AdType" "CurrencyCode" "AdDistribution" "Impressions" "Clicks" "Ctr" "AverageCpc" "Spend" "AveragePosition" "Conversions" "ConversionRate" "CostPerConversion" "DestinationUrl" "DeviceType" "Language" "DisplayUrl" "AdStatus" "Network" "TopVsOther" "BidMatchType" "DeliveredMatchType" "DeviceOS" "Assists" "Revenue" "ReturnOnAdSpend" "CostPerAssist" "RevenuePerConversion" "RevenuePerAssist" "TrackingTemplate" "CustomParameters" "FinalUrl" "FinalMobileUrl" "FinalAppUrl" "AccountStatus" "CampaignStatus" "AdGroupStatus" "TitlePart1" "TitlePart2" "TitlePart3" "Headline" "LongHeadline" "BusinessName" "Path1" "Path2" "AdLabels" "CustomerId" "CustomerName" "CampaignType" "BaseCampaignId" "AllConversions" "AllRevenue" "AllConversionRate" "AllCostPerConversion" "AllReturnOnAdSpend" "AllRevenuePerConversion" "FinalUrlSuffix" "ViewThroughConversions" "Goal" "GoalType" "AbsoluteTopImpressionRatePercent" "TopImpressionRatePercent" "AverageCpm" "ConversionsQualified" "AllConversionsQualified" "ViewThroughConversionsQualified" "ViewThroughRevenue" "VideoViews" "ViewThroughRate" "AverageCPV" "VideoViewsAt25Percent" "VideoViewsAt50Percent" "VideoViewsAt75Percent" "CompletedVideoViews" "VideoCompletionRate" "TotalWatchTimeInMS" "AverageWatchTimePerVideoView" "AverageWatchTimePerImpression" "AdStrength" "AdStrengthActionItems" "GoalId" "MarketingObjective" "Channel" "SubChannel" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAdPerformanceReportRequest/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Age Gender Audience Report Filter
microsoftads:ReportingAgeGenderAudienceReportFilterShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingAgeGenderAudienceReportFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAgeGenderAudienceReportFilter/adDistribution> ;
    sh:name "ad distribution" ;
    sh:description "The report will include data for only the specified distribution medium. For example, you can use the filter to include data for only search ads. You can specify one or more distribution mediums." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAgeGenderAudienceReportFilter/language> ;
    sh:name "language" ;
    sh:description "The report will include data for only websites that used the specified languages. You can specify one or more languages." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAgeGenderAudienceReportFilter/accountStatus> ;
    sh:name "account status" ;
    sh:description "The report will include data for only the account status. For example, you can use the filter to include data for only active accounts. You can specify one or more account statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAgeGenderAudienceReportFilter/campaignStatus> ;
    sh:name "campaign status" ;
    sh:description "The report will include data for only the campaign status. For example, you can use the filter to include data for only active campaigns. You can specify one or more campaign statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAgeGenderAudienceReportFilter/adGroupStatus> ;
    sh:name "ad group status" ;
    sh:description "The report will include data for only the ad group status. For example, you can use the filter to include data for only active ad groups. You can specify one or more ad group statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAgeGenderAudienceReportFilter/assetGroupStatus> ;
    sh:name "asset group status" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Age Gender Audience Report Request
microsoftads:ReportingAgeGenderAudienceReportRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingAgeGenderAudienceReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAgeGenderAudienceReportRequest/reportName> ;
    sh:name "report name" ;
    sh:description "The name of the report. The name is included in the report header. If you do not specify a report name, the system generates a name in the form, ReportType-ReportDateTime. The maximum length of the report name is 200." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAgeGenderAudienceReportRequest/format> ;
    sh:name "format" ;
    sh:description "The format of the report data. For example, you can request the data in comma-separated values (Csv) format or tab-separated values (Tsv) format. The default value is Csv. All downloaded files are ZIP compressed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Csv" "Tsv" "Xml" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAgeGenderAudienceReportRequest/returnOnlyCompleteData> ;
    sh:name "return only complete data" ;
    sh:description "Determines whether or not the service must ensure that all the data has been processed and is available. If set to true and if the system has not finished processing all the data based on the requested Aggregation, Scope, and Time, the service returns error code NoCompleteDataAvaliable (2004). Otherwise by default the request can succeed, there is no indication as to whether the data is complete, and the report will contain only the data that the system has finished processing at the time of the request. Please note that because today is still in progress and data is not complete, you cannot set this element to true if the Time period (whether custom or predefined date) includes today's date. For more information, see Time Zones in Reporting." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAgeGenderAudienceReportRequest/excludeReportHeader> ;
    sh:name "exclude report header" ;
    sh:description "Determines whether or not the downloaded report should contain header metadata such as report name, date range, and aggregation. Set this property true if you want the report header metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAgeGenderAudienceReportRequest/excludeReportFooter> ;
    sh:name "exclude report footer" ;
    sh:description "Determines whether or not the downloaded report should contain footer metadata such as Microsoft copyright (`@2020` Microsoft Corporation. All rights reserved.). Set this property true if you want the report footer metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAgeGenderAudienceReportRequest/excludeColumnHeaders> ;
    sh:name "exclude column headers" ;
    sh:description "Determines whether or not the downloaded report should contain header descriptions for each column. The report column header matches the requested column name e.g. Impressions and Clicks. Set this property true if you want the report column headers excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAgeGenderAudienceReportRequest/formatVersion> ;
    sh:name "format version" ;
    sh:description "Determines the format for certain fields in the downloaded report file. The data format for certain fields can be updated within the current API version without breaking existing client applications. You can get the latest data format by setting this optional request field to 2.0. If you do not set this field, the service defaults to version 1.0. For details about changes between format versions, see Report Format Version." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAgeGenderAudienceReportRequest/scope> ;
    sh:name "scope" ;
    sh:description "The entity scope of the report. Use this element to limit the report data to specific accounts, ad groups, or campaigns." ;
    sh:node microsoftads:ReportingAccountThroughAdGroupReportScopeShape ;
    sh:class microsoftads:ReportingAccountThroughAdGroupReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAgeGenderAudienceReportRequest/filter> ;
    sh:name "filter" ;
    sh:description "The filter information to use to filter the report data." ;
    sh:node microsoftads:ReportingAgeGenderAudienceReportFilterShape ;
    sh:class microsoftads:ReportingAgeGenderAudienceReportFilter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAgeGenderAudienceReportRequest/time> ;
    sh:name "time" ;
    sh:description "The time period to use for the report. You can specify a custom date range or select a predefined date range, for example, Today or ThisWeek. For a list of the time periods that you can specify for each aggregation type, see Aggregation and Time." ;
    sh:node microsoftads:ReportingReportTimeShape ;
    sh:class microsoftads:ReportingReportTime ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAgeGenderAudienceReportRequest/aggregation> ;
    sh:name "aggregation" ;
    sh:description "The type of aggregation to use to aggregate the report data. For example, you can aggregate the report data by day or week, or request a summary report. The default aggregation is Summary. It is important to note that if you do not include TimePeriod in the list of Columns, the aggregation you chose will be ignored and Summary aggregation will be used regardless." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Summary" "Hourly" "Daily" "Weekly" "Monthly" "Yearly" "HourOfDay" "DayOfWeek" "WeeklyStartingMonday" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAgeGenderAudienceReportRequest/columns> ;
    sh:name "columns" ;
    sh:description "The list of attributes and performance statistics to include in the report. The report will include the columns in the order that you specify them." ;
    sh:datatype xsd:string ;
    sh:in ( "AccountName" "AccountNumber" "AccountId" "TimePeriod" "CampaignName" "CampaignId" "AdGroupName" "AdGroupId" "AdDistribution" "AgeGroup" "Gender" "Impressions" "Clicks" "Conversions" "Spend" "Revenue" "ExtendedCost" "Assists" "Language" "AccountStatus" "CampaignStatus" "AdGroupStatus" "BaseCampaignId" "AllConversions" "AllRevenue" "ViewThroughConversions" "Goal" "GoalType" "AbsoluteTopImpressionRatePercent" "TopImpressionRatePercent" "ConversionsQualified" "AllConversionsQualified" "ViewThroughConversionsQualified" "ViewThroughRevenue" "CampaignType" "AssetGroupId" "AssetGroupName" "AssetGroupStatus" "MarketingObjective" "Channel" "SubChannel" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAgeGenderAudienceReportRequest/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Api Fault Detail
microsoftads:ReportingApiFaultDetailShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingApiFaultDetail ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingApiFaultDetail/trackingId> ;
    sh:name "tracking id" ;
    sh:description "The identifier of the log entry that contains the details of the API call." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingApiFaultDetail/operationErrors> ;
    sh:name "operation errors" ;
    sh:description "An array of operation errors that contains the reasons that explain why the service operation failed when the error is not related to a specific item in the batch of items." ;
    sh:node microsoftads:ReportingOperationErrorShape ;
    sh:class microsoftads:ReportingOperationError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingApiFaultDetail/batchErrors> ;
    sh:name "batch errors" ;
    sh:description "An array of batch errors that identifies the items in the batch of items in the request message that caused the operation to fail. Each object contains the details that explain why the item caused the failure." ;
    sh:node microsoftads:ReportingBatchErrorShape ;
    sh:class microsoftads:ReportingBatchError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingApiFaultDetail/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Operation Error
microsoftads:ReportingOperationErrorShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingOperationError ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingOperationError/code> ;
    sh:name "code" ;
    sh:description "A numeric error code that identifies the error." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingOperationError/errorCode> ;
    sh:name "error code" ;
    sh:description "A symbolic string constant that identifies the error. For example, UserIsNotAuthorized." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingOperationError/details> ;
    sh:name "details" ;
    sh:description "A message that provides additional details about the error. This string can be empty." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingOperationError/message> ;
    sh:name "message" ;
    sh:description "A message that describes the error. For more information about troubleshooting and error handling, see Handling Service Errors and Exceptions and Operation Error Codes." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Batch Error
microsoftads:ReportingBatchErrorShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingBatchError ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingBatchError/code> ;
    sh:name "code" ;
    sh:description "A numeric error code that identifies the error." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingBatchError/errorCode> ;
    sh:name "error code" ;
    sh:description "A symbolic string constant that identifies the error. For example, UserIsNotAuthorized." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingBatchError/details> ;
    sh:name "details" ;
    sh:description "A message that provides additional details about the batch error. This string can be empty." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingBatchError/index> ;
    sh:name "index" ;
    sh:description "The zero-based index of the item in the batch of items in the request message that failed." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingBatchError/message> ;
    sh:name "message" ;
    sh:description "A message that describes the error. For more information about troubleshooting and error handling, see Handling Service Errors and Exceptions and Operation Error Codes." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Application Fault
microsoftads:ReportingApplicationFaultShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingApplicationFault ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingApplicationFault/trackingId> ;
    sh:name "tracking id" ;
    sh:description "The identifier of the log entry that contains the details of the API call." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingApplicationFault/errors> ;
    sh:name "errors" ;
    sh:node microsoftads:ReportingAdApiErrorShape ;
    sh:class microsoftads:ReportingAdApiError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingApplicationFault/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingApplicationFault/operationErrors> ;
    sh:name "operation errors" ;
    sh:node microsoftads:ReportingOperationErrorShape ;
    sh:class microsoftads:ReportingOperationError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingApplicationFault/batchErrors> ;
    sh:name "batch errors" ;
    sh:node microsoftads:ReportingBatchErrorShape ;
    sh:class microsoftads:ReportingBatchError ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] .

# Shape for Reporting Application Fault Base
microsoftads:ReportingApplicationFaultBaseShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingApplicationFaultBase ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingApplicationFaultBase/trackingId> ;
    sh:name "tracking id" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Apps Performance Report Filter
microsoftads:ReportingAppsPerformanceReportFilterShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingAppsPerformanceReportFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAppsPerformanceReportFilter/accountStatus> ;
    sh:name "account status" ;
    sh:description "The report will include data for only the account status. For example, you can use the filter to include data for only active accounts. You can specify one or more account statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAppsPerformanceReportFilter/campaignStatus> ;
    sh:name "campaign status" ;
    sh:description "The report will include data for only the campaign status. For example, you can use the filter to include data for only active campaigns. You can specify one or more campaign statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAppsPerformanceReportFilter/assetGroupStatus> ;
    sh:name "asset group status" ;
    sh:description "The report will include data for only the asset group status. For example, you can use the filter to include data for only active asset groups. You can specify one or more asset group statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Apps Performance Report Request
microsoftads:ReportingAppsPerformanceReportRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingAppsPerformanceReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAppsPerformanceReportRequest/reportName> ;
    sh:name "report name" ;
    sh:description "The name of the report. The name is included in the report header. If you do not specify a report name, the system generates a name in the form, ReportType-ReportDateTime. The maximum length of the report name is 200." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAppsPerformanceReportRequest/format> ;
    sh:name "format" ;
    sh:description "The format of the report data. For example, you can request the data in comma-separated values (CSV) format or tab-separated values (TSV) format. The default value is CSV. All downloaded files are ZIP compressed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Csv" "Tsv" "Xml" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAppsPerformanceReportRequest/returnOnlyCompleteData> ;
    sh:name "return only complete data" ;
    sh:description "Determines whether or not the service must ensure that all the data has been processed and is available. If set to true and if the system has not finished processing all the data based on the requested Aggregation, Scope, and Time, the service returns error code NoCompleteDataAvaliable (2004). Otherwise by default the request can succeed, there is no indication as to whether the data is complete, and the report will contain only the data that the system has finished processing at the time of the request. Please note that because today is still in progress and data is not complete, you cannot set this element to true if the Time period (whether custom or predefined date) includes today's date. For more information, see Time Zones in Reporting." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAppsPerformanceReportRequest/excludeReportHeader> ;
    sh:name "exclude report header" ;
    sh:description "Determines whether or not the downloaded report should contain header metadata such as report name, date range, and aggregation. Set this property true if you want the report header metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAppsPerformanceReportRequest/excludeReportFooter> ;
    sh:name "exclude report footer" ;
    sh:description "Determines whether or not the downloaded report should contain footer metadata such as Microsoft copyright (`@2020` Microsoft Corporation. All rights reserved.). Set this property true if you want the report footer metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAppsPerformanceReportRequest/excludeColumnHeaders> ;
    sh:name "exclude column headers" ;
    sh:description "Determines whether or not the downloaded report should contain header descriptions for each column. The report column header matches the requested column name (e.g., Impressions and Clicks). Set this property true if you want the report column headers excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAppsPerformanceReportRequest/formatVersion> ;
    sh:name "format version" ;
    sh:description "Determines the format for certain fields in the downloaded report file. The data format for certain fields can be updated within the current API version without breaking existing client applications. You can get the latest data format by setting this optional request field to 2.0. If you do not set this field, the service defaults to version 1.0. For details about changes between format versions, see Report Format Version." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAppsPerformanceReportRequest/scope> ;
    sh:name "scope" ;
    sh:description "The entity scope of the report. Use this element to limit the report data to specific accounts or campaigns." ;
    sh:node microsoftads:ReportingAccountThroughAssetGroupReportScopeShape ;
    sh:class microsoftads:ReportingAccountThroughAssetGroupReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAppsPerformanceReportRequest/filter> ;
    sh:name "filter" ;
    sh:description "The filter information to use to filter the report data." ;
    sh:node microsoftads:ReportingAppsPerformanceReportFilterShape ;
    sh:class microsoftads:ReportingAppsPerformanceReportFilter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAppsPerformanceReportRequest/time> ;
    sh:name "time" ;
    sh:description "The time period to use for the report. You can specify a custom date range or select a predefined date range, for example, Today or ThisWeek. For a list of the time periods that you can specify for each aggregation type, see Aggregation and Time. You can set the time zone within the ReportTime object, which helps you accurately scope data for the requested time period. If you don't choose a time zone, the Reporting service uses PacificTimeUSCanadaTijuana by default." ;
    sh:node microsoftads:ReportingReportTimeShape ;
    sh:class microsoftads:ReportingReportTime ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAppsPerformanceReportRequest/aggregation> ;
    sh:name "aggregation" ;
    sh:description "The type of aggregation to use to aggregate the report data. For example, you can aggregate the report data by day or week, or request a summary report. The default aggregation is Summary. It is important to note that if you do not include TimePeriod in the list of Columns, the aggregation you chose will be ignored and Summary aggregation will be used regardless." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Summary" "Hourly" "Daily" "Weekly" "Monthly" "Yearly" "HourOfDay" "DayOfWeek" "WeeklyStartingMonday" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAppsPerformanceReportRequest/columns> ;
    sh:name "columns" ;
    sh:description "The list of attributes and performance statistics to include in the report. The report will include the columns in the order that you specify them." ;
    sh:datatype xsd:string ;
    sh:in ( "TimePeriod" "AccountId" "AccountName" "AccountNumber" "AccountStatus" "CampaignId" "CampaignName" "CampaignStatus" "AssetGroupId" "AssetGroupName" "AssetGroupStatus" "CurrencyCode" "Language" "BidStrategyType" "Goal" "GoalType" "Impressions" "Clicks" "Ctr" "AverageCpc" "Spend" "AverageCpm" "AllConversions" "AllCostPerConversion" "AllConversionRate" "Conversions" "ConversionRate" "CostPerConversion" "ViewThroughConversions" "ViewThroughConversionRate" "ViewThroughCostPerConversion" "Downloads" "PostClickDownloadRate" "CostPerDownload" "AppInstalls" "PostClickInstallRate" "CPI" "Purchases" "PostInstallPurchaseRate" "CPP" "Subscriptions" "PostInstallSubscriptionRate" "CPS" "Revenue" "ReturnOnAdSpend" "RevenuePerDownload" "RevenuePerAppInstall" "MarketingObjective" "Channel" "SubChannel" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAppsPerformanceReportRequest/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Asset Group Performance Report Filter
microsoftads:ReportingAssetGroupPerformanceReportFilterShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingAssetGroupPerformanceReportFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAssetGroupPerformanceReportFilter/assetGroupStatus> ;
    sh:name "asset group status" ;
    sh:description "The asset group status." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAssetGroupPerformanceReportFilter/accountStatus> ;
    sh:name "account status" ;
    sh:description "The account status." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAssetGroupPerformanceReportFilter/campaignStatus> ;
    sh:name "campaign status" ;
    sh:description "The campaign status." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Asset Group Performance Report Request
microsoftads:ReportingAssetGroupPerformanceReportRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingAssetGroupPerformanceReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAssetGroupPerformanceReportRequest/reportName> ;
    sh:name "report name" ;
    sh:description "The name of the report. The name is included in the report header. If you do not specify a report name, the system generates a name in the form, ReportType-ReportDateTime. The maximum length of the report name is 200." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAssetGroupPerformanceReportRequest/format> ;
    sh:name "format" ;
    sh:description "The format of the report data. For example, you can request the data in comma-separated values (Csv) format or tab-separated values (Tsv) format. The default value is Csv. All downloaded files are ZIP compressed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Csv" "Tsv" "Xml" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAssetGroupPerformanceReportRequest/returnOnlyCompleteData> ;
    sh:name "return only complete data" ;
    sh:description "Determines whether or not the service must ensure that all the data has been processed and is available. If set to true and if the system has not finished processing all the data based on the requested Aggregation, Scope, and Time, the service returns error code NoCompleteDataAvaliable (2004). Otherwise by default the request can succeed, there is no indication as to whether the data is complete, and the report will contain only the data that the system has finished processing at the time of the request. Please note that because today is still in progress and data is not complete, you cannot set this element to true if the Time period (whether custom or predefined date) includes today's date. For more information, see Time Zones in Reporting." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAssetGroupPerformanceReportRequest/excludeReportHeader> ;
    sh:name "exclude report header" ;
    sh:description "Determines whether or not the downloaded report should contain header metadata such as report name, date range, and aggregation. Set this property true if you want the report header metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAssetGroupPerformanceReportRequest/excludeReportFooter> ;
    sh:name "exclude report footer" ;
    sh:description "Determines whether or not the downloaded report should contain footer metadata such as Microsoft copyright (`@2020` Microsoft Corporation. All rights reserved.). Set this property true if you want the report footer metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAssetGroupPerformanceReportRequest/excludeColumnHeaders> ;
    sh:name "exclude column headers" ;
    sh:description "Determines whether or not the downloaded report should contain header descriptions for each column. The report column header matches the requested column name e.g. Impressions and Clicks. Set this property true if you want the report column headers excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAssetGroupPerformanceReportRequest/formatVersion> ;
    sh:name "format version" ;
    sh:description "Determines the format for certain fields in the downloaded report file. The data format for certain fields can be updated within the current API version without breaking existing client applications. You can get the latest data format by setting this optional request field to 2.0. If you do not set this field, the service defaults to version 1.0. For details about changes between format versions, see Report Format Version." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAssetGroupPerformanceReportRequest/scope> ;
    sh:name "scope" ;
    sh:description "The entity scope of the report. Use this element to limit the report data to specific accounts, asset groups, or campaigns." ;
    sh:node microsoftads:ReportingAccountThroughAssetGroupReportScopeShape ;
    sh:class microsoftads:ReportingAccountThroughAssetGroupReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAssetGroupPerformanceReportRequest/filter> ;
    sh:name "filter" ;
    sh:description "The criteria to use to filter the report data." ;
    sh:node microsoftads:ReportingAssetGroupPerformanceReportFilterShape ;
    sh:class microsoftads:ReportingAssetGroupPerformanceReportFilter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAssetGroupPerformanceReportRequest/time> ;
    sh:name "time" ;
    sh:description "The time period to use for the report. You can specify a custom date range or select a predefined date range, for example, Today or ThisWeek. For a list of the time periods that you can specify for each aggregation type, see Aggregation and Time." ;
    sh:node microsoftads:ReportingReportTimeShape ;
    sh:class microsoftads:ReportingReportTime ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAssetGroupPerformanceReportRequest/aggregation> ;
    sh:name "aggregation" ;
    sh:description "The type of aggregation to use to aggregate the report data. For example, you can aggregate the report data by day or week, or request a summary report. The default aggregation is Summary. It is important to note that if you do not include TimePeriod in the list of Columns, the aggregation you chose will be ignored and Summary aggregation will be used regardless." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Summary" "Hourly" "Daily" "Weekly" "Monthly" "Yearly" "HourOfDay" "DayOfWeek" "WeeklyStartingMonday" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAssetGroupPerformanceReportRequest/columns> ;
    sh:name "columns" ;
    sh:description "The list of attributes and performance statistics to include in the report. The report will include the columns in the order that you specify them." ;
    sh:datatype xsd:string ;
    sh:in ( "TimePeriod" "AccountName" "AccountId" "CampaignName" "CampaignId" "AccountStatus" "CampaignStatus" "AssetGroupId" "AssetGroupName" "AssetGroupStatus" "Impressions" "Clicks" "Ctr" "Spend" "AverageCpc" "Conversions" "Revenue" "ReturnOnAdSpend" "CampaignType" "CostPerConversion" "MarketingObjective" "Channel" "SubChannel" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAssetGroupPerformanceReportRequest/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Asset Performance Report Request
microsoftads:ReportingAssetPerformanceReportRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingAssetPerformanceReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAssetPerformanceReportRequest/reportName> ;
    sh:name "report name" ;
    sh:description "The name of the report. The name is included in the report header. If you do not specify a report name, the system generates a name in the form, ReportType-ReportDateTime. The maximum length of the report name is 200." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAssetPerformanceReportRequest/format> ;
    sh:name "format" ;
    sh:description "The format of the report data. For example, you can request the data in comma-separated values (Csv) format or tab-separated values (Tsv) format. The default value is Csv. All downloaded files are ZIP compressed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Csv" "Tsv" "Xml" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAssetPerformanceReportRequest/returnOnlyCompleteData> ;
    sh:name "return only complete data" ;
    sh:description "Determines whether or not the service must ensure that all the data has been processed and is available. If set to true and if the system has not finished processing all the data based on the requested Aggregation, Scope, and Time, the service returns error code NoCompleteDataAvaliable (2004). Otherwise by default the request can succeed, there is no indication as to whether the data is complete, and the report will contain only the data that the system has finished processing at the time of the request. Please note that because today is still in progress and data is not complete, you cannot set this element to true if the Time period (whether custom or predefined date) includes today's date. For more information, see Time Zones in Reporting." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAssetPerformanceReportRequest/excludeReportHeader> ;
    sh:name "exclude report header" ;
    sh:description "Determines whether or not the downloaded report should contain header metadata such as report name, date range, and aggregation. Set this property true if you want the report header metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAssetPerformanceReportRequest/excludeReportFooter> ;
    sh:name "exclude report footer" ;
    sh:description "Determines whether or not the downloaded report should contain footer metadata such as Microsoft copyright (`@2020` Microsoft Corporation. All rights reserved.). Set this property true if you want the report footer metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAssetPerformanceReportRequest/excludeColumnHeaders> ;
    sh:name "exclude column headers" ;
    sh:description "Determines whether or not the downloaded report should contain header descriptions for each column. The report column header matches the requested column name e.g. Impressions and Clicks. Set this property true if you want the report column headers excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAssetPerformanceReportRequest/formatVersion> ;
    sh:name "format version" ;
    sh:description "Determines the format for certain fields in the downloaded report file. The data format for certain fields can be updated within the current API version without breaking existing client applications. You can get the latest data format by setting this optional request field to 2.0. If you do not set this field, the service defaults to version 1.0. For details about changes between format versions, see Report Format Version." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAssetPerformanceReportRequest/time> ;
    sh:name "time" ;
    sh:description "The time period to use for the report. You can specify a custom date range or select a predefined date range, for example, Today or ThisWeek. For a list of the time periods that you can specify for each aggregation type, see Aggregation and Time." ;
    sh:node microsoftads:ReportingReportTimeShape ;
    sh:class microsoftads:ReportingReportTime ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAssetPerformanceReportRequest/aggregation> ;
    sh:name "aggregation" ;
    sh:description "The type of aggregation to use to aggregate the report data. For example, you can aggregate the report data by day or week, or request a summary report. The default aggregation is Summary. It is important to note that if you do not include TimePeriod in the list of Columns, the aggregation you chose will be ignored and Summary aggregation will be used regardless." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Summary" "Hourly" "Daily" "Weekly" "Monthly" "Yearly" "HourOfDay" "DayOfWeek" "WeeklyStartingMonday" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAssetPerformanceReportRequest/columns> ;
    sh:name "columns" ;
    sh:description "The list of attributes and performance statistics to include in the report. The report will include the columns in the order that you specify them." ;
    sh:datatype xsd:string ;
    sh:in ( "TimePeriod" "AccountId" "AccountName" "CampaignId" "CampaignName" "AdGroupId" "AdGroupName" "AssetId" "AssetContent" "AssetType" "AssetSource" "Impressions" "Clicks" "Ctr" "Spend" "VideoViews" "VideoViewsAt25Percent" "VideoViewsAt50Percent" "VideoViewsAt75Percent" "CompletedVideoViews" "VideoCompletionRate" "Conversions" "Revenue" "MarketingObjective" "Channel" "SubChannel" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAssetPerformanceReportRequest/scope> ;
    sh:name "scope" ;
    sh:description "The entity scope of the report. Use this element to limit the report data to specific accounts, asset groups, or campaigns." ;
    sh:node microsoftads:ReportingAccountThroughAdGroupReportScopeShape ;
    sh:class microsoftads:ReportingAccountThroughAdGroupReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAssetPerformanceReportRequest/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Audience Performance Report Filter
microsoftads:ReportingAudiencePerformanceReportFilterShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingAudiencePerformanceReportFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAudiencePerformanceReportFilter/accountStatus> ;
    sh:name "account status" ;
    sh:description "The report will include data for only the account status. For example, you can use the filter to include data for only active accounts. You can specify one or more account statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAudiencePerformanceReportFilter/campaignStatus> ;
    sh:name "campaign status" ;
    sh:description "The report will include data for only the campaign status. For example, you can use the filter to include data for only active campaigns. You can specify one or more campaign statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAudiencePerformanceReportFilter/adGroupStatus> ;
    sh:name "ad group status" ;
    sh:description "The report will include data for only the ad group status. For example, you can use the filter to include data for only active ad groups. You can specify one or more ad group statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Audience Performance Report Request
microsoftads:ReportingAudiencePerformanceReportRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingAudiencePerformanceReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAudiencePerformanceReportRequest/reportName> ;
    sh:name "report name" ;
    sh:description "The name of the report. The name is included in the report header. If you do not specify a report name, the system generates a name in the form, ReportType-ReportDateTime. The maximum length of the report name is 200." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAudiencePerformanceReportRequest/format> ;
    sh:name "format" ;
    sh:description "The format of the report data. For example, you can request the data in comma-separated values (Csv) format or tab-separated values (Tsv) format. The default value is Csv. All downloaded files are ZIP compressed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Csv" "Tsv" "Xml" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAudiencePerformanceReportRequest/returnOnlyCompleteData> ;
    sh:name "return only complete data" ;
    sh:description "Determines whether or not the service must ensure that all the data has been processed and is available. If set to true and if the system has not finished processing all the data based on the requested Aggregation, Scope, and Time, the service returns error code NoCompleteDataAvaliable (2004). Otherwise by default the request can succeed, there is no indication as to whether the data is complete, and the report will contain only the data that the system has finished processing at the time of the request. Please note that because today is still in progress and data is not complete, you cannot set this element to true if the Time period (whether custom or predefined date) includes today's date. For more information, see Time Zones in Reporting." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAudiencePerformanceReportRequest/excludeReportHeader> ;
    sh:name "exclude report header" ;
    sh:description "Determines whether or not the downloaded report should contain header metadata such as report name, date range, and aggregation. Set this property true if you want the report header metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAudiencePerformanceReportRequest/excludeReportFooter> ;
    sh:name "exclude report footer" ;
    sh:description "Determines whether or not the downloaded report should contain footer metadata such as Microsoft copyright (`@2020` Microsoft Corporation. All rights reserved.). Set this property true if you want the report footer metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAudiencePerformanceReportRequest/excludeColumnHeaders> ;
    sh:name "exclude column headers" ;
    sh:description "Determines whether or not the downloaded report should contain header descriptions for each column. The report column header matches the requested column name e.g. Impressions and Clicks. Set this property true if you want the report column headers excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAudiencePerformanceReportRequest/formatVersion> ;
    sh:name "format version" ;
    sh:description "Determines the format for certain fields in the downloaded report file. The data format for certain fields can be updated within the current API version without breaking existing client applications. You can get the latest data format by setting this optional request field to 2.0. If you do not set this field, the service defaults to version 1.0. For details about changes between format versions, see Report Format Version." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAudiencePerformanceReportRequest/scope> ;
    sh:name "scope" ;
    sh:description "The entity scope of the report. Use this element to limit the report data to specific accounts, ad groups, or campaigns." ;
    sh:node microsoftads:ReportingAccountThroughAdGroupReportScopeShape ;
    sh:class microsoftads:ReportingAccountThroughAdGroupReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAudiencePerformanceReportRequest/time> ;
    sh:name "time" ;
    sh:description "The time period to use for the report. You can specify a custom date range or select a predefined date range, for example, Today or ThisWeek. For a list of the time periods that you can specify for each aggregation type, see Aggregation and Time. You can set the time zone within the ReportTime object, which helps you accurately scope data for the requested time period. If you do not choose a time zone, the Reporting service uses PacificTimeUSCanadaTijuana by default." ;
    sh:node microsoftads:ReportingReportTimeShape ;
    sh:class microsoftads:ReportingReportTime ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAudiencePerformanceReportRequest/aggregation> ;
    sh:name "aggregation" ;
    sh:description "The type of aggregation to use to aggregate the report data. For example, you can aggregate the report data by day or week, or request a summary report. The default aggregation is Summary. It is important to note that if you do not include TimePeriod in the list of Columns, the aggregation you chose will be ignored and Summary aggregation will be used regardless." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Summary" "Hourly" "Daily" "Weekly" "Monthly" "Yearly" "HourOfDay" "DayOfWeek" "WeeklyStartingMonday" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAudiencePerformanceReportRequest/columns> ;
    sh:name "columns" ;
    sh:description "The list of attributes and performance statistics to include in the report. The report will include the columns in the order that you specify them." ;
    sh:datatype xsd:string ;
    sh:in ( "AccountName" "AccountNumber" "AccountId" "TimePeriod" "CampaignName" "CampaignId" "AdGroupName" "AdGroupId" "AssetGroupName" "AssetGroupId" "AudienceId" "AudienceName" "AssociationStatus" "BidAdjustment" "TargetingSetting" "Impressions" "Clicks" "Ctr" "AverageCpc" "Spend" "AveragePosition" "Conversions" "ConversionRate" "CostPerConversion" "Revenue" "ReturnOnAdSpend" "RevenuePerConversion" "AccountStatus" "CampaignStatus" "AdGroupStatus" "AudienceType" "BaseCampaignId" "AllConversions" "AllRevenue" "AllConversionRate" "AllCostPerConversion" "AllReturnOnAdSpend" "AllRevenuePerConversion" "AssociationId" "AssociationLevel" "ViewThroughConversions" "Goal" "GoalType" "AbsoluteTopImpressionRatePercent" "TopImpressionRatePercent" "AverageCpm" "ConversionsQualified" "AllConversionsQualified" "ViewThroughConversionsQualified" "ViewThroughRevenue" "VideoViews" "ViewThroughRate" "AverageCPV" "VideoViewsAt25Percent" "VideoViewsAt50Percent" "VideoViewsAt75Percent" "CompletedVideoViews" "VideoCompletionRate" "TotalWatchTimeInMS" "AverageWatchTimePerVideoView" "AverageWatchTimePerImpression" "MarketingObjective" "Channel" "SubChannel" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAudiencePerformanceReportRequest/filter> ;
    sh:name "filter" ;
    sh:description "The filter information to use to filter the report data." ;
    sh:node microsoftads:ReportingAudiencePerformanceReportFilterShape ;
    sh:class microsoftads:ReportingAudiencePerformanceReportFilter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingAudiencePerformanceReportRequest/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Bid Strategy Report Request
microsoftads:ReportingBidStrategyReportRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingBidStrategyReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingBidStrategyReportRequest/reportName> ;
    sh:name "report name" ;
    sh:description "The name of the report. The name is included in the report header. If you do not specify a report name, the system generates a name in the form, ReportType-ReportDateTime. The maximum length of the report name is 200." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingBidStrategyReportRequest/format> ;
    sh:name "format" ;
    sh:description "The format of the report data. For example, you can request the data in comma-separated values (Csv) format or tab-separated values (Tsv) format. The default value is Csv. All downloaded files are ZIP compressed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Csv" "Tsv" "Xml" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingBidStrategyReportRequest/returnOnlyCompleteData> ;
    sh:name "return only complete data" ;
    sh:description "Determines whether or not the service must ensure that all the data has been processed and is available. If set to true and if the system has not finished processing all the data based on the requested Aggregation, Scope, and Time, the service returns error code NoCompleteDataAvaliable (2004). Otherwise by default the request can succeed, there is no indication as to whether the data is complete, and the report will contain only the data that the system has finished processing at the time of the request. Please note that because today is still in progress and data is not complete, you cannot set this element to true if the Time period (whether custom or predefined date) includes today's date. For more information, see Time Zones in Reporting." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingBidStrategyReportRequest/excludeReportHeader> ;
    sh:name "exclude report header" ;
    sh:description "Determines whether or not the downloaded report should contain header metadata such as report name, date range, and aggregation. Set this property true if you want the report header metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingBidStrategyReportRequest/excludeReportFooter> ;
    sh:name "exclude report footer" ;
    sh:description "Determines whether or not the downloaded report should contain footer metadata such as Microsoft copyright (`@2020` Microsoft Corporation. All rights reserved.). Set this property true if you want the report footer metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingBidStrategyReportRequest/excludeColumnHeaders> ;
    sh:name "exclude column headers" ;
    sh:description "Determines whether or not the downloaded report should contain header descriptions for each column. The report column header matches the requested column name e.g. Impressions and Clicks. Set this property true if you want the report column headers excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingBidStrategyReportRequest/formatVersion> ;
    sh:name "format version" ;
    sh:description "Determines the format for certain fields in the downloaded report file. The data format for certain fields can be updated within the current API version without breaking existing client applications. You can get the latest data format by setting this optional request field to 2.0. If you do not set this field, the service defaults to version 1.0. For details about changes between format versions, see Report Format Version." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingBidStrategyReportRequest/scope> ;
    sh:name "scope" ;
    sh:description "The entity scope of the report. Use this element to limit the report data to specific accounts, ad groups, or campaigns." ;
    sh:node microsoftads:ReportingAccountThroughCampaignReportScopeShape ;
    sh:class microsoftads:ReportingAccountThroughCampaignReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingBidStrategyReportRequest/filter> ;
    sh:name "filter" ;
    sh:description "The filter information to use to filter the report data." ;
    sh:datatype rdf:JSON ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingBidStrategyReportRequest/time> ;
    sh:name "time" ;
    sh:description "The time period to use for the report. You can specify a custom date range or select a predefined date range, for example, Today or ThisWeek. For a list of the time periods that you can specify for each aggregation type, see Aggregation and Time. You can set the time zone within the ReportTime object, which helps you accurately scope data for the requested time period. If you do not choose a time zone, the Reporting service uses PacificTimeUSCanadaTijuana by default." ;
    sh:node microsoftads:ReportingReportTimeShape ;
    sh:class microsoftads:ReportingReportTime ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingBidStrategyReportRequest/aggregation> ;
    sh:name "aggregation" ;
    sh:description "The type of aggregation to use to aggregate the report data. For example, you can aggregate the report data by day or week, or request a summary report. The default aggregation is Summary. It is important to note that if you do not include TimePeriod in the list of Columns, the aggregation you chose will be ignored and Summary aggregation will be used regardless." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Summary" "Hourly" "Daily" "Weekly" "Monthly" "Yearly" "HourOfDay" "DayOfWeek" "WeeklyStartingMonday" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingBidStrategyReportRequest/columns> ;
    sh:name "columns" ;
    sh:description "The list of attributes and performance statistics to include in the report. The report will include the columns in the order that you specify them." ;
    sh:datatype xsd:string ;
    sh:in ( "TimePeriod" "AccountId" "AccountName" "AccountStatus" "CampaignId" "CampaignName" "CampaignStatus" "PortfolioBidStrategyName" "PortfolioBidStrategyStatus" "BidStrategyType" "TargetCPA" "TargetRoas" "TargetImpressionShare" "NumOfCampaigns" "CurrentMaxCpc" "TargetAdPositionType" "Impressions" "Clicks" "Ctr" "Spend" "ConversionsQualified" "ConversionRate" "AverageCpc" "ConversionDelay" "CostPerConversionQualified" "ROAS" "AvgTargetCPA" "AvgTargetRoas" "AvgTargetImpressionShare" "ImpressionSharePercent" "Owner" "TimeZone" "Currency" "MarketingObjective" "Channel" "SubChannel" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingBidStrategyReportRequest/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Budget Summary Report Request
microsoftads:ReportingBudgetSummaryReportRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingBudgetSummaryReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingBudgetSummaryReportRequest/reportName> ;
    sh:name "report name" ;
    sh:description "The name of the report. The name is included in the report header. If you do not specify a report name, the system generates a name in the form, ReportType-ReportDateTime. The maximum length of the report name is 200." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingBudgetSummaryReportRequest/format> ;
    sh:name "format" ;
    sh:description "The format of the report data. For example, you can request the data in comma-separated values (Csv) format or tab-separated values (Tsv) format. The default value is Csv. All downloaded files are ZIP compressed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Csv" "Tsv" "Xml" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingBudgetSummaryReportRequest/returnOnlyCompleteData> ;
    sh:name "return only complete data" ;
    sh:description "Determines whether or not the service must ensure that all the data has been processed and is available. If set to true and if the system has not finished processing all the data based on the requested Scope and Time, the service returns error code NoCompleteDataAvaliable (2004). Otherwise by default the request can succeed, there is no indication as to whether the data is complete, and the report will contain only the data that the system has finished processing at the time of the request. Please note that because today is still in progress and data is not complete, you cannot set this element to true if the Time period (whether custom or predefined date) includes today's date. For more information, see Time Zones in Reporting." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingBudgetSummaryReportRequest/excludeReportHeader> ;
    sh:name "exclude report header" ;
    sh:description "Determines whether or not the downloaded report should contain header metadata such as report name, date range, and aggregation. Set this property true if you want the report header metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingBudgetSummaryReportRequest/excludeReportFooter> ;
    sh:name "exclude report footer" ;
    sh:description "Determines whether or not the downloaded report should contain footer metadata such as Microsoft copyright (`@2020` Microsoft Corporation. All rights reserved.). Set this property true if you want the report footer metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingBudgetSummaryReportRequest/excludeColumnHeaders> ;
    sh:name "exclude column headers" ;
    sh:description "Determines whether or not the downloaded report should contain header descriptions for each column. The report column header matches the requested column name e.g. Impressions and Clicks. Set this property true if you want the report column headers excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingBudgetSummaryReportRequest/formatVersion> ;
    sh:name "format version" ;
    sh:description "Determines the format for certain fields in the downloaded report file. The data format for certain fields can be updated within the current API version without breaking existing client applications. You can get the latest data format by setting this optional request field to 2.0. If you do not set this field, the service defaults to version 1.0. For details about changes between format versions, see Report Format Version." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingBudgetSummaryReportRequest/scope> ;
    sh:name "scope" ;
    sh:description "The entity scope of the report. Use this element to limit the report data to specific accounts or campaigns." ;
    sh:node microsoftads:ReportingAccountThroughCampaignReportScopeShape ;
    sh:class microsoftads:ReportingAccountThroughCampaignReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingBudgetSummaryReportRequest/time> ;
    sh:name "time" ;
    sh:description "The time period to use for the report. You can specify a custom date range or select a predefined date range, for example, Today or ThisMonth. The budget summary report is always aggregated by day. You can set the time zone within the ReportTime object, which helps you accurately scope data for the requested time period. If you do not choose a time zone, the Reporting service uses PacificTimeUSCanadaTijuana by default." ;
    sh:node microsoftads:ReportingReportTimeShape ;
    sh:class microsoftads:ReportingReportTime ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingBudgetSummaryReportRequest/columns> ;
    sh:name "columns" ;
    sh:description "The list of attributes and performance statistics to include in the report. The report will include the columns in the order that you specify them." ;
    sh:datatype xsd:string ;
    sh:in ( "AccountName" "AccountNumber" "AccountId" "CampaignName" "CampaignId" "Date" "CurrencyCode" "MonthlyBudget" "DailySpend" "MonthToDateSpend" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingBudgetSummaryReportRequest/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Call Detail Report Filter
microsoftads:ReportingCallDetailReportFilterShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingCallDetailReportFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCallDetailReportFilter/accountStatus> ;
    sh:name "account status" ;
    sh:description "The report will include data for only the account status. For example, you can use the filter to include data for only active accounts. You can specify one or more account statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCallDetailReportFilter/campaignStatus> ;
    sh:name "campaign status" ;
    sh:description "The report will include data for only the campaign status. For example, you can use the filter to include data for only active campaigns. You can specify one or more campaign statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCallDetailReportFilter/adGroupStatus> ;
    sh:name "ad group status" ;
    sh:description "The report will include data for only the ad group status. For example, you can use the filter to include data for only active ad groups. You can specify one or more ad group statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Call Detail Report Request
microsoftads:ReportingCallDetailReportRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingCallDetailReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCallDetailReportRequest/reportName> ;
    sh:name "report name" ;
    sh:description "The name of the report. The name is included in the report header. If you do not specify a report name, the system generates a name in the form, ReportType-ReportDateTime. The maximum length of the report name is 200." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCallDetailReportRequest/format> ;
    sh:name "format" ;
    sh:description "The format of the report data. For example, you can request the data in comma-separated values (Csv) format or tab-separated values (Tsv) format. The default value is Csv. All downloaded files are ZIP compressed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Csv" "Tsv" "Xml" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCallDetailReportRequest/returnOnlyCompleteData> ;
    sh:name "return only complete data" ;
    sh:description "Determines whether or not the service must ensure that all the data has been processed and is available. If set to true and if the system has not finished processing all the data based on the requested Aggregation, Scope, and Time, the service returns error code NoCompleteDataAvaliable (2004). Otherwise by default the request can succeed, there is no indication as to whether the data is complete, and the report will contain only the data that the system has finished processing at the time of the request. Please note that because today is still in progress and data is not complete, you cannot set this element to true if the Time period (whether custom or predefined date) includes today's date. For more information, see Time Zones in Reporting." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCallDetailReportRequest/excludeReportHeader> ;
    sh:name "exclude report header" ;
    sh:description "Determines whether or not the downloaded report should contain header metadata such as report name, date range, and aggregation. Set this property true if you want the report header metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCallDetailReportRequest/excludeReportFooter> ;
    sh:name "exclude report footer" ;
    sh:description "Determines whether or not the downloaded report should contain footer metadata such as Microsoft copyright (`@2020` Microsoft Corporation. All rights reserved.). Set this property true if you want the report footer metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCallDetailReportRequest/excludeColumnHeaders> ;
    sh:name "exclude column headers" ;
    sh:description "Determines whether or not the downloaded report should contain header descriptions for each column. The report column header matches the requested column name e.g. Impressions and Clicks. Set this property true if you want the report column headers excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCallDetailReportRequest/formatVersion> ;
    sh:name "format version" ;
    sh:description "Determines the format for certain fields in the downloaded report file. The data format for certain fields can be updated within the current API version without breaking existing client applications. You can get the latest data format by setting this optional request field to 2.0. If you do not set this field, the service defaults to version 1.0. For details about changes between format versions, see Report Format Version." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCallDetailReportRequest/scope> ;
    sh:name "scope" ;
    sh:description "The scope of the report. Use this element to limit the report to include data for specified accounts, campaigns, or ad groups. For this report you may only specify one account identifier in the AccountIds element of the AccountThroughAdGroupReportScope object." ;
    sh:node microsoftads:ReportingAccountThroughAdGroupReportScopeShape ;
    sh:class microsoftads:ReportingAccountThroughAdGroupReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCallDetailReportRequest/time> ;
    sh:name "time" ;
    sh:description "The time period to use for the report. You can specify a custom date range or select a predefined date range, for example, Today or LastSevenDays. For a list of the time periods that you can specify for the Summary aggregation type, see Aggregation and Time. You can set the time zone within the ReportTime object, which helps you accurately scope data for the requested time period. If you do not choose a time zone, the Reporting service uses PacificTimeUSCanadaTijuana by default." ;
    sh:node microsoftads:ReportingReportTimeShape ;
    sh:class microsoftads:ReportingReportTime ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCallDetailReportRequest/aggregation> ;
    sh:name "aggregation" ;
    sh:description "The type of aggregation to use to aggregate the report data. The default aggregation is Summary. It is important to note that if you do not include TimePeriod in the list of Columns, the aggregation you chose will be ignored and Summary aggregation will be used regardless. For this report, Aggregation must always be set to Summary." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Summary" "Hourly" "Daily" "Weekly" "Monthly" "Yearly" "HourOfDay" "DayOfWeek" "WeeklyStartingMonday" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCallDetailReportRequest/columns> ;
    sh:name "columns" ;
    sh:description "The list of attributes and performance statistics to include in the report. The report will include the columns in the order that you specify them." ;
    sh:datatype xsd:string ;
    sh:in ( "AccountName" "CampaignName" "AdGroupName" "StartTime" "EndTime" "Duration" "AreaCode" "City" "State" "AccountId" "CampaignId" "AdGroupId" "AccountStatus" "CampaignStatus" "AdGroupStatus" "MarketingObjective" "Channel" "SubChannel" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCallDetailReportRequest/filter> ;
    sh:name "filter" ;
    sh:description "The filter information to use to filter the report data." ;
    sh:node microsoftads:ReportingCallDetailReportFilterShape ;
    sh:class microsoftads:ReportingCallDetailReportFilter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCallDetailReportRequest/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Campaign Performance Report Filter
microsoftads:ReportingCampaignPerformanceReportFilterShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingCampaignPerformanceReportFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCampaignPerformanceReportFilter/adDistribution> ;
    sh:name "ad distribution" ;
    sh:description "The report will include data for only the specified distribution medium. For example, you can use the filter to include data for only search ads. You can specify one or more distribution mediums." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCampaignPerformanceReportFilter/status> ;
    sh:name "status" ;
    sh:description "The report will include data for only the specified campaign status values. For example, you can use the filter to include data for only active campaigns. You can specify one or more status values." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCampaignPerformanceReportFilter/deviceType> ;
    sh:name "device type" ;
    sh:description "The report will include data where the ad is displayed on the specified device types. For example, you may use the filter to include data for only ads displayed on smartphones. You may specify one or more device types." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCampaignPerformanceReportFilter/deviceOS> ;
    sh:name "device os" ;
    sh:description "The report will include data where the ad is displayed on the specified device operating systems. For example, you may use the filter to include data for only ads displayed on Windows devices." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCampaignPerformanceReportFilter/accountStatus> ;
    sh:name "account status" ;
    sh:description "The report will include data for only the account status. For example, you can use the filter to include data for only active accounts. You can specify one or more account statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Campaign Performance Report Request
microsoftads:ReportingCampaignPerformanceReportRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingCampaignPerformanceReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCampaignPerformanceReportRequest/reportName> ;
    sh:name "report name" ;
    sh:description "The name of the report. The name is included in the report header. If you do not specify a report name, the system generates a name in the form, ReportType-ReportDateTime. The maximum length of the report name is 200." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCampaignPerformanceReportRequest/format> ;
    sh:name "format" ;
    sh:description "The format of the report data. For example, you can request the data in comma-separated values (Csv) format or tab-separated values (Tsv) format. The default value is Csv. All downloaded files are ZIP compressed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Csv" "Tsv" "Xml" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCampaignPerformanceReportRequest/returnOnlyCompleteData> ;
    sh:name "return only complete data" ;
    sh:description "Determines whether or not the service must ensure that all the data has been processed and is available. If set to true and if the system has not finished processing all the data based on the requested Aggregation, Scope, and Time, the service returns error code NoCompleteDataAvaliable (2004). Otherwise by default the request can succeed, there is no indication as to whether the data is complete, and the report will contain only the data that the system has finished processing at the time of the request. Please note that because today is still in progress and data is not complete, you cannot set this element to true if the Time period (whether custom or predefined date) includes today's date. For more information, see Time Zones in Reporting." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCampaignPerformanceReportRequest/excludeReportHeader> ;
    sh:name "exclude report header" ;
    sh:description "Determines whether or not the downloaded report should contain header metadata such as report name, date range, and aggregation. Set this property true if you want the report header metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCampaignPerformanceReportRequest/excludeReportFooter> ;
    sh:name "exclude report footer" ;
    sh:description "Determines whether or not the downloaded report should contain footer metadata such as Microsoft copyright (`@2020` Microsoft Corporation. All rights reserved.). Set this property true if you want the report footer metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCampaignPerformanceReportRequest/excludeColumnHeaders> ;
    sh:name "exclude column headers" ;
    sh:description "Determines whether or not the downloaded report should contain header descriptions for each column. The report column header matches the requested column name e.g. Impressions and Clicks. Set this property true if you want the report column headers excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCampaignPerformanceReportRequest/formatVersion> ;
    sh:name "format version" ;
    sh:description "Determines the format for certain fields in the downloaded report file. The data format for certain fields can be updated within the current API version without breaking existing client applications. You can get the latest data format by setting this optional request field to 2.0. If you do not set this field, the service defaults to version 1.0. For details about changes between format versions, see Report Format Version." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCampaignPerformanceReportRequest/scope> ;
    sh:name "scope" ;
    sh:description "The entity scope of the report. Use this element to limit the report data to specific accounts or campaigns." ;
    sh:node microsoftads:ReportingAccountThroughCampaignReportScopeShape ;
    sh:class microsoftads:ReportingAccountThroughCampaignReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCampaignPerformanceReportRequest/filter> ;
    sh:name "filter" ;
    sh:description "The filter information to use to filter the report data." ;
    sh:node microsoftads:ReportingCampaignPerformanceReportFilterShape ;
    sh:class microsoftads:ReportingCampaignPerformanceReportFilter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCampaignPerformanceReportRequest/time> ;
    sh:name "time" ;
    sh:description "The time period to use for the report. You can specify a custom date range or select a predefined date range, for example, Today or ThisWeek. For a list of the time periods that you can specify for each aggregation type, see Aggregation and Time. You can set the time zone within the ReportTime object, which helps you accurately scope data for the requested time period. If you do not choose a time zone, the Reporting service uses PacificTimeUSCanadaTijuana by default." ;
    sh:node microsoftads:ReportingReportTimeShape ;
    sh:class microsoftads:ReportingReportTime ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCampaignPerformanceReportRequest/aggregation> ;
    sh:name "aggregation" ;
    sh:description "The type of aggregation to use to aggregate the report data. For example, you can aggregate the report data by day or week, or request a summary report. The default aggregation is Summary. It is important to note that if you do not include TimePeriod in the list of Columns, the aggregation you chose will be ignored and Summary aggregation will be used regardless." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Summary" "Hourly" "Daily" "Weekly" "Monthly" "Yearly" "HourOfDay" "DayOfWeek" "WeeklyStartingMonday" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCampaignPerformanceReportRequest/columns> ;
    sh:name "columns" ;
    sh:description "The list of attributes and performance statistics to include in the report. The report will include the columns in the order that you specify them." ;
    sh:datatype xsd:string ;
    sh:in ( "AccountName" "AccountNumber" "AccountId" "TimePeriod" "CampaignStatus" "CampaignName" "CampaignId" "CurrencyCode" "AdDistribution" "Impressions" "Clicks" "Ctr" "AverageCpc" "Spend" "AveragePosition" "Conversions" "ConversionRate" "CostPerConversion" "LowQualityClicks" "LowQualityClicksPercent" "LowQualityImpressions" "LowQualityImpressionsPercent" "LowQualityConversions" "LowQualityConversionRate" "DeviceType" "DeviceOS" "ImpressionSharePercent" "ImpressionLostToBudgetPercent" "ImpressionLostToRankAggPercent" "QualityScore" "ExpectedCtr" "AdRelevance" "LandingPageExperience" "HistoricalQualityScore" "HistoricalExpectedCtr" "HistoricalAdRelevance" "HistoricalLandingPageExperience" "PhoneImpressions" "PhoneCalls" "Ptr" "Network" "TopVsOther" "BidMatchType" "DeliveredMatchType" "Assists" "Revenue" "ReturnOnAdSpend" "CostPerAssist" "RevenuePerConversion" "RevenuePerAssist" "TrackingTemplate" "CustomParameters" "AccountStatus" "BudgetName" "BudgetStatus" "BudgetAssociationStatus" "LowQualityGeneralClicks" "LowQualitySophisticatedClicks" "CampaignLabels" "ExactMatchImpressionSharePercent" "CustomerId" "CustomerName" "ClickSharePercent" "AbsoluteTopImpressionSharePercent" "FinalUrlSuffix" "CampaignType" "TopImpressionShareLostToRankPercent" "TopImpressionShareLostToBudgetPercent" "AbsoluteTopImpressionShareLostToRankPercent" "AbsoluteTopImpressionShareLostToBudgetPercent" "TopImpressionSharePercent" "AbsoluteTopImpressionRatePercent" "TopImpressionRatePercent" "BaseCampaignId" "AllConversions" "AllRevenue" "AllConversionRate" "AllCostPerConversion" "AllReturnOnAdSpend" "AllRevenuePerConversion" "ViewThroughConversions" "Goal" "GoalType" "AudienceImpressionSharePercent" "AudienceImpressionLostToRankPercent" "AudienceImpressionLostToBudgetPercent" "RelativeCtr" "AverageCpm" "ConversionsQualified" "LowQualityConversionsQualified" "AllConversionsQualified" "ViewThroughConversionsQualified" "ViewThroughRevenue" "VideoViews" "ViewThroughRate" "AverageCPV" "VideoViewsAt25Percent" "VideoViewsAt50Percent" "VideoViewsAt75Percent" "CompletedVideoViews" "VideoCompletionRate" "TotalWatchTimeInMS" "AverageWatchTimePerVideoView" "AverageWatchTimePerImpression" "Sales" "CostPerSale" "RevenuePerSale" "Installs" "CostPerInstall" "RevenuePerInstall" "Downloads" "PostClickDownloadRate" "CostPerDownload" "AppInstalls" "PostClickInstallRate" "CPI" "Purchases" "PostInstallPurchaseRate" "CPP" "Subscriptions" "PostInstallSubscriptionRate" "CPS" "NewCustomerConversions" "NewCustomerRevenue" "NewCustomerConversionRate" "NewCustomerCPA" "NewCustomerReturnOnAdSpend" "ConversionDelay" "UnknownCustomerConversions" "UnknownCustomerRevenue" "NewCustomerCount" "NewCustomerSpend" "MarketingObjective" "Channel" "SubChannel" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCampaignPerformanceReportRequest/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Category Click Coverage Report Filter
microsoftads:ReportingCategoryClickCoverageReportFilterShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingCategoryClickCoverageReportFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCategoryClickCoverageReportFilter/countryCode> ;
    sh:name "country code" ;
    sh:description "The report will include data for only the specified countries/regions where the user that clicked the ad is located. For a list of possible values, see Geographical Location Codes." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCategoryClickCoverageReportFilter/l1Vertical> ;
    sh:name "l1vertical" ;
    sh:description "A particular supply sector, such as Travel and Tourism or Apparel. View a list of L1 verticals." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCategoryClickCoverageReportFilter/l2Vertical> ;
    sh:name "l2vertical" ;
    sh:description "A more detailed segment of an L1 vertical. For instance, within the L1 vertical travel and tourism, L2 verticals might include Accommodations or Air travel. View a list of L2 verticals." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCategoryClickCoverageReportFilter/l3Vertical> ;
    sh:name "l3vertical" ;
    sh:description "The most specific segment within a larger L1 vertical. For example, if the L1 vertical is travel and tourism and the L2 vertical is Accommodations, an L3 vertical might be Bed and Breakfasts or Camping and RV. View a list of L3 verticals." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Reporting Category Click Coverage Report Request
microsoftads:ReportingCategoryClickCoverageReportRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingCategoryClickCoverageReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCategoryClickCoverageReportRequest/reportName> ;
    sh:name "report name" ;
    sh:description "The name of the report. The name is included in the report header. If you do not specify a report name, the system generates a name in the form, ReportType-ReportDateTime. The maximum length of the report name is 200." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCategoryClickCoverageReportRequest/format> ;
    sh:name "format" ;
    sh:description "The format of the report data. For example, you can request the data in comma-separated values (Csv) format or tab-separated values (Tsv) format. The default value is Csv. All downloaded files are ZIP compressed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Csv" "Tsv" "Xml" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCategoryClickCoverageReportRequest/returnOnlyCompleteData> ;
    sh:name "return only complete data" ;
    sh:description "Determines whether or not the service must ensure that all the data has been processed and is available. If set to true and if the system has not finished processing all the data based on the requested Scope, and Time, the service returns error code NoCompleteDataAvaliable (2004). Otherwise by default the request can succeed, there is no indication as to whether the data is complete, and the report will contain only the data that the system has finished processing at the time of the request. Please note that because today is still in progress and data is not complete, you cannot set this element to true if the Time period (whether custom or predefined date) includes today's date. For more information, see Time Zones in Reporting." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCategoryClickCoverageReportRequest/excludeReportHeader> ;
    sh:name "exclude report header" ;
    sh:description "Determines whether or not the downloaded report should contain header metadata such as report name, date range, and aggregation. Set this property true if you want the report header metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCategoryClickCoverageReportRequest/excludeReportFooter> ;
    sh:name "exclude report footer" ;
    sh:description "Determines whether or not the downloaded report should contain footer metadata such as Microsoft copyright (`@2020` Microsoft Corporation. All rights reserved.). Set this property true if you want the report footer metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCategoryClickCoverageReportRequest/excludeColumnHeaders> ;
    sh:name "exclude column headers" ;
    sh:description "Determines whether or not the downloaded report should contain header descriptions for each column. The report column header matches the requested column name e.g. Impressions and Clicks. Set this property true if you want the report column headers excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCategoryClickCoverageReportRequest/formatVersion> ;
    sh:name "format version" ;
    sh:description "Determines the format for certain fields in the downloaded report file. The data format for certain fields can be updated within the current API version without breaking existing client applications. You can get the latest data format by setting this optional request field to 2.0. If you do not set this field, the service defaults to version 1.0. For details about changes between format versions, see Report Format Version." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCategoryClickCoverageReportRequest/scope> ;
    sh:name "scope" ;
    sh:description "The entity scope of the report. Use this element to limit the report data to specific accounts." ;
    sh:node microsoftads:ReportingAccountReportScopeShape ;
    sh:class microsoftads:ReportingAccountReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCategoryClickCoverageReportRequest/filter> ;
    sh:name "filter" ;
    sh:description "The filter information to use to filter the report data." ;
    sh:node microsoftads:ReportingCategoryClickCoverageReportFilterShape ;
    sh:class microsoftads:ReportingCategoryClickCoverageReportFilter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCategoryClickCoverageReportRequest/time> ;
    sh:name "time" ;
    sh:description "The time period to use for the report. You can specify a custom date range or select a predefined date range, for example, Today or ThisWeek. For a list of the time periods that you can specify for each aggregation type, see Aggregation and Time. You can set the time zone within the ReportTime object, which helps you accurately scope data for the requested time period. If you do not choose a time zone, the Reporting service uses PacificTimeUSCanadaTijuana by default." ;
    sh:node microsoftads:ReportingReportTimeShape ;
    sh:class microsoftads:ReportingReportTime ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCategoryClickCoverageReportRequest/columns> ;
    sh:name "columns" ;
    sh:description "The list of attributes and performance statistics to include in the report. The report will include the columns in the order that you specify them." ;
    sh:datatype xsd:string ;
    sh:in ( "AccountName" "CustomerName" "L1Vertical" "L2Vertical" "L3Vertical" "WeekStartingMonday" "MarketplaceClickCoverage" "Country" "ProportionOfSpend" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCategoryClickCoverageReportRequest/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Category Insights Report Filter
microsoftads:ReportingCategoryInsightsReportFilterShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingCategoryInsightsReportFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCategoryInsightsReportFilter/countryCode> ;
    sh:name "country code" ;
    sh:description "The report will include data for only the specified countries/regions where the user that clicked the ad is located. For a list of possible values, see Geographical Location Codes." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCategoryInsightsReportFilter/l1Vertical> ;
    sh:name "l1vertical" ;
    sh:description "A particular supply sector, such as Travel and Tourism or Apparel. View a list of L1 verticals." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCategoryInsightsReportFilter/l2Vertical> ;
    sh:name "l2vertical" ;
    sh:description "A more detailed segment of an L1 vertical. For instance, within the L1 vertical travel and tourism, L2 verticals might include Accommodations or Air travel. View a list of L2 verticals." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCategoryInsightsReportFilter/l3Vertical> ;
    sh:name "l3vertical" ;
    sh:description "The most specific segment within a larger L1 vertical. For example, if the L1 vertical is travel and tourism and the L2 vertical is Accommodations, an L3 vertical might be Bed and Breakfasts or Camping and RV. View a list of L3 verticals." ;
    sh:datatype xsd:string ;
  ] .

# Shape for Reporting Category Insights Report Request
microsoftads:ReportingCategoryInsightsReportRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingCategoryInsightsReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCategoryInsightsReportRequest/reportName> ;
    sh:name "report name" ;
    sh:description "The name of the report. The name is included in the report header. If you do not specify a report name, the system generates a name in the form, ReportType-ReportDateTime. The maximum length of the report name is 200." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCategoryInsightsReportRequest/format> ;
    sh:name "format" ;
    sh:description "The format of the report data. For example, you can request the data in comma-separated values (Csv) format or tab-separated values (Tsv) format. The default value is Csv. All downloaded files are ZIP compressed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Csv" "Tsv" "Xml" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCategoryInsightsReportRequest/returnOnlyCompleteData> ;
    sh:name "return only complete data" ;
    sh:description "Determines whether or not the service must ensure that all the data has been processed and is available. If set to true and if the system has not finished processing all the data based on the requested Scope, and Time, the service returns error code NoCompleteDataAvaliable (2004). Otherwise by default the request can succeed, there is no indication as to whether the data is complete, and the report will contain only the data that the system has finished processing at the time of the request. Please note that because today is still in progress and data is not complete, you cannot set this element to true if the Time period (whether custom or predefined date) includes today's date. For more information, see Time Zones in Reporting." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCategoryInsightsReportRequest/excludeReportHeader> ;
    sh:name "exclude report header" ;
    sh:description "Determines whether or not the downloaded report should contain header metadata such as report name, date range, and aggregation. Set this property true if you want the report header metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCategoryInsightsReportRequest/excludeReportFooter> ;
    sh:name "exclude report footer" ;
    sh:description "Determines whether or not the downloaded report should contain footer metadata such as Microsoft copyright (`@2020` Microsoft Corporation. All rights reserved.). Set this property true if you want the report footer metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCategoryInsightsReportRequest/excludeColumnHeaders> ;
    sh:name "exclude column headers" ;
    sh:description "Determines whether or not the downloaded report should contain header descriptions for each column. The report column header matches the requested column name e.g. Impressions and Clicks. Set this property true if you want the report column headers excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCategoryInsightsReportRequest/formatVersion> ;
    sh:name "format version" ;
    sh:description "Determines the format for certain fields in the downloaded report file. The data format for certain fields can be updated within the current API version without breaking existing client applications. You can get the latest data format by setting this optional request field to 2.0. If you do not set this field, the service defaults to version 1.0. For details about changes between format versions, see Report Format Version." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCategoryInsightsReportRequest/scope> ;
    sh:name "scope" ;
    sh:description "The entity scope of the report. Use this element to limit the report data to specific accounts." ;
    sh:node microsoftads:ReportingAccountReportScopeShape ;
    sh:class microsoftads:ReportingAccountReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCategoryInsightsReportRequest/filter> ;
    sh:name "filter" ;
    sh:description "The filter information to use to filter the report data." ;
    sh:node microsoftads:ReportingCategoryInsightsReportFilterShape ;
    sh:class microsoftads:ReportingCategoryInsightsReportFilter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCategoryInsightsReportRequest/time> ;
    sh:name "time" ;
    sh:description "The time period to use for the report. You can specify a custom date range or select a predefined date range, for example, Today or ThisWeek. For a list of the time periods that you can specify for each aggregation type, see Aggregation and Time. You can set the time zone within the ReportTime object, which helps you accurately scope data for the requested time period. If you do not choose a time zone, the Reporting service uses PacificTimeUSCanadaTijuana by default." ;
    sh:node microsoftads:ReportingReportTimeShape ;
    sh:class microsoftads:ReportingReportTime ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCategoryInsightsReportRequest/columns> ;
    sh:name "columns" ;
    sh:description "The list of attributes and performance statistics to include in the report. The report will include the columns in the order that you specify them." ;
    sh:datatype xsd:string ;
    sh:in ( "L1Vertical" "L2Vertical" "L3Vertical" "WeekStartingMonday" "WoWSearches" "MoMSearches" "YoYLast1WeekSearches" "YoYLast4WeeksSearches" "SearchesIndexed" "SearchesPeakWeek" "WoWClicks" "MoMClicks" "YoYLast1WeekClicks" "ClicksIndexed" "ClicksPeakWeek" "YoYLast4WeeksClicks" "Country" "MarketplaceClickCoverage" "ProportionOfSpend" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCategoryInsightsReportRequest/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Combination Performance Report Request
microsoftads:ReportingCombinationPerformanceReportRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingCombinationPerformanceReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCombinationPerformanceReportRequest/reportName> ;
    sh:name "report name" ;
    sh:description "The name of the report. The name is included in the report header. If you do not specify a report name, the system generates a name in the form, ReportType-ReportDateTime. The maximum length of the report name is 200." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCombinationPerformanceReportRequest/format> ;
    sh:name "format" ;
    sh:description "The format of the report data. For example, you can request the data in comma-separated values (CSV) format or tab-separated values (TSV) format. The default value is CSV. All downloaded files are ZIP compressed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Csv" "Tsv" "Xml" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCombinationPerformanceReportRequest/returnOnlyCompleteData> ;
    sh:name "return only complete data" ;
    sh:description "Determines whether or not the service must ensure that all the data has been processed and is available. If set to true and if the system has not finished processing all the data based on the requested Aggregation, Scope, and Time, the service returns error code NoCompleteDataAvaliable (2004). Otherwise by default the request can succeed, there is no indication as to whether the data is complete, and the report will contain only the data that the system has finished processing at the time of the request. Please note that because today is still in progress and data is not complete, you cannot set this element to true if the Time period (whether custom or predefined date) includes today's date. For more information, see Time Zones in Reporting." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCombinationPerformanceReportRequest/excludeReportHeader> ;
    sh:name "exclude report header" ;
    sh:description "Determines whether or not the downloaded report should contain header metadata such as report name, date range, and aggregation. Set this property true if you want the report header metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCombinationPerformanceReportRequest/excludeReportFooter> ;
    sh:name "exclude report footer" ;
    sh:description "Determines whether or not the downloaded report should contain footer metadata such as Microsoft copyright (`@2020` Microsoft Corporation. All rights reserved.). Set this property true if you want the report footer metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCombinationPerformanceReportRequest/excludeColumnHeaders> ;
    sh:name "exclude column headers" ;
    sh:description "Determines whether or not the downloaded report should contain header descriptions for each column. The report column header matches the requested column name (e.g., Impressions and Clicks). Set this property true if you want the report column headers excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCombinationPerformanceReportRequest/formatVersion> ;
    sh:name "format version" ;
    sh:description "Determines the format for certain fields in the downloaded report file. The data format for certain fields can be updated within the current API version without breaking existing client applications. You can get the latest data format by setting this optional request field to 2.0. If you do not set this field, the service defaults to version 1.0. For details about changes between format versions, see Report Format Version." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCombinationPerformanceReportRequest/scope> ;
    sh:name "scope" ;
    sh:description "The entity scope of the report. Use this element to limit the report data to specific accounts or campaigns." ;
    sh:node microsoftads:ReportingAccountThroughCampaignReportScopeShape ;
    sh:class microsoftads:ReportingAccountThroughCampaignReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCombinationPerformanceReportRequest/filter> ;
    sh:name "filter" ;
    sh:description "The filter information to use to filter the report data." ;
    sh:datatype rdf:JSON ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCombinationPerformanceReportRequest/time> ;
    sh:name "time" ;
    sh:description "The time period to use for the report. You can specify a custom date range or select a predefined date range, for example, Today or ThisWeek. For a list of the time periods that you can specify for each aggregation type, see Aggregation and Time." ;
    sh:node microsoftads:ReportingReportTimeShape ;
    sh:class microsoftads:ReportingReportTime ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCombinationPerformanceReportRequest/aggregation> ;
    sh:name "aggregation" ;
    sh:description "The type of aggregation to use to aggregate the report data. For example, you can aggregate the report data by day or week, or request a summary report. The default aggregation is Summary. It is important to note that if you do not include TimePeriod in the list of Columns, the aggregation you chose will be ignored and Summary aggregation will be used regardless." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Summary" "Hourly" "Daily" "Weekly" "Monthly" "Yearly" "HourOfDay" "DayOfWeek" "WeeklyStartingMonday" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCombinationPerformanceReportRequest/columns> ;
    sh:name "columns" ;
    sh:description "The list of attributes and performance statistics to include in the report. The report will include the columns in the order that you specify them." ;
    sh:datatype xsd:string ;
    sh:in ( "TimePeriod" "AccountId" "AccountName" "CampaignId" "CampaignName" "CampaignType" "AdGroupId" "AdGroupName" "AssetGroupId" "AssetGroupName" "AdId" "AdType" "Headline1" "Headline2" "Headline3" "CombinationLongHeadline" "Description1" "Description2" "Image" "Logo" "Impressions" "Clicks" "Spend" "Ctr" "Conversions" "MarketingObjective" "Channel" "SubChannel" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingCombinationPerformanceReportRequest/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Conversion Performance Report Filter
microsoftads:ReportingConversionPerformanceReportFilterShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingConversionPerformanceReportFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingConversionPerformanceReportFilter/keywords> ;
    sh:name "keywords" ;
    sh:description "The report will include data for only the specified keywords. You can specify a maximum of 75 keywords. Each keyword can contain a maximum of 100 characters." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingConversionPerformanceReportFilter/deviceType> ;
    sh:name "device type" ;
    sh:description "The report will include data for only the specified types of devices on which the ad is displayed. For example, you can use the filter to include data only for expanded text ads displayed on smartphones. You can specify one or more device types." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingConversionPerformanceReportFilter/adDistribution> ;
    sh:name "ad distribution" ;
    sh:description "The report will include data for only the specified distribution medium. For example, you can use the filter to include data for only search ads. You can specify one or more distribution mediums." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingConversionPerformanceReportFilter/accountStatus> ;
    sh:name "account status" ;
    sh:description "The report will include data for only the account status. For example, you can use the filter to include data for only active accounts. You can specify one or more account statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingConversionPerformanceReportFilter/campaignStatus> ;
    sh:name "campaign status" ;
    sh:description "The report will include data for only the campaign status. For example, you can use the filter to include data for only active campaigns. You can specify one or more campaign statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingConversionPerformanceReportFilter/adGroupStatus> ;
    sh:name "ad group status" ;
    sh:description "The report will include data for only the ad group status. For example, you can use the filter to include data for only active ad groups. You can specify one or more ad group statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingConversionPerformanceReportFilter/keywordStatus> ;
    sh:name "keyword status" ;
    sh:description "The report will include data for only the keyword status. For example, you can use the filter to include data for only active keywords. You can specify one or more keyword statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Conversion Performance Report Request
microsoftads:ReportingConversionPerformanceReportRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingConversionPerformanceReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingConversionPerformanceReportRequest/reportName> ;
    sh:name "report name" ;
    sh:description "The name of the report. The name is included in the report header. If you do not specify a report name, the system generates a name in the form, ReportType-ReportDateTime. The maximum length of the report name is 200." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingConversionPerformanceReportRequest/format> ;
    sh:name "format" ;
    sh:description "The format of the report data. For example, you can request the data in comma-separated values (Csv) format or tab-separated values (Tsv) format. The default value is Csv. All downloaded files are ZIP compressed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Csv" "Tsv" "Xml" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingConversionPerformanceReportRequest/returnOnlyCompleteData> ;
    sh:name "return only complete data" ;
    sh:description "Determines whether or not the service must ensure that all the data has been processed and is available. If set to true and if the system has not finished processing all the data based on the requested Aggregation, Scope, and Time, the service returns error code NoCompleteDataAvaliable (2004). Otherwise by default the request can succeed, there is no indication as to whether the data is complete, and the report will contain only the data that the system has finished processing at the time of the request. Please note that because today is still in progress and data is not complete, you cannot set this element to true if the Time period (whether custom or predefined date) includes today's date. For more information, see Time Zones in Reporting." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingConversionPerformanceReportRequest/excludeReportHeader> ;
    sh:name "exclude report header" ;
    sh:description "Determines whether or not the downloaded report should contain header metadata such as report name, date range, and aggregation. Set this property true if you want the report header metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingConversionPerformanceReportRequest/excludeReportFooter> ;
    sh:name "exclude report footer" ;
    sh:description "Determines whether or not the downloaded report should contain footer metadata such as Microsoft copyright (`@2020` Microsoft Corporation. All rights reserved.). Set this property true if you want the report footer metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingConversionPerformanceReportRequest/excludeColumnHeaders> ;
    sh:name "exclude column headers" ;
    sh:description "Determines whether or not the downloaded report should contain header descriptions for each column. The report column header matches the requested column name e.g. Impressions and Clicks. Set this property true if you want the report column headers excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingConversionPerformanceReportRequest/formatVersion> ;
    sh:name "format version" ;
    sh:description "Determines the format for certain fields in the downloaded report file. The data format for certain fields can be updated within the current API version without breaking existing client applications. You can get the latest data format by setting this optional request field to 2.0. If you do not set this field, the service defaults to version 1.0. For details about changes between format versions, see Report Format Version." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingConversionPerformanceReportRequest/scope> ;
    sh:name "scope" ;
    sh:description "The entity scope of the report. Use this element to limit the report data to specific accounts, ad groups, or campaigns." ;
    sh:node microsoftads:ReportingAccountThroughAdGroupReportScopeShape ;
    sh:class microsoftads:ReportingAccountThroughAdGroupReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingConversionPerformanceReportRequest/filter> ;
    sh:name "filter" ;
    sh:description "The filter information to use to filter the report data." ;
    sh:node microsoftads:ReportingConversionPerformanceReportFilterShape ;
    sh:class microsoftads:ReportingConversionPerformanceReportFilter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingConversionPerformanceReportRequest/time> ;
    sh:name "time" ;
    sh:description "The time period to use for the report. You can specify a custom date range or select a predefined date range, for example, Today or ThisWeek. For a list of the time periods that you can specify for each aggregation type, see Aggregation and Time. You can set the time zone within the ReportTime object, which helps you accurately scope data for the requested time period. If you do not choose a time zone, the Reporting service uses PacificTimeUSCanadaTijuana by default." ;
    sh:node microsoftads:ReportingReportTimeShape ;
    sh:class microsoftads:ReportingReportTime ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingConversionPerformanceReportRequest/aggregation> ;
    sh:name "aggregation" ;
    sh:description "The type of aggregation to use to aggregate the report data. For example, you can aggregate the report data by day or week, or request a summary report. The default aggregation is Summary. It is important to note that if you do not include TimePeriod in the list of Columns, the aggregation you chose will be ignored and Summary aggregation will be used regardless." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Summary" "Hourly" "Daily" "Weekly" "Monthly" "Yearly" "HourOfDay" "DayOfWeek" "WeeklyStartingMonday" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingConversionPerformanceReportRequest/columns> ;
    sh:name "columns" ;
    sh:description "The list of attributes and performance statistics to include in the report. The report includes the columns in the order that you specify them." ;
    sh:datatype xsd:string ;
    sh:in ( "AccountName" "AccountNumber" "AccountId" "TimePeriod" "CampaignName" "CampaignId" "AdGroupName" "AdGroupId" "Keyword" "KeywordId" "Impressions" "Clicks" "Ctr" "Assists" "Conversions" "ConversionRate" "Spend" "Revenue" "ReturnOnAdSpend" "CostPerConversion" "CostPerAssist" "RevenuePerConversion" "RevenuePerAssist" "DeviceType" "AccountStatus" "CampaignStatus" "AdGroupStatus" "KeywordStatus" "AllConversions" "AllRevenue" "AllConversionRate" "AllCostPerConversion" "AllReturnOnAdSpend" "AllRevenuePerConversion" "ViewThroughConversions" "Goal" "GoalType" "ConversionsQualified" "AllConversionsQualified" "ViewThroughConversionsQualified" "ViewThroughRevenue" "GoalId" "MarketingObjective" "Channel" "SubChannel" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingConversionPerformanceReportRequest/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Destination Url Performance Report Filter
microsoftads:ReportingDestinationUrlPerformanceReportFilterShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingDestinationUrlPerformanceReportFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDestinationUrlPerformanceReportFilter/adDistribution> ;
    sh:name "ad distribution" ;
    sh:description "The report will include data for only the specified distribution medium. For example, you can use the filter to include data for only search ads. You can specify one or more distribution mediums." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDestinationUrlPerformanceReportFilter/deviceType> ;
    sh:name "device type" ;
    sh:description "The report will include data for only the specified types of devices on which the ad is displayed. For example, you can use the filter to include data for only text ads displayed on smartphones. You can specify one or more device types." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDestinationUrlPerformanceReportFilter/language> ;
    sh:name "language" ;
    sh:description "The report will include data for only websites that used the specified languages. You can specify one or more languages." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDestinationUrlPerformanceReportFilter/accountStatus> ;
    sh:name "account status" ;
    sh:description "The report will include data for only the account status. For example, you can use the filter to include data for only active accounts. You can specify one or more account statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDestinationUrlPerformanceReportFilter/campaignStatus> ;
    sh:name "campaign status" ;
    sh:description "The report will include data for only the campaign status. For example, you can use the filter to include data for only active campaigns. You can specify one or more campaign statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDestinationUrlPerformanceReportFilter/adGroupStatus> ;
    sh:name "ad group status" ;
    sh:description "The report will include data for only the ad group status. For example, you can use the filter to include data for only active ad groups. You can specify one or more ad group statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDestinationUrlPerformanceReportFilter/adStatus> ;
    sh:name "ad status" ;
    sh:description "The report will include data for only the ad status. For example, you can use the filter to include data for only active ads. You can specify one or more ad statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Destination Url Performance Report Request
microsoftads:ReportingDestinationUrlPerformanceReportRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingDestinationUrlPerformanceReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDestinationUrlPerformanceReportRequest/reportName> ;
    sh:name "report name" ;
    sh:description "The name of the report. The name is included in the report header. If you do not specify a report name, the system generates a name in the form, ReportType-ReportDateTime. The maximum length of the report name is 200." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDestinationUrlPerformanceReportRequest/format> ;
    sh:name "format" ;
    sh:description "The format of the report data. For example, you can request the data in comma-separated values (Csv) format or tab-separated values (Tsv) format. The default value is Csv. All downloaded files are ZIP compressed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Csv" "Tsv" "Xml" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDestinationUrlPerformanceReportRequest/returnOnlyCompleteData> ;
    sh:name "return only complete data" ;
    sh:description "Determines whether or not the service must ensure that all the data has been processed and is available. If set to true and if the system has not finished processing all the data based on the requested Aggregation, Scope, and Time, the service returns error code NoCompleteDataAvaliable (2004). Otherwise by default the request can succeed, there is no indication as to whether the data is complete, and the report will contain only the data that the system has finished processing at the time of the request. Please note that because today is still in progress and data is not complete, you cannot set this element to true if the Time period (whether custom or predefined date) includes today's date. For more information, see Time Zones in Reporting." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDestinationUrlPerformanceReportRequest/excludeReportHeader> ;
    sh:name "exclude report header" ;
    sh:description "Determines whether or not the downloaded report should contain header metadata such as report name, date range, and aggregation. Set this property true if you want the report header metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDestinationUrlPerformanceReportRequest/excludeReportFooter> ;
    sh:name "exclude report footer" ;
    sh:description "Determines whether or not the downloaded report should contain footer metadata such as Microsoft copyright (`@2020` Microsoft Corporation. All rights reserved.). Set this property true if you want the report footer metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDestinationUrlPerformanceReportRequest/excludeColumnHeaders> ;
    sh:name "exclude column headers" ;
    sh:description "Determines whether or not the downloaded report should contain header descriptions for each column. The report column header matches the requested column name e.g. Impressions and Clicks. Set this property true if you want the report column headers excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDestinationUrlPerformanceReportRequest/formatVersion> ;
    sh:name "format version" ;
    sh:description "Determines the format for certain fields in the downloaded report file. The data format for certain fields can be updated within the current API version without breaking existing client applications. You can get the latest data format by setting this optional request field to 2.0. If you do not set this field, the service defaults to version 1.0. For details about changes between format versions, see Report Format Version." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDestinationUrlPerformanceReportRequest/scope> ;
    sh:name "scope" ;
    sh:description "The entity scope of the report. Use this element to limit the report data to specific accounts, ad groups, or campaigns." ;
    sh:node microsoftads:ReportingAccountThroughAdGroupReportScopeShape ;
    sh:class microsoftads:ReportingAccountThroughAdGroupReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDestinationUrlPerformanceReportRequest/filter> ;
    sh:name "filter" ;
    sh:description "The filter information to use to filter the report data." ;
    sh:node microsoftads:ReportingDestinationUrlPerformanceReportFilterShape ;
    sh:class microsoftads:ReportingDestinationUrlPerformanceReportFilter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDestinationUrlPerformanceReportRequest/time> ;
    sh:name "time" ;
    sh:description "The time period to use for the report. You can specify a custom date range or select a predefined date range, for example, Today or ThisWeek. For a list of the time periods that you can specify for each aggregation type, see Aggregation and Time. You can set the time zone within the ReportTime object, which helps you accurately scope data for the requested time period. If you do not choose a time zone, the Reporting service uses PacificTimeUSCanadaTijuana by default." ;
    sh:node microsoftads:ReportingReportTimeShape ;
    sh:class microsoftads:ReportingReportTime ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDestinationUrlPerformanceReportRequest/aggregation> ;
    sh:name "aggregation" ;
    sh:description "The type of aggregation to use to aggregate the report data. For example, you can aggregate the report data by day or week, or request a summary report. The default aggregation is Summary. It is important to note that if you do not include TimePeriod in the list of Columns, the aggregation you chose will be ignored and Summary aggregation will be used regardless." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Summary" "Hourly" "Daily" "Weekly" "Monthly" "Yearly" "HourOfDay" "DayOfWeek" "WeeklyStartingMonday" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDestinationUrlPerformanceReportRequest/columns> ;
    sh:name "columns" ;
    sh:description "The list of attributes and performance statistics to include in the report. The report will include the columns in the order that you specify them." ;
    sh:datatype xsd:string ;
    sh:in ( "AccountName" "AccountNumber" "AccountId" "TimePeriod" "CampaignName" "CampaignId" "AdGroupName" "AdGroupId" "AdId" "CurrencyCode" "AdDistribution" "DestinationUrl" "Impressions" "Clicks" "Ctr" "AverageCpc" "Spend" "AveragePosition" "Conversions" "ConversionRate" "CostPerConversion" "DeviceType" "Language" "BidMatchType" "DeliveredMatchType" "Network" "TopVsOther" "DeviceOS" "Assists" "Revenue" "ReturnOnAdSpend" "CostPerAssist" "RevenuePerConversion" "RevenuePerAssist" "TrackingTemplate" "CustomParameters" "FinalUrl" "FinalMobileUrl" "FinalAppUrl" "AccountStatus" "CampaignStatus" "AdGroupStatus" "AdStatus" "CustomerId" "CustomerName" "FinalUrlSuffix" "AllConversions" "AllRevenue" "AllConversionRate" "AllCostPerConversion" "AllReturnOnAdSpend" "AllRevenuePerConversion" "ViewThroughConversions" "Goal" "GoalType" "AbsoluteTopImpressionRatePercent" "TopImpressionRatePercent" "AverageCpm" "ConversionsQualified" "AllConversionsQualified" "ViewThroughConversionsQualified" "ViewThroughRevenue" "MarketingObjective" "Channel" "SubChannel" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDestinationUrlPerformanceReportRequest/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting DSAAuto Target Performance Report Filter
microsoftads:ReportingDSAAutoTargetPerformanceReportFilterShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingDSAAutoTargetPerformanceReportFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSAAutoTargetPerformanceReportFilter/accountStatus> ;
    sh:name "account status" ;
    sh:description "The report will include data for only the account status. For example, you can use the filter to include data for only active accounts. You can specify one or more account statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSAAutoTargetPerformanceReportFilter/campaignStatus> ;
    sh:name "campaign status" ;
    sh:description "The report will include data for campaigns that have the specified status value. You can specify one or more status values." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSAAutoTargetPerformanceReportFilter/adGroupStatus> ;
    sh:name "ad group status" ;
    sh:description "The report will include data for only the ad group status. For example, you can use the filter to include data for only active ad groups. You can specify one or more ad group statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSAAutoTargetPerformanceReportFilter/dynamicAdTargetStatus> ;
    sh:name "dynamic ad target status" ;
    sh:description "The report will include data for only the dynamic ad targets that have the specified status." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSAAutoTargetPerformanceReportFilter/language> ;
    sh:name "language" ;
    sh:description "The report will include data for only websites that used the specified languages. You can specify one or more languages." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSAAutoTargetPerformanceReportFilter/bidStrategyType> ;
    sh:name "bid strategy type" ;
    sh:description "The report will include data for only the specified bid strategy types." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting DSAAuto Target Performance Report Request
microsoftads:ReportingDSAAutoTargetPerformanceReportRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingDSAAutoTargetPerformanceReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSAAutoTargetPerformanceReportRequest/reportName> ;
    sh:name "report name" ;
    sh:description "The name of the report. The name is included in the report header. If you do not specify a report name, the system generates a name in the form, ReportType-ReportDateTime. The maximum length of the report name is 200." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSAAutoTargetPerformanceReportRequest/format> ;
    sh:name "format" ;
    sh:description "The format of the report data. For example, you can request the data in comma-separated values (Csv) format or tab-separated values (Tsv) format. The default value is Csv. All downloaded files are ZIP compressed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Csv" "Tsv" "Xml" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSAAutoTargetPerformanceReportRequest/returnOnlyCompleteData> ;
    sh:name "return only complete data" ;
    sh:description "Determines whether or not the service must ensure that all the data has been processed and is available. If set to true and if the system has not finished processing all the data based on the requested Aggregation, Scope, and Time, the service returns error code NoCompleteDataAvaliable (2004). Otherwise by default the request can succeed, there is no indication as to whether the data is complete, and the report will contain only the data that the system has finished processing at the time of the request. Please note that because today is still in progress and data is not complete, you cannot set this element to true if the Time period (whether custom or predefined date) includes today's date. For more information, see Time Zones in Reporting." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSAAutoTargetPerformanceReportRequest/excludeReportHeader> ;
    sh:name "exclude report header" ;
    sh:description "Determines whether or not the downloaded report should contain header metadata such as report name, date range, and aggregation. Set this property true if you want the report header metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSAAutoTargetPerformanceReportRequest/excludeReportFooter> ;
    sh:name "exclude report footer" ;
    sh:description "Determines whether or not the downloaded report should contain footer metadata such as Microsoft copyright (`@2020` Microsoft Corporation. All rights reserved.). Set this property true if you want the report footer metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSAAutoTargetPerformanceReportRequest/excludeColumnHeaders> ;
    sh:name "exclude column headers" ;
    sh:description "Determines whether or not the downloaded report should contain header descriptions for each column. The report column header matches the requested column name e.g. Impressions and Clicks. Set this property true if you want the report column headers excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSAAutoTargetPerformanceReportRequest/formatVersion> ;
    sh:name "format version" ;
    sh:description "Determines the format for certain fields in the downloaded report file. The data format for certain fields can be updated within the current API version without breaking existing client applications. You can get the latest data format by setting this optional request field to 2.0. If you do not set this field, the service defaults to version 1.0. For details about changes between format versions, see Report Format Version." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSAAutoTargetPerformanceReportRequest/scope> ;
    sh:name "scope" ;
    sh:description "The entity scope of the report. Use this element to limit the report data to specific accounts, ad groups, or campaigns." ;
    sh:node microsoftads:ReportingAccountThroughAdGroupReportScopeShape ;
    sh:class microsoftads:ReportingAccountThroughAdGroupReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSAAutoTargetPerformanceReportRequest/filter> ;
    sh:name "filter" ;
    sh:description "The filter information to use to filter the report data." ;
    sh:node microsoftads:ReportingDSAAutoTargetPerformanceReportFilterShape ;
    sh:class microsoftads:ReportingDSAAutoTargetPerformanceReportFilter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSAAutoTargetPerformanceReportRequest/time> ;
    sh:name "time" ;
    sh:description "The time period to use for the report. You can specify a custom date range or select a predefined date range, for example, Today or ThisWeek. For a list of the time periods that you can specify for each aggregation type, see Aggregation and Time. You can set the time zone within the ReportTime object, which helps you accurately scope data for the requested time period. If you do not choose a time zone, the Reporting service uses PacificTimeUSCanadaTijuana by default." ;
    sh:node microsoftads:ReportingReportTimeShape ;
    sh:class microsoftads:ReportingReportTime ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSAAutoTargetPerformanceReportRequest/aggregation> ;
    sh:name "aggregation" ;
    sh:description "The type of aggregation to use to aggregate the report data. For example, you can aggregate the report data by day or week, or request a summary report. The default aggregation is Summary. It is important to note that if you do not include TimePeriod in the list of Columns, the aggregation you chose will be ignored and Summary aggregation will be used regardless." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Summary" "Hourly" "Daily" "Weekly" "Monthly" "Yearly" "HourOfDay" "DayOfWeek" "WeeklyStartingMonday" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSAAutoTargetPerformanceReportRequest/columns> ;
    sh:name "columns" ;
    sh:description "The list of attributes and performance statistics to include in the report. The report will include the columns in the order that you specify them." ;
    sh:datatype xsd:string ;
    sh:in ( "TimePeriod" "AccountId" "AccountName" "AccountNumber" "AccountStatus" "CampaignId" "CampaignName" "CampaignStatus" "AdGroupId" "AdGroupName" "AdGroupStatus" "AdDistribution" "Language" "Network" "TopVsOther" "DeviceType" "DeviceOS" "BidStrategyType" "TrackingTemplate" "CustomParameters" "DynamicAdTargetId" "DynamicAdTarget" "DynamicAdTargetStatus" "WebsiteCoverage" "Impressions" "Clicks" "Ctr" "AverageCpc" "Spend" "AveragePosition" "Conversions" "ConversionRate" "CostPerConversion" "Assists" "Revenue" "ReturnOnAdSpend" "CostPerAssist" "RevenuePerConversion" "RevenuePerAssist" "AllConversions" "AllRevenue" "AllConversionRate" "AllCostPerConversion" "AllReturnOnAdSpend" "AllRevenuePerConversion" "ViewThroughConversions" "Goal" "GoalType" "AbsoluteTopImpressionRatePercent" "TopImpressionRatePercent" "AverageCpm" "ConversionsQualified" "AllConversionsQualified" "ViewThroughConversionsQualified" "AdId" "ViewThroughRevenue" "GoalId" "MarketingObjective" "Channel" "SubChannel" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSAAutoTargetPerformanceReportRequest/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting DSACategory Performance Report Filter
microsoftads:ReportingDSACategoryPerformanceReportFilterShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingDSACategoryPerformanceReportFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSACategoryPerformanceReportFilter/accountStatus> ;
    sh:name "account status" ;
    sh:description "The report will include data for only the account status. For example, you can use the filter to include data for only active accounts. You can specify one or more account statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSACategoryPerformanceReportFilter/campaignStatus> ;
    sh:name "campaign status" ;
    sh:description "The report will include data for campaigns that have the specified status value. You can specify one or more status values." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSACategoryPerformanceReportFilter/adGroupStatus> ;
    sh:name "ad group status" ;
    sh:description "The report will include data for only the ad group status. For example, you can use the filter to include data for only active ad groups. You can specify one or more ad group statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSACategoryPerformanceReportFilter/adStatus> ;
    sh:name "ad status" ;
    sh:description "The report will include data for ads that have the specified status value. You can specify one or more status values." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSACategoryPerformanceReportFilter/language> ;
    sh:name "language" ;
    sh:description "The report will include data for only websites that used the specified languages. You can specify one or more languages." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting DSACategory Performance Report Request
microsoftads:ReportingDSACategoryPerformanceReportRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingDSACategoryPerformanceReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSACategoryPerformanceReportRequest/reportName> ;
    sh:name "report name" ;
    sh:description "The name of the report. The name is included in the report header. If you do not specify a report name, the system generates a name in the form, ReportType-ReportDateTime. The maximum length of the report name is 200." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSACategoryPerformanceReportRequest/format> ;
    sh:name "format" ;
    sh:description "The format of the report data. For example, you can request the data in comma-separated values (Csv) format or tab-separated values (Tsv) format. The default value is Csv. All downloaded files are ZIP compressed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Csv" "Tsv" "Xml" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSACategoryPerformanceReportRequest/returnOnlyCompleteData> ;
    sh:name "return only complete data" ;
    sh:description "Determines whether or not the service must ensure that all the data has been processed and is available. If set to true and if the system has not finished processing all the data based on the requested Aggregation, Scope, and Time, the service returns error code NoCompleteDataAvaliable (2004). Otherwise by default the request can succeed, there is no indication as to whether the data is complete, and the report will contain only the data that the system has finished processing at the time of the request. Please note that because today is still in progress and data is not complete, you cannot set this element to true if the Time period (whether custom or predefined date) includes today's date. For more information, see Time Zones in Reporting." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSACategoryPerformanceReportRequest/excludeReportHeader> ;
    sh:name "exclude report header" ;
    sh:description "Determines whether or not the downloaded report should contain header metadata such as report name, date range, and aggregation. Set this property true if you want the report header metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSACategoryPerformanceReportRequest/excludeReportFooter> ;
    sh:name "exclude report footer" ;
    sh:description "Determines whether or not the downloaded report should contain footer metadata such as Microsoft copyright (`@2020` Microsoft Corporation. All rights reserved.). Set this property true if you want the report footer metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSACategoryPerformanceReportRequest/excludeColumnHeaders> ;
    sh:name "exclude column headers" ;
    sh:description "Determines whether or not the downloaded report should contain header descriptions for each column. The report column header matches the requested column name e.g. Impressions and Clicks. Set this property true if you want the report column headers excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSACategoryPerformanceReportRequest/formatVersion> ;
    sh:name "format version" ;
    sh:description "Determines the format for certain fields in the downloaded report file. The data format for certain fields can be updated within the current API version without breaking existing client applications. You can get the latest data format by setting this optional request field to 2.0. If you do not set this field, the service defaults to version 1.0. For details about changes between format versions, see Report Format Version." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSACategoryPerformanceReportRequest/scope> ;
    sh:name "scope" ;
    sh:description "The entity scope of the report. Use this element to limit the report data to specific accounts, ad groups, or campaigns." ;
    sh:node microsoftads:ReportingAccountThroughAdGroupReportScopeShape ;
    sh:class microsoftads:ReportingAccountThroughAdGroupReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSACategoryPerformanceReportRequest/filter> ;
    sh:name "filter" ;
    sh:description "The filter information to use to filter the report data." ;
    sh:node microsoftads:ReportingDSACategoryPerformanceReportFilterShape ;
    sh:class microsoftads:ReportingDSACategoryPerformanceReportFilter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSACategoryPerformanceReportRequest/time> ;
    sh:name "time" ;
    sh:description "The time period to use for the report. You can specify a custom date range or select a predefined date range, for example, Today or ThisWeek. For a list of the time periods that you can specify for each aggregation type, see Aggregation and Time. You can set the time zone within the ReportTime object, which helps you accurately scope data for the requested time period. If you do not choose a time zone, the Reporting service uses PacificTimeUSCanadaTijuana by default." ;
    sh:node microsoftads:ReportingReportTimeShape ;
    sh:class microsoftads:ReportingReportTime ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSACategoryPerformanceReportRequest/aggregation> ;
    sh:name "aggregation" ;
    sh:description "The type of aggregation to use to aggregate the report data. For example, you can aggregate the report data by day or week, or request a summary report. The default aggregation is Summary. It is important to note that if you do not include TimePeriod in the list of Columns, the aggregation you chose will be ignored and Summary aggregation will be used regardless." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Summary" "Hourly" "Daily" "Weekly" "Monthly" "Yearly" "HourOfDay" "DayOfWeek" "WeeklyStartingMonday" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSACategoryPerformanceReportRequest/columns> ;
    sh:name "columns" ;
    sh:description "The list of attributes and performance statistics to include in the report. The report will include the columns in the order that you specify them." ;
    sh:datatype xsd:string ;
    sh:in ( "TimePeriod" "AccountId" "AccountName" "AccountNumber" "AccountStatus" "CampaignId" "CampaignName" "CampaignStatus" "AdGroupId" "AdGroupName" "AdGroupStatus" "AdId" "AdStatus" "Category0" "Category1" "Category2" "AdDistribution" "Language" "Network" "TopVsOther" "DeviceType" "DeviceOS" "Impressions" "Clicks" "Ctr" "AverageCpc" "Spend" "AveragePosition" "Conversions" "ConversionRate" "CostPerConversion" "Assists" "Revenue" "ReturnOnAdSpend" "CostPerAssist" "RevenuePerConversion" "RevenuePerAssist" "AllConversions" "AllRevenue" "AllConversionRate" "AllCostPerConversion" "AllReturnOnAdSpend" "AllRevenuePerConversion" "ViewThroughConversions" "Goal" "GoalType" "AbsoluteTopImpressionRatePercent" "TopImpressionRatePercent" "AverageCpm" "ConversionsQualified" "AllConversionsQualified" "ViewThroughConversionsQualified" "ViewThroughRevenue" "MarketingObjective" "Channel" "SubChannel" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSACategoryPerformanceReportRequest/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting DSASearch Query Performance Report Filter
microsoftads:ReportingDSASearchQueryPerformanceReportFilterShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingDSASearchQueryPerformanceReportFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSASearchQueryPerformanceReportFilter/searchQueries> ;
    sh:name "search queries" ;
    sh:description "The report will include data for only the specified search query strings. The list can contain a maximum of 30 strings, and each string can contain a maximum of 256 characters." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSASearchQueryPerformanceReportFilter/accountStatus> ;
    sh:name "account status" ;
    sh:description "The report will include data for only the account status. For example, you can use the filter to include data for only active accounts. You can specify one or more account statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSASearchQueryPerformanceReportFilter/campaignStatus> ;
    sh:name "campaign status" ;
    sh:description "The report will include data for campaigns that have the specified status value. You can specify one or more status values." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSASearchQueryPerformanceReportFilter/adGroupStatus> ;
    sh:name "ad group status" ;
    sh:description "The report will include data for only the ad group status. For example, you can use the filter to include data for only active ad groups. You can specify one or more ad group statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSASearchQueryPerformanceReportFilter/adStatus> ;
    sh:name "ad status" ;
    sh:description "The report will include data for ads that have the specified status value. You can specify one or more status values." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSASearchQueryPerformanceReportFilter/language> ;
    sh:name "language" ;
    sh:description "The report will include data for only websites that used the specified languages. You can specify one or more languages." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSASearchQueryPerformanceReportFilter/excludeZeroClicks> ;
    sh:name "exclude zero clicks" ;
    sh:description "If the value of this element is set to true, search terms that had one or more ad impressions but resulted in zero clicks in the specified time duration will be excluded from the report. The default value is false, in which case the report will include zero click search term data. Regardless of the value of this filter, search terms with zero clicks in the last 30 days will always be excluded." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSASearchQueryPerformanceReportFilter/feedUrl> ;
    sh:name "feed url" ;
    sh:description "The feed URL will appear either as \"True\" or \"False\". If it's \"True\", the final URL came from a page feed associated to the campaign. If it's \"False\", the final URL did not come from a page feed." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting DSASearch Query Performance Report Request
microsoftads:ReportingDSASearchQueryPerformanceReportRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingDSASearchQueryPerformanceReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSASearchQueryPerformanceReportRequest/reportName> ;
    sh:name "report name" ;
    sh:description "The name of the report. The name is included in the report header. If you do not specify a report name, the system generates a name in the form, ReportType-ReportDateTime. The maximum length of the report name is 200." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSASearchQueryPerformanceReportRequest/format> ;
    sh:name "format" ;
    sh:description "The format of the report data. For example, you can request the data in comma-separated values (Csv) format or tab-separated values (Tsv) format. The default value is Csv. All downloaded files are ZIP compressed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Csv" "Tsv" "Xml" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSASearchQueryPerformanceReportRequest/returnOnlyCompleteData> ;
    sh:name "return only complete data" ;
    sh:description "Determines whether or not the service must ensure that all the data has been processed and is available. If set to true and if the system has not finished processing all the data based on the requested Aggregation, Scope, and Time, the service returns error code NoCompleteDataAvaliable (2004). Otherwise by default the request can succeed, there is no indication as to whether the data is complete, and the report will contain only the data that the system has finished processing at the time of the request. Please note that because today is still in progress and data is not complete, you cannot set this element to true if the Time period (whether custom or predefined date) includes today's date. For more information, see Time Zones in Reporting." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSASearchQueryPerformanceReportRequest/excludeReportHeader> ;
    sh:name "exclude report header" ;
    sh:description "Determines whether or not the downloaded report should contain header metadata such as report name, date range, and aggregation. Set this property true if you want the report header metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSASearchQueryPerformanceReportRequest/excludeReportFooter> ;
    sh:name "exclude report footer" ;
    sh:description "Determines whether or not the downloaded report should contain footer metadata such as Microsoft copyright (`@2020` Microsoft Corporation. All rights reserved.). Set this property true if you want the report footer metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSASearchQueryPerformanceReportRequest/excludeColumnHeaders> ;
    sh:name "exclude column headers" ;
    sh:description "Determines whether or not the downloaded report should contain header descriptions for each column. The report column header matches the requested column name e.g. Impressions and Clicks. Set this property true if you want the report column headers excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSASearchQueryPerformanceReportRequest/formatVersion> ;
    sh:name "format version" ;
    sh:description "Determines the format for certain fields in the downloaded report file. The data format for certain fields can be updated within the current API version without breaking existing client applications. You can get the latest data format by setting this optional request field to 2.0. If you do not set this field, the service defaults to version 1.0. For details about changes between format versions, see Report Format Version." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSASearchQueryPerformanceReportRequest/scope> ;
    sh:name "scope" ;
    sh:description "The entity scope of the report. Use this element to limit the report data to specific accounts, ad groups, or campaigns." ;
    sh:node microsoftads:ReportingAccountThroughAdGroupReportScopeShape ;
    sh:class microsoftads:ReportingAccountThroughAdGroupReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSASearchQueryPerformanceReportRequest/filter> ;
    sh:name "filter" ;
    sh:description "The filter information to use to filter the report data." ;
    sh:node microsoftads:ReportingDSASearchQueryPerformanceReportFilterShape ;
    sh:class microsoftads:ReportingDSASearchQueryPerformanceReportFilter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSASearchQueryPerformanceReportRequest/time> ;
    sh:name "time" ;
    sh:description "The time period to use for the report. You can specify a custom date range or select a predefined date range, for example, Today or ThisWeek. For a list of the time periods that you can specify for each aggregation type, see Aggregation and Time. You can set the time zone within the ReportTime object, which helps you accurately scope data for the requested time period. If you do not choose a time zone, the Reporting service uses PacificTimeUSCanadaTijuana by default." ;
    sh:node microsoftads:ReportingReportTimeShape ;
    sh:class microsoftads:ReportingReportTime ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSASearchQueryPerformanceReportRequest/aggregation> ;
    sh:name "aggregation" ;
    sh:description "The type of aggregation to use to aggregate the report data. For example, you can aggregate the report data by day or week, or request a summary report. The default aggregation is Summary. It is important to note that if you do not include TimePeriod in the list of Columns, the aggregation you chose will be ignored and Summary aggregation will be used regardless." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Summary" "Hourly" "Daily" "Weekly" "Monthly" "Yearly" "HourOfDay" "DayOfWeek" "WeeklyStartingMonday" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSASearchQueryPerformanceReportRequest/columns> ;
    sh:name "columns" ;
    sh:description "The list of attributes and performance statistics to include in the report. The report will include the columns in the order that you specify them." ;
    sh:datatype xsd:string ;
    sh:in ( "TimePeriod" "AccountId" "AccountName" "AccountNumber" "AccountStatus" "CampaignId" "CampaignName" "CampaignStatus" "AdGroupId" "AdGroupName" "AdGroupStatus" "AdId" "AdStatus" "SearchQuery" "Headline" "CategoryList" "LandingPageTitle" "FinalUrl" "DynamicAdTarget" "DynamicAdTargetId" "AdDistribution" "Language" "Network" "TopVsOther" "DeviceType" "DeviceOS" "Impressions" "Clicks" "Ctr" "AverageCpc" "Spend" "AveragePosition" "Conversions" "ConversionRate" "CostPerConversion" "Assists" "Revenue" "ReturnOnAdSpend" "CostPerAssist" "RevenuePerConversion" "RevenuePerAssist" "CustomerId" "CustomerName" "FeedUrl" "AllConversions" "AllRevenue" "AllConversionRate" "AllCostPerConversion" "AllReturnOnAdSpend" "AllRevenuePerConversion" "Goal" "GoalType" "AbsoluteTopImpressionRatePercent" "TopImpressionRatePercent" "AverageCpm" "ConversionsQualified" "AllConversionsQualified" "Description" "MarketingObjective" "Channel" "SubChannel" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingDSASearchQueryPerformanceReportRequest/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Feed Item Performance Report Request
microsoftads:ReportingFeedItemPerformanceReportRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingFeedItemPerformanceReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingFeedItemPerformanceReportRequest/reportName> ;
    sh:name "report name" ;
    sh:description "The name of the report. The name is included in the report header. If you do not specify a report name, the system generates a name in the form, ReportType-ReportDateTime. The maximum length of the report name is 200." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingFeedItemPerformanceReportRequest/format> ;
    sh:name "format" ;
    sh:description "The format of the report data. For example, you can request the data in comma-separated values (Csv) format or tab-separated values (Tsv) format. The default value is Csv. All downloaded files are ZIP compressed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Csv" "Tsv" "Xml" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingFeedItemPerformanceReportRequest/returnOnlyCompleteData> ;
    sh:name "return only complete data" ;
    sh:description "Determines whether or not the service must ensure that all the data has been processed and is available. If set to true and if the system has not finished processing all the data based on the requested Aggregation, Scope, and Time, the service returns error code NoCompleteDataAvaliable (2004). Otherwise by default the request can succeed, there is no indication as to whether the data is complete, and the report will contain only the data that the system has finished processing at the time of the request. Please note that because today is still in progress and data is not complete, you cannot set this element to true if the Time period (whether custom or predefined date) includes today's date. For more information, see Time Zones in Reporting." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingFeedItemPerformanceReportRequest/excludeReportHeader> ;
    sh:name "exclude report header" ;
    sh:description "Determines whether or not the downloaded report should contain header metadata such as report name, date range, and aggregation. Set this property true if you want the report header metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingFeedItemPerformanceReportRequest/excludeReportFooter> ;
    sh:name "exclude report footer" ;
    sh:description "Determines whether or not the downloaded report should contain footer metadata such as Microsoft copyright (`@2020` Microsoft Corporation. All rights reserved.). Set this property true if you want the report footer metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingFeedItemPerformanceReportRequest/excludeColumnHeaders> ;
    sh:name "exclude column headers" ;
    sh:description "Determines whether or not the downloaded report should contain header descriptions for each column. The report column header matches the requested column name e.g. Impressions and Clicks. Set this property true if you want the report column headers excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingFeedItemPerformanceReportRequest/formatVersion> ;
    sh:name "format version" ;
    sh:description "Determines the format for certain fields in the downloaded report file. The data format for certain fields can be updated within the current API version without breaking existing client applications. You can get the latest data format by setting this optional request field to 2.0. If you do not set this field, the service defaults to version 1.0. For details about changes between format versions, see Report Format Version." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingFeedItemPerformanceReportRequest/scope> ;
    sh:name "scope" ;
    sh:description "The entity scope of the report. Use this element to limit the report data to specific accounts." ;
    sh:node microsoftads:ReportingAccountThroughAdGroupReportScopeShape ;
    sh:class microsoftads:ReportingAccountThroughAdGroupReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingFeedItemPerformanceReportRequest/filter> ;
    sh:name "filter" ;
    sh:description "The filter information to use to filter the report data." ;
    sh:datatype rdf:JSON ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingFeedItemPerformanceReportRequest/time> ;
    sh:name "time" ;
    sh:description "The time period to use for the report. You can specify a custom date range or select a predefined date range, for example, Today or ThisWeek. For a list of the time periods that you can specify for each aggregation type, see Aggregation and Time. You can set the time zone within the ReportTime object, which helps you accurately scope data for the requested time period. If you do not choose a time zone, the Reporting service uses PacificTimeUSCanadaTijuana by default." ;
    sh:node microsoftads:ReportingReportTimeShape ;
    sh:class microsoftads:ReportingReportTime ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingFeedItemPerformanceReportRequest/aggregation> ;
    sh:name "aggregation" ;
    sh:description "The type of aggregation to use to aggregate the report data. For example, you can aggregate the report data by day or week, or request a summary report. The default aggregation is Summary. It is important to note that if you do not include TimePeriod in the list of Columns, the aggregation you chose will be ignored and Summary aggregation will be used regardless." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Summary" "Hourly" "Daily" "Weekly" "Monthly" "Yearly" "HourOfDay" "DayOfWeek" "WeeklyStartingMonday" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingFeedItemPerformanceReportRequest/columns> ;
    sh:name "columns" ;
    sh:description "The list of attributes and performance statistics to include in the report. The report will include the columns in the order that you specify them." ;
    sh:datatype xsd:string ;
    sh:in ( "TimePeriod" "AccountId" "AccountName" "AccountNumber" "CampaignId" "CampaignName" "AdGroupId" "AdId" "FeedId" "FeedItemId" "Impressions" "Clicks" "Spend" "Ctr" "AverageCpc" "AveragePosition" "Conversions" "Assists" "Revenue" "ExtendedCost" "ConversionsQualified" "ConversionRate" "CostPerConversion" "ReturnOnAdSpend" "CostPerAssist" "RevenuePerConversion" "RevenuePerAssist" "AllConversions" "AllConversionsQualified" "AllRevenue" "AllCostPerConversion" "AllConversionRate" "AllRevenuePerConversion" "AllReturnOnAdSpend" "ViewThroughConversions" "ViewThroughConversionsQualified" "ViewThroughRevenue" "ViewThroughConversionRate" "MarketingObjective" "Channel" "SubChannel" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingFeedItemPerformanceReportRequest/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Geographic Performance Report Filter
microsoftads:ReportingGeographicPerformanceReportFilterShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingGeographicPerformanceReportFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingGeographicPerformanceReportFilter/adDistribution> ;
    sh:name "ad distribution" ;
    sh:description "The report will include data for only the specified distribution medium. For example, you can use the filter to include data for only search ads. You can specify one or more distribution mediums." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingGeographicPerformanceReportFilter/countryCode> ;
    sh:name "country code" ;
    sh:description "The report will include data for only the specified countries/regions where the user that clicked the ad is located. For a list of possible values, see Geographical Location Codes." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingGeographicPerformanceReportFilter/language> ;
    sh:name "language" ;
    sh:description "The report will include data for only websites that used the specified languages. You can specify one or more languages." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingGeographicPerformanceReportFilter/accountStatus> ;
    sh:name "account status" ;
    sh:description "The report will include data for only the account status. For example, you can use the filter to include data for only active accounts. You can specify one or more account statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingGeographicPerformanceReportFilter/campaignStatus> ;
    sh:name "campaign status" ;
    sh:description "The report will include data for only the campaign status. For example, you can use the filter to include data for only active campaigns. You can specify one or more campaign statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingGeographicPerformanceReportFilter/adGroupStatus> ;
    sh:name "ad group status" ;
    sh:description "The report will include data for only the ad group status. For example, you can use the filter to include data for only active ad groups. You can specify one or more ad group statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingGeographicPerformanceReportFilter/assetGroupStatus> ;
    sh:name "asset group status" ;
    sh:description "The report will include data for only the asset group status. For example, you can use the filter to include data for only active asset groups. You can specify one or more asset group statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Geographic Performance Report Request
microsoftads:ReportingGeographicPerformanceReportRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingGeographicPerformanceReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingGeographicPerformanceReportRequest/reportName> ;
    sh:name "report name" ;
    sh:description "The name of the report. The name is included in the report header. If you do not specify a report name, the system generates a name in the form, ReportType-ReportDateTime. The maximum length of the report name is 200." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingGeographicPerformanceReportRequest/format> ;
    sh:name "format" ;
    sh:description "The format of the report data. For example, you can request the data in comma-separated values (Csv) format or tab-separated values (Tsv) format. The default value is Csv. All downloaded files are ZIP compressed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Csv" "Tsv" "Xml" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingGeographicPerformanceReportRequest/returnOnlyCompleteData> ;
    sh:name "return only complete data" ;
    sh:description "Determines whether or not the service must ensure that all the data has been processed and is available. If set to true and if the system has not finished processing all the data based on the requested Aggregation, Scope, and Time, the service returns error code NoCompleteDataAvaliable (2004). Otherwise by default the request can succeed, there is no indication as to whether the data is complete, and the report will contain only the data that the system has finished processing at the time of the request. Please note that because today is still in progress and data is not complete, you cannot set this element to true if the Time period (whether custom or predefined date) includes today's date. For more information, see Time Zones in Reporting." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingGeographicPerformanceReportRequest/excludeReportHeader> ;
    sh:name "exclude report header" ;
    sh:description "Determines whether or not the downloaded report should contain header metadata such as report name, date range, and aggregation. Set this property true if you want the report header metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingGeographicPerformanceReportRequest/excludeReportFooter> ;
    sh:name "exclude report footer" ;
    sh:description "Determines whether or not the downloaded report should contain footer metadata such as Microsoft copyright (`@2020` Microsoft Corporation. All rights reserved.). Set this property true if you want the report footer metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingGeographicPerformanceReportRequest/excludeColumnHeaders> ;
    sh:name "exclude column headers" ;
    sh:description "Determines whether or not the downloaded report should contain header descriptions for each column. The report column header matches the requested column name e.g. Impressions and Clicks. Set this property true if you want the report column headers excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingGeographicPerformanceReportRequest/formatVersion> ;
    sh:name "format version" ;
    sh:description "Determines the format for certain fields in the downloaded report file. The data format for certain fields can be updated within the current API version without breaking existing client applications. You can get the latest data format by setting this optional request field to 2.0. If you do not set this field, the service defaults to version 1.0. For details about changes between format versions, see Report Format Version." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingGeographicPerformanceReportRequest/scope> ;
    sh:name "scope" ;
    sh:description "The entity scope of the report. Use this element to limit the report data to specific accounts, ad groups, or campaigns." ;
    sh:node microsoftads:ReportingAccountThroughAdGroupReportScopeShape ;
    sh:class microsoftads:ReportingAccountThroughAdGroupReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingGeographicPerformanceReportRequest/filter> ;
    sh:name "filter" ;
    sh:description "The filter information to use to filter the report data." ;
    sh:node microsoftads:ReportingGeographicPerformanceReportFilterShape ;
    sh:class microsoftads:ReportingGeographicPerformanceReportFilter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingGeographicPerformanceReportRequest/time> ;
    sh:name "time" ;
    sh:description "The time period to use for the report. You can specify a custom date range or select a predefined date range, for example, Today or ThisWeek. For a list of the time periods that you can specify for each aggregation type, see Aggregation and Time. You can set the time zone within the ReportTime object, which helps you accurately scope data for the requested time period. If you do not choose a time zone, the Reporting service uses PacificTimeUSCanadaTijuana by default." ;
    sh:node microsoftads:ReportingReportTimeShape ;
    sh:class microsoftads:ReportingReportTime ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingGeographicPerformanceReportRequest/aggregation> ;
    sh:name "aggregation" ;
    sh:description "The type of aggregation to use to aggregate the report data. For example, you can aggregate the report data by day or week, or request a summary report. The default aggregation is Summary. It is important to note that if you do not include TimePeriod in the list of Columns, the aggregation you chose will be ignored and Summary aggregation will be used regardless." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Summary" "Hourly" "Daily" "Weekly" "Monthly" "Yearly" "HourOfDay" "DayOfWeek" "WeeklyStartingMonday" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingGeographicPerformanceReportRequest/columns> ;
    sh:name "columns" ;
    sh:description "The list of attributes and performance statistics to include in the report. The report will include the columns in the order that you specify them." ;
    sh:datatype xsd:string ;
    sh:in ( "AccountName" "AccountNumber" "AccountId" "TimePeriod" "CampaignName" "CampaignId" "AdGroupName" "AdGroupId" "Country" "State" "MetroArea" "City" "CurrencyCode" "AdDistribution" "Impressions" "Clicks" "Ctr" "AverageCpc" "Spend" "AveragePosition" "ProximityTargetLocation" "Radius" "Language" "BidMatchType" "DeliveredMatchType" "Network" "TopVsOther" "DeviceType" "DeviceOS" "Assists" "Conversions" "ConversionRate" "Revenue" "ReturnOnAdSpend" "CostPerConversion" "CostPerAssist" "RevenuePerConversion" "RevenuePerAssist" "LocationType" "MostSpecificLocation" "AccountStatus" "CampaignStatus" "AdGroupStatus" "County" "PostalCode" "LocationId" "BaseCampaignId" "AllConversions" "AllRevenue" "AllConversionRate" "AllCostPerConversion" "AllReturnOnAdSpend" "AllRevenuePerConversion" "ViewThroughConversions" "Goal" "GoalType" "AbsoluteTopImpressionRatePercent" "TopImpressionRatePercent" "AverageCpm" "ConversionsQualified" "AllConversionsQualified" "ViewThroughConversionsQualified" "Neighborhood" "ViewThroughRevenue" "CampaignType" "AssetGroupId" "AssetGroupName" "AssetGroupStatus" "Downloads" "PostClickDownloadRate" "CostPerDownload" "AppInstalls" "PostClickInstallRate" "CPI" "Purchases" "PostInstallPurchaseRate" "CPP" "Subscriptions" "PostInstallSubscriptionRate" "CPS" "MarketingObjective" "Channel" "SubChannel" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingGeographicPerformanceReportRequest/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Goals And Funnels Report Filter
microsoftads:ReportingGoalsAndFunnelsReportFilterShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingGoalsAndFunnelsReportFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingGoalsAndFunnelsReportFilter/goalIds> ;
    sh:name "goal ids" ;
    sh:description "The report will include data for only the specified goals. The list can contain a maximum of 300 identifiers." ;
    sh:datatype xsd:long ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingGoalsAndFunnelsReportFilter/adDistribution> ;
    sh:name "ad distribution" ;
    sh:description "The report will include data for only the specified distribution medium. For example, you can use the filter to include data for only search ads. You can specify one or more distribution mediums." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingGoalsAndFunnelsReportFilter/deviceType> ;
    sh:name "device type" ;
    sh:description "The report will include data where the ad is displayed on the specified device types. For example, you may use the filter to include data for only ads displayed on smartphones. You may specify one or more device types." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingGoalsAndFunnelsReportFilter/deviceOS> ;
    sh:name "device os" ;
    sh:description "The report will include data where the ad is displayed on the specified device operating systems. For example, you may use the filter to include data for only ads displayed on Windows devices." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingGoalsAndFunnelsReportFilter/accountStatus> ;
    sh:name "account status" ;
    sh:description "The report will include data for only the account status. For example, you can use the filter to include data for only active accounts. You can specify one or more account statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingGoalsAndFunnelsReportFilter/campaignStatus> ;
    sh:name "campaign status" ;
    sh:description "The report will include data for only the campaign status. For example, you can use the filter to include data for only active campaigns. You can specify one or more campaign statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingGoalsAndFunnelsReportFilter/adGroupStatus> ;
    sh:name "ad group status" ;
    sh:description "The report will include data for only the ad group status. For example, you can use the filter to include data for only active ad groups. You can specify one or more ad group statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingGoalsAndFunnelsReportFilter/keywordStatus> ;
    sh:name "keyword status" ;
    sh:description "The report will include data for only the keyword status. For example, you can use the filter to include data for only active keywords. You can specify one or more keyword statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingGoalsAndFunnelsReportFilter/assetGroupStatus> ;
    sh:name "asset group status" ;
    sh:description "The report will include data for only the asset group status. For example, you can use the filter to include data for only active asset groups. You can specify one or more asset group statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Goals And Funnels Report Request
microsoftads:ReportingGoalsAndFunnelsReportRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingGoalsAndFunnelsReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingGoalsAndFunnelsReportRequest/reportName> ;
    sh:name "report name" ;
    sh:description "The name of the report. The name is included in the report header. If you do not specify a report name, the system generates a name in the form, ReportType-ReportDateTime. The maximum length of the report name is 200." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingGoalsAndFunnelsReportRequest/format> ;
    sh:name "format" ;
    sh:description "The format of the report data. For example, you can request the data in comma-separated values (Csv) format or tab-separated values (Tsv) format. The default value is Csv. All downloaded files are ZIP compressed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Csv" "Tsv" "Xml" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingGoalsAndFunnelsReportRequest/returnOnlyCompleteData> ;
    sh:name "return only complete data" ;
    sh:description "Determines whether or not the service must ensure that all the data has been processed and is available. If set to true and if the system has not finished processing all the data based on the requested Aggregation, Scope, and Time, the service returns error code NoCompleteDataAvaliable (2004). Otherwise by default the request can succeed, there is no indication as to whether the data is complete, and the report will contain only the data that the system has finished processing at the time of the request. Please note that because today is still in progress and data is not complete, you cannot set this element to true if the Time period (whether custom or predefined date) includes today's date. For more information, see Time Zones in Reporting." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingGoalsAndFunnelsReportRequest/excludeReportHeader> ;
    sh:name "exclude report header" ;
    sh:description "Determines whether or not the downloaded report should contain header metadata such as report name, date range, and aggregation. Set this property true if you want the report header metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingGoalsAndFunnelsReportRequest/excludeReportFooter> ;
    sh:name "exclude report footer" ;
    sh:description "Determines whether or not the downloaded report should contain footer metadata such as Microsoft copyright (`@2020` Microsoft Corporation. All rights reserved.). Set this property true if you want the report footer metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingGoalsAndFunnelsReportRequest/excludeColumnHeaders> ;
    sh:name "exclude column headers" ;
    sh:description "Determines whether or not the downloaded report should contain header descriptions for each column. The report column header matches the requested column name e.g. Impressions and Clicks. Set this property true if you want the report column headers excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingGoalsAndFunnelsReportRequest/formatVersion> ;
    sh:name "format version" ;
    sh:description "Determines the format for certain fields in the downloaded report file. The data format for certain fields can be updated within the current API version without breaking existing client applications. You can get the latest data format by setting this optional request field to 2.0. If you do not set this field, the service defaults to version 1.0. For details about changes between format versions, see Report Format Version." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingGoalsAndFunnelsReportRequest/scope> ;
    sh:name "scope" ;
    sh:description "The scope of the report. For example, you can limit the report to include data for a combination of accounts, ad groups, and campaigns." ;
    sh:node microsoftads:ReportingAccountThroughAdGroupReportScopeShape ;
    sh:class microsoftads:ReportingAccountThroughAdGroupReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingGoalsAndFunnelsReportRequest/filter> ;
    sh:name "filter" ;
    sh:description "The filter information to use to filter the report data. The Filter element is not supported at this time." ;
    sh:node microsoftads:ReportingGoalsAndFunnelsReportFilterShape ;
    sh:class microsoftads:ReportingGoalsAndFunnelsReportFilter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingGoalsAndFunnelsReportRequest/time> ;
    sh:name "time" ;
    sh:description "The time period to use for the report. You can specify a custom date range or select a predefined date range, for example, Today or ThisWeek. For a list of the time periods that you can specify for each aggregation type, see Aggregation and Time. You can set the time zone within the ReportTime object, which helps you accurately scope data for the requested time period. If you do not choose a time zone, the Reporting service uses PacificTimeUSCanadaTijuana by default." ;
    sh:node microsoftads:ReportingReportTimeShape ;
    sh:class microsoftads:ReportingReportTime ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingGoalsAndFunnelsReportRequest/aggregation> ;
    sh:name "aggregation" ;
    sh:description "The type of aggregation to use to aggregate the report data. For example, you can aggregate the report data by day or week, or request a summary report. The default aggregation is Summary. It is important to note that if you do not include TimePeriod in the list of Columns, the aggregation you chose will be ignored and Summary aggregation will be used regardless." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Summary" "Hourly" "Daily" "Weekly" "Monthly" "Yearly" "HourOfDay" "DayOfWeek" "WeeklyStartingMonday" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingGoalsAndFunnelsReportRequest/columns> ;
    sh:name "columns" ;
    sh:description "The list of attributes and performance statistics to include in the report. The report will include the columns in the order that you specify them." ;
    sh:datatype xsd:string ;
    sh:in ( "AccountName" "AccountNumber" "AccountId" "TimePeriod" "CampaignName" "CampaignId" "AdGroupName" "AdGroupId" "Keyword" "KeywordId" "Goal" "AllConversions" "Assists" "AllRevenue" "GoalId" "DeviceType" "DeviceOS" "AccountStatus" "CampaignStatus" "AdGroupStatus" "KeywordStatus" "GoalType" "ViewThroughConversions" "AllConversionsQualified" "ViewThroughConversionsQualified" "ViewThroughRevenue" "CampaignType" "AssetGroupId" "AssetGroupName" "AssetGroupStatus" "ConversionDelay" "MarketingObjective" "Channel" "SubChannel" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingGoalsAndFunnelsReportRequest/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Hotel Dimension Performance Report Filter
microsoftads:ReportingHotelDimensionPerformanceReportFilterShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingHotelDimensionPerformanceReportFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingHotelDimensionPerformanceReportFilter/deviceType> ;
    sh:name "device type" ;
    sh:description "The report will include data for only the specified types of devices on which the ad is displayed. For example, you can use the filter to include data for only ads displayed on computers. You can specify one or more device types." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingHotelDimensionPerformanceReportFilter/accountStatus> ;
    sh:name "account status" ;
    sh:description "The report will include data for only the account status. For example, you can use the filter to include data for only active accounts. You can specify one or more account statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingHotelDimensionPerformanceReportFilter/campaignStatus> ;
    sh:name "campaign status" ;
    sh:description "The report will include data for only the campaign status. For example, you can use the filter to include data for only active campaigns. You can specify one or more campaign statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingHotelDimensionPerformanceReportFilter/adGroupStatus> ;
    sh:name "ad group status" ;
    sh:description "The report will include data for only the ad group status. For example, you can use the filter to include data for only active ad groups. You can specify one or more ad group statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Hotel Dimension Performance Report Request
microsoftads:ReportingHotelDimensionPerformanceReportRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingHotelDimensionPerformanceReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingHotelDimensionPerformanceReportRequest/reportName> ;
    sh:name "report name" ;
    sh:description "The name of the report. The name is included in the report header. If you do not specify a report name, the system generates a name in the form, ReportType-ReportDateTime. The maximum length of the report name is 200." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingHotelDimensionPerformanceReportRequest/format> ;
    sh:name "format" ;
    sh:description "The format of the report data. For example, you can request the data in comma-separated values (Csv) format or tab-separated values (Tsv) format. The default value is Csv. All downloaded files are ZIP compressed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Csv" "Tsv" "Xml" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingHotelDimensionPerformanceReportRequest/returnOnlyCompleteData> ;
    sh:name "return only complete data" ;
    sh:description "Determines whether or not the service must ensure that all the data has been processed and is available. If set to true and if the system has not finished processing all the data based on the requested Aggregation, Scope, and Time, the service returns error code NoCompleteDataAvaliable (2004). Otherwise by default the request can succeed, there is no indication as to whether the data is complete, and the report will contain only the data that the system has finished processing at the time of the request. Please note that because today is still in progress and data is not complete, you cannot set this element to true if the Time period (whether custom or predefined date) includes today's date. For more information, see Time Zones in Reporting." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingHotelDimensionPerformanceReportRequest/excludeReportHeader> ;
    sh:name "exclude report header" ;
    sh:description "Determines whether or not the downloaded report should contain header metadata such as report name, date range, and aggregation. Set this property true if you want the report header metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingHotelDimensionPerformanceReportRequest/excludeReportFooter> ;
    sh:name "exclude report footer" ;
    sh:description "Determines whether or not the downloaded report should contain footer metadata such as Microsoft copyright (`@2020` Microsoft Corporation. All rights reserved.). Set this property true if you want the report footer metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingHotelDimensionPerformanceReportRequest/excludeColumnHeaders> ;
    sh:name "exclude column headers" ;
    sh:description "Determines whether or not the downloaded report should contain header descriptions for each column. The report column header matches the requested column name e.g. Impressions and Clicks. Set this property true if you want the report column headers excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingHotelDimensionPerformanceReportRequest/formatVersion> ;
    sh:name "format version" ;
    sh:description "Determines the format for certain fields in the downloaded report file. The data format for certain fields can be updated within the current API version without breaking existing client applications. You can get the latest data format by setting this optional request field to 2.0. If you do not set this field, the service defaults to version 1.0. For details about changes between format versions, see Report Format Version." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingHotelDimensionPerformanceReportRequest/scope> ;
    sh:name "scope" ;
    sh:description "The entity scope of the report. Use this element to limit the report data to specific accounts." ;
    sh:node microsoftads:ReportingAccountThroughAdGroupReportScopeShape ;
    sh:class microsoftads:ReportingAccountThroughAdGroupReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingHotelDimensionPerformanceReportRequest/filter> ;
    sh:name "filter" ;
    sh:description "The filter information to use to filter the report data." ;
    sh:node microsoftads:ReportingHotelDimensionPerformanceReportFilterShape ;
    sh:class microsoftads:ReportingHotelDimensionPerformanceReportFilter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingHotelDimensionPerformanceReportRequest/time> ;
    sh:name "time" ;
    sh:description "The time period to use for the report. You can specify a custom date range or select a predefined date range, for example, Today or ThisWeek. For a list of the time periods that you can specify for each aggregation type, see Aggregation and Time. You can set the time zone within the ReportTime object, which helps you accurately scope data for the requested time period. If you do not choose a time zone, the Reporting service uses PacificTimeUSCanadaTijuana by default." ;
    sh:node microsoftads:ReportingReportTimeShape ;
    sh:class microsoftads:ReportingReportTime ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingHotelDimensionPerformanceReportRequest/aggregation> ;
    sh:name "aggregation" ;
    sh:description "The type of aggregation to use to aggregate the report data. For example, you can aggregate the report data by day or week, or request a summary report. The default aggregation is Summary. It is important to note that if you do not include TimePeriod in the list of Columns, the aggregation you chose will be ignored and Summary aggregation will be used regardless." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Summary" "Hourly" "Daily" "Weekly" "Monthly" "Yearly" "HourOfDay" "DayOfWeek" "WeeklyStartingMonday" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingHotelDimensionPerformanceReportRequest/columns> ;
    sh:name "columns" ;
    sh:description "The list of attributes and performance statistics to include in the report. The report will include the columns in the order that you specify them." ;
    sh:datatype xsd:string ;
    sh:in ( "TimePeriod" "CustomerId" "CustomerName" "AccountName" "AccountId" "CampaignName" "CampaignId" "AdGroupId" "AdGroupName" "AdId" "AccountStatus" "CampaignStatus" "AdGroupStatus" "SourceHotelId" "CampaignHotelId" "AdvertiserHotelId" "HotelName" "CountryName" "State" "City" "Brand" "Category" "StarRating" "CustomLabel0" "CustomLabel1" "CustomLabel2" "CustomLabel3" "CustomLabel4" "BidStrategyType" "DeviceType" "CurrencyCode" "CustomParameters" "FinalUrlSuffix" "Impressions" "Clicks" "Ctr" "Spend" "AverageCpc" "AverageCpm" "Conversions" "Revenue" "NetRevenue" "GrossReturnOnAdSpend" "NetReturnOnAdSpend" "CostPerAssist" "BookedLengthOfStay" "AvgBookedABW" "AvgBookedNights" "BookedABW" "CheckInDate" "DateType" "PartnerImpressions" "EligibleImpressions" "MissedImpressions" "ImpressionShare" "MissedImpressionsNoBid" "MissedImpressionsSpendingCapReached" "MissedImpressionsNoTax" "MissedImpressionsOther" "CheckInDateDayOfWeek" "LengthOfStay" "AdvancedBookingWindow" "SiteType" "UserCountry" "ClickShare" "MissedImpressionsInsufficientBid" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingHotelDimensionPerformanceReportRequest/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Hotel Group Performance Report Filter
microsoftads:ReportingHotelGroupPerformanceReportFilterShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingHotelGroupPerformanceReportFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingHotelGroupPerformanceReportFilter/deviceType> ;
    sh:name "device type" ;
    sh:description "The report will include data for only the specified types of devices on which the ad is displayed. For example, you can use the filter to include data for only ads displayed on computers. You can specify one or more device types." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingHotelGroupPerformanceReportFilter/accountStatus> ;
    sh:name "account status" ;
    sh:description "The report will include data for only the account status. For example, you can use the filter to include data for only active accounts. You can specify one or more account statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingHotelGroupPerformanceReportFilter/campaignStatus> ;
    sh:name "campaign status" ;
    sh:description "The report will include data for only the campaign status. For example, you can use the filter to include data for only active campaigns. You can specify one or more campaign statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingHotelGroupPerformanceReportFilter/adGroupStatus> ;
    sh:name "ad group status" ;
    sh:description "The report will include data for only the ad group status. For example, you can use the filter to include data for only active ad groups. You can specify one or more ad group statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Hotel Group Performance Report Request
microsoftads:ReportingHotelGroupPerformanceReportRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingHotelGroupPerformanceReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingHotelGroupPerformanceReportRequest/reportName> ;
    sh:name "report name" ;
    sh:description "The name of the report. The name is included in the report header. If you do not specify a report name, the system generates a name in the form, ReportType-ReportDateTime. The maximum length of the report name is 200." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingHotelGroupPerformanceReportRequest/format> ;
    sh:name "format" ;
    sh:description "The format of the report data. For example, you can request the data in comma-separated values (Csv) format or tab-separated values (Tsv) format. The default value is Csv. All downloaded files are ZIP compressed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Csv" "Tsv" "Xml" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingHotelGroupPerformanceReportRequest/returnOnlyCompleteData> ;
    sh:name "return only complete data" ;
    sh:description "Determines whether or not the service must ensure that all the data has been processed and is available. If set to true and if the system has not finished processing all the data based on the requested Aggregation, Scope, and Time, the service returns error code NoCompleteDataAvaliable (2004). Otherwise by default the request can succeed, there is no indication as to whether the data is complete, and the report will contain only the data that the system has finished processing at the time of the request. Please note that because today is still in progress and data is not complete, you cannot set this element to true if the Time period (whether custom or predefined date) includes today's date. For more information, see Time Zones in Reporting." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingHotelGroupPerformanceReportRequest/excludeReportHeader> ;
    sh:name "exclude report header" ;
    sh:description "Determines whether or not the downloaded report should contain header metadata such as report name, date range, and aggregation. Set this property true if you want the report header metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingHotelGroupPerformanceReportRequest/excludeReportFooter> ;
    sh:name "exclude report footer" ;
    sh:description "Determines whether or not the downloaded report should contain footer metadata such as Microsoft copyright (`@2020` Microsoft Corporation. All rights reserved.). Set this property true if you want the report footer metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingHotelGroupPerformanceReportRequest/excludeColumnHeaders> ;
    sh:name "exclude column headers" ;
    sh:description "Determines whether or not the downloaded report should contain header descriptions for each column. The report column header matches the requested column name e.g. Impressions and Clicks. Set this property true if you want the report column headers excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingHotelGroupPerformanceReportRequest/formatVersion> ;
    sh:name "format version" ;
    sh:description "Determines the format for certain fields in the downloaded report file. The data format for certain fields can be updated within the current API version without breaking existing client applications. You can get the latest data format by setting this optional request field to 2.0. If you do not set this field, the service defaults to version 1.0. For details about changes between format versions, see Report Format Version." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingHotelGroupPerformanceReportRequest/scope> ;
    sh:name "scope" ;
    sh:description "The entity scope of the report. Use this element to limit the report data to specific accounts." ;
    sh:node microsoftads:ReportingAccountThroughAdGroupReportScopeShape ;
    sh:class microsoftads:ReportingAccountThroughAdGroupReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingHotelGroupPerformanceReportRequest/filter> ;
    sh:name "filter" ;
    sh:description "The filter information to use to filter the report data." ;
    sh:node microsoftads:ReportingHotelGroupPerformanceReportFilterShape ;
    sh:class microsoftads:ReportingHotelGroupPerformanceReportFilter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingHotelGroupPerformanceReportRequest/time> ;
    sh:name "time" ;
    sh:description "The time period to use for the report. You can specify a custom date range or select a predefined date range, for example, Today or ThisWeek. For a list of the time periods that you can specify for each aggregation type, see Aggregation and Time. You can set the time zone within the ReportTime object, which helps you accurately scope data for the requested time period. If you do not choose a time zone, the Reporting service uses PacificTimeUSCanadaTijuana by default." ;
    sh:node microsoftads:ReportingReportTimeShape ;
    sh:class microsoftads:ReportingReportTime ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingHotelGroupPerformanceReportRequest/aggregation> ;
    sh:name "aggregation" ;
    sh:description "The type of aggregation to use to aggregate the report data. For example, you can aggregate the report data by day or week, or request a summary report. The default aggregation is Summary. It is important to note that if you do not include TimePeriod in the list of Columns, the aggregation you chose will be ignored and Summary aggregation will be used regardless." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Summary" "Hourly" "Daily" "Weekly" "Monthly" "Yearly" "HourOfDay" "DayOfWeek" "WeeklyStartingMonday" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingHotelGroupPerformanceReportRequest/columns> ;
    sh:name "columns" ;
    sh:description "The list of attributes and performance statistics to include in the report. The report will include the columns in the order that you specify them." ;
    sh:datatype xsd:string ;
    sh:in ( "TimePeriod" "CustomerId" "CustomerName" "AccountName" "AccountId" "CampaignName" "CampaignId" "AdGroupId" "AdGroupName" "AdId" "AccountStatus" "CampaignStatus" "AdGroupStatus" "HotelGroup" "HotelGroupNodeId" "PartitionType" "BidStrategyType" "DeviceType" "CurrencyCode" "CustomParameters" "FinalUrlSuffix" "Impressions" "Clicks" "Ctr" "Spend" "AverageCpc" "AverageCpm" "Conversions" "Revenue" "NetRevenue" "GrossReturnOnAdSpend" "NetReturnOnAdSpend" "CostPerAssist" "BookedLengthOfStay" "AvgBookedABW" "AvgBookedNights" "BookedABW" "CheckInDate" "DateType" "PartnerImpressions" "EligibleImpressions" "MissedImpressions" "ImpressionShare" "MissedImpressionsNoBid" "MissedImpressionsSpendingCapReached" "MissedImpressionsNoTax" "MissedImpressionsOther" "ClickShare" "MissedImpressionsInsufficientBid" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingHotelGroupPerformanceReportRequest/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Keyword Performance Report Filter
microsoftads:ReportingKeywordPerformanceReportFilterShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingKeywordPerformanceReportFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingKeywordPerformanceReportFilter/adDistribution> ;
    sh:name "ad distribution" ;
    sh:description "The report will include data for only the specified distribution medium. For example, you can use the filter to include data for only search ads. You can specify one or more distribution mediums." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingKeywordPerformanceReportFilter/deliveredMatchType> ;
    sh:name "delivered match type" ;
    sh:description "The report will include data for only the specified delivered match types. For example, you can use the filter to include data for ads that were delivered using the exact or phrase match type. You can specify one or more delivered match types. To filter on bid match types, see the BidMatchType element." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingKeywordPerformanceReportFilter/keywords> ;
    sh:name "keywords" ;
    sh:description "The report will include data for only the specified keywords. You can specify a maximum of 75 keywords. Each keyword can contain a maximum of 100 characters." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingKeywordPerformanceReportFilter/adType> ;
    sh:name "ad type" ;
    sh:description "The report will include data for only the specified ad types. For example, the report can include data for product or expanded text ads. You can specify one or more ad types." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingKeywordPerformanceReportFilter/bidMatchType> ;
    sh:name "bid match type" ;
    sh:description "The report will include data for only the specified bid match types. For example, you can use the filter to include data for ads that were bid on using the exact or phrase match type. You can specify one or more bid match types. To filter on delivered match types, see the DeliveredMatchType element." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingKeywordPerformanceReportFilter/deviceType> ;
    sh:name "device type" ;
    sh:description "The report will include data for only the specified types of devices on which the ad is displayed. For example, you can use the filter to include data for only text ads displayed on smartphones. You can specify one or more device types." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingKeywordPerformanceReportFilter/language> ;
    sh:name "language" ;
    sh:description "The report will include data for only websites that used the specified languages. You can specify one or more languages." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingKeywordPerformanceReportFilter/qualityScore> ;
    sh:name "quality score" ;
    sh:description "The report will include data for only keywords with the specified quality scores. You can filter the report based on one or more of the following relevance values: 0 - N/A (as shown in the web application) 1 - Underperforming 2 - Underperforming 3 - Underperforming 4 - Underperforming 5 - Underperforming 6 - Average performance 7 - Competitive 8 - Competitive 9 - Competitive 10 - Competitive" ;
    sh:datatype xsd:int ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingKeywordPerformanceReportFilter/expectedCtr> ;
    sh:name "expected ctr" ;
    sh:description "How well your keyword competes against other keywords targeting the same traffic. Ads that are relevant to searchers' queries or other input are more likely to have a higher click-through rate. This metric tells you if a keyword is underperforming and causing a loss in impression share, so you can make keyword changes or remove ads altogether. A score of 3 is Above Average; a score of 2 is Average; and a score of 1 is considered Below Average. If you specify a time period that spans multiple days, the score will be the same for each day in the time period, and the value is the most recent calculated score. Data for this column is typically updated 14-18 hours after the UTC day ends." ;
    sh:datatype xsd:int ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingKeywordPerformanceReportFilter/adRelevance> ;
    sh:name "ad relevance" ;
    sh:description "How closely related your ads is to the customer's search query or other input. It tells you how relevant your ad and landing page are to potential customers. A score of 3 is Above Average; a score of 2 is Average; and a score of 1 is considered Below Average. If you specify a time period that spans multiple days, the score will be the same for each day in the time period, and the value is the most recent calculated score. Data for this column is typically updated 14-18 hours after the UTC day ends." ;
    sh:datatype xsd:int ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingKeywordPerformanceReportFilter/landingPageExperience> ;
    sh:name "landing page experience" ;
    sh:description "An aggregate quality assessment of all landing pages on your site. The landing page experience score measures whether your landing page is likely to provide a good experience to customers who click your ad and land on your website. A score of 3 is Above Average; a score of 2 is Average; and a score of 1 is considered Below Average. If you specify a time period that spans multiple days, the score will be the same for each day in the time period, and the value is the most recent calculated score. Data for this column is typically updated 14-18 hours after the UTC day ends." ;
    sh:datatype xsd:int ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingKeywordPerformanceReportFilter/accountStatus> ;
    sh:name "account status" ;
    sh:description "The report will include data for only the account status. For example, you can use the filter to include data for only active accounts. You can specify one or more account statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingKeywordPerformanceReportFilter/campaignStatus> ;
    sh:name "campaign status" ;
    sh:description "The report will include data for only the campaign status. For example, you can use the filter to include data for only active campaigns. You can specify one or more campaign statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingKeywordPerformanceReportFilter/adGroupStatus> ;
    sh:name "ad group status" ;
    sh:description "The report will include data for only the ad group status. For example, you can use the filter to include data for only active ad groups. You can specify one or more ad group statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingKeywordPerformanceReportFilter/keywordStatus> ;
    sh:name "keyword status" ;
    sh:description "The report will include data for only the keyword status. For example, you can use the filter to include data for only active keywords. You can specify one or more keyword statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingKeywordPerformanceReportFilter/bidStrategyType> ;
    sh:name "bid strategy type" ;
    sh:description "The report will include data for only the specified bid strategy type or types. For example, you can use the filter to include data only for keywords that were bid on using the enhanced bid strategy type. You can specify one or more bid strategy types." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Keyword Performance Report Request
microsoftads:ReportingKeywordPerformanceReportRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingKeywordPerformanceReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingKeywordPerformanceReportRequest/reportName> ;
    sh:name "report name" ;
    sh:description "The name of the report. The name is included in the report header. If you do not specify a report name, the system generates a name in the form, ReportType-ReportDateTime. The maximum length of the report name is 200." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingKeywordPerformanceReportRequest/format> ;
    sh:name "format" ;
    sh:description "The format of the report data. For example, you can request the data in comma-separated values (Csv) format or tab-separated values (Tsv) format. The default value is Csv. All downloaded files are ZIP compressed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Csv" "Tsv" "Xml" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingKeywordPerformanceReportRequest/returnOnlyCompleteData> ;
    sh:name "return only complete data" ;
    sh:description "Determines whether or not the service must ensure that all the data has been processed and is available. If set to true and if the system has not finished processing all the data based on the requested Aggregation, Scope, and Time, the service returns error code NoCompleteDataAvaliable (2004). Otherwise by default the request can succeed, there is no indication as to whether the data is complete, and the report will contain only the data that the system has finished processing at the time of the request. Please note that because today is still in progress and data is not complete, you cannot set this element to true if the Time period (whether custom or predefined date) includes today's date. For more information, see Time Zones in Reporting." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingKeywordPerformanceReportRequest/excludeReportHeader> ;
    sh:name "exclude report header" ;
    sh:description "Determines whether or not the downloaded report should contain header metadata such as report name, date range, and aggregation. Set this property true if you want the report header metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingKeywordPerformanceReportRequest/excludeReportFooter> ;
    sh:name "exclude report footer" ;
    sh:description "Determines whether or not the downloaded report should contain footer metadata such as Microsoft copyright (`@2020` Microsoft Corporation. All rights reserved.). Set this property true if you want the report footer metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingKeywordPerformanceReportRequest/excludeColumnHeaders> ;
    sh:name "exclude column headers" ;
    sh:description "Determines whether or not the downloaded report should contain header descriptions for each column. The report column header matches the requested column name e.g. Impressions and Clicks. Set this property true if you want the report column headers excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingKeywordPerformanceReportRequest/formatVersion> ;
    sh:name "format version" ;
    sh:description "Determines the format for certain fields in the downloaded report file. The data format for certain fields can be updated within the current API version without breaking existing client applications. You can get the latest data format by setting this optional request field to 2.0. If you do not set this field, the service defaults to version 1.0. For details about changes between format versions, see Report Format Version." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingKeywordPerformanceReportRequest/scope> ;
    sh:name "scope" ;
    sh:description "The entity scope of the report. Use this element to limit the report data to specific accounts, ad groups, or campaigns." ;
    sh:node microsoftads:ReportingAccountThroughAdGroupReportScopeShape ;
    sh:class microsoftads:ReportingAccountThroughAdGroupReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingKeywordPerformanceReportRequest/filter> ;
    sh:name "filter" ;
    sh:description "The filter information to use to filter the report data." ;
    sh:node microsoftads:ReportingKeywordPerformanceReportFilterShape ;
    sh:class microsoftads:ReportingKeywordPerformanceReportFilter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingKeywordPerformanceReportRequest/time> ;
    sh:name "time" ;
    sh:description "The time period to use for the report. You can specify a custom date range or select a predefined date range, for example, Today or ThisWeek. For a list of the time periods that you can specify for each aggregation type, see Aggregation and Time. You can set the time zone within the ReportTime object, which helps you accurately scope data for the requested time period. If you do not choose a time zone, the Reporting service uses PacificTimeUSCanadaTijuana by default." ;
    sh:node microsoftads:ReportingReportTimeShape ;
    sh:class microsoftads:ReportingReportTime ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingKeywordPerformanceReportRequest/aggregation> ;
    sh:name "aggregation" ;
    sh:description "The type of aggregation to use to aggregate the report data. For example, you can aggregate the report data by day or week, or request a summary report. The default aggregation is Summary. It is important to note that if you do not include TimePeriod in the list of Columns, the aggregation you chose will be ignored and Summary aggregation will be used regardless." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Summary" "Hourly" "Daily" "Weekly" "Monthly" "Yearly" "HourOfDay" "DayOfWeek" "WeeklyStartingMonday" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingKeywordPerformanceReportRequest/columns> ;
    sh:name "columns" ;
    sh:description "The list of attributes and performance statistics to include in the report. The report will include the columns in the order that you specify them." ;
    sh:datatype xsd:string ;
    sh:in ( "AccountName" "AccountNumber" "AccountId" "TimePeriod" "CampaignName" "CampaignId" "AdGroupName" "AdGroupId" "Keyword" "KeywordId" "AdId" "AdType" "DestinationUrl" "CurrentMaxCpc" "CurrencyCode" "DeliveredMatchType" "AdDistribution" "Impressions" "Clicks" "Ctr" "AverageCpc" "Spend" "AveragePosition" "Conversions" "ConversionRate" "CostPerConversion" "BidMatchType" "DeviceType" "QualityScore" "ExpectedCtr" "AdRelevance" "LandingPageExperience" "Language" "HistoricalQualityScore" "HistoricalExpectedCtr" "HistoricalAdRelevance" "HistoricalLandingPageExperience" "QualityImpact" "CampaignStatus" "AccountStatus" "AdGroupStatus" "KeywordStatus" "Network" "TopVsOther" "DeviceOS" "Assists" "Revenue" "ReturnOnAdSpend" "CostPerAssist" "RevenuePerConversion" "RevenuePerAssist" "TrackingTemplate" "CustomParameters" "FinalUrl" "FinalMobileUrl" "FinalAppUrl" "BidStrategyType" "KeywordLabels" "Mainline1Bid" "MainlineBid" "FirstPageBid" "FinalUrlSuffix" "BaseCampaignId" "AllConversions" "AllRevenue" "AllConversionRate" "AllCostPerConversion" "AllReturnOnAdSpend" "AllRevenuePerConversion" "ViewThroughConversions" "Goal" "GoalType" "AbsoluteTopImpressionRatePercent" "TopImpressionRatePercent" "AverageCpm" "ConversionsQualified" "AllConversionsQualified" "ViewThroughConversionsQualified" "ViewThroughRevenue" "GoalId" "MarketingObjective" "Channel" "SubChannel" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingKeywordPerformanceReportRequest/sort> ;
    sh:name "sort" ;
    sh:description "A list of the columns to sort, and the corresponding sort order." ;
    sh:node microsoftads:ReportingKeywordPerformanceReportSortShape ;
    sh:class microsoftads:ReportingKeywordPerformanceReportSort ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingKeywordPerformanceReportRequest/maxRows> ;
    sh:name "max rows" ;
    sh:description "The top number of data rows to return in the report." ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingKeywordPerformanceReportRequest/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Keyword Performance Report Sort
microsoftads:ReportingKeywordPerformanceReportSortShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingKeywordPerformanceReportSort ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingKeywordPerformanceReportSort/sortColumn> ;
    sh:name "sort column" ;
    sh:description "The keyword performance report column by which to sort." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "AccountName" "AccountNumber" "AccountId" "TimePeriod" "CampaignName" "CampaignId" "AdGroupName" "AdGroupId" "Keyword" "KeywordId" "AdId" "AdType" "DestinationUrl" "CurrentMaxCpc" "CurrencyCode" "DeliveredMatchType" "AdDistribution" "Impressions" "Clicks" "Ctr" "AverageCpc" "Spend" "AveragePosition" "Conversions" "ConversionRate" "CostPerConversion" "BidMatchType" "DeviceType" "QualityScore" "ExpectedCtr" "AdRelevance" "LandingPageExperience" "Language" "HistoricalQualityScore" "HistoricalExpectedCtr" "HistoricalAdRelevance" "HistoricalLandingPageExperience" "QualityImpact" "CampaignStatus" "AccountStatus" "AdGroupStatus" "KeywordStatus" "Network" "TopVsOther" "DeviceOS" "Assists" "Revenue" "ReturnOnAdSpend" "CostPerAssist" "RevenuePerConversion" "RevenuePerAssist" "TrackingTemplate" "CustomParameters" "FinalUrl" "FinalMobileUrl" "FinalAppUrl" "BidStrategyType" "KeywordLabels" "Mainline1Bid" "MainlineBid" "FirstPageBid" "FinalUrlSuffix" "BaseCampaignId" "AllConversions" "AllRevenue" "AllConversionRate" "AllCostPerConversion" "AllReturnOnAdSpend" "AllRevenuePerConversion" "ViewThroughConversions" "Goal" "GoalType" "AbsoluteTopImpressionRatePercent" "TopImpressionRatePercent" "AverageCpm" "ConversionsQualified" "AllConversionsQualified" "ViewThroughConversionsQualified" "ViewThroughRevenue" "GoalId" "MarketingObjective" "Channel" "SubChannel" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingKeywordPerformanceReportSort/sortOrder> ;
    sh:name "sort order" ;
    sh:description "Defines the ascending or descending sort order of values within the specified report column." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Ascending" "Descending" ) ;
  ] .

# Shape for Reporting MMMPerformance Report Filter
microsoftads:ReportingMMMPerformanceReportFilterShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingMMMPerformanceReportFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingMMMPerformanceReportFilter/accountStatus> ;
    sh:name "account status" ;
    sh:description "The report will include data for only the account status. For example, you can use the filter to include data for only active accounts. You can specify one or more account statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingMMMPerformanceReportFilter/adDistribution> ;
    sh:name "ad distribution" ;
    sh:description "The report will include data for only the specified distribution medium. For example, you can use the filter to include data for only search ads. You can specify one or more distribution mediums." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingMMMPerformanceReportFilter/adGroupStatus> ;
    sh:name "ad group status" ;
    sh:description "The report will include data for only the ad group status. For example, you can use the filter to include data for only active ad groups. You can specify one or more ad group statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingMMMPerformanceReportFilter/assetGroupStatus> ;
    sh:name "asset group status" ;
    sh:description "The report will include data for only the asset group status. For example, you can use the filter to include data for only active asset groups. You can specify one or more asset group statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingMMMPerformanceReportFilter/campaignStatus> ;
    sh:name "campaign status" ;
    sh:description "The report will include data for only the campaign status. For example, you can use the filter to include data for only active campaigns. You can specify one or more campaign statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingMMMPerformanceReportFilter/countryCode> ;
    sh:name "country code" ;
    sh:description "The report will include data for only the specified countries/regions where the user that clicked the ad is located. For a list of possible values, see Geographical Location Codes." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingMMMPerformanceReportFilter/language> ;
    sh:name "language" ;
    sh:description "The report will include data for only websites that used the specified languages. You can specify one or more languages." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting MMMPerformance Report Request
microsoftads:ReportingMMMPerformanceReportRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingMMMPerformanceReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingMMMPerformanceReportRequest/reportName> ;
    sh:name "report name" ;
    sh:description "The name of the report. The name is included in the report header. If you do not specify a report name, the system generates a name in the form, ReportType-ReportDateTime. The maximum length of the report name is 200." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingMMMPerformanceReportRequest/format> ;
    sh:name "format" ;
    sh:description "The format of the report data. For example, you can request the data in comma-separated values (Csv) format or tab-separated values (Tsv) format. The default value is Csv. All downloaded files are ZIP compressed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Csv" "Tsv" "Xml" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingMMMPerformanceReportRequest/returnOnlyCompleteData> ;
    sh:name "return only complete data" ;
    sh:description "Determines whether or not the service must ensure that all the data has been processed and is available. If set to true and if the system has not finished processing all the data based on the requested Aggregation, Scope, and Time, the service returns error code NoCompleteDataAvaliable (2004). Otherwise by default the request can succeed, there is no indication as to whether the data is complete, and the report will contain only the data that the system has finished processing at the time of the request. Please note that because today is still in progress and data is not complete, you cannot set this element to true if the Time period (whether custom or predefined date) includes today's date. For more information, see Time Zones in Reporting." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingMMMPerformanceReportRequest/excludeReportHeader> ;
    sh:name "exclude report header" ;
    sh:description "Determines whether or not the downloaded report should contain header metadata such as report name, date range, and aggregation. Set this property true if you want the report header metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingMMMPerformanceReportRequest/excludeReportFooter> ;
    sh:name "exclude report footer" ;
    sh:description "Determines whether or not the downloaded report should contain footer metadata such as Microsoft copyright (`@2020` Microsoft Corporation. All rights reserved.). Set this property true if you want the report footer metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingMMMPerformanceReportRequest/excludeColumnHeaders> ;
    sh:name "exclude column headers" ;
    sh:description "Determines whether or not the downloaded report should contain header descriptions for each column. The report column header matches the requested column name e.g. Impressions and Clicks. Set this property true if you want the report column headers excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingMMMPerformanceReportRequest/formatVersion> ;
    sh:name "format version" ;
    sh:description "Determines the format for certain fields in the downloaded report file. The data format for certain fields can be updated within the current API version without breaking existing client applications. You can get the latest data format by setting this optional request field to 2.0. If you do not set this field, the service defaults to version 1.0. For details about changes between format versions, see Report Format Version." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingMMMPerformanceReportRequest/scope> ;
    sh:name "scope" ;
    sh:description "The entity scope of the report. Use this element to limit the report data to specific accounts." ;
    sh:node microsoftads:ReportingAccountThroughAdGroupReportScopeShape ;
    sh:class microsoftads:ReportingAccountThroughAdGroupReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingMMMPerformanceReportRequest/filter> ;
    sh:name "filter" ;
    sh:description "The filter information to use to filter the report data." ;
    sh:node microsoftads:ReportingMMMPerformanceReportFilterShape ;
    sh:class microsoftads:ReportingMMMPerformanceReportFilter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingMMMPerformanceReportRequest/time> ;
    sh:name "time" ;
    sh:description "The time period to use for the report. You can specify a custom date range or select a predefined date range, for example, Today or ThisWeek. For a list of the time periods that you can specify for each aggregation type, see Aggregation and Time. You can set the time zone within the ReportTime object, which helps you accurately scope data for the requested time period. If you do not choose a time zone, the Reporting service uses PacificTimeUSCanadaTijuana by default." ;
    sh:node microsoftads:ReportingReportTimeShape ;
    sh:class microsoftads:ReportingReportTime ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingMMMPerformanceReportRequest/aggregation> ;
    sh:name "aggregation" ;
    sh:description "The type of aggregation to use to aggregate the report data. For example, you can aggregate the report data by day or week, or request a summary report. The default aggregation is Summary. It is important to note that if you do not include TimePeriod in the list of Columns, the aggregation you chose will be ignored and Summary aggregation will be used regardless." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Summary" "Hourly" "Daily" "Weekly" "Monthly" "Yearly" "HourOfDay" "DayOfWeek" "WeeklyStartingMonday" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingMMMPerformanceReportRequest/columns> ;
    sh:name "columns" ;
    sh:description "The list of attributes and performance statistics to include in the report. The report will include the columns in the order that you specify them." ;
    sh:datatype xsd:string ;
    sh:in ( "TimePeriod" "CampaignId" "CampaignName" "AdGroupId" "AdGroupName" "AssetGroupId" "AssetGroupName" "AccountId" "AccountName" "AccountNumber" "Country" "State" "Impressions" "Clicks" "Spend" "ConversionsQualified" "MetroArea" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingMMMPerformanceReportRequest/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting MSClick Id Performance Report Request
microsoftads:ReportingMSClickIdPerformanceReportRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingMSClickIdPerformanceReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingMSClickIdPerformanceReportRequest/reportName> ;
    sh:name "report name" ;
    sh:description "The name of the report. The name is included in the report header. If you do not specify a report name, the system generates a name in the form, ReportType-ReportDateTime. The maximum length of the report name is 200." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingMSClickIdPerformanceReportRequest/format> ;
    sh:name "format" ;
    sh:description "The format of the report data. For example, you can request the data in comma-separated values (Csv) format or tab-separated values (Tsv) format. The default value is Csv. All downloaded files are ZIP compressed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Csv" "Tsv" "Xml" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingMSClickIdPerformanceReportRequest/returnOnlyCompleteData> ;
    sh:name "return only complete data" ;
    sh:description "Determines whether or not the service must ensure that all the data has been processed and is available. If set to true and if the system has not finished processing all the data based on the requested Aggregation, Scope, and Time, the service returns error code NoCompleteDataAvaliable (2004). Otherwise by default the request can succeed, there is no indication as to whether the data is complete, and the report will contain only the data that the system has finished processing at the time of the request. Please note that because today is still in progress and data is not complete, you cannot set this element to true if the Time period (whether custom or predefined date) includes today's date. For more information, see Time Zones in Reporting." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingMSClickIdPerformanceReportRequest/excludeReportHeader> ;
    sh:name "exclude report header" ;
    sh:description "Determines whether or not the downloaded report should contain header metadata such as report name, date range, and aggregation. Set this property true if you want the report header metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingMSClickIdPerformanceReportRequest/excludeReportFooter> ;
    sh:name "exclude report footer" ;
    sh:description "Determines whether or not the downloaded report should contain footer metadata such as Microsoft copyright (`@2020` Microsoft Corporation. All rights reserved.). Set this property true if you want the report footer metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingMSClickIdPerformanceReportRequest/excludeColumnHeaders> ;
    sh:name "exclude column headers" ;
    sh:description "Determines whether or not the downloaded report should contain header descriptions for each column. The report column header matches the requested column name e.g. Impressions and Clicks. Set this property true if you want the report column headers excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingMSClickIdPerformanceReportRequest/formatVersion> ;
    sh:name "format version" ;
    sh:description "Determines the format for certain fields in the downloaded report file. The data format for certain fields can be updated within the current API version without breaking existing client applications. You can get the latest data format by setting this optional request field to 2.0. If you do not set this field, the service defaults to version 1.0. For details about changes between format versions, see Report Format Version." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingMSClickIdPerformanceReportRequest/scope> ;
    sh:name "scope" ;
    sh:description "The entity scope of the report. Use this element to limit the report data to specific accounts." ;
    sh:node microsoftads:ReportingAccountThroughCampaignReportScopeShape ;
    sh:class microsoftads:ReportingAccountThroughCampaignReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingMSClickIdPerformanceReportRequest/filter> ;
    sh:name "filter" ;
    sh:description "The filter information to use to filter the report data." ;
    sh:datatype rdf:JSON ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingMSClickIdPerformanceReportRequest/time> ;
    sh:name "time" ;
    sh:description "The time period to use for the report. You can specify a custom date range or select a predefined date range, for example, Today or ThisWeek. Note: Historical data isn't available. For a list of the time periods that you can specify for each aggregation type, see Aggregation and Time. You can set the time zone within the ReportTime object, which helps you accurately scope data for the requested time period. If you do not choose a time zone, the Reporting service uses PacificTimeUSCanadaTijuana by default." ;
    sh:node microsoftads:ReportingReportTimeShape ;
    sh:class microsoftads:ReportingReportTime ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingMSClickIdPerformanceReportRequest/aggregation> ;
    sh:name "aggregation" ;
    sh:description "The type of aggregation to use to aggregate the report data. For example, you can aggregate the report data by day or week, or request a summary report. The default aggregation is ClickID. It is important to note that if you do not include TimePeriod in the list of Columns, the aggregation you chose will be ignored and ClickID aggregation will be used regardless." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Summary" "Hourly" "Daily" "Weekly" "Monthly" "Yearly" "HourOfDay" "DayOfWeek" "WeeklyStartingMonday" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingMSClickIdPerformanceReportRequest/columns> ;
    sh:name "columns" ;
    sh:description "The list of attributes and performance statistics to include in the report. The report will include the columns in the order that you specify them." ;
    sh:datatype xsd:string ;
    sh:in ( "TimePeriod" "AccountId" "CampaignId" "AdGroupId" "AssetGroupId" "AdId" "MSClickId" "SearchQuery" "Keyword" "PageNumber" "TopVsOther" "BidMatchType" "Network" "DeviceType" "Country" "State" "MetroArea" "City" "Clicks" "Cpc" "ConversionsQualified" "Revenue" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingMSClickIdPerformanceReportRequest/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Negative Keyword Conflict Report Filter
microsoftads:ReportingNegativeKeywordConflictReportFilterShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingNegativeKeywordConflictReportFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingNegativeKeywordConflictReportFilter/accountStatus> ;
    sh:name "account status" ;
    sh:description "The report will only include data for accounts with the specified status. For example, you can use the filter to include data for only active accounts. You can specify one or more account statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingNegativeKeywordConflictReportFilter/campaignStatus> ;
    sh:name "campaign status" ;
    sh:description "The report will only include data for campaigns with the specified status. For example, you can use the filter to include data for only active campaigns. You can specify one or more campaign statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingNegativeKeywordConflictReportFilter/adGroupStatus> ;
    sh:name "ad group status" ;
    sh:description "The report will only include data for ad groups with the specified status. For example, you can use the filter to include data for only active ad groups. You can specify one or more ad group statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingNegativeKeywordConflictReportFilter/keywordStatus> ;
    sh:name "keyword status" ;
    sh:description "The report will only include data for keywords with the specified status. For example, you can use the filter to include data for only active keywords. You can specify one or more keyword statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Negative Keyword Conflict Report Request
microsoftads:ReportingNegativeKeywordConflictReportRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingNegativeKeywordConflictReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingNegativeKeywordConflictReportRequest/reportName> ;
    sh:name "report name" ;
    sh:description "The name of the report. The name is included in the report header. If you do not specify a report name, the system generates a name in the form, ReportType-ReportDateTime. The maximum length of the report name is 200." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingNegativeKeywordConflictReportRequest/format> ;
    sh:name "format" ;
    sh:description "The format of the report data. For example, you can request the data in comma-separated values (Csv) format or tab-separated values (Tsv) format. The default value is Csv. All downloaded files are ZIP compressed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Csv" "Tsv" "Xml" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingNegativeKeywordConflictReportRequest/returnOnlyCompleteData> ;
    sh:name "return only complete data" ;
    sh:description "Not applicable for the negative keyword conflict report." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingNegativeKeywordConflictReportRequest/excludeReportHeader> ;
    sh:name "exclude report header" ;
    sh:description "Determines whether or not the downloaded report should contain header metadata such as report name, date range, and aggregation. Set this property true if you want the report header metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingNegativeKeywordConflictReportRequest/excludeReportFooter> ;
    sh:name "exclude report footer" ;
    sh:description "Determines whether or not the downloaded report should contain footer metadata such as Microsoft copyright (`@2020` Microsoft Corporation. All rights reserved.). Set this property true if you want the report footer metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingNegativeKeywordConflictReportRequest/excludeColumnHeaders> ;
    sh:name "exclude column headers" ;
    sh:description "Determines whether or not the downloaded report should contain header descriptions for each column. The report column header matches the requested column name e.g. Impressions and Clicks. Set this property true if you want the report column headers excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingNegativeKeywordConflictReportRequest/formatVersion> ;
    sh:name "format version" ;
    sh:description "Determines the format for certain fields in the downloaded report file. The data format for certain fields can be updated within the current API version without breaking existing client applications. You can get the latest data format by setting this optional request field to 2.0. If you do not set this field, the service defaults to version 1.0. For details about changes between format versions, see Report Format Version." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingNegativeKeywordConflictReportRequest/scope> ;
    sh:name "scope" ;
    sh:description "The entity scope of the report. Use this element to limit the report data to specific accounts, ad groups, or campaigns." ;
    sh:node microsoftads:ReportingAccountThroughAdGroupReportScopeShape ;
    sh:class microsoftads:ReportingAccountThroughAdGroupReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingNegativeKeywordConflictReportRequest/columns> ;
    sh:name "columns" ;
    sh:description "The list of attributes and performance statistics to include in the report. The report will include the columns in the order that you specify them." ;
    sh:datatype xsd:string ;
    sh:in ( "AccountName" "AccountNumber" "AccountId" "CampaignName" "CampaignId" "AdGroupName" "AdGroupId" "Keyword" "KeywordId" "NegativeKeyword" "ConflictLevel" "BidMatchType" "NegativeKeywordListId" "NegativeKeywordList" "NegativeKeywordId" "NegativeKeywordMatchType" "AccountStatus" "CampaignStatus" "AdGroupStatus" "KeywordStatus" "ConflictType" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingNegativeKeywordConflictReportRequest/filter> ;
    sh:name "filter" ;
    sh:description "The filter information to use to filter the report data." ;
    sh:node microsoftads:ReportingNegativeKeywordConflictReportFilterShape ;
    sh:class microsoftads:ReportingNegativeKeywordConflictReportFilter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingNegativeKeywordConflictReportRequest/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Poll Generate Report Request
microsoftads:ReportingPollGenerateReportRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingPollGenerateReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingPollGenerateReportRequest/reportRequestId> ;
    sh:name "report request id" ;
    sh:description "The identifier of the report request. The SubmitGenerateReport operation returns the identifier. The identifier is valid for a maximum of one day. If you have not successfully downloaded the file within this period, it is removed from the download site and you will need to get a new report request identifier. The string has a length up to 40 and can contain any character." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Poll Generate Report Response
microsoftads:ReportingPollGenerateReportResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingPollGenerateReportResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingPollGenerateReportResponse/reportRequestStatus> ;
    sh:name "report request status" ;
    sh:description "Contains the status of the report request and the download URL." ;
    sh:node microsoftads:ReportingReportRequestStatusShape ;
    sh:class microsoftads:ReportingReportRequestStatus ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Report Request Status
microsoftads:ReportingReportRequestStatusShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingReportRequestStatus ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingReportRequestStatus/status> ;
    sh:name "status" ;
    sh:description "The status of a report request." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Error" "Success" "Pending" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingReportRequestStatus/reportDownloadUrl> ;
    sh:name "report download url" ;
    sh:description "The encoded URL from where the report can be downloaded. Once returned, the URL is valid for five minutes. You should not take a dependency on the domain of the download URL as it is subject to change. The report that you download is compressed by using zip compression. You must first unzip the report before you can use its contents. Use the download URL only if the Status element is set to Success. Even when the Status is set to Success, this element can be nil if no data is available for the submitted report parameters." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Product Dimension Performance Report Filter
microsoftads:ReportingProductDimensionPerformanceReportFilterShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingProductDimensionPerformanceReportFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductDimensionPerformanceReportFilter/deviceType> ;
    sh:name "device type" ;
    sh:description "The report will include data for only the specified types of devices on which the ad is displayed. For example, you can use the filter to include data for only ads displayed on computers. You can specify one or more device types." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductDimensionPerformanceReportFilter/language> ;
    sh:name "language" ;
    sh:description "The report will include data for only websites that used the specified languages. You can specify one or more languages." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductDimensionPerformanceReportFilter/accountStatus> ;
    sh:name "account status" ;
    sh:description "The report will include data for only the account status. For example, you can use the filter to include data for only active accounts. You can specify one or more account statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductDimensionPerformanceReportFilter/campaignStatus> ;
    sh:name "campaign status" ;
    sh:description "The report will include data for only the campaign status. For example, you can use the filter to include data for only active campaigns. You can specify one or more campaign statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductDimensionPerformanceReportFilter/adGroupStatus> ;
    sh:name "ad group status" ;
    sh:description "The report will include data for only the ad group status. For example, you can use the filter to include data for only active ad groups. You can specify one or more ad group statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductDimensionPerformanceReportFilter/adStatus> ;
    sh:name "ad status" ;
    sh:description "The report will include data for only the ad status. For example, you can use the filter to include data for only active ads. You can specify one or more ad statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductDimensionPerformanceReportFilter/assetGroupStatus> ;
    sh:name "asset group status" ;
    sh:description "The report will include data for only the asset group status. For example, you can use the filter to include data for only active asset groups. You can specify one or more asset group statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Product Dimension Performance Report Request
microsoftads:ReportingProductDimensionPerformanceReportRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingProductDimensionPerformanceReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductDimensionPerformanceReportRequest/reportName> ;
    sh:name "report name" ;
    sh:description "The name of the report. The name is included in the report header. If you do not specify a report name, the system generates a name in the form, ReportType-ReportDateTime. The maximum length of the report name is 200." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductDimensionPerformanceReportRequest/format> ;
    sh:name "format" ;
    sh:description "The format of the report data. For example, you can request the data in comma-separated values (Csv) format or tab-separated values (Tsv) format. The default value is Csv. All downloaded files are ZIP compressed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Csv" "Tsv" "Xml" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductDimensionPerformanceReportRequest/returnOnlyCompleteData> ;
    sh:name "return only complete data" ;
    sh:description "Determines whether or not the service must ensure that all the data has been processed and is available. If set to true and if the system has not finished processing all the data based on the requested Aggregation, Scope, and Time, the service returns error code NoCompleteDataAvaliable (2004). Otherwise by default the request can succeed, there is no indication as to whether the data is complete, and the report will contain only the data that the system has finished processing at the time of the request. Please note that because today is still in progress and data is not complete, you cannot set this element to true if the Time period (whether custom or predefined date) includes today's date. For more information, see Time Zones in Reporting." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductDimensionPerformanceReportRequest/excludeReportHeader> ;
    sh:name "exclude report header" ;
    sh:description "Determines whether or not the downloaded report should contain header metadata such as report name, date range, and aggregation. Set this property true if you want the report header metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductDimensionPerformanceReportRequest/excludeReportFooter> ;
    sh:name "exclude report footer" ;
    sh:description "Determines whether or not the downloaded report should contain footer metadata such as Microsoft copyright (`@2020` Microsoft Corporation. All rights reserved.). Set this property true if you want the report footer metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductDimensionPerformanceReportRequest/excludeColumnHeaders> ;
    sh:name "exclude column headers" ;
    sh:description "Determines whether or not the downloaded report should contain header descriptions for each column. The report column header matches the requested column name e.g. Impressions and Clicks. Set this property true if you want the report column headers excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductDimensionPerformanceReportRequest/formatVersion> ;
    sh:name "format version" ;
    sh:description "Determines the format for certain fields in the downloaded report file. The data format for certain fields can be updated within the current API version without breaking existing client applications. You can get the latest data format by setting this optional request field to 2.0. If you do not set this field, the service defaults to version 1.0. For details about changes between format versions, see Report Format Version." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductDimensionPerformanceReportRequest/scope> ;
    sh:name "scope" ;
    sh:description "The entity scope of the report. Use this element to limit the report data to specific accounts, ad groups, or campaigns." ;
    sh:node microsoftads:ReportingAccountThroughAdGroupReportScopeShape ;
    sh:class microsoftads:ReportingAccountThroughAdGroupReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductDimensionPerformanceReportRequest/filter> ;
    sh:name "filter" ;
    sh:description "The filter information to use to filter the report data." ;
    sh:node microsoftads:ReportingProductDimensionPerformanceReportFilterShape ;
    sh:class microsoftads:ReportingProductDimensionPerformanceReportFilter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductDimensionPerformanceReportRequest/time> ;
    sh:name "time" ;
    sh:description "The time period to use for the report. You can specify a custom date range or select a predefined date range, for example, Today or ThisWeek. For a list of the time periods that you can specify for each aggregation type, see Aggregation and Time. You can set the time zone within the ReportTime object, which helps you accurately scope data for the requested time period. If you do not choose a time zone, the Reporting service uses PacificTimeUSCanadaTijuana by default." ;
    sh:node microsoftads:ReportingReportTimeShape ;
    sh:class microsoftads:ReportingReportTime ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductDimensionPerformanceReportRequest/aggregation> ;
    sh:name "aggregation" ;
    sh:description "The type of aggregation to use to aggregate the report data. For example, you can aggregate the report data by day or week, or request a summary report. The default aggregation is Summary. It is important to note that if you do not include TimePeriod in the list of Columns, the aggregation you chose will be ignored and Summary aggregation will be used regardless." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Summary" "Hourly" "Daily" "Weekly" "Monthly" "Yearly" "HourOfDay" "DayOfWeek" "WeeklyStartingMonday" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductDimensionPerformanceReportRequest/columns> ;
    sh:name "columns" ;
    sh:description "The list of attributes and performance statistics to include in the report. The report will include the columns in the order that you specify them." ;
    sh:datatype xsd:string ;
    sh:in ( "TimePeriod" "AccountName" "AccountNumber" "AdGroupName" "AdGroupId" "CampaignStatus" "AccountStatus" "AdGroupStatus" "Network" "AdId" "CampaignId" "CampaignName" "CurrencyCode" "DeviceType" "Language" "MerchantProductId" "Title" "Condition" "Brand" "Price" "CustomLabel0" "CustomLabel1" "CustomLabel2" "CustomLabel3" "CustomLabel4" "ProductType1" "ProductType2" "ProductType3" "ProductType4" "ProductType5" "ProductCategory1" "ProductCategory2" "ProductCategory3" "ProductCategory4" "ProductCategory5" "Impressions" "Clicks" "Ctr" "AverageCpc" "Spend" "Conversions" "ConversionRate" "Revenue" "RevenuePerConversion" "SellerName" "OfferLanguage" "CountryOfSale" "AdStatus" "ImpressionSharePercent" "ImpressionLostToBudgetPercent" "ImpressionLostToRankPercent" "BenchmarkBid" "BenchmarkCtr" "TopVsOther" "AdDistribution" "ClickTypeId" "TotalClicksOnAdElements" "ClickType" "ReturnOnAdSpend" "BidStrategyType" "LocalStoreCode" "StoreId" "AssistedImpressions" "AssistedClicks" "ClickSharePercent" "AbsoluteTopImpressionSharePercent" "AssistedConversions" "AllConversions" "AllRevenue" "AllConversionRate" "AllCostPerConversion" "AllReturnOnAdSpend" "AllRevenuePerConversion" "CostPerConversion" "ViewThroughConversions" "Goal" "GoalType" "ProductBought" "QuantityBought" "AbsoluteTopImpressionRatePercent" "AverageCpm" "ConversionsQualified" "AssistedConversionsQualified" "AllConversionsQualified" "ViewThroughConversionsQualified" "ProductBoughtTitle" "GTIN" "MPN" "ViewThroughRevenue" "GoalId" "Sales" "CostPerSale" "RevenuePerSale" "Installs" "CostPerInstall" "RevenuePerInstall" "CampaignType" "AssetGroupId" "AssetGroupName" "AssetGroupStatus" "CollectionId" "FeedLabel" "MarketingObjective" "Channel" "SubChannel" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductDimensionPerformanceReportRequest/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Product Match Count Report Request
microsoftads:ReportingProductMatchCountReportRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingProductMatchCountReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductMatchCountReportRequest/reportName> ;
    sh:name "report name" ;
    sh:description "The name of the report. The name is included in the report header. If you do not specify a report name, the system generates a name in the form, ReportType-ReportDateTime. The maximum length of the report name is 200." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductMatchCountReportRequest/format> ;
    sh:name "format" ;
    sh:description "The format of the report data. For example, you can request the data in comma-separated values (Csv) format or tab-separated values (Tsv) format. The default value is Csv. All downloaded files are ZIP compressed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Csv" "Tsv" "Xml" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductMatchCountReportRequest/returnOnlyCompleteData> ;
    sh:name "return only complete data" ;
    sh:description "Determines whether or not the service must ensure that all the data has been processed and is available. If set to true and if the system has not finished processing all the data based on the requested Aggregation, Scope, and Time, the service returns error code NoCompleteDataAvaliable (2004). Otherwise by default the request can succeed, there is no indication as to whether the data is complete, and the report will contain only the data that the system has finished processing at the time of the request. Please note that because today is still in progress and data is not complete, you cannot set this element to true if the Time period (whether custom or predefined date) includes today's date. For more information, see Time Zones in Reporting." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductMatchCountReportRequest/excludeReportHeader> ;
    sh:name "exclude report header" ;
    sh:description "Determines whether or not the downloaded report should contain header metadata such as report name, date range, and aggregation. Set this property true if you want the report header metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductMatchCountReportRequest/excludeReportFooter> ;
    sh:name "exclude report footer" ;
    sh:description "Determines whether or not the downloaded report should contain footer metadata such as Microsoft copyright (`@2020` Microsoft Corporation. All rights reserved.). Set this property true if you want the report footer metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductMatchCountReportRequest/excludeColumnHeaders> ;
    sh:name "exclude column headers" ;
    sh:description "Determines whether or not the downloaded report should contain header descriptions for each column. The report column header matches the requested column name e.g. Impressions and Clicks. Set this property true if you want the report column headers excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductMatchCountReportRequest/formatVersion> ;
    sh:name "format version" ;
    sh:description "Determines the format for certain fields in the downloaded report file. The data format for certain fields can be updated within the current API version without breaking existing client applications. You can get the latest data format by setting this optional request field to 2.0. If you do not set this field, the service defaults to version 1.0. For details about changes between format versions, see Report Format Version." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductMatchCountReportRequest/scope> ;
    sh:name "scope" ;
    sh:description "The entity scope of the report. Use this element to limit the report data to specific accounts, ad groups, or campaigns." ;
    sh:node microsoftads:ReportingAccountThroughAdGroupReportScopeShape ;
    sh:class microsoftads:ReportingAccountThroughAdGroupReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductMatchCountReportRequest/time> ;
    sh:name "time" ;
    sh:description "The time period to use for the report. You can specify a custom date range or select a predefined date range, for example, Today or ThisWeek. For a list of the time periods that you can specify for each aggregation type, see Aggregation and Time." ;
    sh:node microsoftads:ReportingReportTimeShape ;
    sh:class microsoftads:ReportingReportTime ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductMatchCountReportRequest/aggregation> ;
    sh:name "aggregation" ;
    sh:description "The type of aggregation to use to aggregate the report data. For example, you can aggregate the report data by day or week, or request a summary report. The default aggregation is Summary. It is important to note that if you do not include TimePeriod in the list of Columns, the aggregation you chose will be ignored and Summary aggregation will be used regardless." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Summary" "Hourly" "Daily" "Weekly" "Monthly" "Yearly" "HourOfDay" "DayOfWeek" "WeeklyStartingMonday" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductMatchCountReportRequest/columns> ;
    sh:name "columns" ;
    sh:description "The list of attributes and performance statistics to include in the report. The report will include the columns in the order that you specify them." ;
    sh:datatype xsd:string ;
    sh:in ( "CustomerId" "CustomerName" "AccountId" "AccountNumber" "AccountName" "CampaignId" "CampaignName" "AdGroupId" "AdGroupName" "ProductGroup" "PartitionType" "AdGroupCriterionId" "MatchedProductsAtCampaign" "MatchedProductsAtAdGroup" "MatchedProductsAtProductGroup" "CampaignType" "AssetGroupId" "AssetGroupName" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductMatchCountReportRequest/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Product Negative Keyword Conflict Report Filter
microsoftads:ReportingProductNegativeKeywordConflictReportFilterShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingProductNegativeKeywordConflictReportFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductNegativeKeywordConflictReportFilter/accountStatus> ;
    sh:name "account status" ;
    sh:description "The report will only include data for accounts with the specified status. For example, you can use the filter to include data for only active accounts. You can specify one or more account statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductNegativeKeywordConflictReportFilter/campaignStatus> ;
    sh:name "campaign status" ;
    sh:description "The report will only include data for campaigns with the specified status. For example, you can use the filter to include data for only active campaigns. You can specify one or more campaign statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductNegativeKeywordConflictReportFilter/adGroupStatus> ;
    sh:name "ad group status" ;
    sh:description "The report will only include data for ad groups with the specified status. For example, you can use the filter to include data for only active ad groups. You can specify one or more ad group statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductNegativeKeywordConflictReportFilter/assetGroupStatus> ;
    sh:name "asset group status" ;
    sh:description "The report will include data for only the asset group status. For example, you can use the filter to include data for only active asset groups. You can specify one or more asset group statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Product Negative Keyword Conflict Report Request
microsoftads:ReportingProductNegativeKeywordConflictReportRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingProductNegativeKeywordConflictReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductNegativeKeywordConflictReportRequest/reportName> ;
    sh:name "report name" ;
    sh:description "The name of the report. The name is included in the report header. If you do not specify a report name, the system generates a name in the form, ReportType-ReportDateTime. The maximum length of the report name is 200." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductNegativeKeywordConflictReportRequest/format> ;
    sh:name "format" ;
    sh:description "The format of the report data. For example, you can request the data in comma-separated values (Csv) format or tab-separated values (Tsv) format. The default value is Csv. All downloaded files are ZIP compressed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Csv" "Tsv" "Xml" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductNegativeKeywordConflictReportRequest/returnOnlyCompleteData> ;
    sh:name "return only complete data" ;
    sh:description "Not applicable for the product negative keyword conflict report." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductNegativeKeywordConflictReportRequest/excludeReportHeader> ;
    sh:name "exclude report header" ;
    sh:description "Determines whether or not the downloaded report should contain header metadata such as report name, date range, and aggregation. Set this property true if you want the report header metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductNegativeKeywordConflictReportRequest/excludeReportFooter> ;
    sh:name "exclude report footer" ;
    sh:description "Determines whether or not the downloaded report should contain footer metadata such as Microsoft copyright (`@2020` Microsoft Corporation. All rights reserved.). Set this property true if you want the report footer metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductNegativeKeywordConflictReportRequest/excludeColumnHeaders> ;
    sh:name "exclude column headers" ;
    sh:description "Determines whether or not the downloaded report should contain header descriptions for each column. The report column header matches the requested column name e.g. Impressions and Clicks. Set this property true if you want the report column headers excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductNegativeKeywordConflictReportRequest/formatVersion> ;
    sh:name "format version" ;
    sh:description "Determines the format for certain fields in the downloaded report file. The data format for certain fields can be updated within the current API version without breaking existing client applications. You can get the latest data format by setting this optional request field to 2.0. If you do not set this field, the service defaults to version 1.0. For details about changes between format versions, see Report Format Version." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductNegativeKeywordConflictReportRequest/scope> ;
    sh:name "scope" ;
    sh:description "The entity scope of the report. Use this element to limit the report data to specific accounts, ad groups, or campaigns." ;
    sh:node microsoftads:ReportingAccountThroughAdGroupReportScopeShape ;
    sh:class microsoftads:ReportingAccountThroughAdGroupReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductNegativeKeywordConflictReportRequest/columns> ;
    sh:name "columns" ;
    sh:description "The list of attributes and performance statistics to include in the report. The report will include the columns in the order that you specify them." ;
    sh:datatype xsd:string ;
    sh:in ( "AccountName" "AccountNumber" "AccountId" "AccountStatus" "CampaignName" "CampaignId" "CampaignStatus" "AdGroupName" "AdGroupId" "AdGroupStatus" "MerchantProductId" "Title" "AdGroupCriterionId" "ProductGroup" "NegativeKeywordId" "NegativeKeyword" "NegativeKeywordListId" "ConflictLevel" "NegativeKeywordMatchType" "CampaignType" "AssetGroupId" "AssetGroupName" "AssetGroupStatus" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductNegativeKeywordConflictReportRequest/filter> ;
    sh:name "filter" ;
    sh:description "The filter information to use to filter the report data." ;
    sh:node microsoftads:ReportingProductNegativeKeywordConflictReportFilterShape ;
    sh:class microsoftads:ReportingProductNegativeKeywordConflictReportFilter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductNegativeKeywordConflictReportRequest/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Product Partition Performance Report Filter
microsoftads:ReportingProductPartitionPerformanceReportFilterShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingProductPartitionPerformanceReportFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductPartitionPerformanceReportFilter/deviceType> ;
    sh:name "device type" ;
    sh:description "The report will include data for only the specified types of devices on which the ad is displayed. For example, you can use the filter to include data for only ads displayed on computers. You can specify one or more device types." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductPartitionPerformanceReportFilter/language> ;
    sh:name "language" ;
    sh:description "The report will include data for only websites that used the specified languages. You can specify one or more languages." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductPartitionPerformanceReportFilter/accountStatus> ;
    sh:name "account status" ;
    sh:description "The report will include data for only the account status. For example, you can use the filter to include data for only active accounts. You can specify one or more account statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductPartitionPerformanceReportFilter/campaignStatus> ;
    sh:name "campaign status" ;
    sh:description "The report will include data for only the campaign status. For example, you can use the filter to include data for only active campaigns. You can specify one or more campaign statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductPartitionPerformanceReportFilter/campaignType> ;
    sh:name "campaign type" ;
    sh:description "The report will include data for only the campaign type. For example, you can use the filter to include data for only Shopping campaigns. You can specify one or more campaign types." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductPartitionPerformanceReportFilter/adGroupStatus> ;
    sh:name "ad group status" ;
    sh:description "The report will include data for only the ad group status. For example, you can use the filter to include data for only active ad groups. You can specify one or more ad group statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductPartitionPerformanceReportFilter/adStatus> ;
    sh:name "ad status" ;
    sh:description "The report will include data for only the ad status. For example, you can use the filter to include data for only active ads. You can specify one or more ad statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductPartitionPerformanceReportFilter/assetGroupStatus> ;
    sh:name "asset group status" ;
    sh:description "The report will include data for only the asset group status. For example, you can use the filter to include data for only active asset groups. You can specify one or more asset group statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Product Partition Performance Report Request
microsoftads:ReportingProductPartitionPerformanceReportRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingProductPartitionPerformanceReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductPartitionPerformanceReportRequest/reportName> ;
    sh:name "report name" ;
    sh:description "The name of the report. The name is included in the report header. If you do not specify a report name, the system generates a name in the form, ReportType-ReportDateTime. The maximum length of the report name is 200." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductPartitionPerformanceReportRequest/format> ;
    sh:name "format" ;
    sh:description "The format of the report data. For example, you can request the data in comma-separated values (Csv) format or tab-separated values (Tsv) format. The default value is Csv. All downloaded files are ZIP compressed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Csv" "Tsv" "Xml" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductPartitionPerformanceReportRequest/returnOnlyCompleteData> ;
    sh:name "return only complete data" ;
    sh:description "Determines whether or not the service must ensure that all the data has been processed and is available. If set to true and if the system has not finished processing all the data based on the requested Aggregation, Scope, and Time, the service returns error code NoCompleteDataAvaliable (2004). Otherwise by default the request can succeed, there is no indication as to whether the data is complete, and the report will contain only the data that the system has finished processing at the time of the request. Please note that because today is still in progress and data is not complete, you cannot set this element to true if the Time period (whether custom or predefined date) includes today's date. For more information, see Time Zones in Reporting." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductPartitionPerformanceReportRequest/excludeReportHeader> ;
    sh:name "exclude report header" ;
    sh:description "Determines whether or not the downloaded report should contain header metadata such as report name, date range, and aggregation. Set this property true if you want the report header metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductPartitionPerformanceReportRequest/excludeReportFooter> ;
    sh:name "exclude report footer" ;
    sh:description "Determines whether or not the downloaded report should contain footer metadata such as Microsoft copyright (`@2020` Microsoft Corporation. All rights reserved.). Set this property true if you want the report footer metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductPartitionPerformanceReportRequest/excludeColumnHeaders> ;
    sh:name "exclude column headers" ;
    sh:description "Determines whether or not the downloaded report should contain header descriptions for each column. The report column header matches the requested column name e.g. Impressions and Clicks. Set this property true if you want the report column headers excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductPartitionPerformanceReportRequest/formatVersion> ;
    sh:name "format version" ;
    sh:description "Determines the format for certain fields in the downloaded report file. The data format for certain fields can be updated within the current API version without breaking existing client applications. You can get the latest data format by setting this optional request field to 2.0. If you do not set this field, the service defaults to version 1.0. For details about changes between format versions, see Report Format Version." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductPartitionPerformanceReportRequest/scope> ;
    sh:name "scope" ;
    sh:description "The entity scope of the report. Use this element to limit the report data to specific accounts, ad groups, or campaigns." ;
    sh:node microsoftads:ReportingAccountThroughAdGroupReportScopeShape ;
    sh:class microsoftads:ReportingAccountThroughAdGroupReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductPartitionPerformanceReportRequest/filter> ;
    sh:name "filter" ;
    sh:description "The filter information to use to filter the report data." ;
    sh:node microsoftads:ReportingProductPartitionPerformanceReportFilterShape ;
    sh:class microsoftads:ReportingProductPartitionPerformanceReportFilter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductPartitionPerformanceReportRequest/time> ;
    sh:name "time" ;
    sh:description "The time period to use for the report. You can specify a custom date range or select a predefined date range, for example, Today or ThisWeek. For a list of the time periods that you can specify for each aggregation type, see Aggregation and Time. You can set the time zone within the ReportTime object, which helps you accurately scope data for the requested time period. If you do not choose a time zone, the Reporting service uses PacificTimeUSCanadaTijuana by default." ;
    sh:node microsoftads:ReportingReportTimeShape ;
    sh:class microsoftads:ReportingReportTime ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductPartitionPerformanceReportRequest/aggregation> ;
    sh:name "aggregation" ;
    sh:description "The type of aggregation to use to aggregate the report data. For example, you can aggregate the report data by day or week, or request a summary report. The default aggregation is Summary. It is important to note that if you do not include TimePeriod in the list of Columns, the aggregation you chose will be ignored and Summary aggregation will be used regardless." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Summary" "Hourly" "Daily" "Weekly" "Monthly" "Yearly" "HourOfDay" "DayOfWeek" "WeeklyStartingMonday" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductPartitionPerformanceReportRequest/columns> ;
    sh:name "columns" ;
    sh:description "The list of attributes and performance statistics to include in the report. The report will include the columns in the order that you specify them." ;
    sh:datatype xsd:string ;
    sh:in ( "AccountName" "AccountNumber" "AccountId" "TimePeriod" "CampaignName" "CampaignId" "AdGroupName" "AdGroupId" "ProductGroup" "AdGroupCriterionId" "PartitionType" "AdId" "CurrentMaxCpc" "CurrencyCode" "DeliveredMatchType" "BidMatchType" "Impressions" "Clicks" "Ctr" "AverageCpc" "Spend" "Conversions" "ConversionRate" "CostPerConversion" "DeviceType" "Language" "CampaignStatus" "AccountStatus" "AdGroupStatus" "DestinationUrl" "Network" "TopVsOther" "Assists" "Revenue" "CostPerAssist" "RevenuePerConversion" "RevenuePerAssist" "OfferLanguage" "CountryOfSale" "AdStatus" "TrackingTemplate" "CustomParameters" "ImpressionSharePercent" "ImpressionLostToBudgetPercent" "ImpressionLostToRankPercent" "BenchmarkBid" "BenchmarkCtr" "AdDistribution" "ClickTypeId" "TotalClicksOnAdElements" "ClickType" "ReturnOnAdSpend" "BidStrategyType" "LocalStoreCode" "AssistedImpressions" "AssistedClicks" "ClickSharePercent" "AbsoluteTopImpressionSharePercent" "AssistedConversions" "AllConversions" "AllRevenue" "AllConversionRate" "AllCostPerConversion" "AllReturnOnAdSpend" "AllRevenuePerConversion" "ViewThroughConversions" "Goal" "GoalType" "AbsoluteTopImpressionRatePercent" "AverageCpm" "ConversionsQualified" "AssistedConversionsQualified" "AllConversionsQualified" "ViewThroughConversionsQualified" "ViewThroughRevenue" "CampaignType" "AssetGroupId" "AssetGroupName" "AssetGroupStatus" "MarketingObjective" "Channel" "SubChannel" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductPartitionPerformanceReportRequest/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Product Partition Unit Performance Report Filter
microsoftads:ReportingProductPartitionUnitPerformanceReportFilterShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingProductPartitionUnitPerformanceReportFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductPartitionUnitPerformanceReportFilter/deviceType> ;
    sh:name "device type" ;
    sh:description "The report will include data for only the specified types of devices on which the ad is displayed. For example, you can use the filter to include data for only ads displayed on computers. You can specify one or more device types." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductPartitionUnitPerformanceReportFilter/language> ;
    sh:name "language" ;
    sh:description "The report will include data for only websites that used the specified languages. You can specify one or more languages." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductPartitionUnitPerformanceReportFilter/accountStatus> ;
    sh:name "account status" ;
    sh:description "The report will include data for only the account status. For example, you can use the filter to include data for only active accounts. You can specify one or more account statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductPartitionUnitPerformanceReportFilter/campaignStatus> ;
    sh:name "campaign status" ;
    sh:description "The report will include data for only the campaign status. For example, you can use the filter to include data for only active campaigns. You can specify one or more campaign statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductPartitionUnitPerformanceReportFilter/adGroupStatus> ;
    sh:name "ad group status" ;
    sh:description "The report will include data for only the ad group status. For example, you can use the filter to include data for only active ad groups. You can specify one or more ad group statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductPartitionUnitPerformanceReportFilter/adStatus> ;
    sh:name "ad status" ;
    sh:description "The report will include data for only the ad status. For example, you can use the filter to include data for only active ads. You can specify one or more ad statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductPartitionUnitPerformanceReportFilter/assetGroupStatus> ;
    sh:name "asset group status" ;
    sh:description "The report will include data for only the asset group status. For example, you can use the filter to include data for only active asset groups. You can specify one or more asset group statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Product Partition Unit Performance Report Request
microsoftads:ReportingProductPartitionUnitPerformanceReportRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingProductPartitionUnitPerformanceReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductPartitionUnitPerformanceReportRequest/reportName> ;
    sh:name "report name" ;
    sh:description "The name of the report. The name is included in the report header. If you do not specify a report name, the system generates a name in the form, ReportType-ReportDateTime. The maximum length of the report name is 200." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductPartitionUnitPerformanceReportRequest/format> ;
    sh:name "format" ;
    sh:description "The format of the report data. For example, you can request the data in comma-separated values (Csv) format or tab-separated values (Tsv) format. The default value is Csv. All downloaded files are ZIP compressed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Csv" "Tsv" "Xml" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductPartitionUnitPerformanceReportRequest/returnOnlyCompleteData> ;
    sh:name "return only complete data" ;
    sh:description "Determines whether or not the service must ensure that all the data has been processed and is available. If set to true and if the system has not finished processing all the data based on the requested Aggregation, Scope, and Time, the service returns error code NoCompleteDataAvaliable (2004). Otherwise by default the request can succeed, there is no indication as to whether the data is complete, and the report will contain only the data that the system has finished processing at the time of the request. Please note that because today is still in progress and data is not complete, you cannot set this element to true if the Time period (whether custom or predefined date) includes today's date. For more information, see Time Zones in Reporting." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductPartitionUnitPerformanceReportRequest/excludeReportHeader> ;
    sh:name "exclude report header" ;
    sh:description "Determines whether or not the downloaded report should contain header metadata such as report name, date range, and aggregation. Set this property true if you want the report header metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductPartitionUnitPerformanceReportRequest/excludeReportFooter> ;
    sh:name "exclude report footer" ;
    sh:description "Determines whether or not the downloaded report should contain footer metadata such as Microsoft copyright (`@2020` Microsoft Corporation. All rights reserved.). Set this property true if you want the report footer metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductPartitionUnitPerformanceReportRequest/excludeColumnHeaders> ;
    sh:name "exclude column headers" ;
    sh:description "Determines whether or not the downloaded report should contain header descriptions for each column. The report column header matches the requested column name e.g. Impressions and Clicks. Set this property true if you want the report column headers excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductPartitionUnitPerformanceReportRequest/formatVersion> ;
    sh:name "format version" ;
    sh:description "Determines the format for certain fields in the downloaded report file. The data format for certain fields can be updated within the current API version without breaking existing client applications. You can get the latest data format by setting this optional request field to 2.0. If you do not set this field, the service defaults to version 1.0. For details about changes between format versions, see Report Format Version." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductPartitionUnitPerformanceReportRequest/scope> ;
    sh:name "scope" ;
    sh:description "The entity scope of the report. Use this element to limit the report data to specific accounts, ad groups, or campaigns." ;
    sh:node microsoftads:ReportingAccountThroughAdGroupReportScopeShape ;
    sh:class microsoftads:ReportingAccountThroughAdGroupReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductPartitionUnitPerformanceReportRequest/filter> ;
    sh:name "filter" ;
    sh:description "The filter information to use to filter the report data." ;
    sh:node microsoftads:ReportingProductPartitionUnitPerformanceReportFilterShape ;
    sh:class microsoftads:ReportingProductPartitionUnitPerformanceReportFilter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductPartitionUnitPerformanceReportRequest/time> ;
    sh:name "time" ;
    sh:description "The time period to use for the report. You can specify a custom date range or select a predefined date range, for example, Today or ThisWeek. For a list of the time periods that you can specify for each aggregation type, see Aggregation and Time. You can set the time zone within the ReportTime object, which helps you accurately scope data for the requested time period. If you do not choose a time zone, the Reporting service uses PacificTimeUSCanadaTijuana by default." ;
    sh:node microsoftads:ReportingReportTimeShape ;
    sh:class microsoftads:ReportingReportTime ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductPartitionUnitPerformanceReportRequest/aggregation> ;
    sh:name "aggregation" ;
    sh:description "The type of aggregation to use to aggregate the report data. For example, you can aggregate the report data by day or week, or request a summary report. The default aggregation is Summary. It is important to note that if you do not include TimePeriod in the list of Columns, the aggregation you chose will be ignored and Summary aggregation will be used regardless." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Summary" "Hourly" "Daily" "Weekly" "Monthly" "Yearly" "HourOfDay" "DayOfWeek" "WeeklyStartingMonday" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductPartitionUnitPerformanceReportRequest/columns> ;
    sh:name "columns" ;
    sh:description "The list of attributes and performance statistics to include in the report. The report will include the columns in the order that you specify them." ;
    sh:datatype xsd:string ;
    sh:in ( "AccountName" "AccountNumber" "AccountId" "TimePeriod" "CampaignName" "CampaignId" "AdGroupName" "AdGroupId" "ProductGroup" "AdGroupCriterionId" "AdId" "CurrentMaxCpc" "CurrencyCode" "DeliveredMatchType" "BidMatchType" "Impressions" "Clicks" "Ctr" "AverageCpc" "Spend" "Conversions" "ConversionRate" "CostPerConversion" "DeviceType" "Language" "CampaignStatus" "AccountStatus" "AdGroupStatus" "DestinationUrl" "Network" "TopVsOther" "Assists" "Revenue" "CostPerAssist" "RevenuePerConversion" "RevenuePerAssist" "AdStatus" "TrackingTemplate" "CustomParameters" "ReturnOnAdSpend" "BidStrategyType" "LocalStoreCode" "AssistedImpressions" "AssistedClicks" "AssistedConversions" "AllConversions" "AllRevenue" "AllConversionRate" "AllCostPerConversion" "AllReturnOnAdSpend" "AllRevenuePerConversion" "ViewThroughConversions" "Goal" "GoalType" "AbsoluteTopImpressionRatePercent" "AverageCpm" "ConversionsQualified" "AssistedConversionsQualified" "AllConversionsQualified" "ViewThroughConversionsQualified" "ViewThroughRevenue" "CampaignType" "AssetGroupId" "AssetGroupName" "AssetGroupStatus" "MarketingObjective" "Channel" "SubChannel" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductPartitionUnitPerformanceReportRequest/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Product Search Query Performance Report Filter
microsoftads:ReportingProductSearchQueryPerformanceReportFilterShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingProductSearchQueryPerformanceReportFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductSearchQueryPerformanceReportFilter/accountStatus> ;
    sh:name "account status" ;
    sh:description "The report will include data for only the account status. For example, you can use the filter to include data for only active accounts. You can specify one or more account statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductSearchQueryPerformanceReportFilter/adStatus> ;
    sh:name "ad status" ;
    sh:description "The report will include data for ads that have the specified status value. You can specify one or more status values." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductSearchQueryPerformanceReportFilter/adType> ;
    sh:name "ad type" ;
    sh:description "The report will include data for only the specified ad types. For example, the report can include data for product or expanded text ads. You can specify one or more ad types." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductSearchQueryPerformanceReportFilter/campaignStatus> ;
    sh:name "campaign status" ;
    sh:description "The report will include data for campaigns that have the specified status value. You can specify one or more status values." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductSearchQueryPerformanceReportFilter/excludeZeroClicks> ;
    sh:name "exclude zero clicks" ;
    sh:description "If the value of this element is set to true, search terms that had one or more ad impressions but resulted in zero clicks in the specified time duration will be excluded from the report. The default value is false, in which case the report will include zero click search term data. Regardless of the value of this filter, search terms with zero clicks in the last 30 days will always be excluded." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductSearchQueryPerformanceReportFilter/language> ;
    sh:name "language" ;
    sh:description "The report will include data for only websites that used the specified languages. You can specify one or more languages." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductSearchQueryPerformanceReportFilter/searchQueries> ;
    sh:name "search queries" ;
    sh:description "The report will include data for only the specified search query strings. The list can contain a maximum of 30 strings, and each string can contain a maximum of 256 characters." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductSearchQueryPerformanceReportFilter/adGroupStatus> ;
    sh:name "ad group status" ;
    sh:description "The report will include data for only the ad group status. For example, you can use the filter to include data for only active ad groups. You can specify one or more ad group statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductSearchQueryPerformanceReportFilter/assetGroupStatus> ;
    sh:name "asset group status" ;
    sh:description "The report will include data for only the asset group status. For example, you can use the filter to include data for only active asset groups. You can specify one or more asset group statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Product Search Query Performance Report Request
microsoftads:ReportingProductSearchQueryPerformanceReportRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingProductSearchQueryPerformanceReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductSearchQueryPerformanceReportRequest/reportName> ;
    sh:name "report name" ;
    sh:description "The name of the report. The name is included in the report header. If you do not specify a report name, the system generates a name in the form, ReportType-ReportDateTime. The maximum length of the report name is 200." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductSearchQueryPerformanceReportRequest/format> ;
    sh:name "format" ;
    sh:description "The format of the report data. For example, you can request the data in comma-separated values (Csv) format or tab-separated values (Tsv) format. The default value is Csv. All downloaded files are ZIP compressed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Csv" "Tsv" "Xml" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductSearchQueryPerformanceReportRequest/returnOnlyCompleteData> ;
    sh:name "return only complete data" ;
    sh:description "Determines whether or not the service must ensure that all the data has been processed and is available. If set to true and if the system has not finished processing all the data based on the requested Aggregation, Scope, and Time, the service returns error code NoCompleteDataAvaliable (2004). Otherwise by default the request can succeed, there is no indication as to whether the data is complete, and the report will contain only the data that the system has finished processing at the time of the request. Please note that because today is still in progress and data is not complete, you cannot set this element to true if the Time period (whether custom or predefined date) includes today's date. For more information, see Time Zones in Reporting." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductSearchQueryPerformanceReportRequest/excludeReportHeader> ;
    sh:name "exclude report header" ;
    sh:description "Determines whether or not the downloaded report should contain header metadata such as report name, date range, and aggregation. Set this property true if you want the report header metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductSearchQueryPerformanceReportRequest/excludeReportFooter> ;
    sh:name "exclude report footer" ;
    sh:description "Determines whether or not the downloaded report should contain footer metadata such as Microsoft copyright (`@2020` Microsoft Corporation. All rights reserved.). Set this property true if you want the report footer metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductSearchQueryPerformanceReportRequest/excludeColumnHeaders> ;
    sh:name "exclude column headers" ;
    sh:description "Determines whether or not the downloaded report should contain header descriptions for each column. The report column header matches the requested column name e.g. Impressions and Clicks. Set this property true if you want the report column headers excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductSearchQueryPerformanceReportRequest/formatVersion> ;
    sh:name "format version" ;
    sh:description "Determines the format for certain fields in the downloaded report file. The data format for certain fields can be updated within the current API version without breaking existing client applications. You can get the latest data format by setting this optional request field to 2.0. If you do not set this field, the service defaults to version 1.0. For details about changes between format versions, see Report Format Version." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductSearchQueryPerformanceReportRequest/scope> ;
    sh:name "scope" ;
    sh:description "The entity scope of the report. Use this element to limit the report data to specific accounts, ad groups, or campaigns." ;
    sh:node microsoftads:ReportingAccountThroughAdGroupReportScopeShape ;
    sh:class microsoftads:ReportingAccountThroughAdGroupReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductSearchQueryPerformanceReportRequest/filter> ;
    sh:name "filter" ;
    sh:description "The filter information to use to filter the report data." ;
    sh:node microsoftads:ReportingProductSearchQueryPerformanceReportFilterShape ;
    sh:class microsoftads:ReportingProductSearchQueryPerformanceReportFilter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductSearchQueryPerformanceReportRequest/time> ;
    sh:name "time" ;
    sh:description "The time period to use for the report. You can specify a custom date range or select a predefined date range, for example, Today or ThisWeek. For a list of the time periods that you can specify for each aggregation type, see Aggregation and Time. You can set the time zone within the ReportTime object, which helps you accurately scope data for the requested time period. If you do not choose a time zone, the Reporting service uses PacificTimeUSCanadaTijuana by default." ;
    sh:node microsoftads:ReportingReportTimeShape ;
    sh:class microsoftads:ReportingReportTime ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductSearchQueryPerformanceReportRequest/aggregation> ;
    sh:name "aggregation" ;
    sh:description "The type of aggregation to use to aggregate the report data. For example, you can aggregate the report data by day or week, or request a summary report. The default aggregation is Summary. It is important to note that if you do not include TimePeriod in the list of Columns, the aggregation you chose will be ignored and Summary aggregation will be used regardless." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Summary" "Hourly" "Daily" "Weekly" "Monthly" "Yearly" "HourOfDay" "DayOfWeek" "WeeklyStartingMonday" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductSearchQueryPerformanceReportRequest/columns> ;
    sh:name "columns" ;
    sh:description "The list of attributes and performance statistics to include in the report. The report will include the columns in the order that you specify them." ;
    sh:datatype xsd:string ;
    sh:in ( "TimePeriod" "AccountId" "AccountNumber" "AccountName" "AdId" "AdGroupId" "AdGroupName" "CampaignId" "CampaignName" "DestinationUrl" "DeviceType" "DeviceOS" "Language" "SearchQuery" "Network" "MerchantProductId" "Title" "ClickTypeId" "TotalClicksOnAdElements" "ClickType" "AdGroupCriterionId" "ProductGroup" "PartitionType" "Impressions" "Clicks" "Ctr" "AverageCpc" "Spend" "Conversions" "ConversionRate" "Assists" "CostPerAssist" "Revenue" "CostPerConversion" "RevenuePerConversion" "RevenuePerAssist" "CustomerId" "CustomerName" "AssistedImpressions" "AssistedClicks" "AssistedConversions" "AllConversions" "AllRevenue" "AllConversionRate" "AllCostPerConversion" "AllRevenuePerConversion" "Goal" "GoalType" "AbsoluteTopImpressionRatePercent" "AverageCpm" "ConversionsQualified" "AssistedConversionsQualified" "AllConversionsQualified" "CampaignType" "AssetGroupId" "AssetGroupName" "MarketingObjective" "Channel" "SubChannel" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProductSearchQueryPerformanceReportRequest/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Professional Demographics Audience Report Filter
microsoftads:ReportingProfessionalDemographicsAudienceReportFilterShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingProfessionalDemographicsAudienceReportFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProfessionalDemographicsAudienceReportFilter/adDistribution> ;
    sh:name "ad distribution" ;
    sh:description "The report will include data for only the specified distribution medium. For example, you may use the filter to include data for only search ads. You may specify one or more distribution mediums." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProfessionalDemographicsAudienceReportFilter/language> ;
    sh:name "language" ;
    sh:description "The report will include data for only websites that used the specified languages. You can specify one or more languages." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProfessionalDemographicsAudienceReportFilter/accountStatus> ;
    sh:name "account status" ;
    sh:description "The report will include data for only the account status. For example, you can use the filter to include data for only active accounts. You can specify one or more account statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProfessionalDemographicsAudienceReportFilter/campaignStatus> ;
    sh:name "campaign status" ;
    sh:description "The report will include data for only the campaign status. For example, you can use the filter to include data for only active campaigns. You can specify one or more campaign statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProfessionalDemographicsAudienceReportFilter/adGroupStatus> ;
    sh:name "ad group status" ;
    sh:description "The report will include data for only the ad group status. For example, you can use the filter to include data for only active ad groups. You can specify one or more ad group statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProfessionalDemographicsAudienceReportFilter/assetGroupStatus> ;
    sh:name "asset group status" ;
    sh:description "The status of the asset group." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Professional Demographics Audience Report Request
microsoftads:ReportingProfessionalDemographicsAudienceReportRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingProfessionalDemographicsAudienceReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProfessionalDemographicsAudienceReportRequest/reportName> ;
    sh:name "report name" ;
    sh:description "The name of the report. The name is included in the report header. If you do not specify a report name, the system generates a name in the form, ReportType-ReportDateTime. The maximum length of the report name is 200." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProfessionalDemographicsAudienceReportRequest/format> ;
    sh:name "format" ;
    sh:description "The format of the report data. For example, you can request the data in comma-separated values (Csv) format or tab-separated values (Tsv) format. The default value is Csv. All downloaded files are ZIP compressed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Csv" "Tsv" "Xml" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProfessionalDemographicsAudienceReportRequest/returnOnlyCompleteData> ;
    sh:name "return only complete data" ;
    sh:description "Determines whether or not the service must ensure that all the data has been processed and is available. If set to true and if the system has not finished processing all the data based on the requested Aggregation, Scope, and Time, the service returns error code NoCompleteDataAvaliable (2004). Otherwise by default the request can succeed, there is no indication as to whether the data is complete, and the report will contain only the data that the system has finished processing at the time of the request. Please note that because today is still in progress and data is not complete, you cannot set this element to true if the Time period (whether custom or predefined date) includes today's date. For more information, see Time Zones in Reporting." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProfessionalDemographicsAudienceReportRequest/excludeReportHeader> ;
    sh:name "exclude report header" ;
    sh:description "Determines whether or not the downloaded report should contain header metadata such as report name, date range, and aggregation. Set this property true if you want the report header metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProfessionalDemographicsAudienceReportRequest/excludeReportFooter> ;
    sh:name "exclude report footer" ;
    sh:description "Determines whether or not the downloaded report should contain footer metadata such as Microsoft copyright (`@2020` Microsoft Corporation. All rights reserved.). Set this property true if you want the report footer metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProfessionalDemographicsAudienceReportRequest/excludeColumnHeaders> ;
    sh:name "exclude column headers" ;
    sh:description "Determines whether or not the downloaded report should contain header descriptions for each column. The report column header matches the requested column name e.g. Impressions and Clicks. Set this property true if you want the report column headers excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProfessionalDemographicsAudienceReportRequest/formatVersion> ;
    sh:name "format version" ;
    sh:description "Determines the format for certain fields in the downloaded report file. The data format for certain fields can be updated within the current API version without breaking existing client applications. You can get the latest data format by setting this optional request field to 2.0. If you do not set this field, the service defaults to version 1.0. For details about changes between format versions, see Report Format Version." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProfessionalDemographicsAudienceReportRequest/scope> ;
    sh:name "scope" ;
    sh:description "The entity scope of the report. Use this element to limit the report data to specific accounts, ad groups, or campaigns." ;
    sh:node microsoftads:ReportingAccountThroughAdGroupReportScopeShape ;
    sh:class microsoftads:ReportingAccountThroughAdGroupReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProfessionalDemographicsAudienceReportRequest/filter> ;
    sh:name "filter" ;
    sh:description "The filter information to use to filter the report data." ;
    sh:node microsoftads:ReportingProfessionalDemographicsAudienceReportFilterShape ;
    sh:class microsoftads:ReportingProfessionalDemographicsAudienceReportFilter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProfessionalDemographicsAudienceReportRequest/time> ;
    sh:name "time" ;
    sh:description "The time period to use for the report. You can specify a custom date range or select a predefined date range, for example, Today or ThisWeek. For a list of the time periods that you can specify for each aggregation type, see Aggregation and Time." ;
    sh:node microsoftads:ReportingReportTimeShape ;
    sh:class microsoftads:ReportingReportTime ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProfessionalDemographicsAudienceReportRequest/aggregation> ;
    sh:name "aggregation" ;
    sh:description "The type of aggregation to use to aggregate the report data. For example, you can aggregate the report data by day or week, or request a summary report. The default aggregation is Summary. It is important to note that if you do not include TimePeriod in the list of Columns, the aggregation you chose will be ignored and Summary aggregation will be used regardless." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Summary" "Hourly" "Daily" "Weekly" "Monthly" "Yearly" "HourOfDay" "DayOfWeek" "WeeklyStartingMonday" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProfessionalDemographicsAudienceReportRequest/columns> ;
    sh:name "columns" ;
    sh:description "The list of attributes and performance statistics to include in the report. The report will include the columns in the order that you specify them." ;
    sh:datatype xsd:string ;
    sh:in ( "AccountName" "AccountNumber" "AccountId" "TimePeriod" "CampaignName" "CampaignId" "AdGroupName" "AdGroupId" "CompanyName" "IndustryName" "JobFunctionName" "JobSeniorityName" "CustomLinkedInName" "LinkedInSegmentName" "LinkedInSegmentId" "LinkedInSegmentType" "AdDistribution" "Impressions" "Clicks" "Spend" "Conversions" "Language" "Assists" "Revenue" "AccountStatus" "CampaignStatus" "AdGroupStatus" "AveragePosition" "AllConversions" "AllRevenue" "ViewThroughConversions" "Goal" "GoalType" "AbsoluteTopImpressionRatePercent" "TopImpressionRatePercent" "ConversionsQualified" "AllConversionsQualified" "ViewThroughConversionsQualified" "ViewThroughRevenue" "CampaignType" "AssetGroupId" "AssetGroupName" "AssetGroupStatus" "MarketingObjective" "Channel" "SubChannel" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingProfessionalDemographicsAudienceReportRequest/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Publisher Usage Performance Report Filter
microsoftads:ReportingPublisherUsagePerformanceReportFilterShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingPublisherUsagePerformanceReportFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingPublisherUsagePerformanceReportFilter/adDistribution> ;
    sh:name "ad distribution" ;
    sh:description "The report will include data for only the specified distribution medium. For example, you may use the filter to include data for only search ads. You may specify one or more distribution mediums." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingPublisherUsagePerformanceReportFilter/language> ;
    sh:name "language" ;
    sh:description "The report will include data for only websites that used the specified languages. You can specify one or more languages." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingPublisherUsagePerformanceReportFilter/accountStatus> ;
    sh:name "account status" ;
    sh:description "The report will include data for only the account status. For example, you can use the filter to include data for only active accounts. You can specify one or more account statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingPublisherUsagePerformanceReportFilter/campaignStatus> ;
    sh:name "campaign status" ;
    sh:description "The report will include data for only the campaign status. For example, you can use the filter to include data for only active campaigns. You can specify one or more campaign statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingPublisherUsagePerformanceReportFilter/adGroupStatus> ;
    sh:name "ad group status" ;
    sh:description "The report will include data for only the ad group status. For example, you can use the filter to include data for only active ad groups. You can specify one or more ad group statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingPublisherUsagePerformanceReportFilter/assetGroupStatus> ;
    sh:name "asset group status" ;
    sh:description "The report will include data for only the asset group status. For example, you can use the filter to include data for only active asset groups. You can specify one or more asset group statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Publisher Usage Performance Report Request
microsoftads:ReportingPublisherUsagePerformanceReportRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingPublisherUsagePerformanceReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingPublisherUsagePerformanceReportRequest/reportName> ;
    sh:name "report name" ;
    sh:description "The name of the report. The name is included in the report header. If you do not specify a report name, the system generates a name in the form, ReportType-ReportDateTime. The maximum length of the report name is 200." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingPublisherUsagePerformanceReportRequest/format> ;
    sh:name "format" ;
    sh:description "The format of the report data. For example, you can request the data in comma-separated values (Csv) format or tab-separated values (Tsv) format. The default value is Csv. All downloaded files are ZIP compressed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Csv" "Tsv" "Xml" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingPublisherUsagePerformanceReportRequest/returnOnlyCompleteData> ;
    sh:name "return only complete data" ;
    sh:description "Determines whether or not the service must ensure that all the data has been processed and is available. If set to true and if the system has not finished processing all the data based on the requested Aggregation, Scope, and Time, the service returns error code NoCompleteDataAvaliable (2004). Otherwise by default the request can succeed, there is no indication as to whether the data is complete, and the report will contain only the data that the system has finished processing at the time of the request. Please note that because today is still in progress and data is not complete, you cannot set this element to true if the Time period (whether custom or predefined date) includes today's date. For more information, see Time Zones in Reporting." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingPublisherUsagePerformanceReportRequest/excludeReportHeader> ;
    sh:name "exclude report header" ;
    sh:description "Determines whether or not the downloaded report should contain header metadata such as report name, date range, and aggregation. Set this property true if you want the report header metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingPublisherUsagePerformanceReportRequest/excludeReportFooter> ;
    sh:name "exclude report footer" ;
    sh:description "Determines whether or not the downloaded report should contain footer metadata such as Microsoft copyright (`@2020` Microsoft Corporation. All rights reserved.). Set this property true if you want the report footer metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingPublisherUsagePerformanceReportRequest/excludeColumnHeaders> ;
    sh:name "exclude column headers" ;
    sh:description "Determines whether or not the downloaded report should contain header descriptions for each column. The report column header matches the requested column name e.g. Impressions and Clicks. Set this property true if you want the report column headers excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingPublisherUsagePerformanceReportRequest/formatVersion> ;
    sh:name "format version" ;
    sh:description "Determines the format for certain fields in the downloaded report file. The data format for certain fields can be updated within the current API version without breaking existing client applications. You can get the latest data format by setting this optional request field to 2.0. If you do not set this field, the service defaults to version 1.0. For details about changes between format versions, see Report Format Version." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingPublisherUsagePerformanceReportRequest/scope> ;
    sh:name "scope" ;
    sh:description "The entity scope of the report. Use this element to limit the report data to specific accounts, ad groups, or campaigns." ;
    sh:node microsoftads:ReportingAccountThroughAdGroupReportScopeShape ;
    sh:class microsoftads:ReportingAccountThroughAdGroupReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingPublisherUsagePerformanceReportRequest/filter> ;
    sh:name "filter" ;
    sh:description "The filter information to use to filter the report data." ;
    sh:node microsoftads:ReportingPublisherUsagePerformanceReportFilterShape ;
    sh:class microsoftads:ReportingPublisherUsagePerformanceReportFilter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingPublisherUsagePerformanceReportRequest/time> ;
    sh:name "time" ;
    sh:description "The time period to use for the report. You can specify a custom date range or select a predefined date range, for example, Today or ThisWeek. For a list of the time periods that you can specify for each aggregation type, see Aggregation and Time. You can set the time zone within the ReportTime object, which helps you accurately scope data for the requested time period. If you do not choose a time zone, the Reporting service uses PacificTimeUSCanadaTijuana by default." ;
    sh:node microsoftads:ReportingReportTimeShape ;
    sh:class microsoftads:ReportingReportTime ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingPublisherUsagePerformanceReportRequest/aggregation> ;
    sh:name "aggregation" ;
    sh:description "The type of aggregation to use to aggregate the report data. For example, you can aggregate the report data by day or week, or request a summary report. The default aggregation is Summary. It is important to note that if you do not include TimePeriod in the list of Columns, the aggregation you chose will be ignored and Summary aggregation will be used regardless." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Summary" "Hourly" "Daily" "Weekly" "Monthly" "Yearly" "HourOfDay" "DayOfWeek" "WeeklyStartingMonday" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingPublisherUsagePerformanceReportRequest/columns> ;
    sh:name "columns" ;
    sh:description "The list of attributes and performance statistics to include in the report. The report will include the columns in the order that you specify them." ;
    sh:datatype xsd:string ;
    sh:in ( "AccountName" "AccountNumber" "AccountId" "TimePeriod" "CampaignName" "CampaignId" "AdGroupName" "AdGroupId" "CurrencyCode" "AdDistribution" "PublisherUrl" "Impressions" "Clicks" "Ctr" "AverageCpc" "Spend" "AveragePosition" "Conversions" "ConversionRate" "CostPerConversion" "Language" "BidMatchType" "DeliveredMatchType" "Network" "TopVsOther" "DeviceType" "DeviceOS" "Assists" "Revenue" "ReturnOnAdSpend" "CostPerAssist" "RevenuePerConversion" "RevenuePerAssist" "AccountStatus" "CampaignStatus" "AdGroupStatus" "AllConversions" "AllRevenue" "AllConversionRate" "AllCostPerConversion" "AllReturnOnAdSpend" "AllRevenuePerConversion" "ViewThroughConversions" "Goal" "GoalType" "AbsoluteTopImpressionRatePercent" "TopImpressionRatePercent" "AverageCpm" "ConversionsQualified" "AllConversionsQualified" "ViewThroughConversionsQualified" "ViewThroughRevenue" "CampaignType" "AssetGroupId" "AssetGroupName" "AssetGroupStatus" "AppName" "AppBundle" "AppStoreUrl" "Downloads" "PostClickDownloadRate" "CostPerDownload" "AppInstalls" "PostClickInstallRate" "CPI" "Purchases" "PostInstallPurchaseRate" "CPP" "Subscriptions" "PostInstallSubscriptionRate" "CPS" "LowQualityClicks" "LowQualityClicksPercent" "LowQualityImpressions" "LowQualityImpressionsPercent" "LowQualityGeneralClicks" "LowQualitySophisticatedClicks" "MarketingObjective" "Channel" "SubChannel" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingPublisherUsagePerformanceReportRequest/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Report Request
microsoftads:ReportingReportRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingReportRequest/reportName> ;
    sh:name "report name" ;
    sh:description "The name of the report. The name is included in the report header. If you do not specify a report name, the system generates a name in the form, ReportType-ReportDateTime. The maximum length of the report name is 200." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingReportRequest/format> ;
    sh:name "format" ;
    sh:description "The format of the report data. For example, you can request the data in comma-separated values (Csv) format or tab-separated values (Tsv) format. The default value is Csv. All downloaded files are ZIP compressed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Csv" "Tsv" "Xml" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingReportRequest/returnOnlyCompleteData> ;
    sh:name "return only complete data" ;
    sh:description "Determines whether or not the service must ensure that all the data has been processed and is available. If set to true and if the system has not finished processing all the data based on the requested aggregation, scope, and time, the service returns error code NoCompleteDataAvaliable (2004). Otherwise by default the request can succeed, there is no indication as to whether the data is complete, and the report will contain only the data that the system has finished processing at the time of the request. Please note that because today is still in progress and data is not complete, you cannot set this element to true if the time period (whether custom or predefined date) includes today's date. For more information, see Time Zones in Reporting." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingReportRequest/excludeReportHeader> ;
    sh:name "exclude report header" ;
    sh:description "Determines whether or not the downloaded report should contain header metadata such as report name, date range, and aggregation. Set this property true if you want the report header metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingReportRequest/excludeReportFooter> ;
    sh:name "exclude report footer" ;
    sh:description "Determines whether or not the downloaded report should contain footer metadata such as Microsoft copyright (`@2020` Microsoft Corporation. All rights reserved.). Set this property true if you want the report footer metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingReportRequest/excludeColumnHeaders> ;
    sh:name "exclude column headers" ;
    sh:description "Determines whether or not the downloaded report should contain header descriptions for each column. The report column header matches the requested column name e.g. Impressions and Clicks. Set this property true if you want the report column headers excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingReportRequest/formatVersion> ;
    sh:name "format version" ;
    sh:description "Determines the format for certain fields in the downloaded report file. The data format for certain fields can be updated within the current API version without breaking existing client applications. You can get the latest data format by setting this optional request field to 2.0. If you do not set this field, the service defaults to version 1.0. For details about changes between format versions, see Report Format Version." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingReportRequest/scope> ;
    sh:name "scope" ;
    sh:node microsoftads:ReportingAccountThroughCampaignReportScopeShape ;
    sh:class microsoftads:ReportingAccountThroughCampaignReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingReportRequest/filter> ;
    sh:name "filter" ;
    sh:node microsoftads:ReportingSearchTermLandingPageReportFilterShape ;
    sh:class microsoftads:ReportingSearchTermLandingPageReportFilter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingReportRequest/time> ;
    sh:name "time" ;
    sh:node microsoftads:ReportingReportTimeShape ;
    sh:class microsoftads:ReportingReportTime ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingReportRequest/aggregation> ;
    sh:name "aggregation" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Summary" "Hourly" "Daily" "Weekly" "Monthly" "Yearly" "HourOfDay" "DayOfWeek" "WeeklyStartingMonday" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingReportRequest/columns> ;
    sh:name "columns" ;
    sh:datatype xsd:string ;
    sh:in ( "AccountName" "AccountId" "CampaignName" "CampaignId" "AdGroupName" "AdGroupId" "AdId" "AdType" "CampaignType" "Language" "SearchQuery" "Keyword" "BidMatchType" "DeliveredMatchType" "Headline" "FinalUrl" "FinalUrlSource" "Impressions" "Clicks" "Ctr" "AverageCpc" "Spend" "Conversions" "ConversionRate" "CostPerConversion" "AbsoluteTopImpressionRatePercent" "TopImpressionRatePercent" "Revenue" "ReturnOnAdSpend" "TimePeriod" "ConversionsQualified" "MarketingObjective" "Channel" "SubChannel" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingReportRequest/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingReportRequest/sort> ;
    sh:name "sort" ;
    sh:node microsoftads:ReportingKeywordPerformanceReportSortShape ;
    sh:class microsoftads:ReportingKeywordPerformanceReportSort ;
    sh:nodeKind sh:BlankNodeOrIRI ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingReportRequest/maxRows> ;
    sh:name "max rows" ;
    sh:datatype xsd:int ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Search Term Landing Page Report Filter
microsoftads:ReportingSearchTermLandingPageReportFilterShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingSearchTermLandingPageReportFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchTermLandingPageReportFilter/deliveredMatchType> ;
    sh:name "delivered match type" ;
    sh:description "Includes rows in the report where the delivered match type matches one of the specified match types. You can include multiple match type values as flags. Supported values include Exact, Phrase, Broad, and AIOptimized. This element is optional. If not specified, all delivered match types are included." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchTermLandingPageReportFilter/searchQueries> ;
    sh:name "search queries" ;
    sh:description "Includes rows in the report where the search term matches one of the specified search query strings. You can specify up to 100 search query strings. Each search query string can contain a maximum of 100 characters. This element is optional. If not specified, the report is not filtered on search term." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchTermLandingPageReportFilter/adType> ;
    sh:name "ad type" ;
    sh:description "Includes rows in the report where the ad type matches one of the specified ad types. You can include multiple ad type values as flags. This element is optional. If not specified, all ad types are included." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchTermLandingPageReportFilter/language> ;
    sh:name "language" ;
    sh:description "Includes rows in the report where the language matches one of the specified languages. You can include multiple language values as flags. This element is optional. If not specified, all languages are included." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Report Request Base
microsoftads:ReportingReportRequestBaseShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingReportRequestBase ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingReportRequestBase/reportName> ;
    sh:name "report name" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingReportRequestBase/format> ;
    sh:name "format" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Csv" "Tsv" "Xml" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingReportRequestBase/returnOnlyCompleteData> ;
    sh:name "return only complete data" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingReportRequestBase/excludeReportHeader> ;
    sh:name "exclude report header" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingReportRequestBase/excludeReportFooter> ;
    sh:name "exclude report footer" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingReportRequestBase/excludeColumnHeaders> ;
    sh:name "exclude column headers" ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingReportRequestBase/formatVersion> ;
    sh:name "format version" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Search Campaign Change History Report Filter
microsoftads:ReportingSearchCampaignChangeHistoryReportFilterShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingSearchCampaignChangeHistoryReportFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchCampaignChangeHistoryReportFilter/itemChanged> ;
    sh:name "item changed" ;
    sh:description "The report will include data for only the specified type of entity. For example, you can use the filter to include data only for changes to ad groups or campaigns. You may specify only one type of entity." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchCampaignChangeHistoryReportFilter/howChanged> ;
    sh:name "how changed" ;
    sh:description "The report will include data for only the specified type of change. For example, you can use the filter to include data only for updates or deletions. You may specify only one type of change." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchCampaignChangeHistoryReportFilter/adDistribution> ;
    sh:name "ad distribution" ;
    sh:description "The report will include data for only the specified distribution medium. For example, you can use the filter to include data for only search ads. You can specify one or more distribution mediums." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Search Campaign Change History Report Request
microsoftads:ReportingSearchCampaignChangeHistoryReportRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingSearchCampaignChangeHistoryReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchCampaignChangeHistoryReportRequest/reportName> ;
    sh:name "report name" ;
    sh:description "The name of the report. The name is included in the report header. If you do not specify a report name, the system generates a name in the form, ReportType-ReportDateTime. The maximum length of the report name is 200." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchCampaignChangeHistoryReportRequest/format> ;
    sh:name "format" ;
    sh:description "The format of the report data. For example, you can request the data in comma-separated values (Csv) format or tab-separated values (Tsv) format. The default value is Csv. All downloaded files are ZIP compressed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Csv" "Tsv" "Xml" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchCampaignChangeHistoryReportRequest/returnOnlyCompleteData> ;
    sh:name "return only complete data" ;
    sh:description "Determines whether or not the service must ensure that all the data has been processed and is available. If set to true and if the system has not finished processing all the data based on the requested Scope and Time, the service returns error code NoCompleteDataAvaliable (2004). Otherwise by default the request can succeed, there is no indication as to whether the data is complete, and the report will contain only the data that the system has finished processing at the time of the request. Please note that because today is still in progress and data is not complete, you cannot set this element to true if the Time period (whether custom or predefined date) includes today's date. For more information, see Time Zones in Reporting." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchCampaignChangeHistoryReportRequest/excludeReportHeader> ;
    sh:name "exclude report header" ;
    sh:description "Determines whether or not the downloaded report should contain header metadata such as report name, date range, and aggregation. Set this property true if you want the report header metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchCampaignChangeHistoryReportRequest/excludeReportFooter> ;
    sh:name "exclude report footer" ;
    sh:description "Determines whether or not the downloaded report should contain footer metadata such as Microsoft copyright (`@2020` Microsoft Corporation. All rights reserved.). Set this property true if you want the report footer metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchCampaignChangeHistoryReportRequest/excludeColumnHeaders> ;
    sh:name "exclude column headers" ;
    sh:description "Determines whether or not the downloaded report should contain header descriptions for each column. The report column header matches the requested column name e.g. Impressions and Clicks. Set this property true if you want the report column headers excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchCampaignChangeHistoryReportRequest/formatVersion> ;
    sh:name "format version" ;
    sh:description "Determines the format for certain fields in the downloaded report file. The data format for certain fields can be updated within the current API version without breaking existing client applications. You can get the latest data format by setting this optional request field to 2.0. If you do not set this field, the service defaults to version 1.0. For details about changes between format versions, see Report Format Version." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchCampaignChangeHistoryReportRequest/scope> ;
    sh:name "scope" ;
    sh:description "The entity scope of the report. Use this element to limit the report data to specific accounts, ad groups, or campaigns. For this report you may only specify one account identifier in the AccountIds element of the AccountThroughAdGroupReportScope object." ;
    sh:node microsoftads:ReportingAccountThroughAdGroupReportScopeShape ;
    sh:class microsoftads:ReportingAccountThroughAdGroupReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchCampaignChangeHistoryReportRequest/filter> ;
    sh:name "filter" ;
    sh:description "The filter information to use to filter the report data." ;
    sh:node microsoftads:ReportingSearchCampaignChangeHistoryReportFilterShape ;
    sh:class microsoftads:ReportingSearchCampaignChangeHistoryReportFilter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchCampaignChangeHistoryReportRequest/time> ;
    sh:name "time" ;
    sh:description "The time period to use for the report. You can specify a custom date range or select one of the following predefined date ranges: LastSevenDays LastMonth LastThreeMonths You can set the time zone within the ReportTime object, which helps you accurately scope data for the requested time period. If you do not choose a time zone, the Reporting service uses PacificTimeUSCanadaTijuana by default." ;
    sh:node microsoftads:ReportingReportTimeShape ;
    sh:class microsoftads:ReportingReportTime ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchCampaignChangeHistoryReportRequest/columns> ;
    sh:name "columns" ;
    sh:description "The list of attributes and performance statistics to include in the report. The report will include the columns in the order that you specify them." ;
    sh:datatype xsd:string ;
    sh:in ( "DateTime" "AccountId" "AccountName" "AccountNumber" "ChangedBy" "CampaignName" "CampaignId" "AdGroupName" "AdGroupId" "AdTitle" "AdDescription" "DisplayUrl" "Keyword" "ItemChanged" "AttributeChanged" "HowChanged" "OldValue" "NewValue" "EntityName" "EntityId" "Tool" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchCampaignChangeHistoryReportRequest/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Search Insight Performance Report Filter
microsoftads:ReportingSearchInsightPerformanceReportFilterShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingSearchInsightPerformanceReportFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchInsightPerformanceReportFilter/searchCategory> ;
    sh:name "search category" ;
    sh:description "The report will only include data for campaigns with the specified search category." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchInsightPerformanceReportFilter/searchQueries> ;
    sh:name "search queries" ;
    sh:description "The report will only include data for campaigns with the specified search queries." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchInsightPerformanceReportFilter/campaignStatus> ;
    sh:name "campaign status" ;
    sh:description "The report will only include data for campaigns with the specified status. For example, you can use the filter to include data for only active campaigns. You can specify one or more campaign statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchInsightPerformanceReportFilter/accountStatus> ;
    sh:name "account status" ;
    sh:description "The report will only include data for accounts with the specified status. For example, you can use the filter to include data for only active accounts. You can specify one or more account statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchInsightPerformanceReportFilter/adGroupStatus> ;
    sh:name "ad group status" ;
    sh:description "The report will only include data for ad groups with the specified status. For example, you can use the filter to include data for only active ad groups. You can specify one or more ad group statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchInsightPerformanceReportFilter/assetGroupStatus> ;
    sh:name "asset group status" ;
    sh:description "The report will include data for only the asset group status. For example, you can use the filter to include data for only active asset groups. You can specify one or more asset group statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Search Insight Performance Report Request
microsoftads:ReportingSearchInsightPerformanceReportRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingSearchInsightPerformanceReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchInsightPerformanceReportRequest/reportName> ;
    sh:name "report name" ;
    sh:description "The name of the report. The name is included in the report header. If you do not specify a report name, the system generates a name in the form, ReportType-ReportDateTime. The maximum length of the report name is 200." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchInsightPerformanceReportRequest/format> ;
    sh:name "format" ;
    sh:description "The format of the report data. For example, you can request the data in comma-separated values (Csv) format or tab-separated values (Tsv) format. The default value is Csv. All downloaded files are ZIP compressed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Csv" "Tsv" "Xml" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchInsightPerformanceReportRequest/returnOnlyCompleteData> ;
    sh:name "return only complete data" ;
    sh:description "Determines whether or not the service must ensure that all the data has been processed and is available. If set to true and if the system has not finished processing all the data based on the requested Aggregation, Scope, and Time, the service returns error code NoCompleteDataAvaliable (2004). Otherwise by default the request can succeed, there is no indication as to whether the data is complete, and the report will contain only the data that the system has finished processing at the time of the request. Please note that because today is still in progress and data is not complete, you cannot set this element to true if the Time period (whether custom or predefined date) includes today's date. For more information, see Time Zones in Reporting." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchInsightPerformanceReportRequest/excludeReportHeader> ;
    sh:name "exclude report header" ;
    sh:description "Determines whether or not the downloaded report should contain header metadata such as report name, date range, and aggregation. Set this property true if you want the report header metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchInsightPerformanceReportRequest/excludeReportFooter> ;
    sh:name "exclude report footer" ;
    sh:description "Determines whether or not the downloaded report should contain footer metadata such as Microsoft copyright (`@2020` Microsoft Corporation. All rights reserved.). Set this property true if you want the report footer metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchInsightPerformanceReportRequest/excludeColumnHeaders> ;
    sh:name "exclude column headers" ;
    sh:description "Determines whether or not the downloaded report should contain header descriptions for each column. The report column header matches the requested column name e.g. Impressions and Clicks. Set this property true if you want the report column headers excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchInsightPerformanceReportRequest/formatVersion> ;
    sh:name "format version" ;
    sh:description "Determines the format for certain fields in the downloaded report file. The data format for certain fields can be updated within the current API version without breaking existing client applications. You can get the latest data format by setting this optional request field to 2.0. If you do not set this field, the service defaults to version 1.0. For details about changes between format versions, see Report Format Version." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchInsightPerformanceReportRequest/scope> ;
    sh:name "scope" ;
    sh:description "The entity scope of the report. Use this element to limit the report data to specific accounts, ad groups, or campaigns." ;
    sh:node microsoftads:ReportingAccountThroughCampaignReportScopeShape ;
    sh:class microsoftads:ReportingAccountThroughCampaignReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchInsightPerformanceReportRequest/filter> ;
    sh:name "filter" ;
    sh:description "The filter information to use to filter the report data." ;
    sh:node microsoftads:ReportingSearchInsightPerformanceReportFilterShape ;
    sh:class microsoftads:ReportingSearchInsightPerformanceReportFilter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchInsightPerformanceReportRequest/time> ;
    sh:name "time" ;
    sh:description "The time period to use for the report. You can specify a custom date range or select a predefined date range, for example, Today or ThisWeek. For a list of the time periods that you can specify for each aggregation type, see Aggregation and Time. You can set the time zone within the ReportTime object, which helps you accurately scope data for the requested time period. If you do not choose a time zone, the Reporting service uses PacificTimeUSCanadaTijuana by default." ;
    sh:node microsoftads:ReportingReportTimeShape ;
    sh:class microsoftads:ReportingReportTime ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchInsightPerformanceReportRequest/aggregation> ;
    sh:name "aggregation" ;
    sh:description "The type of aggregation to use to aggregate the report data. For example, you can aggregate the report data by day or week, or request a summary report. The default aggregation is Summary. It is important to note that if you do not include TimePeriod in the list of Columns, the aggregation you chose will be ignored and Summary aggregation will be used regardless." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Summary" "Hourly" "Daily" "Weekly" "Monthly" "Yearly" "HourOfDay" "DayOfWeek" "WeeklyStartingMonday" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchInsightPerformanceReportRequest/columns> ;
    sh:name "columns" ;
    sh:description "The list of attributes and performance statistics to include in the report. The report will include the columns in the order that you specify them." ;
    sh:datatype xsd:string ;
    sh:in ( "AccountName" "AccountNumber" "AccountId" "TimePeriod" "CampaignName" "CampaignId" "AdGroupName" "AdGroupId" "CampaignStatus" "Impressions" "Clicks" "Ctr" "Spend" "SearchQuery" "Conversions" "ConversionRate" "Revenue" "ReturnOnAdSpend" "RevenuePerConversion" "AccountStatus" "AdGroupStatus" "CustomerId" "CustomerName" "AssetGroupId" "AssetGroupName" "AssetGroupStatus" "SearchCategory" "SearchVolume" "MarketingObjective" "Channel" "SubChannel" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchInsightPerformanceReportRequest/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Search Query Performance Report Filter
microsoftads:ReportingSearchQueryPerformanceReportFilterShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingSearchQueryPerformanceReportFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchQueryPerformanceReportFilter/deliveredMatchType> ;
    sh:name "delivered match type" ;
    sh:description "The report will include data for only the specified delivered match types (as opposed to the bid match type). For example, you can use the filter to include data for ads that were delivered using the exact or phrase match type. You can specify one or more delivered match types." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchQueryPerformanceReportFilter/searchQueries> ;
    sh:name "search queries" ;
    sh:description "The report will include data for only the specified search query strings. The list can contain a maximum of 30 strings, and each string can contain a maximum of 256 characters." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchQueryPerformanceReportFilter/adType> ;
    sh:name "ad type" ;
    sh:description "The report will include data for only the specified ad types. For example, the report can include data for product or expanded text ads. You can specify one or more ad types." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchQueryPerformanceReportFilter/campaignStatus> ;
    sh:name "campaign status" ;
    sh:description "The report will include data for campaigns that have the specified status value. You can specify one or more status values." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchQueryPerformanceReportFilter/adStatus> ;
    sh:name "ad status" ;
    sh:description "The report will include data for ads that have the specified status value. You can specify one or more status values." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchQueryPerformanceReportFilter/language> ;
    sh:name "language" ;
    sh:description "The report will include data for only websites that used the specified languages. You can specify one or more languages." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchQueryPerformanceReportFilter/accountStatus> ;
    sh:name "account status" ;
    sh:description "The report will include data for only the account status. For example, you can use the filter to include data for only active accounts. You can specify one or more account statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchQueryPerformanceReportFilter/adGroupStatus> ;
    sh:name "ad group status" ;
    sh:description "The report will include data for only the ad group status. For example, you can use the filter to include data for only active ad groups. You can specify one or more ad group statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchQueryPerformanceReportFilter/keywordStatus> ;
    sh:name "keyword status" ;
    sh:description "The report will include data for only the keyword status. For example, you can use the filter to include data for only active keywords. You can specify one or more keyword statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchQueryPerformanceReportFilter/excludeZeroClicks> ;
    sh:name "exclude zero clicks" ;
    sh:description "If the value of this element is set to true, search terms that had one or more ad impressions but resulted in zero clicks in the specified time duration will be excluded from the report. The default value is false, in which case the report will include zero click search term data. Regardless of the value of this filter, search terms with zero clicks in the last 30 days will always be excluded." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchQueryPerformanceReportFilter/assetGroupStatus> ;
    sh:name "asset group status" ;
    sh:description "Reserved." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Search Query Performance Report Request
microsoftads:ReportingSearchQueryPerformanceReportRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingSearchQueryPerformanceReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchQueryPerformanceReportRequest/reportName> ;
    sh:name "report name" ;
    sh:description "The name of the report. The name is included in the report header. If you do not specify a report name, the system generates a name in the form, ReportType-ReportDateTime. The maximum length of the report name is 200." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchQueryPerformanceReportRequest/format> ;
    sh:name "format" ;
    sh:description "The format of the report data. For example, you can request the data in comma-separated values (Csv) format or tab-separated values (Tsv) format. The default value is Csv. All downloaded files are ZIP compressed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Csv" "Tsv" "Xml" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchQueryPerformanceReportRequest/returnOnlyCompleteData> ;
    sh:name "return only complete data" ;
    sh:description "Determines whether or not the service must ensure that all the data has been processed and is available. If set to true and if the system has not finished processing all the data based on the requested Aggregation, Scope, and Time, the service returns error code NoCompleteDataAvaliable (2004). Otherwise by default the request can succeed, there is no indication as to whether the data is complete, and the report will contain only the data that the system has finished processing at the time of the request. Please note that because today is still in progress and data is not complete, you cannot set this element to true if the Time period (whether custom or predefined date) includes today's date. For more information, see Time Zones in Reporting." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchQueryPerformanceReportRequest/excludeReportHeader> ;
    sh:name "exclude report header" ;
    sh:description "Determines whether or not the downloaded report should contain header metadata such as report name, date range, and aggregation. Set this property true if you want the report header metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchQueryPerformanceReportRequest/excludeReportFooter> ;
    sh:name "exclude report footer" ;
    sh:description "Determines whether or not the downloaded report should contain footer metadata such as Microsoft copyright (`@2020` Microsoft Corporation. All rights reserved.). Set this property true if you want the report footer metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchQueryPerformanceReportRequest/excludeColumnHeaders> ;
    sh:name "exclude column headers" ;
    sh:description "Determines whether or not the downloaded report should contain header descriptions for each column. The report column header matches the requested column name e.g. Impressions and Clicks. Set this property true if you want the report column headers excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchQueryPerformanceReportRequest/formatVersion> ;
    sh:name "format version" ;
    sh:description "Determines the format for certain fields in the downloaded report file. The data format for certain fields can be updated within the current API version without breaking existing client applications. You can get the latest data format by setting this optional request field to 2.0. If you do not set this field, the service defaults to version 1.0. For details about changes between format versions, see Report Format Version." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchQueryPerformanceReportRequest/scope> ;
    sh:name "scope" ;
    sh:description "The entity scope of the report. Use this element to limit the report data to specific accounts, ad groups, or campaigns." ;
    sh:node microsoftads:ReportingAccountThroughAdGroupReportScopeShape ;
    sh:class microsoftads:ReportingAccountThroughAdGroupReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchQueryPerformanceReportRequest/filter> ;
    sh:name "filter" ;
    sh:description "The filter information to use to filter the report data." ;
    sh:node microsoftads:ReportingSearchQueryPerformanceReportFilterShape ;
    sh:class microsoftads:ReportingSearchQueryPerformanceReportFilter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchQueryPerformanceReportRequest/time> ;
    sh:name "time" ;
    sh:description "The time period to use for the report. You can specify a custom date range or select a predefined date range, for example, Today or ThisWeek. For a list of the time periods that you can specify for each aggregation type, see Aggregation and Time. You can set the time zone within the ReportTime object, which helps you accurately scope data for the requested time period. If you do not choose a time zone, the Reporting service uses PacificTimeUSCanadaTijuana by default." ;
    sh:node microsoftads:ReportingReportTimeShape ;
    sh:class microsoftads:ReportingReportTime ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchQueryPerformanceReportRequest/aggregation> ;
    sh:name "aggregation" ;
    sh:description "The type of aggregation to use to aggregate the report data. For example, you can aggregate the report data by day or week, or request a summary report. The default aggregation is Summary. It is important to note that if you do not include TimePeriod in the list of Columns, the aggregation you chose will be ignored and Summary aggregation will be used regardless." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Summary" "Hourly" "Daily" "Weekly" "Monthly" "Yearly" "HourOfDay" "DayOfWeek" "WeeklyStartingMonday" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchQueryPerformanceReportRequest/columns> ;
    sh:name "columns" ;
    sh:description "The list of attributes and performance statistics to include in the report. The report will include the columns in the order that you specify them." ;
    sh:datatype xsd:string ;
    sh:in ( "AccountName" "AccountNumber" "AccountId" "TimePeriod" "CampaignName" "CampaignId" "AdGroupName" "AdGroupId" "AdId" "AdType" "DestinationUrl" "BidMatchType" "DeliveredMatchType" "CampaignStatus" "AdStatus" "Impressions" "Clicks" "Ctr" "AverageCpc" "Spend" "AveragePosition" "SearchQuery" "Keyword" "AdGroupCriterionId" "Conversions" "ConversionRate" "CostPerConversion" "Language" "KeywordId" "Network" "TopVsOther" "DeviceType" "DeviceOS" "Assists" "Revenue" "ReturnOnAdSpend" "CostPerAssist" "RevenuePerConversion" "RevenuePerAssist" "AccountStatus" "AdGroupStatus" "KeywordStatus" "CampaignType" "CustomerId" "CustomerName" "AllConversions" "AllRevenue" "AllConversionRate" "AllCostPerConversion" "AllReturnOnAdSpend" "AllRevenuePerConversion" "Goal" "GoalType" "AbsoluteTopImpressionRatePercent" "TopImpressionRatePercent" "AverageCpm" "ConversionsQualified" "AllConversionsQualified" "AssetGroupName" "AssetGroupId" "AssetGroupStatus" "MarketingObjective" "Channel" "SubChannel" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchQueryPerformanceReportRequest/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Search Term Landing Page Report Request
microsoftads:ReportingSearchTermLandingPageReportRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingSearchTermLandingPageReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchTermLandingPageReportRequest/reportName> ;
    sh:name "report name" ;
    sh:description "The name of the report. The name will be used as the name of the download file. This element is optional." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchTermLandingPageReportRequest/format> ;
    sh:name "format" ;
    sh:description "The format of the report file. For example you can specify to have the report data written to a file that uses comma-separated values (CSV). This element is optional and defaults to Csv." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Csv" "Tsv" "Xml" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchTermLandingPageReportRequest/returnOnlyCompleteData> ;
    sh:name "return only complete data" ;
    sh:description "Determines whether the operation returns data for only fully processed time periods. This element is optional and defaults to false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchTermLandingPageReportRequest/excludeReportHeader> ;
    sh:name "exclude report header" ;
    sh:description "Determines whether or not the report includes header information such as the report name and date range. This element is optional and defaults to false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchTermLandingPageReportRequest/excludeReportFooter> ;
    sh:name "exclude report footer" ;
    sh:description "Determines whether or not the report includes footer information such as copyright. This element is optional and defaults to false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchTermLandingPageReportRequest/excludeColumnHeaders> ;
    sh:name "exclude column headers" ;
    sh:description "Determines whether or not the report includes header descriptions for each column of data. This element is optional and defaults to false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchTermLandingPageReportRequest/formatVersion> ;
    sh:name "format version" ;
    sh:description "The format version of the report file. This element is optional." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchTermLandingPageReportRequest/scope> ;
    sh:name "scope" ;
    sh:description "The entities and their scope to include in the report. Use this element to limit the report data to specific accounts and campaigns. This element is required." ;
    sh:node microsoftads:ReportingAccountThroughCampaignReportScopeShape ;
    sh:class microsoftads:ReportingAccountThroughCampaignReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchTermLandingPageReportRequest/filter> ;
    sh:name "filter" ;
    sh:description "The filter information to use to filter the report data. This element is optional." ;
    sh:node microsoftads:ReportingSearchTermLandingPageReportFilterShape ;
    sh:class microsoftads:ReportingSearchTermLandingPageReportFilter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchTermLandingPageReportRequest/time> ;
    sh:name "time" ;
    sh:description "The time frame to use to aggregate the report data. You can specify a custom date range or select a predefined date range, for example, Today or ThisWeek. This element is required." ;
    sh:node microsoftads:ReportingReportTimeShape ;
    sh:class microsoftads:ReportingReportTime ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchTermLandingPageReportRequest/aggregation> ;
    sh:name "aggregation" ;
    sh:description "The type of aggregation to use to aggregate the report data. For example, you can aggregate the report data by day or week. Supported values are Hourly, Daily, Weekly, Monthly, Yearly, DayOfWeek, and HourOfDay*. This element is required." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Summary" "Hourly" "Daily" "Weekly" "Monthly" "Yearly" "HourOfDay" "DayOfWeek" "WeeklyStartingMonday" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchTermLandingPageReportRequest/columns> ;
    sh:name "columns" ;
    sh:description "The list of attributes and performance statistics to include in the report. The report will include the columns in the order that you specify them. You must specify Final URL and at least one performance statistics column, e.g., Impressions. This element is required." ;
    sh:datatype xsd:string ;
    sh:in ( "AccountName" "AccountId" "CampaignName" "CampaignId" "AdGroupName" "AdGroupId" "AdId" "AdType" "CampaignType" "Language" "SearchQuery" "Keyword" "BidMatchType" "DeliveredMatchType" "Headline" "FinalUrl" "FinalUrlSource" "Impressions" "Clicks" "Ctr" "AverageCpc" "Spend" "Conversions" "ConversionRate" "CostPerConversion" "AbsoluteTopImpressionRatePercent" "TopImpressionRatePercent" "Revenue" "ReturnOnAdSpend" "TimePeriod" "ConversionsQualified" "MarketingObjective" "Channel" "SubChannel" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSearchTermLandingPageReportRequest/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Share Of Voice Report Filter
microsoftads:ReportingShareOfVoiceReportFilterShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingShareOfVoiceReportFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingShareOfVoiceReportFilter/adDistribution> ;
    sh:name "ad distribution" ;
    sh:description "The report will include data for only the specified distribution medium. For example, you can use the filter to include data for only search ads. You can specify one or more distribution mediums." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingShareOfVoiceReportFilter/bidMatchType> ;
    sh:name "bid match type" ;
    sh:description "The report will include data for only the specified bid match types. For example, you can use the filter to include data for ads that were bid on using the exact or phrase match type. You can specify one or more bid match types. To filter on delivered match types, see the DeliveredMatchType element." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingShareOfVoiceReportFilter/deliveredMatchType> ;
    sh:name "delivered match type" ;
    sh:description "The report will include data for only the specified delivered match types. For example, you can use the filter to include data for ads that were delivered using the exact or phrase match type. You can specify one or more delivered match types. To filter on bid match types, see the BidMatchType element." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingShareOfVoiceReportFilter/keywords> ;
    sh:name "keywords" ;
    sh:description "The report will include data for only the specified keywords. You can specify a maximum of 75 keywords. Each keyword can contain a maximum of 100 characters." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingShareOfVoiceReportFilter/language> ;
    sh:name "language" ;
    sh:description "The report will include data for only websites that used the specified languages. You can specify one or more languages." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingShareOfVoiceReportFilter/deviceType> ;
    sh:name "device type" ;
    sh:description "The report will include data for only the specified types of devices on which the ad is displayed. For example, you can use the filter to include data only for expanded text ads displayed on smartphones. You can specify one or more device types." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingShareOfVoiceReportFilter/accountStatus> ;
    sh:name "account status" ;
    sh:description "The report will include data for only the account status. For example, you can use the filter to include data for only active accounts. You can specify one or more account statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingShareOfVoiceReportFilter/campaignStatus> ;
    sh:name "campaign status" ;
    sh:description "The report will include data for only the campaign status. For example, you can use the filter to include data for only active campaigns. You can specify one or more campaign statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingShareOfVoiceReportFilter/adGroupStatus> ;
    sh:name "ad group status" ;
    sh:description "The report will include data for only the ad group status. For example, you can use the filter to include data for only active ad groups. You can specify one or more ad group statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingShareOfVoiceReportFilter/keywordStatus> ;
    sh:name "keyword status" ;
    sh:description "The report will include data for only the keyword status. For example, you can use the filter to include data for only active keywords. You can specify one or more keyword statuses." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingShareOfVoiceReportFilter/bidStrategyType> ;
    sh:name "bid strategy type" ;
    sh:description "The report will include data for only the specified bid strategy type or types. For example, you can use the filter to include data only for keywords that were bid on using the enhanced bid strategy type. You can specify one or more bid strategy types." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Share Of Voice Report Request
microsoftads:ReportingShareOfVoiceReportRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingShareOfVoiceReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingShareOfVoiceReportRequest/reportName> ;
    sh:name "report name" ;
    sh:description "The name of the report. The name is included in the report header. If you do not specify a report name, the system generates a name in the form, ReportType-ReportDateTime. The maximum length of the report name is 200." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingShareOfVoiceReportRequest/format> ;
    sh:name "format" ;
    sh:description "The format of the report data. For example, you can request the data in comma-separated values (Csv) format or tab-separated values (Tsv) format. The default value is Csv. All downloaded files are ZIP compressed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Csv" "Tsv" "Xml" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingShareOfVoiceReportRequest/returnOnlyCompleteData> ;
    sh:name "return only complete data" ;
    sh:description "Determines whether or not the service must ensure that all the data has been processed and is available. If set to true and if the system has not finished processing all the data based on the requested Aggregation, Scope, and Time, the service returns error code NoCompleteDataAvaliable (2004). Otherwise by default the request can succeed, there is no indication as to whether the data is complete, and the report will contain only the data that the system has finished processing at the time of the request. Please note that because today is still in progress and data is not complete, you cannot set this element to true if the Time period (whether custom or predefined date) includes today's date. For more information, see Time Zones in Reporting." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingShareOfVoiceReportRequest/excludeReportHeader> ;
    sh:name "exclude report header" ;
    sh:description "Determines whether or not the downloaded report should contain header metadata such as report name, date range, and aggregation. Set this property true if you want the report header metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingShareOfVoiceReportRequest/excludeReportFooter> ;
    sh:name "exclude report footer" ;
    sh:description "Determines whether or not the downloaded report should contain footer metadata such as Microsoft copyright (`@2020` Microsoft Corporation. All rights reserved.). Set this property true if you want the report footer metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingShareOfVoiceReportRequest/excludeColumnHeaders> ;
    sh:name "exclude column headers" ;
    sh:description "Determines whether or not the downloaded report should contain header descriptions for each column. The report column header matches the requested column name e.g. Impressions and Clicks. Set this property true if you want the report column headers excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingShareOfVoiceReportRequest/formatVersion> ;
    sh:name "format version" ;
    sh:description "Determines the format for certain fields in the downloaded report file. The data format for certain fields can be updated within the current API version without breaking existing client applications. You can get the latest data format by setting this optional request field to 2.0. If you do not set this field, the service defaults to version 1.0. For details about changes between format versions, see Report Format Version." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingShareOfVoiceReportRequest/scope> ;
    sh:name "scope" ;
    sh:description "The entity scope of the report. Use this element to limit the report data to specific accounts, ad groups, or campaigns." ;
    sh:node microsoftads:ReportingAccountThroughAdGroupReportScopeShape ;
    sh:class microsoftads:ReportingAccountThroughAdGroupReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingShareOfVoiceReportRequest/filter> ;
    sh:name "filter" ;
    sh:description "The filter information to use to filter the report data." ;
    sh:node microsoftads:ReportingShareOfVoiceReportFilterShape ;
    sh:class microsoftads:ReportingShareOfVoiceReportFilter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingShareOfVoiceReportRequest/time> ;
    sh:name "time" ;
    sh:description "The time period to use for the report. You can specify a custom date range or select a predefined date range, for example, Today or ThisWeek. For a list of the time periods that you can specify for each aggregation type, see Aggregation and Time. You can set the time zone within the ReportTime object, which helps you accurately scope data for the requested time period. If you do not choose a time zone, the Reporting service uses PacificTimeUSCanadaTijuana by default." ;
    sh:node microsoftads:ReportingReportTimeShape ;
    sh:class microsoftads:ReportingReportTime ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingShareOfVoiceReportRequest/aggregation> ;
    sh:name "aggregation" ;
    sh:description "The type of aggregation to use to aggregate the report data. For example, you can aggregate the report data by day or week, or request a summary report. The default aggregation is Summary. It is important to note that if you do not include TimePeriod in the list of Columns, the aggregation you chose will be ignored and Summary aggregation will be used regardless." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Summary" "Hourly" "Daily" "Weekly" "Monthly" "Yearly" "HourOfDay" "DayOfWeek" "WeeklyStartingMonday" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingShareOfVoiceReportRequest/columns> ;
    sh:name "columns" ;
    sh:description "The list of attributes and performance statistics to include in the report. The report will include the columns in the order that you specify them." ;
    sh:datatype xsd:string ;
    sh:in ( "AccountName" "TimePeriod" "CampaignName" "AdGroupName" "Keyword" "DeliveredMatchType" "BidMatchType" "Language" "AccountNumber" "AccountId" "KeywordId" "AdGroupId" "CampaignId" "Impressions" "Clicks" "Ctr" "AverageCpc" "Spend" "AveragePosition" "ImpressionSharePercent" "ImpressionLostToBudgetPercent" "ImpressionLostToRankAggPercent" "CurrentMaxCpc" "QualityScore" "ExpectedCtr" "AdRelevance" "LandingPageExperience" "Conversions" "ConversionRate" "CostPerConversion" "AdDistribution" "ClickSharePercent" "DeviceType" "Network" "AccountStatus" "CampaignStatus" "AdGroupStatus" "KeywordStatus" "BidStrategyType" "KeywordLabels" "ExactMatchImpressionSharePercent" "TopImpressionShareLostToRankPercent" "TopImpressionShareLostToBudgetPercent" "AbsoluteTopImpressionShareLostToRankPercent" "AbsoluteTopImpressionShareLostToBudgetPercent" "AbsoluteTopImpressionSharePercent" "TopImpressionSharePercent" "AbsoluteTopImpressionRatePercent" "TopImpressionRatePercent" "BaseCampaignId" "AllConversions" "AllConversionRate" "AllCostPerConversion" "ViewThroughConversions" "Goal" "GoalType" "AverageCpm" "ConversionsQualified" "AllConversionsQualified" "ViewThroughConversionsQualified" "ViewThroughRevenue" "MarketingObjective" "Channel" "SubChannel" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingShareOfVoiceReportRequest/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Submit Generate Report Request
microsoftads:ReportingSubmitGenerateReportRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingSubmitGenerateReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSubmitGenerateReportRequest/reportRequest> ;
    sh:name "report request" ;
    sh:description "The report request. The request must be an object that derives from ReportRequest. For a list of report request types, see Report Types." ;
    sh:or (
      [ sh:node microsoftads:ReportingAccountPerformanceReportRequestShape ; sh:class microsoftads:ReportingAccountPerformanceReportRequest ]
      [ sh:node microsoftads:ReportingAdDynamicTextPerformanceReportRequestShape ; sh:class microsoftads:ReportingAdDynamicTextPerformanceReportRequest ]
      [ sh:node microsoftads:ReportingAdExtensionByAdReportRequestShape ; sh:class microsoftads:ReportingAdExtensionByAdReportRequest ]
      [ sh:node microsoftads:ReportingAdExtensionByKeywordReportRequestShape ; sh:class microsoftads:ReportingAdExtensionByKeywordReportRequest ]
      [ sh:node microsoftads:ReportingAdExtensionDetailReportRequestShape ; sh:class microsoftads:ReportingAdExtensionDetailReportRequest ]
      [ sh:node microsoftads:ReportingAdGroupPerformanceReportRequestShape ; sh:class microsoftads:ReportingAdGroupPerformanceReportRequest ]
      [ sh:node microsoftads:ReportingAdPerformanceReportRequestShape ; sh:class microsoftads:ReportingAdPerformanceReportRequest ]
      [ sh:node microsoftads:ReportingAgeGenderAudienceReportRequestShape ; sh:class microsoftads:ReportingAgeGenderAudienceReportRequest ]
      [ sh:node microsoftads:ReportingAppsPerformanceReportRequestShape ; sh:class microsoftads:ReportingAppsPerformanceReportRequest ]
      [ sh:node microsoftads:ReportingAssetGroupPerformanceReportRequestShape ; sh:class microsoftads:ReportingAssetGroupPerformanceReportRequest ]
      [ sh:node microsoftads:ReportingAssetPerformanceReportRequestShape ; sh:class microsoftads:ReportingAssetPerformanceReportRequest ]
      [ sh:node microsoftads:ReportingAudiencePerformanceReportRequestShape ; sh:class microsoftads:ReportingAudiencePerformanceReportRequest ]
      [ sh:node microsoftads:ReportingBidStrategyReportRequestShape ; sh:class microsoftads:ReportingBidStrategyReportRequest ]
      [ sh:node microsoftads:ReportingBudgetSummaryReportRequestShape ; sh:class microsoftads:ReportingBudgetSummaryReportRequest ]
      [ sh:node microsoftads:ReportingCallDetailReportRequestShape ; sh:class microsoftads:ReportingCallDetailReportRequest ]
      [ sh:node microsoftads:ReportingCampaignPerformanceReportRequestShape ; sh:class microsoftads:ReportingCampaignPerformanceReportRequest ]
      [ sh:node microsoftads:ReportingCategoryClickCoverageReportRequestShape ; sh:class microsoftads:ReportingCategoryClickCoverageReportRequest ]
      [ sh:node microsoftads:ReportingCategoryInsightsReportRequestShape ; sh:class microsoftads:ReportingCategoryInsightsReportRequest ]
      [ sh:node microsoftads:ReportingCombinationPerformanceReportRequestShape ; sh:class microsoftads:ReportingCombinationPerformanceReportRequest ]
      [ sh:node microsoftads:ReportingConversionPerformanceReportRequestShape ; sh:class microsoftads:ReportingConversionPerformanceReportRequest ]
      [ sh:node microsoftads:ReportingDSAAutoTargetPerformanceReportRequestShape ; sh:class microsoftads:ReportingDSAAutoTargetPerformanceReportRequest ]
      [ sh:node microsoftads:ReportingDSACategoryPerformanceReportRequestShape ; sh:class microsoftads:ReportingDSACategoryPerformanceReportRequest ]
      [ sh:node microsoftads:ReportingDSASearchQueryPerformanceReportRequestShape ; sh:class microsoftads:ReportingDSASearchQueryPerformanceReportRequest ]
      [ sh:node microsoftads:ReportingDestinationUrlPerformanceReportRequestShape ; sh:class microsoftads:ReportingDestinationUrlPerformanceReportRequest ]
      [ sh:node microsoftads:ReportingFeedItemPerformanceReportRequestShape ; sh:class microsoftads:ReportingFeedItemPerformanceReportRequest ]
      [ sh:node microsoftads:ReportingGeographicPerformanceReportRequestShape ; sh:class microsoftads:ReportingGeographicPerformanceReportRequest ]
      [ sh:node microsoftads:ReportingGoalsAndFunnelsReportRequestShape ; sh:class microsoftads:ReportingGoalsAndFunnelsReportRequest ]
      [ sh:node microsoftads:ReportingHotelDimensionPerformanceReportRequestShape ; sh:class microsoftads:ReportingHotelDimensionPerformanceReportRequest ]
      [ sh:node microsoftads:ReportingHotelGroupPerformanceReportRequestShape ; sh:class microsoftads:ReportingHotelGroupPerformanceReportRequest ]
      [ sh:node microsoftads:ReportingKeywordPerformanceReportRequestShape ; sh:class microsoftads:ReportingKeywordPerformanceReportRequest ]
      [ sh:node microsoftads:ReportingMMMPerformanceReportRequestShape ; sh:class microsoftads:ReportingMMMPerformanceReportRequest ]
      [ sh:node microsoftads:ReportingMSClickIdPerformanceReportRequestShape ; sh:class microsoftads:ReportingMSClickIdPerformanceReportRequest ]
      [ sh:node microsoftads:ReportingNegativeKeywordConflictReportRequestShape ; sh:class microsoftads:ReportingNegativeKeywordConflictReportRequest ]
      [ sh:node microsoftads:ReportingProductDimensionPerformanceReportRequestShape ; sh:class microsoftads:ReportingProductDimensionPerformanceReportRequest ]
      [ sh:node microsoftads:ReportingProductMatchCountReportRequestShape ; sh:class microsoftads:ReportingProductMatchCountReportRequest ]
      [ sh:node microsoftads:ReportingProductNegativeKeywordConflictReportRequestShape ; sh:class microsoftads:ReportingProductNegativeKeywordConflictReportRequest ]
      [ sh:node microsoftads:ReportingProductPartitionPerformanceReportRequestShape ; sh:class microsoftads:ReportingProductPartitionPerformanceReportRequest ]
      [ sh:node microsoftads:ReportingProductPartitionUnitPerformanceReportRequestShape ; sh:class microsoftads:ReportingProductPartitionUnitPerformanceReportRequest ]
      [ sh:node microsoftads:ReportingProductSearchQueryPerformanceReportRequestShape ; sh:class microsoftads:ReportingProductSearchQueryPerformanceReportRequest ]
      [ sh:node microsoftads:ReportingProfessionalDemographicsAudienceReportRequestShape ; sh:class microsoftads:ReportingProfessionalDemographicsAudienceReportRequest ]
      [ sh:node microsoftads:ReportingPublisherUsagePerformanceReportRequestShape ; sh:class microsoftads:ReportingPublisherUsagePerformanceReportRequest ]
      [ sh:node microsoftads:ReportingReportRequestShape ; sh:class microsoftads:ReportingReportRequest ]
      [ sh:node microsoftads:ReportingReportRequestBaseShape ; sh:class microsoftads:ReportingReportRequestBase ]
      [ sh:node microsoftads:ReportingSearchCampaignChangeHistoryReportRequestShape ; sh:class microsoftads:ReportingSearchCampaignChangeHistoryReportRequest ]
      [ sh:node microsoftads:ReportingSearchInsightPerformanceReportRequestShape ; sh:class microsoftads:ReportingSearchInsightPerformanceReportRequest ]
      [ sh:node microsoftads:ReportingSearchQueryPerformanceReportRequestShape ; sh:class microsoftads:ReportingSearchQueryPerformanceReportRequest ]
      [ sh:node microsoftads:ReportingSearchTermLandingPageReportRequestShape ; sh:class microsoftads:ReportingSearchTermLandingPageReportRequest ]
      [ sh:node microsoftads:ReportingShareOfVoiceReportRequestShape ; sh:class microsoftads:ReportingShareOfVoiceReportRequest ]
      [ sh:node microsoftads:ReportingTravelQueryInsightReportRequestShape ; sh:class microsoftads:ReportingTravelQueryInsightReportRequest ]
      [ sh:node microsoftads:ReportingUserLocationPerformanceReportRequestShape ; sh:class microsoftads:ReportingUserLocationPerformanceReportRequest ]
    ) ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Submit Generate Report Response
microsoftads:ReportingSubmitGenerateReportResponseShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingSubmitGenerateReportResponse ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingSubmitGenerateReportResponse/reportRequestId> ;
    sh:name "report request id" ;
    sh:description "The identifier of the report request. Use this identifier when calling the PollGenerateReport to determine the status of the report request. The identifier is valid for a maximum of one day. If you have not successfully downloaded the file within this period, it is removed from the download site and you will need to get a new report request identifier. The string has a length up to 40 and can contain any character." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting Travel Query Insight Report Request
microsoftads:ReportingTravelQueryInsightReportRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingTravelQueryInsightReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingTravelQueryInsightReportRequest/reportName> ;
    sh:name "report name" ;
    sh:description "The name of the report. The name is included in the report header. If you do not specify a report name, the system generates a name in the form, ReportType-ReportDateTime. The maximum length of the report name is 200." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingTravelQueryInsightReportRequest/format> ;
    sh:name "format" ;
    sh:description "The format of the report data. For example, you can request the data in comma-separated values (Csv) format or tab-separated values (Tsv) format. The default value is Csv. All downloaded files are ZIP compressed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Csv" "Tsv" "Xml" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingTravelQueryInsightReportRequest/returnOnlyCompleteData> ;
    sh:name "return only complete data" ;
    sh:description "Determines whether or not the service must ensure that all the data has been processed and is available. If set to true and if the system has not finished processing all the data based on the requested Scope, and Time, the service returns error code NoCompleteDataAvaliable (2004). Otherwise by default the request can succeed, there is no indication as to whether the data is complete, and the report will contain only the data that the system has finished processing at the time of the request. Please note that because today is still in progress and data is not complete, you cannot set this element to true if the Time period (whether custom or predefined date) includes today's date. For more information, see Time Zones in Reporting." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingTravelQueryInsightReportRequest/excludeReportHeader> ;
    sh:name "exclude report header" ;
    sh:description "Determines whether or not the downloaded report should contain header metadata such as report name and date range. Set this property true if you want the report header metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingTravelQueryInsightReportRequest/excludeReportFooter> ;
    sh:name "exclude report footer" ;
    sh:description "Determines whether or not the downloaded report should contain footer metadata such as Microsoft copyright (`@2020` Microsoft Corporation. All rights reserved.). Set this property true if you want the report footer metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingTravelQueryInsightReportRequest/excludeColumnHeaders> ;
    sh:name "exclude column headers" ;
    sh:description "Determines whether or not the downloaded report should contain header descriptions for each column. The report column header matches the requested column name e.g. Impressions and Clicks. Set this property true if you want the report column headers excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingTravelQueryInsightReportRequest/formatVersion> ;
    sh:name "format version" ;
    sh:description "Determines the format for certain fields in the downloaded report file. The data format for certain fields can be updated within the current API version without breaking existing client applications. You can get the latest data format by setting this optional request field to 2.0. If you do not set this field, the service defaults to version 1.0. For details about changes between format versions, see Report Format Version." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingTravelQueryInsightReportRequest/scope> ;
    sh:name "scope" ;
    sh:description "The entity scope of the report. Use this element to limit the report data to specific accounts, ad groups, or campaigns." ;
    sh:node microsoftads:ReportingAccountReportScopeShape ;
    sh:class microsoftads:ReportingAccountReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingTravelQueryInsightReportRequest/filter> ;
    sh:name "filter" ;
    sh:description "The filter information to use to filter the report data." ;
    sh:datatype rdf:JSON ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingTravelQueryInsightReportRequest/time> ;
    sh:name "time" ;
    sh:description "The time period to use for the report. You can specify a custom date range or select a predefined date range, for example, Today or ThisWeek. For a list of the time periods that you can specify for each aggregation type, see Aggregation and Time." ;
    sh:node microsoftads:ReportingReportTimeShape ;
    sh:class microsoftads:ReportingReportTime ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingTravelQueryInsightReportRequest/columns> ;
    sh:name "columns" ;
    sh:description "The list of attributes and performance statistics to include in the report. The report will include the columns in the order that you specify them." ;
    sh:datatype xsd:string ;
    sh:in ( "SearchQuery" "Country" "Region" "MetroArea" "City" "PostalCode" "L1Vertical" "L2Vertical" "L3Vertical" "POSCountry" "POSRegion" "POSCity" "BrandImpressions" "BrandClicks" "BrandSpend" "MSAImpressions" "MSAClicks" "MSASpend" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingTravelQueryInsightReportRequest/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting User Location Performance Report Filter
microsoftads:ReportingUserLocationPerformanceReportFilterShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingUserLocationPerformanceReportFilter ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingUserLocationPerformanceReportFilter/adDistribution> ;
    sh:name "ad distribution" ;
    sh:description "The report will include data for only the specified distribution medium. For example, you can use the filter to include data for only search ads. You can specify one or more distribution mediums." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingUserLocationPerformanceReportFilter/countryCode> ;
    sh:name "country code" ;
    sh:description "The report will include data for only the specified countries/regions where the user that clicked the ad is located. For a list of possible values, see Geographical Location Codes." ;
    sh:datatype xsd:string ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingUserLocationPerformanceReportFilter/language> ;
    sh:name "language" ;
    sh:description "The report will include data for only websites that used the specified languages. You can specify one or more languages." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Shape for Reporting User Location Performance Report Request
microsoftads:ReportingUserLocationPerformanceReportRequestShape a sh:NodeShape ;
  sh:targetClass microsoftads:ReportingUserLocationPerformanceReportRequest ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingUserLocationPerformanceReportRequest/reportName> ;
    sh:name "report name" ;
    sh:description "The name of the report. The name is included in the report header. If you do not specify a report name, the system generates a name in the form, ReportType-ReportDateTime. The maximum length of the report name is 200." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingUserLocationPerformanceReportRequest/format> ;
    sh:name "format" ;
    sh:description "The format of the report data. For example, you can request the data in comma-separated values (Csv) format or tab-separated values (Tsv) format. The default value is Csv. All downloaded files are ZIP compressed." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Csv" "Tsv" "Xml" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingUserLocationPerformanceReportRequest/returnOnlyCompleteData> ;
    sh:name "return only complete data" ;
    sh:description "Determines whether or not the service must ensure that all the data has been processed and is available. If set to true and if the system has not finished processing all the data based on the requested Aggregation, Scope, and Time, the service returns error code NoCompleteDataAvaliable (2004). Otherwise by default the request can succeed, there is no indication as to whether the data is complete, and the report will contain only the data that the system has finished processing at the time of the request. Please note that because today is still in progress and data is not complete, you cannot set this element to true if the Time period (whether custom or predefined date) includes today's date. For more information, see Time Zones in Reporting." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingUserLocationPerformanceReportRequest/excludeReportHeader> ;
    sh:name "exclude report header" ;
    sh:description "Determines whether or not the downloaded report should contain header metadata such as report name, date range, and aggregation. Set this property true if you want the report header metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingUserLocationPerformanceReportRequest/excludeReportFooter> ;
    sh:name "exclude report footer" ;
    sh:description "Determines whether or not the downloaded report should contain footer metadata such as Microsoft copyright (`@2020` Microsoft Corporation. All rights reserved.). Set this property true if you want the report footer metadata excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingUserLocationPerformanceReportRequest/excludeColumnHeaders> ;
    sh:name "exclude column headers" ;
    sh:description "Determines whether or not the downloaded report should contain header descriptions for each column. The report column header matches the requested column name e.g. Impressions and Clicks. Set this property true if you want the report column headers excluded from the downloaded report. The default value is false." ;
    sh:datatype xsd:boolean ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingUserLocationPerformanceReportRequest/formatVersion> ;
    sh:name "format version" ;
    sh:description "Determines the format for certain fields in the downloaded report file. The data format for certain fields can be updated within the current API version without breaking existing client applications. You can get the latest data format by setting this optional request field to 2.0. If you do not set this field, the service defaults to version 1.0. For details about changes between format versions, see Report Format Version." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingUserLocationPerformanceReportRequest/scope> ;
    sh:name "scope" ;
    sh:description "The entity scope of the report. Use this element to limit the report data to specific accounts, ad groups, or campaigns." ;
    sh:node microsoftads:ReportingAccountThroughAdGroupReportScopeShape ;
    sh:class microsoftads:ReportingAccountThroughAdGroupReportScope ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingUserLocationPerformanceReportRequest/filter> ;
    sh:name "filter" ;
    sh:description "The filter information to use to filter the report data." ;
    sh:node microsoftads:ReportingUserLocationPerformanceReportFilterShape ;
    sh:class microsoftads:ReportingUserLocationPerformanceReportFilter ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingUserLocationPerformanceReportRequest/time> ;
    sh:name "time" ;
    sh:description "The time period to use for the report. You can specify a custom date range or select a predefined date range, for example, Today or ThisWeek. For a list of the time periods that you can specify for each aggregation type, see Aggregation and Time. You can set the time zone within the ReportTime object, which helps you accurately scope data for the requested time period. If you do not choose a time zone, the Reporting service uses PacificTimeUSCanadaTijuana by default." ;
    sh:node microsoftads:ReportingReportTimeShape ;
    sh:class microsoftads:ReportingReportTime ;
    sh:nodeKind sh:BlankNodeOrIRI ;
    sh:maxCount 1 ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingUserLocationPerformanceReportRequest/aggregation> ;
    sh:name "aggregation" ;
    sh:description "The type of aggregation to use to aggregate the report data. For example, you can aggregate the report data by day or week, or request a summary report. The default aggregation is Summary. It is important to note that if you do not include TimePeriod in the list of Columns, the aggregation you chose will be ignored and Summary aggregation will be used regardless." ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
    sh:in ( "Summary" "Hourly" "Daily" "Weekly" "Monthly" "Yearly" "HourOfDay" "DayOfWeek" "WeeklyStartingMonday" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingUserLocationPerformanceReportRequest/columns> ;
    sh:name "columns" ;
    sh:description "The list of attributes and performance statistics to include in the report. The report will include the columns in the order that you specify them." ;
    sh:datatype xsd:string ;
    sh:in ( "AccountName" "AccountNumber" "AccountId" "TimePeriod" "CampaignName" "CampaignId" "AdGroupName" "AdGroupId" "Country" "State" "MetroArea" "CurrencyCode" "AdDistribution" "Impressions" "Clicks" "Ctr" "AverageCpc" "Spend" "AveragePosition" "ProximityTargetLocation" "Radius" "Language" "City" "QueryIntentCountry" "QueryIntentState" "QueryIntentCity" "QueryIntentDMA" "BidMatchType" "DeliveredMatchType" "Network" "TopVsOther" "DeviceType" "DeviceOS" "Assists" "Conversions" "ConversionRate" "Revenue" "ReturnOnAdSpend" "CostPerConversion" "CostPerAssist" "RevenuePerConversion" "RevenuePerAssist" "County" "PostalCode" "QueryIntentCounty" "QueryIntentPostalCode" "LocationId" "QueryIntentLocationId" "AllConversions" "AllRevenue" "AllConversionRate" "AllCostPerConversion" "AllReturnOnAdSpend" "AllRevenuePerConversion" "ViewThroughConversions" "Goal" "GoalType" "AbsoluteTopImpressionRatePercent" "TopImpressionRatePercent" "AverageCpm" "ConversionsQualified" "AllConversionsQualified" "ViewThroughConversionsQualified" "Neighborhood" "QueryIntentNeighborhood" "ViewThroughRevenue" "CampaignType" "AssetGroupId" "AssetGroupName" "Downloads" "PostClickDownloadRate" "CostPerDownload" "AppInstalls" "PostClickInstallRate" "CPI" "Purchases" "PostInstallPurchaseRate" "CPP" "Subscriptions" "PostInstallSubscriptionRate" "CPS" "MarketingObjective" "Channel" "SubChannel" ) ;
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.ReportingUserLocationPerformanceReportRequest/type> ;
    sh:name "type" ;
    sh:datatype xsd:string ;
    sh:maxCount 1 ;
  ] .

# Generated Record container shape for Microsoftads.CampaignManagementAuditPointResult.details
<https://relay.inferal.com/ontology/microsoftads/record/Microsoftads.CampaignManagementAuditPointResult/details/ContainerShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/microsoftads/record/Microsoftads.CampaignManagementAuditPointResult/details/Container> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementAuditPointResult/details> ] ;
    sh:class microsoftads:CampaignManagementAuditPointResult ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/record/Microsoftads.CampaignManagementAuditPointResult/details/entry> ;
    sh:node <https://relay.inferal.com/ontology/microsoftads/record/Microsoftads.CampaignManagementAuditPointResult/details/EntryShape> ;
    sh:class <https://relay.inferal.com/ontology/microsoftads/record/Microsoftads.CampaignManagementAuditPointResult/details/Entry> ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] ;
  sh:sparql [
    a sh:SPARQLConstraint ;
    sh:message "Record entry keys must be unique" ;
    sh:select """SELECT $this ?key WHERE { $this <https://relay.inferal.com/ontology/microsoftads/record/Microsoftads.CampaignManagementAuditPointResult/details/entry> ?left, ?right . FILTER(?left != ?right) ?left <https://relay.inferal.com/ontology/microsoftads/record/Microsoftads.CampaignManagementAuditPointResult/details/key> ?key . ?right <https://relay.inferal.com/ontology/microsoftads/record/Microsoftads.CampaignManagementAuditPointResult/details/key> ?key . }"""
  ] .

# Generated Record entry shape for Microsoftads.CampaignManagementAuditPointResult.details
<https://relay.inferal.com/ontology/microsoftads/record/Microsoftads.CampaignManagementAuditPointResult/details/EntryShape> a sh:NodeShape ;
  sh:targetClass <https://relay.inferal.com/ontology/microsoftads/record/Microsoftads.CampaignManagementAuditPointResult/details/Entry> ;
  sh:property [
    sh:path [ sh:inversePath <https://relay.inferal.com/ontology/microsoftads/record/Microsoftads.CampaignManagementAuditPointResult/details/entry> ] ;
    sh:class <https://relay.inferal.com/ontology/microsoftads/record/Microsoftads.CampaignManagementAuditPointResult/details/Container> ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/record/Microsoftads.CampaignManagementAuditPointResult/details/key> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] ;
  sh:property [
    sh:path <https://relay.inferal.com/ontology/microsoftads/record/Microsoftads.CampaignManagementAuditPointResult/details/value> ;
    sh:datatype xsd:string ;
    sh:minCount 1 ;
    sh:maxCount 1
  ] .

# RDF Collection level 1 for Microsoftads.CampaignManagementGetMediaAssociationsResponse.mediaAssociations
<https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetMediaAssociationsResponse/mediaAssociations/ListLevel1Shape> a sh:NodeShape ;
  sh:property [
    sh:path [ sh:zeroOrMorePath rdf:rest ] ;
    sh:hasValue rdf:nil
  ] ;
  sh:property [
    sh:path [ sh:zeroOrMorePath rdf:rest ] ;
    sh:or (
      [
        sh:in ( rdf:nil ) ;
        sh:property [ sh:path rdf:first ; sh:maxCount 0 ] ;
        sh:property [ sh:path rdf:rest ; sh:maxCount 0 ]
      ]
      [
        sh:property [ sh:path rdf:first ; sh:minCount 1 ; sh:maxCount 1 ] ;
        sh:property [ sh:path rdf:rest ; sh:minCount 1 ; sh:maxCount 1 ]
      ]
    )
  ] ;
  sh:property [
    sh:path ( [ sh:zeroOrMorePath rdf:rest ] rdf:first ) ;
    sh:node <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetMediaAssociationsResponse/mediaAssociations/ListLevel2Shape> ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] .

# RDF Collection level 2 for Microsoftads.CampaignManagementGetMediaAssociationsResponse.mediaAssociations
<https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementGetMediaAssociationsResponse/mediaAssociations/ListLevel2Shape> a sh:NodeShape ;
  sh:property [
    sh:path [ sh:zeroOrMorePath rdf:rest ] ;
    sh:hasValue rdf:nil
  ] ;
  sh:property [
    sh:path [ sh:zeroOrMorePath rdf:rest ] ;
    sh:or (
      [
        sh:in ( rdf:nil ) ;
        sh:property [ sh:path rdf:first ; sh:maxCount 0 ] ;
        sh:property [ sh:path rdf:rest ; sh:maxCount 0 ]
      ]
      [
        sh:property [ sh:path rdf:first ; sh:minCount 1 ; sh:maxCount 1 ] ;
        sh:property [ sh:path rdf:rest ; sh:minCount 1 ; sh:maxCount 1 ]
      ]
    )
  ] ;
  sh:property [
    sh:path ( [ sh:zeroOrMorePath rdf:rest ] rdf:first ) ;
    sh:class microsoftads:CampaignManagementMediaAssociation ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] .

# RDF Collection level 1 for Microsoftads.CampaignManagementSetting.details
<https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetting/details/ListLevel1Shape> a sh:NodeShape ;
  sh:property [
    sh:path [ sh:zeroOrMorePath rdf:rest ] ;
    sh:hasValue rdf:nil
  ] ;
  sh:property [
    sh:path [ sh:zeroOrMorePath rdf:rest ] ;
    sh:or (
      [
        sh:in ( rdf:nil ) ;
        sh:property [ sh:path rdf:first ; sh:maxCount 0 ] ;
        sh:property [ sh:path rdf:rest ; sh:maxCount 0 ]
      ]
      [
        sh:property [ sh:path rdf:first ; sh:minCount 1 ; sh:maxCount 1 ] ;
        sh:property [ sh:path rdf:rest ; sh:minCount 1 ; sh:maxCount 1 ]
      ]
    )
  ] ;
  sh:property [
    sh:path ( [ sh:zeroOrMorePath rdf:rest ] rdf:first ) ;
    sh:node <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetting/details/ListLevel2Shape> ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] .

# RDF Collection level 2 for Microsoftads.CampaignManagementSetting.details
<https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementSetting/details/ListLevel2Shape> a sh:NodeShape ;
  sh:property [
    sh:path [ sh:zeroOrMorePath rdf:rest ] ;
    sh:hasValue rdf:nil
  ] ;
  sh:property [
    sh:path [ sh:zeroOrMorePath rdf:rest ] ;
    sh:or (
      [
        sh:in ( rdf:nil ) ;
        sh:property [ sh:path rdf:first ; sh:maxCount 0 ] ;
        sh:property [ sh:path rdf:rest ; sh:maxCount 0 ]
      ]
      [
        sh:property [ sh:path rdf:first ; sh:minCount 1 ; sh:maxCount 1 ] ;
        sh:property [ sh:path rdf:rest ; sh:minCount 1 ; sh:maxCount 1 ]
      ]
    )
  ] ;
  sh:property [
    sh:path ( [ sh:zeroOrMorePath rdf:rest ] rdf:first ) ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] .

# RDF Collection level 1 for Microsoftads.CampaignManagementThirdPartyMeasurementSetting.details
<https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementThirdPartyMeasurementSetting/details/ListLevel1Shape> a sh:NodeShape ;
  sh:property [
    sh:path [ sh:zeroOrMorePath rdf:rest ] ;
    sh:hasValue rdf:nil
  ] ;
  sh:property [
    sh:path [ sh:zeroOrMorePath rdf:rest ] ;
    sh:or (
      [
        sh:in ( rdf:nil ) ;
        sh:property [ sh:path rdf:first ; sh:maxCount 0 ] ;
        sh:property [ sh:path rdf:rest ; sh:maxCount 0 ]
      ]
      [
        sh:property [ sh:path rdf:first ; sh:minCount 1 ; sh:maxCount 1 ] ;
        sh:property [ sh:path rdf:rest ; sh:minCount 1 ; sh:maxCount 1 ]
      ]
    )
  ] ;
  sh:property [
    sh:path ( [ sh:zeroOrMorePath rdf:rest ] rdf:first ) ;
    sh:node <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementThirdPartyMeasurementSetting/details/ListLevel2Shape> ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] .

# RDF Collection level 2 for Microsoftads.CampaignManagementThirdPartyMeasurementSetting.details
<https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementThirdPartyMeasurementSetting/details/ListLevel2Shape> a sh:NodeShape ;
  sh:property [
    sh:path [ sh:zeroOrMorePath rdf:rest ] ;
    sh:hasValue rdf:nil
  ] ;
  sh:property [
    sh:path [ sh:zeroOrMorePath rdf:rest ] ;
    sh:or (
      [
        sh:in ( rdf:nil ) ;
        sh:property [ sh:path rdf:first ; sh:maxCount 0 ] ;
        sh:property [ sh:path rdf:rest ; sh:maxCount 0 ]
      ]
      [
        sh:property [ sh:path rdf:first ; sh:minCount 1 ; sh:maxCount 1 ] ;
        sh:property [ sh:path rdf:rest ; sh:minCount 1 ; sh:maxCount 1 ]
      ]
    )
  ] ;
  sh:property [
    sh:path ( [ sh:zeroOrMorePath rdf:rest ] rdf:first ) ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] .

# RDF Collection level 1 for Microsoftads.CampaignManagementVerifiedTrackingSetting.details
<https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVerifiedTrackingSetting/details/ListLevel1Shape> a sh:NodeShape ;
  sh:property [
    sh:path [ sh:zeroOrMorePath rdf:rest ] ;
    sh:hasValue rdf:nil
  ] ;
  sh:property [
    sh:path [ sh:zeroOrMorePath rdf:rest ] ;
    sh:or (
      [
        sh:in ( rdf:nil ) ;
        sh:property [ sh:path rdf:first ; sh:maxCount 0 ] ;
        sh:property [ sh:path rdf:rest ; sh:maxCount 0 ]
      ]
      [
        sh:property [ sh:path rdf:first ; sh:minCount 1 ; sh:maxCount 1 ] ;
        sh:property [ sh:path rdf:rest ; sh:minCount 1 ; sh:maxCount 1 ]
      ]
    )
  ] ;
  sh:property [
    sh:path ( [ sh:zeroOrMorePath rdf:rest ] rdf:first ) ;
    sh:node <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVerifiedTrackingSetting/details/ListLevel2Shape> ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] .

# RDF Collection level 2 for Microsoftads.CampaignManagementVerifiedTrackingSetting.details
<https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CampaignManagementVerifiedTrackingSetting/details/ListLevel2Shape> a sh:NodeShape ;
  sh:property [
    sh:path [ sh:zeroOrMorePath rdf:rest ] ;
    sh:hasValue rdf:nil
  ] ;
  sh:property [
    sh:path [ sh:zeroOrMorePath rdf:rest ] ;
    sh:or (
      [
        sh:in ( rdf:nil ) ;
        sh:property [ sh:path rdf:first ; sh:maxCount 0 ] ;
        sh:property [ sh:path rdf:rest ; sh:maxCount 0 ]
      ]
      [
        sh:property [ sh:path rdf:first ; sh:minCount 1 ; sh:maxCount 1 ] ;
        sh:property [ sh:path rdf:rest ; sh:minCount 1 ; sh:maxCount 1 ]
      ]
    )
  ] ;
  sh:property [
    sh:path ( [ sh:zeroOrMorePath rdf:rest ] rdf:first ) ;
    sh:class microsoftads:CampaignManagementKeyValuePairOfstringAndstring ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] .

# RDF Collection level 1 for Microsoftads.CustomerBillingClaimFeatureAdoptionCouponsResponse.partialErrors
<https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingClaimFeatureAdoptionCouponsResponse/partialErrors/ListLevel1Shape> a sh:NodeShape ;
  sh:property [
    sh:path [ sh:zeroOrMorePath rdf:rest ] ;
    sh:hasValue rdf:nil
  ] ;
  sh:property [
    sh:path [ sh:zeroOrMorePath rdf:rest ] ;
    sh:or (
      [
        sh:in ( rdf:nil ) ;
        sh:property [ sh:path rdf:first ; sh:maxCount 0 ] ;
        sh:property [ sh:path rdf:rest ; sh:maxCount 0 ]
      ]
      [
        sh:property [ sh:path rdf:first ; sh:minCount 1 ; sh:maxCount 1 ] ;
        sh:property [ sh:path rdf:rest ; sh:minCount 1 ; sh:maxCount 1 ]
      ]
    )
  ] ;
  sh:property [
    sh:path ( [ sh:zeroOrMorePath rdf:rest ] rdf:first ) ;
    sh:node <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingClaimFeatureAdoptionCouponsResponse/partialErrors/ListLevel2Shape> ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] .

# RDF Collection level 2 for Microsoftads.CustomerBillingClaimFeatureAdoptionCouponsResponse.partialErrors
<https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingClaimFeatureAdoptionCouponsResponse/partialErrors/ListLevel2Shape> a sh:NodeShape ;
  sh:property [
    sh:path [ sh:zeroOrMorePath rdf:rest ] ;
    sh:hasValue rdf:nil
  ] ;
  sh:property [
    sh:path [ sh:zeroOrMorePath rdf:rest ] ;
    sh:or (
      [
        sh:in ( rdf:nil ) ;
        sh:property [ sh:path rdf:first ; sh:maxCount 0 ] ;
        sh:property [ sh:path rdf:rest ; sh:maxCount 0 ]
      ]
      [
        sh:property [ sh:path rdf:first ; sh:minCount 1 ; sh:maxCount 1 ] ;
        sh:property [ sh:path rdf:rest ; sh:minCount 1 ; sh:maxCount 1 ]
      ]
    )
  ] ;
  sh:property [
    sh:path ( [ sh:zeroOrMorePath rdf:rest ] rdf:first ) ;
    sh:class microsoftads:CustomerBillingOperationError ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] .

# RDF Collection level 1 for Microsoftads.CustomerBillingDistributeCouponsResponse.partialErrors
<https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingDistributeCouponsResponse/partialErrors/ListLevel1Shape> a sh:NodeShape ;
  sh:property [
    sh:path [ sh:zeroOrMorePath rdf:rest ] ;
    sh:hasValue rdf:nil
  ] ;
  sh:property [
    sh:path [ sh:zeroOrMorePath rdf:rest ] ;
    sh:or (
      [
        sh:in ( rdf:nil ) ;
        sh:property [ sh:path rdf:first ; sh:maxCount 0 ] ;
        sh:property [ sh:path rdf:rest ; sh:maxCount 0 ]
      ]
      [
        sh:property [ sh:path rdf:first ; sh:minCount 1 ; sh:maxCount 1 ] ;
        sh:property [ sh:path rdf:rest ; sh:minCount 1 ; sh:maxCount 1 ]
      ]
    )
  ] ;
  sh:property [
    sh:path ( [ sh:zeroOrMorePath rdf:rest ] rdf:first ) ;
    sh:node <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingDistributeCouponsResponse/partialErrors/ListLevel2Shape> ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] .

# RDF Collection level 2 for Microsoftads.CustomerBillingDistributeCouponsResponse.partialErrors
<https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingDistributeCouponsResponse/partialErrors/ListLevel2Shape> a sh:NodeShape ;
  sh:property [
    sh:path [ sh:zeroOrMorePath rdf:rest ] ;
    sh:hasValue rdf:nil
  ] ;
  sh:property [
    sh:path [ sh:zeroOrMorePath rdf:rest ] ;
    sh:or (
      [
        sh:in ( rdf:nil ) ;
        sh:property [ sh:path rdf:first ; sh:maxCount 0 ] ;
        sh:property [ sh:path rdf:rest ; sh:maxCount 0 ]
      ]
      [
        sh:property [ sh:path rdf:first ; sh:minCount 1 ; sh:maxCount 1 ] ;
        sh:property [ sh:path rdf:rest ; sh:minCount 1 ; sh:maxCount 1 ]
      ]
    )
  ] ;
  sh:property [
    sh:path ( [ sh:zeroOrMorePath rdf:rest ] rdf:first ) ;
    sh:class microsoftads:CustomerBillingOperationError ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] .

# RDF Collection level 1 for Microsoftads.CustomerBillingUpdateBillingGroupAccountsResponse.partialErrors
<https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingUpdateBillingGroupAccountsResponse/partialErrors/ListLevel1Shape> a sh:NodeShape ;
  sh:property [
    sh:path [ sh:zeroOrMorePath rdf:rest ] ;
    sh:hasValue rdf:nil
  ] ;
  sh:property [
    sh:path [ sh:zeroOrMorePath rdf:rest ] ;
    sh:or (
      [
        sh:in ( rdf:nil ) ;
        sh:property [ sh:path rdf:first ; sh:maxCount 0 ] ;
        sh:property [ sh:path rdf:rest ; sh:maxCount 0 ]
      ]
      [
        sh:property [ sh:path rdf:first ; sh:minCount 1 ; sh:maxCount 1 ] ;
        sh:property [ sh:path rdf:rest ; sh:minCount 1 ; sh:maxCount 1 ]
      ]
    )
  ] ;
  sh:property [
    sh:path ( [ sh:zeroOrMorePath rdf:rest ] rdf:first ) ;
    sh:node <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingUpdateBillingGroupAccountsResponse/partialErrors/ListLevel2Shape> ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] .

# RDF Collection level 2 for Microsoftads.CustomerBillingUpdateBillingGroupAccountsResponse.partialErrors
<https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerBillingUpdateBillingGroupAccountsResponse/partialErrors/ListLevel2Shape> a sh:NodeShape ;
  sh:property [
    sh:path [ sh:zeroOrMorePath rdf:rest ] ;
    sh:hasValue rdf:nil
  ] ;
  sh:property [
    sh:path [ sh:zeroOrMorePath rdf:rest ] ;
    sh:or (
      [
        sh:in ( rdf:nil ) ;
        sh:property [ sh:path rdf:first ; sh:maxCount 0 ] ;
        sh:property [ sh:path rdf:rest ; sh:maxCount 0 ]
      ]
      [
        sh:property [ sh:path rdf:first ; sh:minCount 1 ; sh:maxCount 1 ] ;
        sh:property [ sh:path rdf:rest ; sh:minCount 1 ; sh:maxCount 1 ]
      ]
    )
  ] ;
  sh:property [
    sh:path ( [ sh:zeroOrMorePath rdf:rest ] rdf:first ) ;
    sh:class microsoftads:CustomerBillingOperationError ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] .

# RDF Collection level 1 for Microsoftads.CustomerManagementAddClientLinksResponse.partialErrors
<https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAddClientLinksResponse/partialErrors/ListLevel1Shape> a sh:NodeShape ;
  sh:property [
    sh:path [ sh:zeroOrMorePath rdf:rest ] ;
    sh:hasValue rdf:nil
  ] ;
  sh:property [
    sh:path [ sh:zeroOrMorePath rdf:rest ] ;
    sh:or (
      [
        sh:in ( rdf:nil ) ;
        sh:property [ sh:path rdf:first ; sh:maxCount 0 ] ;
        sh:property [ sh:path rdf:rest ; sh:maxCount 0 ]
      ]
      [
        sh:property [ sh:path rdf:first ; sh:minCount 1 ; sh:maxCount 1 ] ;
        sh:property [ sh:path rdf:rest ; sh:minCount 1 ; sh:maxCount 1 ]
      ]
    )
  ] ;
  sh:property [
    sh:path ( [ sh:zeroOrMorePath rdf:rest ] rdf:first ) ;
    sh:node <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAddClientLinksResponse/partialErrors/ListLevel2Shape> ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] .

# RDF Collection level 2 for Microsoftads.CustomerManagementAddClientLinksResponse.partialErrors
<https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementAddClientLinksResponse/partialErrors/ListLevel2Shape> a sh:NodeShape ;
  sh:property [
    sh:path [ sh:zeroOrMorePath rdf:rest ] ;
    sh:hasValue rdf:nil
  ] ;
  sh:property [
    sh:path [ sh:zeroOrMorePath rdf:rest ] ;
    sh:or (
      [
        sh:in ( rdf:nil ) ;
        sh:property [ sh:path rdf:first ; sh:maxCount 0 ] ;
        sh:property [ sh:path rdf:rest ; sh:maxCount 0 ]
      ]
      [
        sh:property [ sh:path rdf:first ; sh:minCount 1 ; sh:maxCount 1 ] ;
        sh:property [ sh:path rdf:rest ; sh:minCount 1 ; sh:maxCount 1 ]
      ]
    )
  ] ;
  sh:property [
    sh:path ( [ sh:zeroOrMorePath rdf:rest ] rdf:first ) ;
    sh:class microsoftads:CustomerManagementOperationError ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] .

# RDF Collection level 1 for Microsoftads.CustomerManagementUpdateClientLinksResponse.partialErrors
<https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementUpdateClientLinksResponse/partialErrors/ListLevel1Shape> a sh:NodeShape ;
  sh:property [
    sh:path [ sh:zeroOrMorePath rdf:rest ] ;
    sh:hasValue rdf:nil
  ] ;
  sh:property [
    sh:path [ sh:zeroOrMorePath rdf:rest ] ;
    sh:or (
      [
        sh:in ( rdf:nil ) ;
        sh:property [ sh:path rdf:first ; sh:maxCount 0 ] ;
        sh:property [ sh:path rdf:rest ; sh:maxCount 0 ]
      ]
      [
        sh:property [ sh:path rdf:first ; sh:minCount 1 ; sh:maxCount 1 ] ;
        sh:property [ sh:path rdf:rest ; sh:minCount 1 ; sh:maxCount 1 ]
      ]
    )
  ] ;
  sh:property [
    sh:path ( [ sh:zeroOrMorePath rdf:rest ] rdf:first ) ;
    sh:node <https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementUpdateClientLinksResponse/partialErrors/ListLevel2Shape> ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] .

# RDF Collection level 2 for Microsoftads.CustomerManagementUpdateClientLinksResponse.partialErrors
<https://relay.inferal.com/ontology/microsoftads/property/Microsoftads.CustomerManagementUpdateClientLinksResponse/partialErrors/ListLevel2Shape> a sh:NodeShape ;
  sh:property [
    sh:path [ sh:zeroOrMorePath rdf:rest ] ;
    sh:hasValue rdf:nil
  ] ;
  sh:property [
    sh:path [ sh:zeroOrMorePath rdf:rest ] ;
    sh:or (
      [
        sh:in ( rdf:nil ) ;
        sh:property [ sh:path rdf:first ; sh:maxCount 0 ] ;
        sh:property [ sh:path rdf:rest ; sh:maxCount 0 ]
      ]
      [
        sh:property [ sh:path rdf:first ; sh:minCount 1 ; sh:maxCount 1 ] ;
        sh:property [ sh:path rdf:rest ; sh:minCount 1 ; sh:maxCount 1 ]
      ]
    )
  ] ;
  sh:property [
    sh:path ( [ sh:zeroOrMorePath rdf:rest ] rdf:first ) ;
    sh:class microsoftads:CustomerManagementOperationError ;
    sh:nodeKind sh:BlankNodeOrIRI
  ] .
