SlideShare uma empresa Scribd logo
1 de 26
Baixar para ler offline
Semantic-Django
            globo
                .com        Tornando a web mais semântica com
                            Django e bancos de triplas




                                          Rafael Floriano da Silva
Monday, November 26, 2012
Antes de me apresentar...
                            Bancos de triplas são sempre representados por:
                                      Sujeito, predicado e objeto.
                                                 predicado
                                       Sujeito               Objeto




Monday, November 26, 2012
Quem sou eu?
                                                                                Rafael
                   Rafael
                  Floriano
                  da Silva      bas




                                                                            l
                                                                       :labe
                                   e:n
                                      om
                                         e




                                                                   rdfs
                                          _co
                                             m       ple
                                                        to

                                                                 base:     base:data_de_nascimento
                                                             Pessoa_Rafael                         27/01/1990

                                                 pe                         ba
                                             :ty                              se:
                                         rdf                                      ge
                                                                                     n   ero

                        base:Pessoa
                                                                                               M




Monday, November 26, 2012
O que é web-semântica?
                       Por conceito: “Uma rede de dados que podem ser
                   processados diretamente e indiretamente por máquinas.”
                                                            Tim Berners-Lee




Monday, November 26, 2012
Na prática
       Caso Romário...




Monday, November 26, 2012
Quem é o Romário na globo ?
                                 .com
                                       Pessoa

                                              globo
                                              .com




                  Jogador              Político           Famoso com
                                                      crise no casamento
                            globo
                             esporte
                            .com



Monday, November 26, 2012
Abstraindo o cenário...
                            Classes                  Ontologia
                                                :Pessoa rdf:type owl:Class;
                                                  ...
                            Pessoa
                               ...              :Jogador rdf:type owl:Class;
                                                  rdfs:subClassOf :Pessoa;
                                                  ...

                                                :Político rdf:type owl:Class;
                                                  rdfs:subClassOf :Pessoa;
                                                  ...
               Jogador      Político   Famoso
                                                :Famoso rdf:type owl:Class;
                   ...         ...       ...      rdfs:subClassOf :Pessoa;
                                                  ...




Monday, November 26, 2012
Query SPARQL
               PREFIX base: <http://semantica.globo.com/base/>
               SELECT ?uri ?nome_completo
               WHERE {
                 ?uri
                   base:nome_completo ?nome_completo
               }

                                          ?uri                   ?nome_completo

                            http://semantica.globo.com/base/
                                                               Romário de Souza Faria
                                     Pessoa_Romario


Monday, November 26, 2012
Semantic-Django



Monday, November 26, 2012
Semantic-Django
                            https://github.com/rfloriano/semantic-django




Monday, November 26, 2012
Qual é a ideia do projeto?
          ‣    Construir um backend para o Django e utilizá-lo para
               banco de dados de triplas que trabalham com SPARQL
                ‣   Reutilizar o máximo de features prontas do Django
                    em bancos de triplas (managers, admin, forms, etc)
                ‣   Possibilitar uso de inferência do banco semântico
                    através de uma interface Django
                ‣   Utilizar o banco de dados certo para o dado certo




Monday, November 26, 2012
Como utilizo?



Monday, November 26, 2012
1                 Instale o semantic-django




Monday, November 26, 2012
settings.py
               ...
               SEMANTIC_DATABASES = {
                   'default': {
                       'ENGINE': 'semantic.rdf.backends.virtuoso',
                       'NAME': 'sparql',
                       'USER': 'dba',
                       'PASSWORD': 'dba',
                       'HOST': 'localhost',
                       'PORT': '8890',
                       'PREFIX': {
                           'base': '<http://semantica.globo.com/base/>',
                           'g1': '<http://semantica.globo.com/G1/>',
                       }
                   }
               }
               ...

               INSTALLED_APPS = (
                   ...
                   'semantic',
                   ...
               )


Monday, November 26, 2012
2                  Crie seu (s)models.py




Monday, November 26, 2012
smodels.py

               # -*- coding:utf-8 -*-
               from semantic.rdf import models

               class BasePrograma(models.SemanticModel):
                   label = models.CharField(graph='rdfs', max_length=200)
                   foto_perfil = models.CharField(graph='base', max_length=200, blank=True)
                   id_do_programa_na_webmedia = models.IntegerField(graph='base')
                   faz_parte_do_canal = models.URIField(graph='base')
                   tem_edicao_do_programa = models.CharField(graph='base', max_length=200,
               blank=True)

                   class Meta:
                       managed = False
                       graph = 'http://semantica.globo.com/'
                       namespace = 'http://semantica.globo.com/base/Programa'

                   def __unicode__(self):
                       return self.uri




