Chapter 4 Recent Changes in United States Extreme 3-Day Precipitation Using the
4.2.2 Methodology
Se trata de una estructura dinámica. Esta clase implementa la interfaz List.
Implementa todas las operaciones opcionales de las listas, y permite todos los
elementos incluyendo null. Además de implementar la interfaz List, esta clase
proporciona métodos para manipular el tamaño de las tablas que se usan
internamente para almacenar la lista. (Esta clase es básicamente equivalente a
Vector, excepto que no es sincronizada).
Cada instancia ArrayList tiene una capacidad. La capacidad es el tamaño de la
tabla usada para almacenar los elementos en la lista. Es siempre al menos tan grande
como el tamaño de la lista. Como los elementos son añadidos a ArrayList su
capacidad crece automáticamente.
Una aplicación puede incrementar la capacidad de una instancia ArrayList antes
de añadir un gran número de elementos usando la operación ensureCapacity. Esto
puede reducir la cantidad de reasignaciones.
Esta implementación no es sincronizada. Por tanto, si múltiples hilos acceden a
una instancia ArrayList concurrentemente, y al menos uno de los hilos modifica la
lista estructuralmente, debe ser sincronizado externamente. (Una operación
estructural es una operación que añade o borra uno o más elementos, o
explícitamente redimensiona la tabla devuelta. La recogida del valor de un elemento
simplemente no es una modificación estructural). Esto es típicamente realizado por
la sincronización de algunos objetos que naturalmente encapsula la lista. Si tales
elementos no existen, la lista debería ser envuelta usando el método
Collections.syncronizedList. Esta es la mejor forma de acceder a la lista para
prevenir accesos no sincronizados accidentales:
List list = Collections.synchronizedList(new ArrayList(...));
Esta clase incluye los siguientes métodos:
• ArrayList (): Construye una lista vacía con una capacidad inicial de 10.
• ArrayList (Collection c): Construye una lista que contiene los
• ArrayList (int initialCapacity): Construye una lista vacía con la
capacidad inicial especificada.
Esta clase tiene, entre otros, los siguientes métodos:
• void add (int index, Object element): Inserta el elemento especificado
en la posición especificada de la lista.
• boolean add (Object o): Añade el elemento especificado al final de la
lista.
• boolean addAll (Collection c): Añade todos los elementos especificados
en la colección al final de la lista.
• boolean addAll (int index, Collection c): Añade todos los elementos
especificados en la colección empezando por la posición especificada de
la lista.
• void clear (): Borra todos los elementos de la lista.
• Object clone (): Devuelve una copia de esta instancia de ArryList.
• boolean contains (Object elem): Devuelve true si esta lista contiene el
elemento especificado.
• Object get (int index): Devuelve el elemento de la posición especificada
en la lista.
• boolean isEmpty (): Verifica si esta lista no tiene elementos.
• int lastIndexOf (Object elem): Devuelve el índice de la última
aparición del objeto especificado en esta lista.
• Object remove (int index): Borra el elemento en la posición
especificada en esta lista.
• Object set (int index, Object element): Reemplaza el elemento de la
lista en la posición especificada por el elemento especificado.
• int size (): Devuelve el número de elementos de esta lista.
• Object [] toArray (): Devuelve una tabla conteniendo todos los
elementos de esta lista en el orden correcto.
2.4.1.2 Clase Vector
Se trata de una estructura dinámica. La clase Vector implementa una tabla de
objetos capaz de crecer. Al igual que las tablas, contiene componentes que pueden
ser accedidos usando un índice entero. Sin embargo, el tamaño de un Vector puede
crecer o disminuir según necesitemos, y añadiendo o borrando ítems después de que
el Vector haya sido creado. Vector es sincronizado.
Cada vector intenta optimizar la gestión del almacenamiento manteniendo un
capacity y un capacityIncrement. El capacity es siempre al menos tan grande como
el tamaño del vector. Normalmente es más grande porque como los componentes
son añadidos al vector, el almacenamiento del vector aumenta en trozos de tamaño
de insertar un gran número de componentes. Esto reduce la cantidad de
reasignaciones.
Esta clase tiene los siguientes constructores:
• Vector (): Construye un vector vacío, de forma que su tabla de datos
interna tiene tamaño 10 y su capacidad incremental estándar es 0.
• Vector (Collection c): Construye un vector que contiene los elementos
de la colección especificada.
• Vector (int initialCapacity): Construye un vector vacío con la
capacidad inicial especificada y con su capacidad incremental igual a 0.
• Vector (int initialCapacity, int capacityIncrement): Construye un
vector vacío con la capacidad inicial y capacidad incremental
especificadas.
Esta clase contiene, entre otros, los siguientes métodos:
• void add (int index, Object element): Inserta el elemento especificado
en la posición especificada en este vector.
• boolean add (Object o): Añade el elemento especificado al final de este
vector.
• boolean addAll (Collection c): Añade todos los elementos especificados
en la colección al final de este vector.
• boolean addAll (int index, Collection c): Inserta todos los elementos
especificados en la colección en el vector, empezando por la posición
especificada.
• int capacity (): Devuelve la capacidad actual de este vector.
• void clear (): Borra todos los elementos de este vector.
• boolean contains (Object elem): Verifica si el objeto especificado es un
componente del vector.
• boolean containsAll (Collection c): Devuelve true si este vector
contiene todos los elementos de la colección especificada.
• void copyInto (Object [] anArray): Copia los componentes de este
vector en el array especificado.
• Object elementAt (int index): Devuelve el componente del índice
especificado.
• Enumerations elements (): Devuelve una enumeración de los
componentes de este vector.
• Object firstElement (): Devuelve el primer componente ( el de índice 0)
de este vector.
• Object get (int index): Devuelve el elemento de la posición especificada
en este vector.
• int indexOf (Object elem): Busca la primera aparición del elemento
especificado.
• int indexOf (Object elem, int index): Busca la primera aparición del
elemento especificado, empezando por el índice especificado.
• boolean isEmpty (): Verifica si este vector no tiene componentes
• Object lastElement (): Devuelve el último componente de este vector.
• Int lastIndexOf (Object elem): Devuelve el índice de la última
aparición del objeto especificado en este vector.
• Int lastIndexOf (Object elem, int index): Busca la última aparición del
objeto especificado, empezando por el índice especificado, y devuelve el
índice en el que se encuentra.
• Object remove (int index): Devuelve el elemento de la posición
especificada en este vector.
• boolean remove (Object o): Borra la primera aparición del elemento
especificado en este vector. Si el vector no contiene este elemento, no
hace nada.
• boolean removeAll (Collection c): Borra de este vector todos los
elementos contenidos en la colección especificada.
• void removeAllElements (): Borra todos los componentes de este vector
y pone su valor a 0.
• Object set (int index, Object element): Reemplaza el elemento de la
posición especificada en este vector por el elemento especificado.
• void setSize (int newSize): Pone el tamaño de ste vector.
• int size (): Devuelve el número de components de este vector.
• Object [] toArray (): Devuelve una tabla conteniendo todos los
elementos de este vector en el orden correcto.
• String toString (): Devuelve un string como representación de este
vector, conteniendo el string la representación de cada elemento.
2.4.1.3 Interfaz Iterator
Se trata de un iterador sobre una colección. Permite borrar elementos de la
colección en el momento de la iteración.
Los métodos son los siguientes:
• boolean hasNext (): Devuelve trae si en la iteración hay más elementos.
• Object next (): Devuelve el siguiente elemento de la iteración.
• void remove (): Borra de la colección el último elemento devuelto por el
iterator.
2.4.2 PAQUETE JAVA.LANG
Este paquete proporciona clases que son fundamentales para el diseño del
lenguaje de programación Java. Las clases más importantes son Object, la cual es la
raíz de toda la jerarquía de clases, y Class, instancias de la cual representa clases en
tiempo de ejecución.
Frecuentemente es necesario representar un valor de tipo primitivo como si fuese
un objeto. Las clases envolventes Boolean, Carácter, Integer, Long, Float, y Double
sirven para este propósito. Estas clases proporcionan un número de métodos para la
conversión entre valores primitivos, y también soportando métodos estándares como
equals y hashCode.
2.4.2.1 Clase Object
La clase Object es la raíz de toda la jerarquía de clases. Todas las clases tienen a
Object como superclase. Todos los objetos, incluyendo tablas, implementan los
métodos de esta clase.
Tiene el siguiente constructor:
• Object (): Construye un objeto vacío.
Esta clase tiene, entre otros, los siguientes métodos:
• boolean equals (Object obj): Indica si el objeto especificado es igual a
este objeto.
• String toString (): Devuelve un string como representación del objeto.
2.4.2.2 Clase String
La clase String representa cadenas de caracteres. Todos los literales string en
programas Java, tales como “abc”, son implementados como instancias de esta
clase.
Las cadenas son constantes, sus valores no pueden ser cambiados después de ser
creadas. Los objetos String se pueden dividir, porque son invariables. Por ejemplo:
String str = “abc”;
Es equivalente a:
Char data[ ] = {‘a’, ‘b’, ‘c’};
String str = new String(data);
Aquí mostramos algunos ejemplos más de como se pueden usar las cadenas:
System.out.println(“abc”);
String cde = “cde”;
System.out.println(“abc” + cde);
String c = “abc”.substring(2,3);
String d = cde.substring(1,2);
La clase String incluye métodos para la manipulación individual de caracteres de
la secuencia, para comparación de cadenas, para la búsqueda de cadenas, para la
extracción de subcadenas, y para la creación de una copia de una cadena con todos
los caracteres traducidos a mayúsculas o minúsculas.
El lenguaje Java proporciona un soporte especial para la concatenación de
cadenas con el operador “+”, y para la conversión de otros objetos a cadenas. La
concatenación de cadena está implementada a través de la clase StringBuffer y su
método append. Las conversiones de cadenas son implementadas a través del
método toString, definido en Object y heredado por todas las clases en Java.
Si se le pasa un argumento null a un constructor o método de esta clase causará
la excepción NullPointerException que será lanzada.
Tiene, entre otros, los siguientes constructores:
• String (): Crea un string que representa el carácter vacío.
• String (String original): Crea un String que representa la misma cadena
de caracteres del argumento.
Tiene, entre otros, los siguientes métodos:
• int compareTo (Object o): Compara esta cadena con el Object
especificado.
• int compareTo (String anotherString): Compara dos cadenas
léxicamente.
• String concat (String str): Concatena la cadena especificada al final de
esta cadena.
• boolean equals (Object anObject): Compara esta cadena con el objeto
especificado.
• int length (): Devuelve la longitud de esta cadena.
• String replace (char oldChar, char newChar): Devuelve una nueva
cadena resultante de reemplazar todas las apariciones en esta cadena de
oldChar por newChar.
• String substring (int beginIndex): Devuelve una subcadena de esta
cadena.
• String substring (int beginIndex, int endIndex): Devuelve una
subcadena de esta cadena.
3 IMPLEMENTACIÓN
3.1 ONTOLOGÍA FEDERADA
3.1.1 INTRODUCCIÓN
Nuestro objetivo es crear una ontología que represente el dominio de la
información demográfica de personas para entornos clínicos.
El Comité Técnico CEN/TC 251 “Informática de la Salud”, ha preparado un
documento sobre Componentes de Información de Propósito General prEN 14822-
2:2003, con las siguientes partes:
Parte 1: Introducción
Parte 2: No-Clínico
Parte 3: Clínico
El documento Parte 2 define un conjunto de Componentes de Información de
Propósito General no-clínico, y en él nos hemos basado para crear la ontología.
Este estándar dirige la definición y estructuración de la información relativa a
entidades que son comúnmente encontradas en comunicaciones y en sistemas
informáticos de información clínica. Nosotros nos hemos centrado en personas,
aunque este estándar también habla de animales y grupos de animales.
3.1.2 DESCRIPCIÓN DE LA ONTOLOGÍA
A continuación vamos a ir viendo qué componentes define el estándar y cómo
los hemos modelado en la ontología.
3.1.2.1 CodedSimpleValue
Esta clase es la representación más simple de un concepto codificado, y usa sólo
las propiedades pertenecientes a su listado. Esta clase tiene una serie de subclases,
las cuales tienen instancias que representan códigos. Aparece definida en el cen
data types version 4.0.
Los atributos de CodedSimpleValue definidos en la norma son los siguientes:
Nombre de
Atributo
Tipo
Definición
codeValue
String
String que contiene los valores del código
displayName String String que contiene una corta descripción del
concepto.
Por tanto, en nuestra ontología hemos definido las siguientes propiedades para
CodedSimpleValue:
• codeValue: Se trata de un DatatypeProperty, del tipo String. Es una
propiedad funcional, por tanto sólo puede tener un valor.
• displayName: Se trata de un DatatypeProperty, del tipo String. Es una
propiedad funcional, por tanto sólo puede tener un valor.
A continuación vemos las subclases definidas para esta clase. Todas las
subclases heredan las propiedades de CodedSimpleValue. Las subclases son:
• TelecomUse: Representa los posibles usos de recursos de
telecomunicaciones, como teléfono móvil, teléfono de casa, teléfono del
trabajo… Tiene una única propiedad, isTelecomUseOf, que es la
propiedad inversa de telecomUse, perteneciente a Telecom.
• ProficiencyLevelCodeLanguage: Indica la corrección con la que una
persona se comunica en un idioma. Por ejemplo, excelente, correcta,
buena, pobre. Tiene una única propiedad,
isProficiencyLevelCodeLanguageOf, que es la propiedad inversa de
proficiencyLevelCodeLanguage, perteneciente a
LanguageComunication.
• NamePartType: Es un código que representa el tipo de un nombre. Por
ejemplo, apellido, nombre, sufijo, prefijo. Tiene una única propiedad,
isNamePartTypeOf, que es la propiedad inversa de namePartType,
perteneciente a EntityNamePart.
• NamePartQualifier: Es un código que indica la calificación del nombre.
Por ejemplo, nombre de soltero, preferido, de nacimiento… Tiene una
única propiedad, isNamePartQualifierOf, que es la propiedad inversa de
namePartQualifier, perteneciente a EntityNamePart.
• ModeCodeLanguage: Es un código que indica el tipo de comunicación
de un idioma. Por ejemplo, escrito, hablado… Tiene una única
propiedad, isModeCodeLanguageOf, que es la propiedad inversa de
modeCodeLanguage, perteneciente a LanguageComunication.
• JobType: Indica el tipo de trabajo que tiene un personal sanitario. Por
ejemplo, médico, enfermero, celador… Tiene una única propiedad,
isJobTypeOf, que es la propiedad inversa de jobType, perteneciente a
HealthcarePerson.
• JobSection: Indica la sección en la que trabaja un personal sanitario. Por
ejemplo, cardiología, pediatría, urología… Tiene una única propiedad,
isJobSectionOf, que es la propiedad inversa de jobSection, perteneciente
a HealthcarePerson.
• DeterminerCodePerson: Representa el código de la instancia de una
persona. Tiene una única propiedad, isDeterminerCodePersonOf, que es
la propiedad inversa de determinerCodePerson, perteneciente a Person.
• ContractType: Es un código que indica el tipo de contrato laboral que
tiene una persona. Por ejemplo, temporal, indefinido… Tiene una única
propiedad, isContractTypeOf, que es la propiedad inversa de
contractType, perteneciente a HealthcarePerson.
• ClassCodePerson: Representa el código de una persona. Tiene una
única propiedad, isClassCodePersonOf, que es la propiedad inversa de
classCodePerson, perteneciente a Person.
• AdministrativeGenderCode: Es un código que indica el sexo de una
persona. Tiene una única propiedad, isAdministrativeGenderCodeOf, que
es la propiedad inversa de administrativeGenderCode, perteneciente a
Person.
• AddressUse: Representa el uso o los usos que una persona le da a una
dirección. Por ejemplo, vivienda habitual, vivienda de vacaciones,
dirección del trabajo… Tiene una única propiedad, isAddressUseOf, que
es la propiedad inversa de addressUse, perteneciente a PostalAddress.
• AddressLineType: Indica el tipo de una parte de la dirección. Por
ejemplo, calle, número, ciudad… Tiene una única propiedad,
isAddressLineTypeOf, que es la propiedad inversa de addressLineType,
perteneciente a PostalAddressPart.
En la figura 3.2 vemos las propiedades de CodedSimpleValue dentro de
Protégé 2000. No se le imponen ninguna restricción a ninguna de estas
propiedades.
Fig. 3.2: Propiedades de CodedSimpleValue
3.1.2.2 CodedValue
Esta clase es un dato codificado, especificando sólo un código, y opcionalmente
el nombre display y el texto original. Esta clase tiene una serie de subclases, las
cuales tienen instancias que representan códigos. Este tipo se usa cuando por
algún caso de uso requiera sólo un valor simple de código para ser enviado.
Aparece definida en el cen data types version 4.0.
Los atributos de CodedValue definidos en la norma son los siguientes:
Nombre de
Atributo
Tipo