CC/PP
# CC/PP

CC/PP, acrónimo en inglés de Composite Capability/Preference Profiles, es una especificación para definir las capacidades y preferencias (también conocidas como ‘contexto de entrega’) para agentes de usuario. CC/PP es una extensión de vocabulario de la Resource Description Framework (RDF).

## Generalidades

CC/PP es una descripción de las capacidades de los dispositivos y las preferencias de los usuarios. Es usualmente utilizado para definir el contexto de entrega del dispositivo final y así realizar una adaptación de contenido correcta.

La aparición de los contextos de entrega se hizo necesaria debido al creciente número de dispositivo que ingresan a Internet. Anteriormente existían las cabeceras HTTP “alt=“ y “accept=” pero son muy limitadas.

CC/PP está basada en RDF, diseñado por la W3C como un lenguaje de metadatos de propósito general. RDF es un formato estándar para el intercambio de datos en la web que puede ser serializado en un documento XML usando RDF/XML.

Un perfil CC/PP contiene un número de atributos CC/PP y valores asociados que son usados por un servidor web para determinar la manera más apropiada de entregar un recurso a un cliente. Un grupo de atributos, valores permitidos y significados asociados constituyen un vocabulario CC/PP.

Es posible que diferentes aplicaciones tengan diferentes vocabularios CC/PP, pero si todos ellos se basan en las especificaciones podrán interpretarse unos a otros para trabajar juntos.

CC/PP también se creó con la intención de ser compatible con UAProf 2.0, especificación dada por la OMA.

## Estructura del perfil

Un perfil contiene componentes y atributos, cada componente tiene al menos un atributo y cada perfil tiene al menos un componente.

### Componentes

Estos son los principales componentes:

* Plataforma hardware sobre la cual la plataforma software se está ejecutando.
* Plataforma software sobre las cuales las aplicaciones son alojadas.
* Una aplicación individual como un navegador web.

## Atributos de los componentes

Los atributos pueden ser uno o varios valores, por ejemplo en el caso del componente “plataforma hardware” podemos encontrar los atributos “displayWidth” y “displayHeight”, los cuales toman un único valor pero podemos tener atributos múltiples como el caso de un navegador web que soporta múltiples versiones de HTML.

## Implementaciones existentes

Panda/Sasa -- Kiniko Yasuda, Keio University -- https://web.archive.org/web/20071117070529/http://yax.tom.sfc.keio.ac.jp/panda/slidemaker/0011ccpp/Overview.html

W3C -- Jigsaw Team -- http://www.w3.org/Jigsaw/

J2EE CC/PP Processing 1.0 Reference Implementation -- Sun -- http://java.sun.com/j2ee/ccpp/

