PythonBrasil [10] 2014 
06 de Novembro de 2014 
Rodrigo D. A. Senra
Apenas um rapaz latino americano... 
• Engenheiro de Computação 
Grad-MSc-PhD IC-Unicamp 
• Engenheiro de Software 
• GPr Sistemas (11 anos) 
• HI Tecnologia (5 anos) 
• Professor Universitário - PUC-Campinas (2 anos) • Especialista - Globo.com (2 anos) 
• Cientista Pesquisador - EMC2 
• Entusiasta de FLOSS 
(atuante na comunidade Python desde 2000)
Vamos falar sobre … 
• Semântica 
• Aplicações 
• Modelo RDF 
• Brainiak API: 
• Por que foi criado ? 
• O que é ? 
• Como funciona ? 
• Quem desenvolve ? 
• Open-source o/ 
• Recados Finais
gelospboorte .com
CMA 
Jornalista 
Matéria 
Anotações Semânticas
cita
sujeito 
http://globoesporte.globo.com/…/noticia-tal 
predicado 
http://semantica.globo.com/base/cita_a_entidade 
objeto 
http://semantica.globo.com/esportes/Equipe/Barcelona
sujeito 
predicado 
http://www.w3.org/1999/02/22-rdf-syntax-ns#type 
objeto 
http://semantica.globo.com/esportes/Equipe 
Equipe/Barcelona
Ontologia Base
Ontologias de Domínio 
Upper 
Person Place Organization 
Music 
Programme Education 
Politics 
Sports
CMA 
Jornalista 
CDA 
Browser 
Internauta 
Web 
Matéria 
Anotações Semânticas 
Caches
Consulta SPARQL 
listar todos times 
select ?id ?nome 
from esportes: 
where { 
?id rdf:type esportes:Equipe . 
?id rdfs:label ?nome . 
}
Resposta SPARQL 
?id ?nome
Solr 
Inicialmente 
Virtuosos
Migração 
Solr 
Legado Virtuosos 
Barramento 
Mercury 
Autenticação e Autorização 
Backstage 
Brainiak 
Eureka VoceDaNota A-Z Sitemaps CMAaS 
ElasticSearch
Cenário Ideal 
Virtuosos 
Barramento 
Brainiak 
ElasticSearch 
Autenticação e Autorização 
Backstage 
Eureka VoceDaNota A-Z Sitemaps CMAaS
Brainiak é … 
• 100% Python 
• API RESTful 
• Hipermídia (HATEOAS) 
• Json-schema ☜☞ RDF
Vamos examinar como o 
Brainiak opera.
Consulta SPARQL 
listar todos times 
select ?id ?nome 
from esportes: 
where { 
?id rdf:type esportes:Equipe . 
?id rdfs:label ?nome . 
}
Consulta ao Brainiak 
/esportes/Equipe 
GET
Resposta do Brainiak 
{ 
"items": [ 
{ 
"title": "Atlético-MG", 
"@id": "http://semantica.globo.com/esportes/equipe/282", 
"class_prefix": "esportes", 
"resource_id": "282" 
}, 
{ 
"title": "Bahia de Feira", 
"@id": "http://semantica.globo.com/esportes/equipe/2590", 
"class_prefix": "esportes", 
"resource_id": "2590" 
}[ 
], 
"@id": "esportes:Equipe" 
}
Esquema do Brainiak 
{ 
"links": [ 
{ 
"href": "/esportes/Equipe/_schema?class_prefix=http://semantica.globo.com/esportes/", 
"method": "GET", 
"rel": "class" 
}, 
{ 
"href": "/esportes/Equipe?class_prefix=http://semantica.globo.com/esportes/", 
"method": "POST", 
"rel": "create", 
"schema": {"$ref": "{+_base_url}"} 
}, 
{ 
"href": "/_/_/_?instance_uri={value}", 
"method": "GET", 
"rel": "relatedInstance" 
}, 
… 
/esportes/Equipe/_schema
Mapa de Hiper-navegação
> pip freeze 
SPARQLWrapper==1.5.0-authdigest 
DAD==1.0.2 
ESTester==1.1.0 
Fabric==1.6.0 
Jinja2==2.7.1 
MarkupSafe==0.18 
Pygments==1.6 
Sphinx==1.1.3 
Unidecode==0.04.14 
alf==0.4 
astroid==1.0.0 
coverage==3.7 
distribute==0.7.3 
docutils==0.11 
ecdsa==0.9 
nose-exclude==0.1.9 
paramiko==1.12.0 
pep8==1.4.1 
pinocchio==0.3.1 
pycrypto==2.6 
pycurl==7.19.0 
pyflakes==0.7.3 
pylint==1.0.0 
python-dateutil==2.2 
python-slugify==0.0.7 
rdflib==3.2.3 
redis==2.7.6 
requests==2.0.1 
greenlet==0.4.0 
gunicorn==0.14.6 
isodate==0.4.9 
jsonschema==2.3.0 
meld3==0.6.10 
selenium==2.37.2 
semantic-web-pygments==0.1.0 
simplejson==3.3.1 
six==1.5.2 
sphinx-bootstrap-theme==0.1.8 
sphinxcontrib-programoutput==0.8 
splinter==0.5.4 
stomp.py==3.1.3 
supervisor==3.0b2 
tornado==3.1 
tornado-cors==0.3.2 
ujson==1.33 
uritemplate==0.6 
wsgiref==0.1.2 
mock==1.0.1 
logilab-common==0.60.0 
meld3==0.6.10 
mock==1.0.1 
nose==1.2.1
O Brainiak agora é open-source! 
@brainiak_api 
https://github.com/globocom/brainiak_api
Desenvolvedores 
Ícaro Medeiros 
Tatiana Al-Chueyr 
Rodrigo Senra 
… e grande elenco de colaboradores !
Obrigado a todos 
pela atenção. 
Rodrigo Dias Arruda Senra 
http://rodrigo.senra.nom.br 
rodsenra@gmail.com 
@rodsenra 
As opiniões e conclusões expressas nesta apresentação são de exclusiva responsabilidade de Rodrigo Senra. 
É necessário requisitar permissão do autor para o uso de partes ou do todo desta apresentação, favor 
consultar o autor. 
As ilustrações do Brainiac foram obtidas de domínio público e são de autoria de Alex Ross.

Brainiak: Um plano maligno de dominação semântica hipermídia

  • 1.
    PythonBrasil [10] 2014 06 de Novembro de 2014 Rodrigo D. A. Senra
  • 2.
    Apenas um rapazlatino americano... • Engenheiro de Computação Grad-MSc-PhD IC-Unicamp • Engenheiro de Software • GPr Sistemas (11 anos) • HI Tecnologia (5 anos) • Professor Universitário - PUC-Campinas (2 anos) • Especialista - Globo.com (2 anos) • Cientista Pesquisador - EMC2 • Entusiasta de FLOSS (atuante na comunidade Python desde 2000)
  • 3.
    Vamos falar sobre… • Semântica • Aplicações • Modelo RDF • Brainiak API: • Por que foi criado ? • O que é ? • Como funciona ? • Quem desenvolve ? • Open-source o/ • Recados Finais
  • 6.
  • 9.
    CMA Jornalista Matéria Anotações Semânticas
  • 10.
  • 11.
    sujeito http://globoesporte.globo.com/…/noticia-tal predicado http://semantica.globo.com/base/cita_a_entidade objeto http://semantica.globo.com/esportes/Equipe/Barcelona
  • 12.
    sujeito predicado http://www.w3.org/1999/02/22-rdf-syntax-ns#type objeto http://semantica.globo.com/esportes/Equipe Equipe/Barcelona
  • 13.
  • 14.
    Ontologias de Domínio Upper Person Place Organization Music Programme Education Politics Sports
  • 15.
    CMA Jornalista CDA Browser Internauta Web Matéria Anotações Semânticas Caches
  • 18.
    Consulta SPARQL listartodos times select ?id ?nome from esportes: where { ?id rdf:type esportes:Equipe . ?id rdfs:label ?nome . }
  • 19.
  • 20.
  • 22.
    Migração Solr LegadoVirtuosos Barramento Mercury Autenticação e Autorização Backstage Brainiak Eureka VoceDaNota A-Z Sitemaps CMAaS ElasticSearch
  • 23.
    Cenário Ideal Virtuosos Barramento Brainiak ElasticSearch Autenticação e Autorização Backstage Eureka VoceDaNota A-Z Sitemaps CMAaS
  • 24.
    Brainiak é … • 100% Python • API RESTful • Hipermídia (HATEOAS) • Json-schema ☜☞ RDF
  • 25.
    Vamos examinar comoo Brainiak opera.
  • 26.
    Consulta SPARQL listartodos times select ?id ?nome from esportes: where { ?id rdf:type esportes:Equipe . ?id rdfs:label ?nome . }
  • 27.
    Consulta ao Brainiak /esportes/Equipe GET
  • 28.
    Resposta do Brainiak { "items": [ { "title": "Atlético-MG", "@id": "http://semantica.globo.com/esportes/equipe/282", "class_prefix": "esportes", "resource_id": "282" }, { "title": "Bahia de Feira", "@id": "http://semantica.globo.com/esportes/equipe/2590", "class_prefix": "esportes", "resource_id": "2590" }[ ], "@id": "esportes:Equipe" }
  • 29.
    Esquema do Brainiak { "links": [ { "href": "/esportes/Equipe/_schema?class_prefix=http://semantica.globo.com/esportes/", "method": "GET", "rel": "class" }, { "href": "/esportes/Equipe?class_prefix=http://semantica.globo.com/esportes/", "method": "POST", "rel": "create", "schema": {"$ref": "{+_base_url}"} }, { "href": "/_/_/_?instance_uri={value}", "method": "GET", "rel": "relatedInstance" }, … /esportes/Equipe/_schema
  • 30.
  • 34.
    > pip freeze SPARQLWrapper==1.5.0-authdigest DAD==1.0.2 ESTester==1.1.0 Fabric==1.6.0 Jinja2==2.7.1 MarkupSafe==0.18 Pygments==1.6 Sphinx==1.1.3 Unidecode==0.04.14 alf==0.4 astroid==1.0.0 coverage==3.7 distribute==0.7.3 docutils==0.11 ecdsa==0.9 nose-exclude==0.1.9 paramiko==1.12.0 pep8==1.4.1 pinocchio==0.3.1 pycrypto==2.6 pycurl==7.19.0 pyflakes==0.7.3 pylint==1.0.0 python-dateutil==2.2 python-slugify==0.0.7 rdflib==3.2.3 redis==2.7.6 requests==2.0.1 greenlet==0.4.0 gunicorn==0.14.6 isodate==0.4.9 jsonschema==2.3.0 meld3==0.6.10 selenium==2.37.2 semantic-web-pygments==0.1.0 simplejson==3.3.1 six==1.5.2 sphinx-bootstrap-theme==0.1.8 sphinxcontrib-programoutput==0.8 splinter==0.5.4 stomp.py==3.1.3 supervisor==3.0b2 tornado==3.1 tornado-cors==0.3.2 ujson==1.33 uritemplate==0.6 wsgiref==0.1.2 mock==1.0.1 logilab-common==0.60.0 meld3==0.6.10 mock==1.0.1 nose==1.2.1
  • 36.
    O Brainiak agoraé open-source! @brainiak_api https://github.com/globocom/brainiak_api
  • 37.
    Desenvolvedores Ícaro Medeiros Tatiana Al-Chueyr Rodrigo Senra … e grande elenco de colaboradores !
  • 39.
    Obrigado a todos pela atenção. Rodrigo Dias Arruda Senra http://rodrigo.senra.nom.br rodsenra@gmail.com @rodsenra As opiniões e conclusões expressas nesta apresentação são de exclusiva responsabilidade de Rodrigo Senra. É necessário requisitar permissão do autor para o uso de partes ou do todo desta apresentação, favor consultar o autor. As ilustrações do Brainiac foram obtidas de domínio público e são de autoria de Alex Ross.