Lots of discussion has taken place as to the role of GML Application Schemas and GML profiles and a lot of this discussion has been misleading as the two items are often confused with one another.
GML Application Schema defines an application vocabulary:
A GML Application Schema defines an application vocabulary – meaning it defines the objects of interest (roads, runways, airspaces, survey lines, monuments, shipping lanes, wharves etc.) in a particular application domain. This definition is in terms of the properties of the object (e.g. number of lanes, surface type, geometry etc.). Some of these properties are geometric, topological and so forth. GML core schemas provide many of the objects (geometry, topology etc.) that are used to define the properties of the application objects.
GML Profile defines a Subset of the GML Grammar
objects. GML provides a rich collection of basic object types – e.g different kinds of objects, topological elemenyts, coordinate reference components and so on. Not every database, nor every application schema needs all of these objects. A profile is a subset that suits a particular domain. This can be defined by an application (and possibly a broad horizontal application schema) or it can be defined by some processing technology. Profiles of GML can be created by the "subset tool" that is part of the GML specification. Current profiles include the GMLJP2 profile, the Point profile and the simple features profile. Note that all such profiles ARE GML and one can create application schemas USING THEM.