@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:android_package_name a skos:Concept ;
    skos:inScheme <https://registry.apicrafter.io/> ;
    skos:topConceptOf <https://registry.apicrafter.io/> ;
    skos:notation "android_package_name" ;
    skos:prefLabel "Android application ID (package name)"@en ;
    skos:definition "Identifier of an Android app on the device and in Google Play, set by applicationId in the Gradle build and stored as the package attribute of the merged AndroidManifest.xml; Android APIs such as Context.getPackageName() call it the package name. It looks like a Java package name in reverse-domain order. Android requires at least two segments separated by dots, each segment starting with a letter, and only the characters a-z, A-Z, 0-9 and underscore. Google Play treats an upload with a different application ID as a different app. VirusTotal reports it as the androguard Package of an APK. The format also matches many domain names and Java class names, so use the field name or context."@en ;
    skos:exactMatch <http://www.wikidata.org/entity/P3418> ;
    skos:example "com.example.myapp" ;
    skos:example "ru.oneme.app" ;
    mcr:status "draft" ;
    mcr:isPII false ;
    mcr:classification "identifier" ;
    mcr:regexp "^[A-Za-z][A-Za-z0-9_]*(?:\\.[A-Za-z][A-Za-z0-9_]*)+$" ;
    rdfs:seeAlso <https://developer.android.com/build/configure-app-module#set-application-id> ;
    rdfs:seeAlso <https://www.wikidata.org/wiki/Property:P3418> .
