CONSTRUINDO SUA 
PRIMEIRA ONTOLOGIA
Quem somos 
Engenheiro de SW Sr do 
Portal globoesporte.com 
Desenvolveu as ontologia 
de combate, corridas de rua 
e olimpíadas 
[twitter, linkedin, github] 
romulojales 
<.com>
Quem somos 
Engenheiro Eletrônico e de 
Computação pela UFRJ e 
mestre em Informática pela 
PUC-Rio, Desenvolvedor 
sênior no globoesporte.com, 
o maior site de esportes do 
Brasil e o site oficial da 
Copa do Mundo FIFA Brasil 
2014. 
@victorpantoja 
github.com/victorpantoja 
Engenheiro Eletrônico e de Computação pela UFRJ e mestre em Informática pela PUC-Rio, Desenvolvedor sênior no globoesporte.com, o maior site de 
esportes do Brasil e o site oficial da Copa do Mundo FIFA Brasil 2014.
Objetivos 
Desmistificar Web Semântica 
Que número é este? A idéia é provocar o espectador a pensar no significado dos números
Como 
Apresentação de forma prática 
dos conceitos de web semântica 
através da criação de uma 
ontologia que descreve Fórmula 1. 
Que número é este? A idéia é provocar o espectador a pensar no significado dos números
9780470396797 
Que número é este? A idéia é provocar o espectador a pensar no significado dos números
9780470396797 
• número? 
• string? 
• CNPJ? 
• CPF? 
• ID de banco 
continuando a provocação
ISBN 
Respondendo o que é o número e mostrando o valor de ter um significado
Fórmula 1
Fórmula 1 
• Campeonato 
• Edições anuais 
• Construtores (Equipes) 
• Torneio de Pilotos 
• Torneio de construtores 
• Corrida
Vocabulários Básicos 
• OWL - Web Ontology Language 
• Vocabulário estrutural para coisas complexas 
• RDFS - Resource Descriptor Framework 
• Vocabulário descritor das coisas complexas
:Campeonato rdf:type owl:Class ; 
rdfs:label "Campeonato"; 
rdfs:subClassOf 
[ rdf:type owl:Restriction ; 
owl:onProperty :slug_topico ; 
owl:onDataRange rdf:XMLLiteral ; 
owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger 
], 
[ rdf:type owl:Restriction ; 
owl:onProperty :nome ; 
owl:onDataRange rdf:XMLLiteral ; 
owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger 
].
:slug rdf:type owl:DatatypeProperty ; 
rdfs:label "Slug da Entidade" ; 
rdfs:range rdf:XMLLiteral ; 
rdfs:domain :EdicaoCampeonato; 
rdfs:domain :Piloto; 
rdfs:domain :Campeonato. 
:nome rdf:type owl:DatatypeProperty ; 
rdfs:label "Nome da Entidade" ; 
rdfs:range rdf:XMLLiteral ; 
rdfs:domain :Autodromo; 
rdfs:domain :EdicaoCampeonato; 
rdfs:domain :Equipe; 
rdfs:domain :Piloto; 
rdfs:domain :GP; 
rdfs:domain :Campeonato.
:do_campeonato 
rdf:type owl:ObjectProperty ; 
rdfs:domain :EdicaoCampeonato ; 
rdfs:label "Do campeonato" ; 
rdfs:range :Campeonato.
le wild Virtuoso 
Versão 6.x 
http://bit.ly/virtuoso61 
Dependência: 
https://github.com/romulojales/Sua-primeira-ontologia
le wild Virtuoso 
IP:8890
Exercício 1: LOAD DA 
ONTOLOGIA
SPARQL 
?s ?p ?o
Inserção de indivíduos
https://github.com/openlink/virtuoso-opensource/issues/ 
181 
GRANT EXECUTE ON 
DB.DBA.SPARUL_LOAD_SERVICE_DATA TO 
"SPARQL"; 
GRANT EXECUTE ON DB.DBA.SPARQL_SD_PROBE 
TO "SPARQL"; 
GRANT EXECUTE ON DB.DBA.L_O_LOOK TO 
“SPARQL"; 
GRANT EXECUTE ON DB.DBA.RDF_QUAD to 
SPARQL_UPDATE;
Exercício 2: Sparql 
Consultar piloto com 
nome “Felipe Massa”
select * where{ ?s 
rdfs:label “Felipe Massa”}
Exercicio 3: Sparql 
associar um piloto numa equipe 
Lembrar que ainda não tem vinculo entre equipe e piloto. Modificar o predicado da_equipe
prefix grafo: <http://graph.onto/> 
INSERT INTO grafo: 
{ 
grafo:faz_parte_equipe 
rdfs:domain 
<http://graph.onto/Piloto>; 
rdf:range 
<http://graph.onto/Equipe> 
}
prefix grafo: <http://graph.onto/> 
INSERT INTO grafo: 
{ 
<http://graph.onto/Piloto/1> 
grafo:da_equipe 
<http://graph.onto/Equipe/1> 
}
Exercício 4: Consultar 
tudo que pertence a uma 
equipe
select * where{ 
?s ?p <http://graph.onto/ 
Equipe/1>}
:slug rdf:type owl:DatatypeProperty ; 
rdfs:label "Slug da Entidade" ; 
rdfs:range rdf:XMLLiteral ; 
rdfs:domain :EdicaoCampeonato; 
rdfs:domain :Piloto; 
rdfs:domain :Campeonato; 
rdfs:domain :FabricantePneu 
:nome rdf:type owl:DatatypeProperty ; 
rdfs:label "Nome da Entidade" ; 
rdfs:range rdf:XMLLiteral ; 
rdfs:domain :Autodromo; 
rdfs:domain :EdicaoCampeonato; 
rdfs:domain :Equipe; 
rdfs:domain :Piloto; 
rdfs:domain :GP; 
rdfs:domain :Campeonato; 
rdfs:domain :FabricantePneu.
FabricantePneu => Equipe 
:fornece_pneu rdf:type owl:ObjectProperty ; 
rdfs:label “Fornece Pneu" ; 
rdfs:range :Equipe; 
rdfs:domain :FabricantePneu. 
Equipe => FabricantePneu 
:compra_pneu_de rdf:type owl:ObjectProperty ; 
rdfs:label “Recebe Pneu" ; 
rdfs:range :FabricantePneu; 
rdfs:domain :Equipe.
:FabricantePneu rdf:type owl:Class ; 
rdfs:label “Fabricante de pneu"; 
rdfs:subClassOf 
[ rdf:type owl:Restriction ; 
owl:onProperty :slug_topico ; 
owl:onDataRange rdf:XMLLiteral ; 
owl:maxQualifiedCardinality 
"1"^^xsd:nonNegativeInteger 
], 
[ rdf:type owl:Restriction ; 
owl:onProperty :nome ; 
owl:onDataRange rdf:XMLLiteral ; 
owl:maxQualifiedCardinality 
"1"^^xsd:nonNegativeInteger 
].
Exercício 5: 
construir a classe fabricante 
de pneus associando a equipe
Exercício 6 
Qual o fabricante de pneu que 
Felipe Massa correu numa dada 
edição. 
obs.: vc não sabe de qual equipe 
Felipe Massa é piloto
Semântica no 
globoesporte.com
Estamos contratando 
http://bit.ly/quero-trabalhar-globo 
https://github.com/globocom/ 
IWantToWorkAtGlobocom 
talentos@corp.globo.com 
romulo.jales@corp.globo.com 
victor.pantoja@corp.globo.com

