en la Web Semántica




Santiago Coffey - PyCon 2009 - Buenos Aires
WEB
WEB
Global Internet traffic estimates (TB/month)

9,000,000

7,500,000

6,000,000

4,500,000

3,000,000

1,500,000

       0
        1990 1992            1994     1996 1998 2000 2002 2004 2006 2008



            Source: Cisco Visual Networking Index Forecast. http://www.cisco.com/go/vni
LA MUERTE DE LA WEB 2.0
QUÉ ES LA

WEB
2.0
QUÉ fue LA
    ES

WEB
2.0
La web 2.0 es la
segunda generación del
desarrollo y diseño web
¿Cuál es la receta para esa nueva forma
                       de hacer la web?
12 patrones
PATTERN #1   
INFORMATION
    SHARING
1.0                2.0




     FUENTE      FUENTE Y SUMIDERO
DE INFORMACIÓN    DE INFORMACIÓN
WEB SITES
WEB APPLICATIONS
 WEB SERVICES
                   3.0     SEMANTIC WEB




                   USERS
PATTERN #2   
USER-CENTERED
       DESIGN
WEB 1.0                WEB 2.0




CENTRADO EN RECURSOS   CENTRADO EN USUARIOS
http         email

  socket          xmlrpc          xml
cgi     PYTHON 3.0                   ssl
         BATTERIES INCLUDED
smtpd
                                   hashlib
 urllib       smtplib      json

        wsgiref      codecs       html
Babel      lxml           Paste    Beaker

 boto          NumPy      nltk      WebHelpers
PIL
      PYTHON MODULES
 Twisted        SWISS ARMY KNIFE               PyYAML

                                  FormEncode
      SQLAlchemy
          BeautifulSoup          feedparser
      python-memcached              pycrypto
PATTERN #3   
 MODEL-VIEW-
 CONTROLLER
ARCHITECTURE
HTTP://WWW.E-XAMPLE.COM   http://examp.le


                                        BROWSER
    DIRECTORY
    DIRECTORY                        WEB SERVER

      DIRECTORY
             JPG                  ROUTE DISPATCHER

             GIF
                                      CONTROLLER
       JS
       HTML
       HTML                     MODEL        VIEW


    HTML
    HTML                          DATA
                                   BASE


 SITIO WEB: REPOSITORIO      APLICACIÓN WEB:
  DE PÁGINAS ESTÁTICAS    MULTI-CAPA, CON ESTADO
Python Web Frameworks
 • Django       • Zope

 • Pylons       • Plone

 • TurboGears   • MoinMoin

 • Google App   • Python Paste
   Engine
                • CherryPy
Alternative DBMS
• memcachedb       • Key-value
                     storage
• HBase + Thrift
                   • No joins, non-
• flat files (CSV)
                     transactional
• BerkeleyDB
                   • Scalable,
• Map Reduce         fault-tolerant
PATTERN #4   
PARTICIPATION &
COLLABORATION
WEB 1.0                 WEB 2.0




PUBLICACIÓN INDIVIDUAL   EDICIÓN COLABORATIVA
PATTERN #5   
     SOCIAL
NETWORKING
1.0                2.0




RED DE COMPUTADORAS   RED DE AMIGOS
IDEA SIMPLE
   GRANDES
RESULTADOS
PATTERN #6   
       SEARCH &
RECOMMENDATION
        ENGINES
WEB 1.0: NAVEGAR TODO PARA DESCUBRIR




                    WEB 2.0: TEORÍA DEL ICEBERG
                            (SÓLO SE VE EL 10%)
¿Qué hace una web semántica?

 • Integración (aggregation)
 • Definición de ontologías
 • Análisis semántico
 • Agregado de valor (filtrado,
   asociación, recomendación, etc.)
¿Cuál es la misión
de la web semántica?
¿De qué habla (cuál es el significado)
                        el contenido de un determinado
                                     documento HTML?


 ¿Cuál es el contenido
