3. ´ndice
I
1 ´
Introduccion
Tuplespaces
Patrones de uso
´
¿Como funciona?
Ventajas
´
Web Semantica
Triple Space Computing
Primitivas TSC
Ventajas
2 Otsopack
3 ´
Practica
4 Bibliograf´a
ı
4. Tuplespaces en pocas palabras
´
Paradigma de coordinacion, donde distintos procesos leen
´ en un espacio comun [Gel85].
y escriben informacion ´
5. ´
Patron de trabajador replicado I
Por lo general: 1 amo y varios trabajadores.
´
El amo o patron genera tareas y recoge resultados,
mientras los trabajadores cogen tareas y computan
resultados de forma repetida.
Para construir aplicaciones paralelas que puedan agilizar
las soluciones a problemas que requieren un uso intensivo
del ordenador.
Balancea la carga de forma natural: los trabajadores que
˜
aceptan nuevos trabajos en base a su tamano y su
disponibilidad.
6. ´
Patron de trabajador replicado II
´
¿Como funciona? [FHA99]
1 ˜
El amo coge un problema y lo divide en tareas pequenas
que escribe en el espacio.
2 Los trabajadores cogen las tareas del espacio, las
procesan y escriben los resultados de vuelta en el.
3 El maestro recoge los resultados y los combina en una
´
solucion general.
4 Cada trabajador puede procesar multiples tareas una tras
´
otra.
7. ´
Patron de mercado I
Propone un lugar donde los productores y consumidores
de un recurso interactuan para encontrar el mejor trato.
´
Un recurso puede ser cualquier producto o servicio que
pueda comprarse o venderse (ciclos de computacion,´
´
energ´a electrica, coches. . . ).
ı
8. ´
Patron del especialista I
´
Es lo contrario al patron de trabajadores replicados donde
todos los trabajadores hac´an lo mismo.
ı
´ ´
Cada trabajador esta especializado en la realizacion de
una tarea concreta.
Para ello, se debe dividir un problema grande en piezas o
componentes de bajo, medio y alto nivel.
De esta forma los datos fluyen del bajo nivel al alto nivel
pasando por el nivel medio.
9. Patrones colaborativos I
Es util cuando implica a multiples usuarios o procesos (por
´ ´
´
ejemplo, una aplicacion de chat multiusuario).
´
Un tipo de subpatron es el “flujo de trabajo”, donde un
proceso completa una tarea y la copia para el resto de
trabajos.
10. Algunos trabajos...
´
Tuplespaces en entornos moviles.
L2imbo [FDS+ 99]
LIME (Linda in a Mobile Environment) [MPR06]
Tuplespaces para dispositivos embebidos.
TinyLime [CGG+ 05]
TeenyLime [MP06]
11.
12. Ventajas
´
Autonom´a espacial o de ubicacion. Los procesos se
ı
pueden ejecutar en entornos computacionales
completamente diferentes mientras ambos puedan
acceder al mismo tuplespace[Fen04].
Autonom´a de referencia. Los nodos no necesitan
ı
conocerse los unos a los otros.
Autonom´a temporal. Dado que los nodos se comunican
ı
de forma as´ncrona.
ı
´
Un proceso puede proveer una pieza de informacion sin
preocuparse por que alguien la necesite o use.
´
Un proceso puede preguntar por informacion que no se
encuentre en el espacio aun.
´
13. ´
La web semantica en breve I
The vision of the Semantic Web is to extend principles
of the Web from documents to data. Data should be
accessed using the general Web architecture using,
e.g., URI-s; data should be related to one another
just as documents (or portions of documents) are
already. This also means creation of a common
framework that allows data to be shared and reused
across application, enterprise, and community
boundaries, to be processed automatically by tools
as well as manually, including revealing possible new
relationships among pieces of data. [Con11]
15. TSC en pocas palabras
Tripletas RDF “en vez de” tuplas.
Agrupadas en grafos RDF. De otra forma, la informacion ´
que una unica tripleta contiene podr´a no ser muy util por
´ ı ´
si misma.
Primitivas: write, read, take and query.
20. ´
Subscripcion
Frecuentemente se suelen ofrecer primitivas de
´
suscripcion.
(es un aspecto en el que en Otsopack todav´a nos
ı
encontramos trabajando)
21. Ventajas
´
Ventajas de tuplespace + ventajas de la web semantica
Autonom´a del esquema de datos. Al seguir la
ı
´ ´
especificacion RDF expresa la informacion de manera
independiente al esquema interno de cada nodo [Fen04].
´
“puede inferir informacion no expl´citamente definida”
ı
[FNTdV08].
´
“permite mediar entre esquemas de datos heterogeneos
usados por los distintos actores” [FNTdV08].
22.
23. ´ndice
I
1 ´
Introduccion
2 Otsopack
´
¿Que es Otsopack?
´ ´
Estrategia de distribucion de la informacion
Detalles de la implementacion´
´
Ultimos trabajos realizados con TSC
3 ´
Practica
4 Bibliograf´a
ı
24.
25. ´
¿Que es Otsopack?
Middleware que implementa el paradigma TSC
Completamente distribuido
Desestructurado
Adaptado a las necesidades de IoT
´
Aunque a veces la hemos usado con otros propositos
[GCO+ 11, LCO+ 11].
27. ´
Sobre la descentralizacion
Ventajas
´
El usuario puede llevar su informacion de perfil de un lugar
a otro.
Los datos provistos por los sensores se actualizan
constantemente, por lo que interrogandoles directamente
accederemos a los ultimos valores.
´
Dificultades
´ ˜
La web semantica anade sobrecarga
Hoy en d´a hay dispositivos con recursos computacionales
ı
impresionantes (p.e. HTC Desire 576 MB RAM and 1GHz
CPU).
´
En otros dispositivos siempre se podra limitar cuanto se usa.
Seguridad. Hay distintos enfoques para controlar el acceso
a las tripletas [DHMC11], el nuestro se encuentra en una
etapa prematura.
28. ´
¿En que consiste Otsopack?
API TSC en HTTP
HTTP request URL Returns
GET http://nodeuri/{sp}/query/wildcards/{s}/{p}/{o-uri} query({sp},"{s} {p} {o} ."): triples
http://nodeuri/{sp}/query/wildcards/{s}/{p}/{o-type}/{o-value}
GET http://nodeuri/{sp}/graphs/{g} read({s},{g}): triples
GET http://nodeuri/{sp}/graphs/wildcards/{s}/{p}/{o-uri} read({sp},"{s} {p} {o} ."): triples
http://nodeuri/{sp}/graphs/wildcards/{s}/{p}/{o-type}/{o-value}
DELETE http://nodeuri/{sp}/graphs/{g} take({sp},{g}): triples
DELETE http://nodeuri/{sp}/graphs/wildcards/{s}/{p}/{o-uri} take({sp},"{s} {p} {o} ."): triples
http://nodeuri/{sp}/graphs/wildcards/{s}/{p}/{o-type}/{o-value}
Cualquier dispositivo capaz ejercer de servidor HTTP
puede implementarlo.
Ofrecemos implementaciones para Android y Java SE.
Lo hemos portado parcialmente a Python demostrando lo
sencilla que puede ser su adopcion [GnA+ ].
´
30. ´
Organizacion por proyectos de Otsopack
http://code.google.com/p/otsopack/source/browse/
otsoCommons
otsoME
otsoFullJavaCommons
otsoDroid
otsoSE
Relacionados con la seguridad...
otsoAuthentication
otsoIdentityProvider
otsoSecurityIntegrationTest
otsoRestletCommons
31. TSC y WoT
On the complementarity of triple spaces and the Web of
Things [GL11].
Este trabajo analiza y compara la Web of Things (WoT) y
Triple Spaces (TS) que son ambas arquitecturas orientadas
a recursos y enfatiza las situaciones en las que pueden ser
´ ´
mas utiles.
´
¿Que es WoT?
We explore how to leverage Web standards to
interconnect all types of embedded devices
(sensors, mobile phones, etc), in order to make
them easier to use and to integrate in classic
Web applications.[TG11]
Fue el pistoletazo de salida para nuestro proyecto
open-source Otsopack1 .
1
http://code.google.com/p/otsopack/
32. Otsopack y sensores y actuadores
Collaboration of Sensors and Actuators Through Triple
Spaces [GnA+ ] (pendiente de publicacion).
´
´
Evaluamos la adecuacion de nuestro API TSC basada en
REST a dispositivos embebidos.
33.
34. ´ndice
I
1 ´
Introduccion
2 Otsopack
3 ´
Practica
´
Instalacion
˜
Decisiones de diseno: Space Managers y descubrimiento
Creando un nodo de TSC
Inicializar el nodo
´
Union a un espacio
´
Primitivas basicas
´
Clases basicas en Otsopack
Write
Read
Take
Query
Abandonar un espacio
Finalizar un nodo
4 Bibliograf´a
ı
35.
36. ´
Instalacion I
Requisitos: mercurial, JDK, ant y SDK de Android2 .
Nos descargamos Otsopack:
hg clone https://code.google.com/p/otsopack/
Bajo la ra´z hay distintos proyectos.
ı
Podemos compilarlos todos generando sus respectivos
.jars con el fichero ant build.xml de la ra´z:
ı
cd otsopack
ant
37. ´
Instalacion II
En este caso, dado que queremos crear un proyecto Java
´
SE, usaremos la version llamada OtsoSE.
La podremos encontrar en el directorio dist dentro de dicho
subproyecto.
Las librer´as acabadas en ”-all” contienen todas las
ı
dependencias necesarias.
otsoSE/dist/otsoSE-all.jar
Por lo tanto, lo unico que deberemos incluir en nuestro
´
classpath es dicha librer´a.
ı
2
´
En caso de querer hacer una aplicacion para Android
38. Space Managers
´
El Space Manager (SM) es un modulo que mantiene una
lista de nodos activos en un espacio concreto.
´ ´
Cada nodo consultara a un SM que sera el que le facilite
los nodos a los que debe consultar.
Cada espacio puede tener uno o varios SMs.
´ ´
En el caso mas sencillo tendremos uno solo: - trafico de red
´ ´
En el mas complejo cada nodo tendra su propio SM: +
flexibilidad
´
Cada nodo puede usar uno o mas SMs para descubrir al
resto de nodos del espacio.
´ ´
En este ejemplo, cada nodo tendra su propio SM que sera
el unico que consulte.
´
39. Estrategia de descubrimiento
´ ´
Cada nodo podra descubrir al resto de nodos a traves de
un SM
¿Y para descubrir un SM o SMs?
´
Necesitara a su vez una estrategia de descubrimiento
concreta
´ ´ ´
A d´a de hoy solo esta implementada la estrategia mas
ı
´
basica
Especificar en tiempo de despliegue los SM
40. Creando un nodo de TSC
f i n a l S t r i n g s p a c e u r i = ” h t t p : / / espacio . com / ejemplo ” ;
f i n a l ISpaceManager spaceMngr =
new SimpleSpaceManager ( D e s c r i p t i o n . node1 ,
D e s c r i p t i o n . node2 ,
D e s c r i p t i o n . node3 ) ;
final IRegistry registry =
new S i m p l e R e g i s t r y ( s p a c e u r i ,
new SimpleDiscovery ( spaceMngr ) ,
10 ∗ 60 ∗ 1000 ,
D e s c r i p t i o n . node1 . getUuid ( ) ) ;
final ITripleSpace kernel =
new H t t p K e r n e l (28080 , n u l l , r e g i s t r y ) ;
43. ´
Metodos de utilidad
´
Para configurar parametros de funcionamiento por defecto.
´ ´ ´ ´
Formato semantico. En la version actual solo se soporta
´
el formato N-Triples, por lo que estara escogido por
defecto.
public void s e t D e f a u l t S e m a n t i c F o r m a t ( SemanticFormat f o r m a t ) ;
public SemanticFormat g etD efau ltS eman tic Form at ( ) ;
Timeout. Frecuentemente puede resultar preferible no
esperar las respuestas de todos ellos.
public void s e t D e f a u l t T i m e o u t ( i n t t i m e o u t ) ;
public i n t g e t D e f a u l t T i m e o u t ( ) ;
44. ´
Union a un espacio
k e r n e l . createSpace ( s p a c e u r i ) ;
k e r n e l . j oi n S p a c e ( s p a c e u r i ) ;
45. Para comprobar que todo ha ido bien...
´ ´ ´
Se vera informacion esquematica de los servicios REST
que contiene.
´
En caso contrario se obtendra un error 404.
http://meyerweb.com/eric/tools/dencoder/
http://[IP]:[puerto]/spaces/[espacio codificado en HTML]/
46. Clase Graph
´
Un grafo esta formado por un conjunto de tripletas RDF.
Esas tripletas RDF se pueden expresar en distintos
formatos
Por ejemplo N-Triples, RDF/XML o Turtle
Otsopack abstrae al usuario de las particularidades del
´
formato en el que esten escritas.
Siempre que el Kernel del TripleSpace tenga un conversor
adecuado para dicho formato.
´
(a d´a de hoy solo existe un conversor para el formato
ı
N-Triples)
public Graph ( S t r i n g data , SemanticFormat f o r m a t ) ;
/ / e . g . SemanticFormat . NTRIPLES
47. Clase Template
La clase Template permite representar las consultas que
se pueden realizar sobre el espacio.
´ ´
A d´a de hoy, solo existe una implementacion llamada
ı
WildcardTemplate que permite definir una tripleta con
posibles comodines en el sujeto, predicado u objeto de las
mismas.
Por ejemplo N-Triples, RDF/XML o Turtle
Ejemplos WildcardTemplate:
?s ?p ?o .
<http://sujeto> ?p ?o .
<http://sujeto> <http://predicado> ?o .
<http://sujeto> <http://predicado> <http://objeto> .
?s <http://predicado> <http://objeto> .
?s ?p <http://objeto> .
?s <http://predicado> ?o .
48. Uso de WildcardTemplate
WildcardTemplate c r e a t e W i t h N u l l ( S t r i n g s u b j e c t , S t r i n g p r e d i c a t e ) ;
WildcardTemplate createWithURI ( S t r i n g s u b j e c t , S t r i n g p r e d i c a t e , S t r i n g o b j e c t ) ;
WildcardTemplate c r e a t e W i t h L i t e r a l ( S t r i n g s u b j e c t , S t r i n g p r e d i c a t e , O b j e c t o b j e c t ) ;
Ejemplos:
Ejemplo de template ´
Metodo factor´a
ı
?s ?p ?o . WildcardTemplate.createWithNull(null,null)
¡http://subj¿ ¡http://pred¿ ?o . WildcardTemplate.createWithNull(”http://subj”,”http://pred”);
¡http://subj¿ ?p ¡http://obj¿ . WildcardTemplate.createWithURI(”http://subj”,null,”http://obj”);
¡http://subj¿ ?p ”1”—http://www.w3.org/2001/XMLSchema#int¿ . WildcardTemplate.createWithLiteral(”http://subj”,null,1);
49. Write
public S t r i n g w r i t e ( S t r i n g spaceURI , Graph I T r i p l e s )
throws TSException ;
Esquema
50. Read
public Graph read
( S t r i n g spaceURI , S t r i n g graphURI , long t i m e o u t )
throws TSException ;
public Graph read
( S t r i n g spaceURI , Template template , long t i m e o u t )
throws TSException ;
Esquema
51. Take
public Graph t a k e
( S t r i n g spaceURI , S t r i n g graphURI , long t i m e o u t )
throws TSException ;
public Graph t a k e
( S t r i n g spaceURI , Template template , long t i m e o u t )
throws TSException ;
Esquema
52. Query
public Graph query ( S t r i n g spaceURI , Template t e m p l a t e )
throws TSException ;
Esquema
56. Bibliograf´a I
ı
C. Curino, M. Giani, M. Giorgetta, A. Giusti, A. L Murphy,
and G. P Picco.
Mobile data collection in sensor networks: The TinyLime
middleware.
Pervasive and Mobile Computing, 1(4):446–469, 2005.
World Wide Web Consortium.
W3c semantic web faq, August 2011.
Alfredo D’Elia, Jukka Honkola, Daniele Manzaroli, and
Tullio Salmon Cinotti.
Access control at triple level: Specification and
enforcement of a simple RDF model to support concurrent
applications in smart environments.
In Sergey Balandin, Yevgeni Koucheryavy, and Honglin Hu,
editors, Smart Spaces and Next Generation Wired/Wireless
Networking, volume 6869, pages 63–74. Springer Berlin
Heidelberg, Berlin, Heidelberg, 2011.
57. Bibliograf´a II
ı
A. Friday, N. Davies, J. Seitz, M. Storey, and S. P Wade.
Experiences of using generative communications to
support adaptive mobile applications.
Distributed and Parallel Databases, 7(3):319–342, 1999.
Dieter Fensel.
Triple-Space computing: Semantic web services based on
persistent publication of information.
In Finn Arve Aagesen, Chutiporn Anutariya, and Vilas
Wuwongse, editors, Intelligence in Communication
Systems, volume 3283 of Lecture Notes in Computer
Science, pages 43–53. Springer Berlin / Heidelberg, 2004.
10.1007/978-3-540-30179-0 4.
E. Freeman, S. Hupfer, and K. Arnold.
JavaSpaces principles, patterns, and practice.
Addison-Wesley Professional, 1999.
58. Bibliograf´a III
ı
´
David Francisco, Lyndon JB Nixon, and German Toro del
Valle.
Towards a multimedia content marketplace implementation
based on triplespaces.
In Amit Sheth, Steffen Staab, Mike Dean, Massimo
Paolucci, Diana Maynard, Timothy Finin, and
Krishnaprasad Thirunarayan, editors, The Semantic Web -
ISWC 2008, volume 5318, pages 875–888. Springer Berlin
Heidelberg, Berlin, Heidelberg, 2008.
´
A. Gomez-Goiri, E. Castillejo, P. Orduna, X. Laiseca,
´
D. Lopez-de-Ipina, and S. F´nez.
ı
Easing the mobility of disabled people in supermarkets
using a distributed solution.
Ambient Assisted Living, pages 41–48, 2011.
59. Bibliograf´a IV
ı
D. Gelernter.
Generative communication in linda.
ACM Transactions on Programming Languages and
Systems (TOPLAS), 7(1):80–112, 1985.
´ ´ ˜
Aitor Gomez-Goiri and Diego Lopez-de-Ipina.
On the complementarity of triple spaces and the web of
things.
In Proceedings of the Second International Workshop on
Web of Things, WoT ’11, pages 12:1–12:6, New York, NY,
USA, 2011. ACM.
´
Aitor Gomez-Goiri, Pablo Ordu na, David Aus´n, Mikel
ı
´ ˜
Emaldi, and Diego Lopez-de-Ipina.
Collaboration of sensors and actuators through triple
spaces.
60. Bibliograf´a V
ı
´
X. Laiseca, E. Castillejo, P. Orduna, A. Gomez-Goiri,
´ ´
D. Lopez-de-Ipina, and E. Gonzalez Aguado.
Distributed tracking system for patients with cognitive
impairments.
Ambient Assisted Living, pages 49–56, 2011.
A.L. Murphy and G.P. Picco.
Transiently shared tuple spaces for sensor networks.
In Proc. of the Euro-American Workshop on Middleware for
Sensor Networks, 2006.
A. L Murphy, G. P Picco, and G. C Roman.
LIME: a coordination model and middleware supporting
mobility of hosts and agents.
ACM Transactions on Software Engineering and
Methodology (TOSEM), 15(3):279–328, 2006.
61. Bibliograf´a VI
ı
Vlad Trifa and Dominique Guinard.
Web of things, August 2011.
62. Licencia
´
Todas las imagenes son propiedad de sus
˜
respectivos duenos*, el resto del contenido
´
esta licenciado bajo Creative Commons by-sa 3.0.
´
* Oberazzi (flickr), Cesar Astudillo (flickr), Stefan Paunovi´ (flickr), Francesco ’Architetto’ Rollandin (openclipart) y
c
ryanlerch (openclipart).