Construindo sua primeira ontologia

  • 1.
  • 2.
    Quem somos Engenheirode SW Sr do Portal globoesporte.com Desenvolveu as ontologia de combate, corridas de rua e olimpíadas [twitter, linkedin, github] romulojales <.com>
  • 3.
    Quem somos EngenheiroEletrônico e de Computação pela UFRJ e mestre em Informática pela PUC-Rio, Desenvolvedor sênior no globoesporte.com, o maior site de esportes do Brasil e o site oficial da Copa do Mundo FIFA Brasil 2014. @victorpantoja github.com/victorpantoja Engenheiro Eletrônico e de Computação pela UFRJ e mestre em Informática pela PUC-Rio, Desenvolvedor sênior no globoesporte.com, o maior site de esportes do Brasil e o site oficial da Copa do Mundo FIFA Brasil 2014.
  • 4.
    Objetivos Desmistificar WebSemântica Que número é este? A idéia é provocar o espectador a pensar no significado dos números
  • 5.
    Como Apresentação deforma prática dos conceitos de web semântica através da criação de uma ontologia que descreve Fórmula 1. Que número é este? A idéia é provocar o espectador a pensar no significado dos números
  • 6.
    9780470396797 Que númeroé este? A idéia é provocar o espectador a pensar no significado dos números
  • 7.
    9780470396797 • número? • string? • CNPJ? • CPF? • ID de banco continuando a provocação
  • 8.
    ISBN Respondendo oque é o número e mostrando o valor de ter um significado
  • 9.
  • 10.
    Fórmula 1 •Campeonato • Edições anuais • Construtores (Equipes) • Torneio de Pilotos • Torneio de construtores • Corrida
  • 11.
    Vocabulários Básicos •OWL - Web Ontology Language • Vocabulário estrutural para coisas complexas • RDFS - Resource Descriptor Framework • Vocabulário descritor das coisas complexas
  • 12.
    :Campeonato rdf:type owl:Class; rdfs:label "Campeonato"; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:onProperty :slug_topico ; owl:onDataRange rdf:XMLLiteral ; owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ], [ rdf:type owl:Restriction ; owl:onProperty :nome ; owl:onDataRange rdf:XMLLiteral ; owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ].
  • 13.
    :slug rdf:type owl:DatatypeProperty; rdfs:label "Slug da Entidade" ; rdfs:range rdf:XMLLiteral ; rdfs:domain :EdicaoCampeonato; rdfs:domain :Piloto; rdfs:domain :Campeonato. :nome rdf:type owl:DatatypeProperty ; rdfs:label "Nome da Entidade" ; rdfs:range rdf:XMLLiteral ; rdfs:domain :Autodromo; rdfs:domain :EdicaoCampeonato; rdfs:domain :Equipe; rdfs:domain :Piloto; rdfs:domain :GP; rdfs:domain :Campeonato.
  • 14.
    :do_campeonato rdf:type owl:ObjectProperty; rdfs:domain :EdicaoCampeonato ; rdfs:label "Do campeonato" ; rdfs:range :Campeonato.
  • 15.
    le wild Virtuoso Versão 6.x http://bit.ly/virtuoso61 Dependência: https://github.com/romulojales/Sua-primeira-ontologia
  • 16.
  • 17.
    Exercício 1: LOADDA ONTOLOGIA
  • 18.
  • 19.
  • 20.
    https://github.com/openlink/virtuoso-opensource/issues/ 181 GRANTEXECUTE ON DB.DBA.SPARUL_LOAD_SERVICE_DATA TO "SPARQL"; GRANT EXECUTE ON DB.DBA.SPARQL_SD_PROBE TO "SPARQL"; GRANT EXECUTE ON DB.DBA.L_O_LOOK TO “SPARQL"; GRANT EXECUTE ON DB.DBA.RDF_QUAD to SPARQL_UPDATE;
  • 21.
    Exercício 2: Sparql Consultar piloto com nome “Felipe Massa”
  • 22.
    select * where{?s rdfs:label “Felipe Massa”}
  • 23.
    Exercicio 3: Sparql associar um piloto numa equipe Lembrar que ainda não tem vinculo entre equipe e piloto. Modificar o predicado da_equipe
  • 24.
    prefix grafo: <http://graph.onto/> INSERT INTO grafo: { grafo:faz_parte_equipe rdfs:domain <http://graph.onto/Piloto>; rdf:range <http://graph.onto/Equipe> }
  • 25.
    prefix grafo: <http://graph.onto/> INSERT INTO grafo: { <http://graph.onto/Piloto/1> grafo:da_equipe <http://graph.onto/Equipe/1> }
  • 26.
    Exercício 4: Consultar tudo que pertence a uma equipe
  • 27.
    select * where{ ?s ?p <http://graph.onto/ Equipe/1>}
  • 28.
    :slug rdf:type owl:DatatypeProperty; rdfs:label "Slug da Entidade" ; rdfs:range rdf:XMLLiteral ; rdfs:domain :EdicaoCampeonato; rdfs:domain :Piloto; rdfs:domain :Campeonato; rdfs:domain :FabricantePneu :nome rdf:type owl:DatatypeProperty ; rdfs:label "Nome da Entidade" ; rdfs:range rdf:XMLLiteral ; rdfs:domain :Autodromo; rdfs:domain :EdicaoCampeonato; rdfs:domain :Equipe; rdfs:domain :Piloto; rdfs:domain :GP; rdfs:domain :Campeonato; rdfs:domain :FabricantePneu.
  • 29.
    FabricantePneu => Equipe :fornece_pneu rdf:type owl:ObjectProperty ; rdfs:label “Fornece Pneu" ; rdfs:range :Equipe; rdfs:domain :FabricantePneu. Equipe => FabricantePneu :compra_pneu_de rdf:type owl:ObjectProperty ; rdfs:label “Recebe Pneu" ; rdfs:range :FabricantePneu; rdfs:domain :Equipe.
  • 30.
    :FabricantePneu rdf:type owl:Class; rdfs:label “Fabricante de pneu"; rdfs:subClassOf [ rdf:type owl:Restriction ; owl:onProperty :slug_topico ; owl:onDataRange rdf:XMLLiteral ; owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ], [ rdf:type owl:Restriction ; owl:onProperty :nome ; owl:onDataRange rdf:XMLLiteral ; owl:maxQualifiedCardinality "1"^^xsd:nonNegativeInteger ].
  • 31.
    Exercício 5: construira classe fabricante de pneus associando a equipe
  • 32.
    Exercício 6 Qualo fabricante de pneu que Felipe Massa correu numa dada edição. obs.: vc não sabe de qual equipe Felipe Massa é piloto
  • 33.
  • 37.
    Estamos contratando http://bit.ly/quero-trabalhar-globo https://github.com/globocom/ IWantToWorkAtGlobocom talentos@corp.globo.com romulo.jales@corp.globo.com victor.pantoja@corp.globo.com