relevante de un determinado
documento HTML?



                                 ¿En qué idioma está un
                                    texto determinado?
¿Qué palabras son equivalentes
entre sí? (stemming)


                              ¿Se pueden inferir tags
                             automáticamente a partir
                                        de un texto?


¿Cómo se pueden eliminar palabras
comunes como artículos y
preposiciones (stop words)?
¿Cuál es la estructura sintáctica
                         de una oración o proposición?
                                        (part of speech)


¿Cómo se puede eliminar la
ambigüedad entre los distintos
significados de una misma palabra?


                                    ¿Es posible agregar
                               información del contexto
                                        eficientemente?
¿Cómo se puede mejorar la relación
                  señal-ruido (signal to noise ratio) de la
                   información que consume un usuario?



¿Cómo se pueden identificar
digramas en un texto?



                    ¿Cuántas y cuáles son las categorías
                   apropiadas para clasificar contenidos
                        en una determinada ontología?
PATTERN #7   
FOLKSONOMY
WEB 1.0                      WEB 2.0




         TAXONOMY                     FOLKSONOMY
(HIERARCHICAL CLASSIFICATION)   (COLLABORATIVE TAGGING)
PATTERN #8   
COMMUNITY &
   COLLECTIVE
 INTELLIGENCE
WEB 1.0                WEB 2.0




CONSTRUIR PORTALES   CONSTRUIR COMUNIDADES
PATTERN #9   
INTER-OPERABILITY &
  DATA PORTABILITY
RSS

                                                 Atom


                                                {json}
                                     Widgets

                                                 JSON


                                                <xml/>
                                     RDF

                                              XML-RPC




WEB CRAWLERS / SPIDERS / BOTS   WEB SYNDICATION, WIDGETS,
      (HTML SCRAPING)            OPEN APIs, AGGREGATION
Ejemplo: Atom feed
from feedparser import parse

url = 'http://blog.ianbicking.org/' 
     'feed/atom/'
feed = parse(url)
titles = [i['title'] for i in 
     feed['entries']]
print 'n'.join(titles)
Ejemplo: Twitter API
from urllib2 import urlopen
from simplejson import loads

url = 'http://twitter.com/statuses/' 
     'user_timeline/JohnCLeese.json'
raw_data = urlopen(url).read()
tweets = [i['text'] for i in 
     loads(raw_data)]
print 'n'.join(tweets)
Ejemplo: GData API
from gdata.service.youtube import 
     YoutubeService

url = 'http://gdata.youtube.com/feeds/' 
     'api/users/MontyPython/uploads'
client = YouTubeService()
feed = client.GetYouTubeVideoFeed(url)
titles = [i.title.text for i in 
     feed.entry]
print 'n'.join(titles)
Ejemplo: HTML Scraping
from urllib2 import urlopen
from lxml.html import fromstring

url = ...
html = urlopen(url).read()
root = fromstring(html)


• Demo con Microformats en LinkedIn
PATTERN #10   
 RICH USER
EXPERIENCE
CLIENT-SIDE SCRIPTING CON
INTERACCIÓN POR FORMULARIOS
                              INTERACCIÓN ASINCRÓNICA
   (CON RECARGA DE PÁGINA)
                                       (e.g.: AJAX)
Web OS?
PATTERN #11   
SEPARATION OF
 CONTENT AND
 PRESENTATION
<HTML>

<HEAD>
<TITLE>My Homepage</TITLE>
</HEAD>
                                                    STRUCTURE &
                                                     CONTENT
<BODY BGCOLOR="YELLOW">                      XHTML
<SCRIPT>window.status="Hello!"</SCRIPT>


                                                         +
<TABLE WIDTH="640">
<TR><TD>



                                             
<CENTER>
<MARQUEE>Welcome to my homepage!</MARQUEE>

                                                     PRESENTATION
<IMG SRC="animation.gif" WIDTH="180"
HEIGHT="31" BORDER="1">
</CENTER>
                                             CSS

                                                         +
