martes, junio 27, 2006
viernes, junio 23, 2006
jueves, junio 22, 2006
libxml2 y xpath
Estoy probando a usar el DOM que implemente libxml2, y la verdad.... es un poco jaleoso... Habrá que probar a usar XPath.
Aquí un ejemplo de como facilita las cosas.
Y un thread interesante...
Otro ejemplo de uso y un ultimo link.
Las funciones que implementa el binding de python que estoy usando son:
xpathCastNodeToNumber
xpathCastNodeToString
xpathCmpNodes
xpathEval
xpathEval2
xpathNewContext
xpathNewNodeSet
xpathNewValueTree
xpathNextAncestor
xpathNextAncestorOrSelf
xpathNextAttribute
xpathNextChild
xpathNextDescendant
xpathNextDescendantOrSelf
xpathNextFollowing
xpathNextFollowingSibling
xpathNextNamespace
xpathNextParent
xpathNextPreceding
xpathNextPrecedingSibling
xpathNextSelf
xpathOrderDocElems
miércoles, junio 21, 2006
OWL y ontologías
Como ando metido en un fregado para generar reglas para drools a partir de OWL, me toca mirar un poquillo sobre ontologías [en inglés]
Como lenguajes para ontologías tenemos OWL [en inglés] en sus tres versiones Lite, DL y Full y RDF [en inglés].
Una ontología es un modelo de datos para representar los objetos de un dominio y sus relaciones con el objetivo de realizar de manera que se pueda hacer un procesamiento sobre dicha información. Es una forma de representación del conocimiento.
Pero por otro lado están las Taxonomías. Aquí se puede ver la diferene en ontología, taxonomía y otras estructuras de represantación del conocimiento. Y otra página muy interesante describiendo lo que es una ontología. Más paginas sobre las diferencias entre taxonomía, ontología y otras formas de representación: [1] [2] (el 1, muy interesante).
Las ontologías se usan en la Web Semantica, campo muy puntero actualmente en cuanto a investigación, y tendrán mucha importancia para el despegue de los 'Web Services'. Este paper habla sobre ello.
Y ya paa profundizar sobre los lenguajes, podemos empezar por aquí para RDF y por aquí para el OWL.
Como lenguajes para ontologías tenemos OWL [en inglés] en sus tres versiones Lite, DL y Full y RDF [en inglés].
Una ontología es un modelo de datos para representar los objetos de un dominio y sus relaciones con el objetivo de realizar de manera que se pueda hacer un procesamiento sobre dicha información. Es una forma de representación del conocimiento.
Pero por otro lado están las Taxonomías. Aquí se puede ver la diferene en ontología, taxonomía y otras estructuras de represantación del conocimiento. Y otra página muy interesante describiendo lo que es una ontología. Más paginas sobre las diferencias entre taxonomía, ontología y otras formas de representación: [1] [2] (el 1, muy interesante).
Las ontologías se usan en la Web Semantica, campo muy puntero actualmente en cuanto a investigación, y tendrán mucha importancia para el despegue de los 'Web Services'. Este paper habla sobre ello.
Y ya paa profundizar sobre los lenguajes, podemos empezar por aquí para RDF y por aquí para el OWL.
lunes, junio 19, 2006
Una noticia interesante de barrapunto, sobre los precios de algunas consultoras por dia.
Hay unos comentarios interesantes. De los cuales me quedo con estos párrafos:
"sobre lo de montar una empresa en españa, enterate de como va la cosa... enterate de las leyes y las "facilidades" que te dan...
y entonces lo comparas con otros paises... qieres una perla? en españa montar una sociedad limitada te cuesta, ente papeleos y demas, unos 1500? para empezar, mas un deposito de 3010?, el administrador de la empresa se tiene que dar de alta como autonomo y pagar seguridad social (320? al mes como minimo, y eso aunque estes trabajando para otra empresa y pagando SS a traves de ella), para cerrarla, otros 1500?...
para montar una empresa en EEUU solo necesitas una direccion de correos
en irlanda, donde vivo ahora, montar una empresa te cuesta 40? en papeleos (20? si lo haces a traves de internet) y hasta que no ganas determinada cantidad de dinero no pagas impuestos, y entonces, solo pagas el 5% (comparado con el 33% en españa)"
Es lamentable.
Hay unos comentarios interesantes. De los cuales me quedo con estos párrafos:
"sobre lo de montar una empresa en españa, enterate de como va la cosa... enterate de las leyes y las "facilidades" que te dan...
y entonces lo comparas con otros paises... qieres una perla? en españa montar una sociedad limitada te cuesta, ente papeleos y demas, unos 1500? para empezar, mas un deposito de 3010?, el administrador de la empresa se tiene que dar de alta como autonomo y pagar seguridad social (320? al mes como minimo, y eso aunque estes trabajando para otra empresa y pagando SS a traves de ella), para cerrarla, otros 1500?...
para montar una empresa en EEUU solo necesitas una direccion de correos
en irlanda, donde vivo ahora, montar una empresa te cuesta 40? en papeleos (20? si lo haces a traves de internet) y hasta que no ganas determinada cantidad de dinero no pagas impuestos, y entonces, solo pagas el 5% (comparado con el 33% en españa)"
Es lamentable.
viernes, junio 09, 2006
jueves, junio 08, 2006
Unas notas sobre la instalación de pyXML 0.8.4
pyXML incluye :
- xmlproc: a validating XML parser.
- Expat: a fast non-validating parser.
- sgmlop: a C helper module that can speed-up xmllib.py and sgmllib.py by a factor of 5.
- PySAX: SAX 1 and SAX2 libraries with drivers for most of the parsers.
- 4DOM: A fully compliant DOM Level 2 implementation
- javadom: An adapter from Java DOM implementations to the standard Python DOM binding.
- pulldom: a DOM implementation that supports lazy instantiation of nodes.
- marshal: a module with several options for serializing Python objects to XML, including WDDX and XML-RPC.
- XSLT
- XPath
Se instala en el directorio xml (por debajo de lib/pythonX.Y).
Mas sobre JAXWS
Para obtenerlo todo creo que debemos bajarnos el Java Web Services Developer Pack 2.0. Nos podremos bajar paquetes por separado, pero con este supongo obtendremos todo.
Documentación de Sun sobre WS, aquí y aquí.
Pero como no estoy seguro del todo, mejor me lo voy a bajar de jax-ws.dev.java.net.
Nota: vaya gena la instalación del jax-ws. No está documentado como narices instalarlo en modo consola. Y todo para sacar una gena de ventana donde aceptar la licencia. ¡Vaya cutrez!
Bueno... una nota final: jax-ws forma parte de GlassFish, el cual es un proyecto para implementar un servidor de aplicaciones Open Source usando tecnología de la plataforma Java EE 5.
martes, junio 06, 2006
Un mail muy interesante relativo a XSL y python.
Estoy ya peleandome con el XSLT y ya estoy con mi primer fregao.... los namespaces. Uffff.
Los tutoriales de w3shool están muy bien, pero para empezar.
No se que mas cosillas habrá por ahí, pero siempre nos quedará la w3.org.
Por cierto, como procesador para probar estoy usando xlstproc de libxml2. Implementa XSLT 1.0. Aquí, un poco de documentación.
(un poco despues....)
Ummm, parece que este link me va a dar la solución. Por lo visto el error que estoy teniendo es muy común. Piensas que XPath va a hacer el matching con el tag del nodo del xml y ¡no! hay que hacer el matching con el 'namespace' real, toda la URI.
Habrá que investigar si se puede evitar el poner todo el churro...
Lo que dice también el articulo es que los bindingds prefijo-namespace son dependientes del procesador.
Aunque esto puede ser también bussiness de Xpath. Habrá que echar también un ojo a la coc de xpath de w3.org. En concreto al punto: Node Tests.
Aquí está la recomendación sobre Namespaces en XML.
Y ya para acabar.... unos ejemplos con Xpath.
Estoy ya peleandome con el XSLT y ya estoy con mi primer fregao.... los namespaces. Uffff.
Los tutoriales de w3shool están muy bien, pero para empezar.
No se que mas cosillas habrá por ahí, pero siempre nos quedará la w3.org.
Por cierto, como procesador para probar estoy usando xlstproc de libxml2. Implementa XSLT 1.0. Aquí, un poco de documentación.
(un poco despues....)
Ummm, parece que este link me va a dar la solución. Por lo visto el error que estoy teniendo es muy común. Piensas que XPath va a hacer el matching con el tag del nodo del xml y ¡no! hay que hacer el matching con el 'namespace' real, toda la URI.
Habrá que investigar si se puede evitar el poner todo el churro...
Lo que dice también el articulo es que los bindingds prefijo-namespace son dependientes del procesador.
Aunque esto puede ser también bussiness de Xpath. Habrá que echar también un ojo a la coc de xpath de w3.org. En concreto al punto: Node Tests.
Aquí está la recomendación sobre Namespaces en XML.
Y ya para acabar.... unos ejemplos con Xpath.
viernes, junio 02, 2006
Que jartá de autoformación
Que si WDS, que si WDSL, que si SOAP, que si WS....
Y ahora XSL...
Que quereis saber de que van, pues wikipedia al canto, o bien los tutoriales de w3schools que estan muy bien.
De XSL voy a comentar alguna cosilla:
- El nombre le viene de 'eXtensible StyleSheet Language'.
- Consiste realmente de 3 partes:
- XSLT (XSL Transformations) - un lenguaje para transformar documentos XML
- XPath - un lenguaje para navegar por documentos XML
- XSL-FO - un lenguaje para formatear (de ahí el FO) documentos XML
Osea, que para decir que sabes XSL, realmente tienes que controlar esas 3 cosillas. Bueno... pues a empezar...
¿Y por cual? Fácil, por el más importante XSLT .
¿Y como podemos probar? Fácil también. Los browsers actuales tienen incluido un procesador de XSLT (como Firefox 1.0.2 o IE 6).
Aparte de dejar que el Browser haga la transformación, ésta se puede realizar en el cliente (mediante Javascript) o en el servidor (en este caso el XML no tendrá una referencia al XSL).
En el caso de Javascript el propio código Javascript hace la transformación, invocando al parser de XML; y en el caso de que la haga el browser directamente, habrá en el XML una referencia al XSL.
XPath
XPath es muy importante, no sólo porque es fundamental para XSLT, sino porque también lo es para XQuery y XPointer y XLink.
Y cual es la mejor herramienta para trabajar con todos estos XMLs: XMLSpy.
¿Y por cual? Fácil, por el más importante XSLT .
¿Y como podemos probar? Fácil también. Los browsers actuales tienen incluido un procesador de XSLT (como Firefox 1.0.2 o IE 6).
Aparte de dejar que el Browser haga la transformación, ésta se puede realizar en el cliente (mediante Javascript) o en el servidor (en este caso el XML no tendrá una referencia al XSL).
En el caso de Javascript el propio código Javascript hace la transformación, invocando al parser de XML; y en el caso de que la haga el browser directamente, habrá en el XML una referencia al XSL.
XPath
XPath es muy importante, no sólo porque es fundamental para XSLT, sino porque también lo es para XQuery y XPointer y XLink.
Y cual es la mejor herramienta para trabajar con todos estos XMLs: XMLSpy.
jueves, junio 01, 2006
martes, mayo 30, 2006
Buscan sobre sobre motores de reglas en Java, me he encontrado esta página que no conocía: The Java Community Process. En ella están todas las Specification Request.
Mas sobre Web Services
(continuación del post anterior)Bueno bueno..., ya nos vamos enterando mas de este mundillo hasta ahora desconocido para mi.
Ya me enterado un poco mas de que va este jaleo de los webservices. En pocas palabras....
Del cliente al servidor va a viajar un XML que se define en un WSD (esto son los datos). La funcionalidad del servicio estará definida en el DWSDL.
En la parte servidora:
- Se obtendrá un objeto Java a través del binding XML -> Java.
- Habrá un objeto Java que implemente el servicio.
- Se pasará un XML. Teniendo dos opciones:
- Pasar el XML tal cual (mas engorroso, ya que hay que generarlo)
- Pasar un objeto python => el binding Python -> XML se encarge de general el XML.
Sobre pyXML he encontrado un par de artículos de recomendada lectura: [1] y [2]
Sobre el Servicio:
- Va a usar un motor de reglas. Para independizarns del motor, se usará el interfaz JSR94.
lunes, mayo 29, 2006
Web Services desde Python
De nuevo aventurandonos en aguas fanganosas.... (aguas que no conozco).
Tengo que implementar en un cliente (Python) el interfaz con un Web Service (Java). Y también encargarme de parte del servicio en si (el core, que no del WebService).
Servidor
Para la parte servidora según el guru de turno (en este mundillo web, hay mucho gurú suelto y mucha sigla...) va a usar JAXWS.
Es posible que tenga que usar un parser de XML. Si al final es así usaré el que viene ya con java, JAXP.
Cliente
Y para la parte cliente, según he visto, hay dos opciones:
Tengo que implementar en un cliente (Python) el interfaz con un Web Service (Java). Y también encargarme de parte del servicio en si (el core, que no del WebService).
Servidor
Para la parte servidora según el guru de turno (en este mundillo web, hay mucho gurú suelto y mucha sigla...) va a usar JAXWS.
Es posible que tenga que usar un parser de XML. Si al final es así usaré el que viene ya con java, JAXP.
Cliente
Y para la parte cliente, según he visto, hay dos opciones:
La verdad... todavía no se cual usaré, a ver que puedo ver por la web... Parece que ZSI es mas completa pero SOAPpy mas sencilla de usar.
Ambas usan wstools y pyXML . La verdad... he echado un vistazo al enlace, y parece que la librería está muy bien. Hay que instalarla, ya que no viene incluida con python.
Para empezar abriendo boca, tutoriales para ambos productos: ZSI y SOAPpy.
Dentro de wstools hay un script muy util, xsdl2py.py que genera definiciones python a partir de un wsdl.
¿Cual usar: ZSI o SOAPpy?
En principio me decantaba por usar SOAPpy, porque parecía mas sencillo, pero tras instalar ambos, parece que ZSI es un producto mas maduro. Además ZSI ha pasado el test básico de ejecutar un ejemplo tonto de la distribución, mientras que SOAPpy no.
Nota posterior: ¡vaya! la versión que me habia instalado de SOAPpy era muy antigua. Actualmente las versiones estables son la 1.7 y la 0.11.5 para ZSI y SOAPpy respectivamente. Aunque ya van por la 2.0 y la 0.12.
Ambos usan la lista Pywebsvcs-talk [el archivo].
Web Services
El servicio que vamos usará el protocolo SOAP (sobre HTTP).
Para definir el servicio se usa WSDL. Que se tendrá que validar contra un XSD (un 'XML Schema')
Y ya para acabar unas entradas de la wikipedia:
Ambas usan wstools y pyXML . La verdad... he echado un vistazo al enlace, y parece que la librería está muy bien. Hay que instalarla, ya que no viene incluida con python.
Para empezar abriendo boca, tutoriales para ambos productos: ZSI y SOAPpy.
Dentro de wstools hay un script muy util, xsdl2py.py que genera definiciones python a partir de un wsdl.
¿Cual usar: ZSI o SOAPpy?
En principio me decantaba por usar SOAPpy, porque parecía mas sencillo, pero tras instalar ambos, parece que ZSI es un producto mas maduro. Además ZSI ha pasado el test básico de ejecutar un ejemplo tonto de la distribución, mientras que SOAPpy no.
Nota posterior: ¡vaya! la versión que me habia instalado de SOAPpy era muy antigua. Actualmente las versiones estables son la 1.7 y la 0.11.5 para ZSI y SOAPpy respectivamente. Aunque ya van por la 2.0 y la 0.12.
Ambos usan la lista Pywebsvcs-talk [el archivo].
Web Services
El servicio que vamos usará el protocolo SOAP (sobre HTTP).
Para definir el servicio se usa WSDL. Que se tendrá que validar contra un XSD (un 'XML Schema')
Y ya para acabar unas entradas de la wikipedia:
Para acabar, un tutorial de SOAP.
Notas finales:
- Para C++ está AXIS.
- Esto del web service es algo impuesto. Pero otras alternativas para hacer el servicio hubieran sido CORBA o XML RPC. Hay soporte para xml-rpc en python, y como orb que soporte python tenemos omniorb.
- En 'IBM developer works' IBM tienen un area sobre Web Services. En contreto hay varios articulos sobre python y SOAP: 1, 2, 3, 4 y 5. Que van de:
- Part 5: (2004) Nuevos desarrollos en SOAPpy.
- Part 4: (2003) Nuevos desarrollos en ZSI
- Part 3: (2002) Cambio de roles con ZSI y SOAPpy
- Part 2: (2002) Con y sin WSDL (sobre ZSI)
- Part 1: (2001) Introducción a varias librerías.
jueves, mayo 25, 2006
Y ya que estamos con Drools, pues vamos a refrescar unas cosillas de IA [los enlaces iniciales con de la wikipedia]:
- Programación Lógica (y en inglés).
- Declarative programming.
- Lógica matemática. (y en inglés).
Tipos de programación Lógica:
- Calculo lambda (y en inglés). Vamos... en lo que se basa LISP.
- Lógica de primer orden o de predicados (y en inglés). Aunque mejor ésta. Este último link es de lectura obligada para refrescar conocimientos antes de meternos con Drools.
- Lógica proposicional (y en inglés). Aunque una introducción mas sencilla es ésta.
- Higher-order logic.
- .../...
Vamos que mejor que la info de la wikipedia, ésta (al menos mas elemental).
La lógica de predicados es superior a la lógica preposicional por:
"La principal debilidad de la lógica proposicional es su limitada habilidad para expresar conocimiento. Existen varias sentencias complejas que pierden mucho de su significado cuando se las representa en lógica proposicional. Por esto se desarrolló una forma lógica más general, capaz de representar todos los detalles expresados en las sentencias, esta es la lógica de predicados."
La lógica de predicados es superior a la lógica preposicional por:
"La principal debilidad de la lógica proposicional es su limitada habilidad para expresar conocimiento. Existen varias sentencias complejas que pierden mucho de su significado cuando se las representa en lógica proposicional. Por esto se desarrolló una forma lógica más general, capaz de representar todos los detalles expresados en las sentencias, esta es la lógica de predicados."
Suscribirse a:
Entradas (Atom)