Monday, November 26, 2012
3                  Utilize




Monday, November 26, 2012
smodels.py
              In [1]: from example_app.smodels import BasePrograma
              In [2]: programas = BasePrograma.objects.all()

              In [3]: programas
              Out[6]:
              [<BasePrograma: http://semantica.globo.com/base/Programa_Bom_Dia_Brasil>,<BasePrograma: http://
              semantica.globo.com/base/Programa_Bom_Dia_Rio>, <BasePrograma: http://semantica.globo.com/base/
              Programa_Bom_Dia_Sao_Paulo>, <BasePrograma: http://semantica.globo.com/base/
              Programa_Esporte_Espetacular>, <BasePrograma: http://semantica.globo.com/base/
              Programa_Fantastico>, <BasePrograma: http://semantica.globo.com/base/Programa_Globo_Esporte>,
              <BasePrograma: http://semantica.globo.com/base/Programa_Globo_Reporter>, <BasePrograma: http://
              semantica.globo.com/base/Programa_Jornal_da_Globo>, <BasePrograma: http://semantica.globo.com/
              base/Programa_Jornal_Hoje>, <BasePrograma: http://semantica.globo.com/base/
              Programa_Jornal_Nacional>, <BasePrograma: http://semantica.globo.com/base/
              Programa_RJTV_1a_Edicao>, <BasePrograma: http://semantica.globo.com/base/
              Programa_SPTV__1a_Edicao>, <BasePrograma: http://semantica.globo.com/base/
              Programa_Em_Cima_da_Hora>, <BasePrograma: http://semantica.globo.com/base/Programa_Via_Brasil>,
              <BasePrograma: http://semantica.globo.com/base/Programa_Pelo_Mundo>, <BasePrograma: http://
              semantica.globo.com/base/Programa_Video_Show>, <BasePrograma: http://semantica.globo.com/base/
              Programa_Conta_Corrente>, <BasePrograma: http://semantica.globo.com/base/Programa_Arquivo_N>,
              <BasePrograma: http://semantica.globo.com/base/Programa_Jornal_das_Dez>, <BasePrograma: http://
              semantica.globo.com/base/Programa_Globo_Rural>, '...(remaining elements truncated)...']

              In [4]: print programas.query
              SELECT ?uri ?label ?foto_perfil ?id_do_programa_na_webmedia ?faz_parte_do_canal ?
              tem_edicao_do_programa WHERE { ?uri rdf:type <http://semantica.globo.com/base/Programa> ;
              rdfs:label ?label ; base:id_do_programa_na_webmedia ?id_do_programa_na_webmedia ;
              base:faz_parte_do_canal ?faz_parte_do_canal OPTIONAL { ?uri base:foto_perfil ?foto_perfil }
              OPTIONAL { ?uri base:tem_edicao_do_programa ?tem_edicao_do_programa } }


Monday, November 26, 2012
É compátivel com operações do
          manager
          ‣    Qualquer operação do manager pode ser utilizada:
                ‣   objects.get
                ‣   objects.create
                ‣   objects.filter
                ‣   save
                ‣   update
                ‣   ...
Monday, November 26, 2012
Vantagens



Monday, November 26, 2012
Vantagens
          ‣    Django-like - Não muda “nada” para quem já utiliza
               Django
          ‣    Melhora a curva de aprendizado
          ‣    Reutiliza o Django Admin
          ‣    Compatível com endpoints SPARQL



Monday, November 26, 2012
Futuro



Monday, November 26, 2012
Futuro
          ‣    Compatibilizar RelatedFields com SPARQL
                     # django/db/models/fields/related.py
                     ...
                     #HACK
                     class RelatedField(object):
                         def contribute_to_class(self, cls, name):
                             sup = super(RelatedField, self)
                     ...



          ‣    Limpar o código
          ‣    objects.inference
          ‣    Possibilitar classes mistas entre Banco Relacional e de
Monday, November 26, 2012
Colaborações são bem-vindas
                            https://github.com/rfloriano/semantic-django