<P><FONT COLOR="blue">This is a <BR>
<FONT FACE="Arial"><U>fake link</U>!
</FONT></P>
</TD>

<TD ALIGN="RIGHT">
<P>Sign my <A HREF="/cgi-bin/sign"
TARGET="_parent">guestbook</A></P>
<BLINK>Under <B>construction</B>!</BLINK>
                                                    CLIENT-SIDE
                                                     SCRIPTING
                                              JS
</TD></TR>
</TABLE>
</BODY>
</HTML>
                                              STRUCTURE & CONTENT
             CLUTTERED HTML
                                                 ≠ PRESENTATION
PATTERN #12   
  WEB AS A
 PLATFORM
(UBIQUITY)

           WEB



                                      TV
                                               

       YOUR SYSTEM
          IS THE
        PLATFORM
                             
                              
                                     THE WEB
                                               
                                      IS THE
                                    PLATFORM




PROPRIETARY SPECIFICATIONS      WEB STANDARDS
  PLATFORM DEPENDENCE         DEVICE INDEPENDENCE
      BROWSER WARS           CROSS-PLATFORM DESIGN
OMNIPRESENCIA (UBIQUITY)




THE WEB IS WATCHING YOU!
• Robot no exactamente
  electro-mecánico
• Sensores:
  Humanos-Máquinas
• Actuadores:
  Humanos-Máquinas
• Entorno: Mundo
• AI: Webapps +
  Semantic Web + ...
• Procesa datos y
  responde a estímulos
• ¿Es autónomo?
• ¿Es consciente?
• Es tolerante a fallas
• Es “inteligente”
• Aprende
• Evoluciona

                          © John W Liberto
Suena ilusorio ¿no?




¿Pero podíamos imaginar hace 20 años
una web como la que hoy conocemos?




                      Además, ya hay aplicaciones...
Resumen: Los 12 patrones
• Information sharing       • Folksonomy

• User-centered design      • Community & collective
                              intelligence
• MVC Architecture
                            • Inter-operability & Data
• Participation &             portability
  collaboration
                            • Rich User Experience
• Social networking
                            • Content ≠ Presentation
• Search & recommendation
  engines                   • Web as a Platform
Conclusiones
Conclusiones

• Web como AI (como un robot)
Conclusiones

• Web como AI (como un robot)
• Misión de la web semántica:
  Agregar valor a la información
Conclusiones

• Web como AI (como un robot)
• Misión de la web semántica:
  Agregar valor a la información
• ¿Tecnología? No, patrones
¡Gracias!




santiago.coffey@popego.com
    http://twitter.com/scoffey
   http://scoffey.popego.com

