Page 1 of 1

Problemas buscando documentos por metadato

PostPosted:Wed Jun 29, 2011 4:37 pm
by amartincaro
Buenas tardes:

tengo instalado OpenKm versión 5.0.3 y estoy teniendo problemas realizando una busqueda de documentos por valor de metadato. Los ficheros de propiedades de grupo que estoy usando son los siguientes (PropertyGroups.cnd, PropertyGroups.xml):
Code: Select all
<okm = 'http://www.openkm.org/1.0'>
<okg = 'http://www.openkm.org/group/1.0'>
<okp = 'http://www.openkm.org/group/property/1.0'>

[okg:zeus] mixin
- okp:zeus.entidadid (string) = '' autocreated
- okp:zeus.tipoentidadid (string) = '' autocreated
- okp:zeus.clienteid (string) = '' autocreated
- okp:zeus.deudorid (string) = '' autocreated
- okp:zeus.fechacaducidad (string) = '' autocreated
Code: Select all
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE property-groups PUBLIC "-//OpenKM//DTD Property Groups 1.1//EN"
                                 "http://www.openkm.com/dtd/property-groups-1.1.dtd">
<property-groups>
  <property-group label="Zeus" name="okg:zeus">
    <input label="IdEntidad" type="text" name="okp:zeus.entidadid" value=""/>
    <input label="IdTipoEntidad" type="text" name="okp:zeus.tipoentidadid" value=""/>
    <input label="IdCliente" type="text" name="okp:zeus.clienteid" value=""/>
    <input label="IdDeudor" type="text" name="okp:zeus.deudorid" value=""/>
    <input label="FechaCaducidad" type="date" name="okp:zeus.fechacaducidad" value=""/>
  </property-group>
</property-groups>
El problema lo tengo al querer buscar documentos por el valor de "fechacaducidad". Mientras que consultas como las siguiente funcionan perfectamente:
Code: Select all
/jcr:root/okm:root//element(*,okg:zeus)[@okp:zeus.entidadid = '5']
Code: Select all
/jcr:root/okm:root//element(*,okm:document)[@okp:zeus.entidadid = '5']
Consultas de rango o incluso exactas sobre el metadato okp:zeus.fechacaducidad no me devuelven ningún resultado. Existe como mínimo un documento en el repositorio con fecha de caducidad igual a '2011-06-05T00:00:00.000+02:00'.
Code: Select all
/jcr:root/okm:root//element(*,okm:document)[@okp:zeus.fechacaducidad = xs:dateTime('2011-06-05T00:00:00.000+02:00')]
Code: Select all
/jcr:root/okm:root//element(*,okg:zeus)[@okp:zeus.fechacaducidad > xs:dateTime('2011-06-05T00:00:00.000+02:00')]
Code: Select all
/jcr:root/okm:root//element(*,okm:document)[@okp:zeus.fechacaducidad > xs:dateTime('2011-06-01T00:00:00.000+02:00') and @okp:zeus.fechacaducidad < xs:dateTime('2011-06-30T00:00:00.000+02:00')]
Code: Select all
/jcr:root/okm:root//element(*,okg:zeus)[@okp:zeus.fechacaducidad > xs:dateTime('2011-06-01T00:00:00.000+02:00') and @okp:zeus.fechacaducidad < xs:dateTime('2011-06-30T00:00:00.000+02:00')]
He probado a cambiar el valor para la fecha en las consultas por 2011-06-05T00:00:00.000Z pero tampoco funciona. Comentaros que las búsquedas las he ejecutado utilizando la herramienta "Repository Search" del módulo de administración.

¿Podéis decirme qué estoy haciendo mal?

Muchísimas gracias.

Re: Problemas buscando documentos por metadato

PostPosted:Thu Jun 30, 2011 8:59 am
by amartincaro
Hola:

he continuado con las pruebas y he conseguido que la consulta devuelva resultados. Debido a mi escaso conocimiento de xPath me centré en construir las consultas utilizando xs:dateTime. Hoy he probado a hacerla sin usar esa función y he obtenido resultados. Por ejemplo:
Code: Select all
/jcr:root/okm:root//element(*,okm:document)[@okp:zeus.fechacaducidad > '2011-06-01T00:00:00.000+02:00' and @okp:zeus.fechacaducidad < '2011-06-30T00:00:00.000+02:00']
Está devolviendo los documentos que caducan este mes de Junio. Incluso la siguiente query funciona. Eso sí, hay que tener cuidado con el desfase horario ya que se tiene en cuenta y podríamos obtener listados incorrectos.
Code: Select all
/jcr:root/okm:root//element(*,okm:document)[@okp:zeus.fechacaducidad >= '2011-06-01' and @okp:zeus.fechacaducidad <= '2011-06-30']
Mi pregunta es: ¿no es entonces necesario utilizar xs:dateTime a la hora de realizar consultas sobre fechas o al ser un campo fecha de un grupo de propiedades el comportamiento es diferente?

Muchas gracias.

Re: Problemas buscando documentos por metadato

PostPosted:Sat Jul 02, 2011 1:26 pm
by jllort
Bueno, te voy a intentar responder, aunque no estoy al 100% por que esta parte del repositorio no la he tocado mucho.
Las fechas si no voy mal que guardan con un formato iso8801 ( igual el numero esta mal, el caso es que este formato permite hacer comparaciones como si fuesen cadenas ) y en realidad no guardamos un formato fecha sino un formato cadena.

Puedes operar directamente como si fuesen cadenas, en caso de querer operar como fechas igual hace falta alguna transformación del iso a formato fecha que el xpath entienda.

Relativo a la version 5.1.X hemos incluido mejoras que ya permiten buscar por rangos de fechas desde la interfaz de usuario ( esto era realmente necesario ) en la 5.0.X esto no esta disponible. Y lamentablemente aun no tenemos terminado el proceso de migración de la 5.0 a la 5.1 ( paciencia ).

Re: Problemas buscando documentos por metadato

PostPosted:Mon Jul 04, 2011 10:10 am
by amartincaro
Muchas gracias por la respuesta :-)