Monday, November 26, 2012
Referências
                           http://www.w3.org/TR/rdf-sparql-query/
                 http://answers.semanticweb.com/questions/1908/how-can-
                                sparql-be-used-for-inferencing
                                   http://semanticweb.com/
                               http://virtuoso.openlinksw.com/




Monday, November 26, 2012
Obrigado
                                 @rfloriano

                                 rflorianobr

                            rflorianobr@gmail.com




Monday, November 26, 2012

Mais conteúdo relacionado

Último

Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfSamaraLunas
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuisKitota
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 

Último (8)

Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 

Destaque

PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Applitools
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at WorkGetSmarter
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...DevGAMM Conference
 

Destaque (20)

Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
 
More than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike RoutesMore than Just Lines on a Map: Best Practices for U.S Bike Routes
More than Just Lines on a Map: Best Practices for U.S Bike Routes
 
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
Ride the Storm: Navigating Through Unstable Periods / Katerina Rudko (Belka G...
 

Semantic-Django

  • 1. Semantic-Django globo .com Tornando a web mais semântica com Django e bancos de triplas Rafael Floriano da Silva Monday, November 26, 2012
  • 2. Antes de me apresentar... Bancos de triplas são sempre representados por: Sujeito, predicado e objeto. predicado Sujeito Objeto Monday, November 26, 2012
  • 3. Quem sou eu? Rafael Rafael Floriano da Silva bas l :labe e:n om e rdfs _co m ple to base: base:data_de_nascimento Pessoa_Rafael 27/01/1990 pe ba :ty se: rdf ge n ero base:Pessoa M Monday, November 26, 2012
  • 4. O que é web-semântica? Por conceito: “Uma rede de dados que podem ser processados diretamente e indiretamente por máquinas.” Tim Berners-Lee Monday, November 26, 2012
  • 5. Na prática Caso Romário... Monday, November 26, 2012
  • 6. Quem é o Romário na globo ? .com Pessoa globo .com Jogador Político Famoso com crise no casamento globo esporte .com Monday, November 26, 2012
  • 7. Abstraindo o cenário... Classes Ontologia :Pessoa rdf:type owl:Class; ... Pessoa ... :Jogador rdf:type owl:Class; rdfs:subClassOf :Pessoa; ... :Político rdf:type owl:Class; rdfs:subClassOf :Pessoa; ... Jogador Político Famoso :Famoso rdf:type owl:Class; ... ... ... rdfs:subClassOf :Pessoa; ... Monday, November 26, 2012
  • 8. Query SPARQL PREFIX base: <http://semantica.globo.com/base/> SELECT ?uri ?nome_completo WHERE { ?uri base:nome_completo ?nome_completo } ?uri ?nome_completo http://semantica.globo.com/base/ Romário de Souza Faria Pessoa_Romario Monday, November 26, 2012
  • 10. Semantic-Django https://github.com/rfloriano/semantic-django Monday, November 26, 2012
  • 11. Qual é a ideia do projeto? ‣ Construir um backend para o Django e utilizá-lo para banco de dados de triplas que trabalham com SPARQL ‣ Reutilizar o máximo de features prontas do Django em bancos de triplas (managers, admin, forms, etc) ‣ Possibilitar uso de inferência do banco semântico através de uma interface Django ‣ Utilizar o banco de dados certo para o dado certo Monday, November 26, 2012
  • 13. 1 Instale o semantic-django Monday, November 26, 2012
  • 14. settings.py ... SEMANTIC_DATABASES = {     'default': {         'ENGINE': 'semantic.rdf.backends.virtuoso',         'NAME': 'sparql',         'USER': 'dba',         'PASSWORD': 'dba',         'HOST': 'localhost',         'PORT': '8890',         'PREFIX': {             'base': '<http://semantica.globo.com/base/>',             'g1': '<http://semantica.globo.com/G1/>',         }     } } ... INSTALLED_APPS = ( ...     'semantic', ... ) Monday, November 26, 2012
  • 15. 2 Crie seu (s)models.py Monday, November 26, 2012
  • 16. smodels.py # -*- coding:utf-8 -*- from semantic.rdf import models class BasePrograma(models.SemanticModel):     label = models.CharField(graph='rdfs', max_length=200)     foto_perfil = models.CharField(graph='base', max_length=200, blank=True)     id_do_programa_na_webmedia = models.IntegerField(graph='base')     faz_parte_do_canal = models.URIField(graph='base')     tem_edicao_do_programa = models.CharField(graph='base', max_length=200, blank=True)     class Meta:         managed = False         graph = 'http://semantica.globo.com/'         namespace = 'http://semantica.globo.com/base/Programa'     def __unicode__(self):         return self.uri Monday, November 26, 2012
  • 17. 3 Utilize Monday, November 26, 2012
  • 18. smodels.py In [1]: from example_app.smodels import BasePrograma In [2]: programas = BasePrograma.objects.all() In [3]: programas Out[6]: [<BasePrograma: http://semantica.globo.com/base/Programa_Bom_Dia_Brasil>,<BasePrograma: http:// semantica.globo.com/base/Programa_Bom_Dia_Rio>, <BasePrograma: http://semantica.globo.com/base/ Programa_Bom_Dia_Sao_Paulo>, <BasePrograma: http://semantica.globo.com/base/ Programa_Esporte_Espetacular>, <BasePrograma: http://semantica.globo.com/base/ Programa_Fantastico>, <BasePrograma: http://semantica.globo.com/base/Programa_Globo_Esporte>, <BasePrograma: http://semantica.globo.com/base/Programa_Globo_Reporter>, <BasePrograma: http:// semantica.globo.com/base/Programa_Jornal_da_Globo>, <BasePrograma: http://semantica.globo.com/ base/Programa_Jornal_Hoje>, <BasePrograma: http://semantica.globo.com/base/ Programa_Jornal_Nacional>, <BasePrograma: http://semantica.globo.com/base/ Programa_RJTV_1a_Edicao>, <BasePrograma: http://semantica.globo.com/base/ Programa_SPTV__1a_Edicao>, <BasePrograma: http://semantica.globo.com/base/ Programa_Em_Cima_da_Hora>, <BasePrograma: http://semantica.globo.com/base/Programa_Via_Brasil>, <BasePrograma: http://semantica.globo.com/base/Programa_Pelo_Mundo>, <BasePrograma: http:// semantica.globo.com/base/Programa_Video_Show>, <BasePrograma: http://semantica.globo.com/base/ Programa_Conta_Corrente>, <BasePrograma: http://semantica.globo.com/base/Programa_Arquivo_N>, <BasePrograma: http://semantica.globo.com/base/Programa_Jornal_das_Dez>, <BasePrograma: http:// semantica.globo.com/base/Programa_Globo_Rural>, '...(remaining elements truncated)...'] In [4]: print programas.query SELECT ?uri ?label ?foto_perfil ?id_do_programa_na_webmedia ?faz_parte_do_canal ? tem_edicao_do_programa WHERE { ?uri rdf:type <http://semantica.globo.com/base/Programa> ; rdfs:label ?label ; base:id_do_programa_na_webmedia ?id_do_programa_na_webmedia ; base:faz_parte_do_canal ?faz_parte_do_canal OPTIONAL { ?uri base:foto_perfil ?foto_perfil } OPTIONAL { ?uri base:tem_edicao_do_programa ?tem_edicao_do_programa } } Monday, November 26, 2012
  • 19. É compátivel com operações do manager ‣ Qualquer operação do manager pode ser utilizada: ‣ objects.get ‣ objects.create ‣ objects.filter ‣ save ‣ update ‣ ... Monday, November 26, 2012
  • 21. Vantagens ‣ Django-like - Não muda “nada” para quem já utiliza Django ‣ Melhora a curva de aprendizado ‣ Reutiliza o Django Admin ‣ Compatível com endpoints SPARQL Monday, November 26, 2012
  • 23. Futuro ‣ Compatibilizar RelatedFields com SPARQL # django/db/models/fields/related.py ... #HACK class RelatedField(object):     def contribute_to_class(self, cls, name):         sup = super(RelatedField, self) ... ‣ Limpar o código ‣ objects.inference ‣ Possibilitar classes mistas entre Banco Relacional e de Monday, November 26, 2012
  • 24. Colaborações são bem-vindas https://github.com/rfloriano/semantic-django Monday, November 26, 2012
  • 25. Referências http://www.w3.org/TR/rdf-sparql-query/ http://answers.semanticweb.com/questions/1908/how-can- sparql-be-used-for-inferencing http://semanticweb.com/ http://virtuoso.openlinksw.com/ Monday, November 26, 2012
  • 26. Obrigado @rfloriano rflorianobr rflorianobr@gmail.com Monday, November 26, 2012