Python en la Web Semántica

  • 1.
    en la WebSemántica Santiago Coffey - PyCon 2009 - Buenos Aires
  • 2.
  • 3.
  • 4.
    Global Internet trafficestimates (TB/month) 9,000,000 7,500,000 6,000,000 4,500,000 3,000,000 1,500,000 0 1990 1992 1994 1996 1998 2000 2002 2004 2006 2008 Source: Cisco Visual Networking Index Forecast. http://www.cisco.com/go/vni
  • 5.
    LA MUERTE DELA WEB 2.0
  • 6.
  • 7.
    QUÉ fue LA ES WEB 2.0
  • 8.
    La web 2.0es la segunda generación del desarrollo y diseño web
  • 9.
    ¿Cuál es lareceta para esa nueva forma de hacer la web?
  • 11.
  • 12.
    PATTERN #1  INFORMATION SHARING
  • 13.
    1.0 2.0 FUENTE FUENTE Y SUMIDERO DE INFORMACIÓN DE INFORMACIÓN
  • 14.
    WEB SITES WEB APPLICATIONS WEB SERVICES 3.0 SEMANTIC WEB USERS
  • 15.
    PATTERN #2  USER-CENTERED DESIGN
  • 16.
    WEB 1.0 WEB 2.0 CENTRADO EN RECURSOS CENTRADO EN USUARIOS
  • 18.
    http email socket xmlrpc xml cgi PYTHON 3.0 ssl BATTERIES INCLUDED smtpd hashlib urllib smtplib json wsgiref codecs html
  • 19.
    Babel lxml Paste Beaker boto NumPy nltk WebHelpers PIL PYTHON MODULES Twisted SWISS ARMY KNIFE PyYAML FormEncode SQLAlchemy BeautifulSoup feedparser python-memcached pycrypto
  • 20.
    PATTERN #3  MODEL-VIEW- CONTROLLER ARCHITECTURE
  • 21.
    HTTP://WWW.E-XAMPLE.COM http://examp.le BROWSER  DIRECTORY  DIRECTORY WEB SERVER  DIRECTORY  JPG ROUTE DISPATCHER  GIF CONTROLLER  JS  HTML  HTML MODEL VIEW  HTML  HTML DATA BASE SITIO WEB: REPOSITORIO APLICACIÓN WEB: DE PÁGINAS ESTÁTICAS MULTI-CAPA, CON ESTADO
  • 22.
    Python Web Frameworks • Django • Zope • Pylons • Plone • TurboGears • MoinMoin • Google App • Python Paste Engine • CherryPy
  • 23.
    Alternative DBMS • memcachedb • Key-value storage • HBase + Thrift • No joins, non- • flat files (CSV) transactional • BerkeleyDB • Scalable, • Map Reduce fault-tolerant
  • 24.
    PATTERN #4  PARTICIPATION & COLLABORATION
  • 25.
    WEB 1.0 WEB 2.0 PUBLICACIÓN INDIVIDUAL EDICIÓN COLABORATIVA
  • 27.
    PATTERN #5  SOCIAL NETWORKING
  • 28.
    1.0 2.0 RED DE COMPUTADORAS RED DE AMIGOS
  • 29.
    IDEA SIMPLE GRANDES RESULTADOS
  • 31.
    PATTERN #6  SEARCH & RECOMMENDATION ENGINES
  • 32.
    WEB 1.0: NAVEGARTODO PARA DESCUBRIR WEB 2.0: TEORÍA DEL ICEBERG (SÓLO SE VE EL 10%)
  • 34.
    ¿Qué hace unaweb semántica? • Integración (aggregation) • Definición de ontologías • Análisis semántico • Agregado de valor (filtrado, asociación, recomendación, etc.)
  • 35.
    ¿Cuál es lamisión de la web semántica?
  • 36.
    ¿De qué habla(cuál es el significado) el contenido de un determinado documento HTML? ¿Cuál es el contenido relevante de un determinado documento HTML? ¿En qué idioma está un texto determinado?
  • 37.
    ¿Qué palabras sonequivalentes entre sí? (stemming) ¿Se pueden inferir tags automáticamente a partir de un texto? ¿Cómo se pueden eliminar palabras comunes como artículos y preposiciones (stop words)?
  • 38.
    ¿Cuál es laestructura sintáctica de una oración o proposición? (part of speech) ¿Cómo se puede eliminar la ambigüedad entre los distintos significados de una misma palabra? ¿Es posible agregar información del contexto eficientemente?
  • 39.
    ¿Cómo se puedemejorar la relación señal-ruido (signal to noise ratio) de la información que consume un usuario? ¿Cómo se pueden identificar digramas en un texto? ¿Cuántas y cuáles son las categorías apropiadas para clasificar contenidos en una determinada ontología?
  • 42.
    PATTERN #7  FOLKSONOMY
  • 43.
    WEB 1.0 WEB 2.0 TAXONOMY FOLKSONOMY (HIERARCHICAL CLASSIFICATION) (COLLABORATIVE TAGGING)
  • 45.
    PATTERN #8  COMMUNITY & COLLECTIVE INTELLIGENCE
  • 46.
    WEB 1.0 WEB 2.0 CONSTRUIR PORTALES CONSTRUIR COMUNIDADES
  • 48.
    PATTERN #9  INTER-OPERABILITY & DATA PORTABILITY
  • 49.
    RSS Atom {json} Widgets JSON <xml/> RDF  XML-RPC WEB CRAWLERS / SPIDERS / BOTS WEB SYNDICATION, WIDGETS, (HTML SCRAPING) OPEN APIs, AGGREGATION
  • 51.
    Ejemplo: Atom feed fromfeedparser import parse url = 'http://blog.ianbicking.org/' 'feed/atom/' feed = parse(url) titles = [i['title'] for i in feed['entries']] print 'n'.join(titles)
  • 52.
    Ejemplo: Twitter API fromurllib2 import urlopen from simplejson import loads url = 'http://twitter.com/statuses/' 'user_timeline/JohnCLeese.json' raw_data = urlopen(url).read() tweets = [i['text'] for i in loads(raw_data)] print 'n'.join(tweets)
  • 53.
    Ejemplo: GData API fromgdata.service.youtube import YoutubeService url = 'http://gdata.youtube.com/feeds/' 'api/users/MontyPython/uploads' client = YouTubeService() feed = client.GetYouTubeVideoFeed(url) titles = [i.title.text for i in feed.entry] print 'n'.join(titles)
  • 54.
    Ejemplo: HTML Scraping fromurllib2 import urlopen from lxml.html import fromstring url = ... html = urlopen(url).read() root = fromstring(html) • Demo con Microformats en LinkedIn
  • 55.
    PATTERN #10  RICH USER EXPERIENCE
  • 56.
    CLIENT-SIDE SCRIPTING CON INTERACCIÓNPOR FORMULARIOS INTERACCIÓN ASINCRÓNICA (CON RECARGA DE PÁGINA) (e.g.: AJAX)
  • 57.
  • 58.
    PATTERN #11  SEPARATION OF CONTENT AND PRESENTATION
  • 59.
    <HTML> <HEAD> <TITLE>My Homepage</TITLE> </HEAD>  STRUCTURE & CONTENT <BODY BGCOLOR="YELLOW"> XHTML <SCRIPT>window.status="Hello!"</SCRIPT> + <TABLE WIDTH="640"> <TR><TD>  <CENTER> <MARQUEE>Welcome to my homepage!</MARQUEE> PRESENTATION <IMG SRC="animation.gif" WIDTH="180" HEIGHT="31" BORDER="1"> </CENTER> CSS + <P><FONT COLOR="blue">This is a <BR> <FONT FACE="Arial"><U>fake link</U>! </FONT></P> </TD> <TD ALIGN="RIGHT"> <P>Sign my <A HREF="/cgi-bin/sign" TARGET="_parent">guestbook</A></P> <BLINK>Under <B>construction</B>!</BLINK>  CLIENT-SIDE SCRIPTING JS </TD></TR> </TABLE> </BODY> </HTML> STRUCTURE & CONTENT CLUTTERED HTML ≠ PRESENTATION
  • 62.
    PATTERN #12  WEB AS A PLATFORM (UBIQUITY)
  • 63.
    WEB TV  YOUR SYSTEM IS THE PLATFORM   THE WEB  IS THE PLATFORM PROPRIETARY SPECIFICATIONS WEB STANDARDS PLATFORM DEPENDENCE DEVICE INDEPENDENCE BROWSER WARS CROSS-PLATFORM DESIGN
  • 64.
  • 65.
    • Robot noexactamente electro-mecánico • Sensores: Humanos-Máquinas • Actuadores: Humanos-Máquinas • Entorno: Mundo • AI: Webapps + Semantic Web + ...
  • 66.
    • Procesa datosy responde a estímulos • ¿Es autónomo? • ¿Es consciente? • Es tolerante a fallas • Es “inteligente” • Aprende • Evoluciona © John W Liberto
  • 67.
    Suena ilusorio ¿no? ¿Peropodíamos imaginar hace 20 años una web como la que hoy conocemos? Además, ya hay aplicaciones...
  • 69.
    Resumen: Los 12patrones • Information sharing • Folksonomy • User-centered design • Community & collective intelligence • MVC Architecture • Inter-operability & Data • Participation & portability collaboration • Rich User Experience • Social networking • Content ≠ Presentation • Search & recommendation engines • Web as a Platform
  • 70.
  • 71.
    Conclusiones • Web comoAI (como un robot)
  • 72.
    Conclusiones • Web comoAI (como un robot) • Misión de la web semántica: Agregar valor a la información
  • 73.
    Conclusiones • Web comoAI (como un robot) • Misión de la web semántica: Agregar valor a la información • ¿Tecnología? No, patrones
  • 74.
    ¡Gracias! santiago.coffey@popego.com http://twitter.com/scoffey http://scoffey.popego.com

