@prefix skos: <http://www.w3.org/2004/02/skos/core#> .
@prefix dcterms: <http://purl.org/dc/terms/> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
@prefix foaf: <http://xmlns.com/foaf/0.1/> .
@prefix mcr: <https://registry.apicrafter.io/vocab#> .
@prefix dt: <https://registry.apicrafter.io/datatype/> .
@prefix cat: <https://registry.apicrafter.io/category/> .
@prefix country: <https://registry.apicrafter.io/country/> .
@prefix tool: <https://registry.apicrafter.io/tool/> .

dt:apple_bundle_id a skos:Concept ;
    skos:inScheme <https://registry.apicrafter.io/> ;
    skos:topConceptOf <https://registry.apicrafter.io/> ;
    skos:notation "apple_bundle_id" ;
    skos:prefLabel "Apple bundle ID"@en ;
    skos:definition "Identifier of an app or other bundle on Apple platforms (iOS, iPadOS, macOS, tvOS, visionOS and watchOS), stored as CFBundleIdentifier in Info.plist. Apple allows only the letters A-Z and a-z, the digits 0-9, hyphens and periods, and compares bundle IDs without regard to case. Developers usually write it in reverse-DNS form (com.example.app). The system uses it to find apps and their preferences, it is part of the code signature and of the App ID (Team ID, a period and the bundle ID), and it cannot change after an upload to App Store Connect. The regexp also requires at least one period, as in reverse-DNS names."@en ;
    skos:exactMatch <http://www.wikidata.org/entity/P7429> ;
    skos:example "com.example.apple-samplecode.ProfileExplainer" ;
    skos:example "com.example.apple-samplecode.AppWithTool" ;
    mcr:status "draft" ;
    mcr:isPII false ;
    mcr:classification "identifier" ;
    mcr:regexp "^[A-Za-z0-9-]+(?:\\.[A-Za-z0-9-]+)+$" ;
    rdfs:seeAlso <https://developer.apple.com/documentation/bundleresources/information-property-list/cfbundleidentifier> ;
    rdfs:seeAlso <https://www.wikidata.org/wiki/Property:P7429> .