Notas del editor

  • #2 Buenos a d&amp;#xED;as a todos.
  • #3 La presentaci&amp;#xF3;n que hoy tengo el honor de compartir con Uds. se trata de la web. De la evoluci&amp;#xF3;n de la web.
  • #4 Piensen lo siguiente: Hoy en d&amp;#xED;a Internet es una tecnolog&amp;#xED;a que ha transformado al mundo en muchos aspectos, econ&amp;#xF3;micos, sociales, etc. y que BOOM! Hace 20 a&amp;#xF1;os no exist&amp;#xED;a.
  • #7 &amp;#xBF;Qu&amp;#xE9; hicimos con Internet para que esto sea posible? La web 2.0. &amp;#xBF;Y qu&amp;#xE9; es la web 2.0? Bueno, en realidad deber&amp;#xED;amos preguntarnos qu&amp;#xE9; FUE la web 2.0. Porque la idea de esta charla es hablar un poco tambi&amp;#xE9;n de las tendencias que se empiezan a vislumbrar en el futuro de la web.
  • #8 La web 2.0 es una segunda generaci&amp;#xF3;n del desarrollo y dise&amp;#xF1;o web. Entonces, tratemos de analizar cu&amp;#xE1;les fueron esos cambios entre la vieja y la nueva forma de &quot;hacer las cosas&quot; en la web. Para simplificar vamos a referirnos a estas 2 formas de hacer las cosas como web 1.0 y 2.0 respectivamente.
  • #9 Esto es como cuando alguien cocina algo que sale muy bien. &amp;#xBF;Qu&amp;#xE9; hizo para que le salga tan bien? O sea, &amp;#xBF;cu&amp;#xE1;l es la receta para una web 2.0?
  • #10 Bueno, se pueden mencionar muchos ingredientes secretos.
  • #11 Pero creo que se pueden resumir en 12 ingredientes. S&amp;#xF3;lo que los ingenieros de software llaman a esos ingredientes patrones de dise&amp;#xF1;o.
  • #13 Web 1.0: Internet = Fuente de informaci&amp;#xF3;n Web 2.0: Internet = Fuente de informaci&amp;#xF3;n &lt;=&gt; Sumidero de informaci&amp;#xF3;n PATTERN 1: INFORMATION SHARING
  • #22 ++ Ejemplos...
  • #26 Todos pueden editar y colaborar. Participaci&amp;#xF3;n con comentarios.
  • #33 Recomendaci&amp;#xF3;n = Valor agregado
  • #40 ++Meaningtool
  • #43 Tags: Mejor clasificaci&amp;#xF3;n. Colecciones emergentes.
  • #46 Wisdom of crowds
  • #48 ++ RDF, DBPedia ++ Aprovechar otros servicios (ejemplo: Twitter: EC2 Amazon y URL shorteners, YouTube: CDN Akamai, Facebook: Google Images para thumbnails de links)
  • #49 Publisher-Subscriber
  • #52 Demo Microformats LinkedIn
  • #53 Demo Microformats LinkedIn
  • #56 Rich Internet Application. Sin cargar nueva p&amp;#xE1;gina. Manejo de eventos por Javascript. Web sem&amp;#xE1;ntica: Web OS?
  • #65 Ubiquity