jena - lcad - ufesvitorsouza/archive/2020/wp... · jena • introdução: –...

98
Paulo Sérgio dos Santos Júnior Jena

Upload: others

Post on 17-Nov-2020

14 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Paulo  Sérgio  dos  Santos  Júnior  

Jena  

Page 2: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Agenda  

•  Seman4c  Web  Framework  

•  Jena  

•  RDF  

•  SPARQL  

•  Ontologias  

Page 3: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Seman+c  Web  Framework  

Page 4: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Seman+c  Web  Framework  

Page 5: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Seman+c  Web  Framework  

•  Componentes  básicos:  

–  Storage   (Knowledge   base):   é   um   repositório   de   documentos  (rdf  ou  owl);  

–  Access:   responsável   por   manipular   as   informações   (e.g,  processadores  de  queries);  

–  Inferences     (reasoning  engines    ou  resoner):   responsável  pela  interpretação  semân4ca  as  informações  armazenadas    

Page 6: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Seman+c  Web  Framework  

•  Principais  Seman4c  Web  Framework:  

Page 7: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

JENA  

Page 8: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  

•  Introdução:  –  Desenvolvido  no  HP  Lab  em  2000;  

–  Criado   para   o   desenvolvimento   de   aplicações   de   Linking  Data  e  Seman4c  Web;  

–  Permite  minupular  dados  em  OWL  e  RDF;  

Page 9: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  

•  Arquitetura  

Page 10: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Arquitetura  

Page 11: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  

•  Componentes  da  Arquitetura:  –  RDF  API:  permite  criar,  ler  e  manipular  dados  em  RDF;  

–  ARQ:  é  uma  engine  de  consultas  do  JENA;  

–  TDB:   permite   armazenar   os   dados.   É   um   banco   de   dados   de   triplas  na4vo  do  JENA;  

–  Fuseki:  é  um  “servidor  rest-­‐style”  que  permite  criar  end-­‐point;  

–  Ontology  API:    permite  manipular  RDFS  e  OWL;  

–  Inference  API:    permite  realizar   inferências  sobre  os  modelos  OWL  e  RDFS;    

Page 12: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

JENA  e  RDF  

Page 13: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  RDF  

•  RDF:  –  Resource   Descrip2on   Framework   (RDF)   é   uma  recomendação  da  W3C  para  descrever  recursos;  

–  Recursos  pode  ser  qualquer  coisas:  •  Uma  página  web;  •  Um  tutorial;    •  Um  filme  e  etc;  

–  Recursos  possuem  propriedades;  –  Cada  propriedade  possui  um  valor;  

Page 14: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  RDF  

•  RDF:  

Page 15: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  RDF  

Recurso  

Page 16: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  RDF  

Recurso  

Propriedade  

Page 17: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  RDF  

Recurso  

Propriedade  

Valor  

Page 18: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  RDF  

 Como  criar  este  modelo  no  Jena?  

Page 19: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  RDF  

•  Como  criar  este  modelo  no  Jena?      sta+c  String  personURI        =  "h.p://somewhere/JohnSmith";  

 sta+c  String  fullName          =  "John  Smith";    

 public  sta+c  void  main(String[]  args)      {      //  create  an  empty  Model      Model  model  =  ModelFactory.createDefaultModel();      //  create  the  resource      Resource  johnSmith  =  model.createResource(personURI);      //  add  the  property      johnSmith.addProperty(VCARD.FN,  fullName);      model.write(System.out,  "Turtle");    }  

Page 20: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

 sta+c  String  personURI        =  "h.p://somewhere/JohnSmith";    sta+c  String  fullName          =  "John  Smith";  

   public  sta+c  void  main(String[]  args)      {      //  create  an  empty  Model      Model  model  =  ModelFactory.createDefaultModel();      //  create  the  resource      Resource  johnSmith  =  model.createResource(personURI);      //  add  the  property      johnSmith.addProperty(VCARD.FN,  fullName);      model.write(System.out,  "Turtle");    }  

<hhp://somewhere/JohnSmith>                  <hhp://www.w3.org/2001/vcard-­‐rdf/3.0#FN>                                  "John  Smith"  .  

Page 21: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  RDF  

 Como  faremos  este  modelo?  

Page 22: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

sta+c  String  personURI        =  "h.p://somewhere/JohnSmith";  sta+c  String  givenName        =  "John";  sta+c  String  familyName      =  "Smith";  sta+c  String  fullName          =  givenName  +  "  "  +  familyName;  

   public  sta+c  void  main(String[]  args)  {  

 //  create  an  empty  Model    Model  model  =  ModelFactory.createDefaultModel();    //  create  the  resource    Resource  johnSmith  =  model.createResource(personURI);    //  add  the  property    johnSmith.addProperty(VCARD.FN,  fullName);  

   Resource  n  =  model.createResource();  

   n.addProperty(VCARD.Given,  givenName);  

   n.addProperty(VCARD.Family,familyName);  

   johnSmith.addProperty(VCARD.N,  n);  

   model.write(System.out,"RDF/XML-­‐ABBREV");  

}  

Page 23: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

sta+c  String  personURI        =  "h.p://somewhere/JohnSmith";  …    public  sta+c  void  main(String[]  args)  {  

 //  create  an  empty  Model    …    model.write(System.out,"RDF/XML-­‐ABBREV");  

}  

<rdf:RDF          xmlns:rdf="hhp://www.w3.org/1999/02/22-­‐rdf-­‐syntax-­‐ns#"          xmlns:vcard="hhp://www.w3.org/2001/vcard-­‐rdf/3.0#">      <rdf:Descrip4on  rdf:about="hhp://somewhere/JohnSmith">          <vcard:N  rdf:parseType="Resource">              <vcard:Family>Smith</vcard:Family>              <vcard:Given>John</vcard:Given>          </vcard:N>          <vcard:FN>John  Smith</vcard:FN>      </rdf:Descrip4on>  </rdf:RDF>  

Page 24: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  RDF  

•  A   “combinação”   de   um   recurso,   propriedade   e  valor  é  chamado  de  statement;  

•  No  statement    – o  recurso  é  chamado  de  sujeito;  – a  propriedade  é  chamada  de  predicado;  – o  valor  é  chamado  de  objeto;  

Page 25: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena:  RDF  

Page 26: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  RDF  

•  Lendo  modelos  RDF  em  disco:  

Model  m2  =  ModelFactory.createDefaultModel();  m2.read(  "vc-­‐db-­‐1.rdf"  );    OU      Model  model1  =  ModelFactory.createDefaultModel();  InputStream  in1  =  FileManager.get().open(inputFileName1);  if  (in1  ==  null)  {  

 throw  new  IllegalArgumentExcep+on(  "File:  "  +  inputFileName1  +  "  not  found");                    }  

model1.read(  in1,  ""  );  

Page 27: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  RDF  

•  Operações  com  Modelos  

–  É   possível   realizar   operações   de   união,   interseção   e  diferença  entre  modelos?  

Page 28: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web
Page 29: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  RDF  •  Operações  com  Modelos  

 Model  model1  =  ModelFactory.createDefaultModel()  Model  model2  =  ModelFactory.createDefaultModel();  model1.read(  “vc-­‐db-­‐3.rdf”);  model2.read(  “vc-­‐db-­‐4.rdf”);    //União  de  modelos  Model  model  =  model1.union(model2);  model.write(System.out,  "RDF/XML-­‐ABBREV");    //Interseção  de  modelos  model  =  model1.intersec+on(model2);  model.write(System.out,  "RDF/XML-­‐ABBREV");    //  Diferença  entre  modelos  model  =  model1.  difference(model2);  model.write(System.out,  "RDF/XML-­‐ABBREV");  

       

Page 30: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  RDF  •  Consultas  simples  nos  modelos:  

– Jena   possui   um   conjunto   de   classes   que  permitem  fazer  consultas  simples  no  modelo.  

– Para   realizar   consultas   mais   complexas   é  necessário   u4lizar   RQDL   (   RDF   Query  Language)  ou  SPARQL;  

 

Page 31: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  RDF  •  Consultas  simples  nos  modelos:  

– Model.listSubjectWithProperty   (Property   p,  RDFNode   o):   permite   encontrar   um   sujeito  através  de  uma  propriedade  e/ou  objeto;  

 

Page 32: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  RDF  •  Consultas  simples  nos  modelos:  

– Interface   Selector:   permite   ao   programador  definir   o   sujeito,   predicado   ou   objeto   que  deseja  buscar;  

 

Page 33: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

JENA  e  SPARQL  

Page 34: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  SPARQL  

•  SPARQL:  –  É   um   linguagem   u4lizada   para   realizar   consultas   em  documentos  RDF;  

–  É   padronizada   pela   W3C   e   possui   um   grande   uso   na  comunidade;  

–  SPARQL   é   tanto   uma   linguagem   de   consulta   quanto   uma  protocolo  de  comunicação;  

–  O  protocolo  de  comunicação  é  u4lizado  para  comunicar  entre  o  cliente  SPARQL  e  endpoint/processor   (e.g.,  hhp://dbpedia.org/sparql)  

Page 35: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  SPARQL  

•  Hello  World:  

Page 36: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  SPARQL  

•  Explicando  o  Hello  World:  

–  O  SPARQL   tenta   casar   o   padrão  da   tripla   presente  na   clausula  WHERE  com  as  triplas  presentes  no  grafo  RDF;  

–  O  padrão  é  sujeito,  predicado  e  objeto  

–  No   nosso   exemplo,   queremos   saber   todo   os   sujeitos   que  possuem   o   predicado   FN   (FullName)   igual   ao   objeto   “John  Smith”  

Page 37: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  SPARQL  

•  Executando  o  Hello  World  no  Jena:  1)  Carregue  o  modelo  RDF  na  memória;  

Model  model  =  ModelFactory.createDefaultModel();    InputStream  in  =  FileManager.get().open(inputFileName);    

   if  (in  ==  null)  {        throw  new  IllegalArgumentExcep+on("File:  "  +  inputFileName            +  "  not  found");      }  

 model.read(new  InputStreamReader(in),  "");    

Page 38: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  SPARQL  

•  Executando  o  Hello  World  no  Jena:  2)  Execute  a  query  ;  

String  queryString  =    "SELECT  ?x  WHERE  {  ?x    <hhp://www.w3.org/2001/vcard-­‐rdf/3.0#FN>  \"John  Smith\"  }"    Query  query  =  QueryFactory.create(queryString);                      QueryExecu4on  queryExecu4on  =  QueryExecu4onFactory.create(query,model);                    ResultSet  results  =  queryExecu4on.execSelect();                    ResultSetFormaher.out(System.out,  results,  query)  ;                    queryExecu4on.close();  

Page 39: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  SPARQL  

•  Nova  Consulta:  

Page 40: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  SPARQL  

•  Padrões  Básicos:  –  Um  padrão  básico  é  um  conjunto  de  padrões  de  triplas.  

–  O  “.”  é  u4lizado  para   indicar  que  o  sujeito  será  reu4lizado  por  outra  tripla;  

–  O  “;”  é  u4lizado  para   indicar  que  o  sujeito  será  reu4lizado  por  duas  ou  mais  triplas;  

–  A   “,”   é   u4lizado   para   indicar   que   o   sujeito   e   predicado   serão  reu4lizados  por  duas  ou  mais  triplas;  

Page 41: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  SPARQL  

•  Padrões  Básicos:  –  O  “;”  é  u4lizado  para  indicar  que  o  sujeito  será  reu4lizado  por  duas  ou  mais  triplas;  

Page 42: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  SPARQL  

•  QName:  –   É  um  mecanismo  de  prefixagem  que  permite  simplificar  as  consultas;    

Page 43: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  SPARQL  

•  Filtros:  –  Permite  que  o  usuário  faça  uma  seleção  tendo  como  base  um  certo  padrão;  

–  Busca  por  Strings:  

•  ?x:  variável  que  deseja  procurar;  •  “pajern”:  padrão  que  deseja  procurar;    •  flags:  determinar  alguma  configuração  de  busca;  

Page 44: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  SPARQL  

•  Filtros:  –  Permite  que  o  usuário  faça  uma  seleção  tendo  como  base  um  certo  padrão;  

–  Busca  por  Strings:  

•  i:  determina  que  a  busca  é  case-­‐insensi4vo;  

Page 45: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  SPARQL  

•  Filtros:  –  Permite  que  o  usuário  faça  uma  seleção  tendo  como  base  um  certo  padrão;  

–  Busca  por  Valores:  

Page 46: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  SPARQL  

•  Filtros:  –  Permite  que  o  usuário  faça  uma  seleção  tendo  como  base  um  certo  padrão;  

–  Operador  IN:  verificar  se  o  valor  está  entre  um  conjunto  de  valores  pré-­‐definidos;  

Page 47: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  SPARQL  

•  Filtros:  –  Permite  que  o  usuário  faça  uma  seleção  tendo  como  base  um  certo  padrão;  

–  Operador  IN:  verificar  se  o  valor  está  entre  um  conjunto  de  valores  pré-­‐definidos;  

Page 48: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  SPARQL  

•  Limitadores:  –  O   comando   LIMIT   determina   o   número   máximo   de  resultados  que  serão  retornados;  

–  O   comando   OFFSET   determina   o   número   de   resultados  que  serão  “pulados”  do  resultado  da  consulta  

Page 49: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  SPARQL  

•  Limitadores:  –  O   comando   LIMIT   determina   o   número   máximo   de  resultados  que  serão  retornados;  

–  O   comando   OFFSET   determina   o   número   de   resultados  que  serão  “pulados”  do  resultado  da  consulta  

Page 50: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  SPARQL  

•  Limitadores:  –  O   comando   LIMIT   determina   o   número   máximo   de  resultados  que  serão  retornados;  

–  O   comando   OFFSET   determina   o   número   de   resultados  que  serão  “pulados”  do  resultado  da  consulta  

Page 51: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  SPARQL  

•  Consultas“dinâmicas”:  –  Em  muitos  casos  é  necessário  passar  parâmetros  para  as  consultas;  

–  JENA  permita  fazer  o  mapeamento  entre  uma  variável  da  consulta  com  um  valor  desejado;  

–  O  mapeamento  é  feito  u4lizando  as  seguintes  classes:  •  ParameterizedSparqlString;  •  QuerySolu+onMap;  

Page 52: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  SPARQL  

•  Consultas“dinâmicas”:  –  ParameterizedSparqlString:  

Page 53: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  SPARQL  

•  Consultas“dinâmicas”:  –  QuerySolu+onMap:  

Page 54: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  SPARQL  

•  Conectando  a  banco  de  dados  externos:  –  O  JENA  permite  que  o  desenvolvedor  acesse  outros  bancos  de  dados;  

–  Para  realizar  o  acesso  é  necessário  u4lizar  o  seguinte  comando:  

“QueryExecu4onFactory.sparqlService(“<Server  sparql>",  query)”    

Page 55: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  SPARQL  

•  Conectando  a  banco  de  dados  externos:  –  Conectando  no  DBPedia:  

 QueryExecu4on  queryExecu4on  =  QueryExecu4onFactory.sparqlService("h.p://dbpedia.org/sparql",  query);  

     ResultSet  results  =  queryExecu4on.execSelect();  

     

Page 56: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

String  query1  ="    PREFIX  rdfs:  <hhp://www.w3.org/2000/01/rdf-­‐schema#>"+                  "PREFIX  rdf:  <hhp://www.w3.org/

1999/02/22-­‐rdf-­‐syntax-­‐ns#>  "+                  "  PREFIX  :  <hhp://dbpedia.org/resource/>"+                  "  PREFIX  d:  <hhp://dbpedia.org/ontology/>  "+                  "  SELECT  dis4nct  ?albumName  ?ar4stName  "+                  "  WHERE  "+                  "  {  "+                  "  ?album  d:producer  :Timbaland  .  "+                  "  ?album  d:musicalAr4st  ?ar4st  ."+                  "  ?album  rdfs:label  ?albumName  .  "+                  "  ?ar4st  rdfs:label  ?ar4stName  ."  +                  "  FILTER  (  lang(?ar4stName)  =  \"en\")"  +                  "  FILTER  (  lang(?albumName)  =  \"en\"  )"  +                    "  }";          

ResultSet  results  =  SPARQLU4l.INSTANCE.dbpediaQuery(query1)  ResultSetFormaher.out(System.out,  results)  ;  

Page 57: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  SPARQL  

•  Op+onal:  –  Apresenta  o  dado  caso  ele  exista  

Page 58: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  SPARQL  

•  Op+onal:  –  Apresenta  o  dado  caso  ele  exista  

Page 59: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  SPARQL  

•  Op+onal  com  Filtro:  

Page 60: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  SPARQL  

•  UNION:  

Page 61: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web
Page 62: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  SPARQL  •  UNION:  

Page 63: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  SPARQL  

•  O  SPARQL  possui  4  “4pos”  de  consultas:  –  Select:   é   um   projeção   iden4fica   quais   variáveis  nomeadas  estão  no  conjunto  resultado;  

–  Construct:  monta  um  RDF  baseado  num  grafo  template.  O  grafo  template  pode  ter  variáveis  que  são  definidas  na  clausula  WHERE;  

–  Describe:  monta   um  RDF   baseado   em   um   grafo   que   é  montado  pelo  processador  da  query;  

–  Ask:  retorna  um  booleano,  true  se  o  padrão  for  casado,  ou  false  caso  contrário;  

Page 64: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  SPARQL  •  Construct:  

Page 65: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  SPARQL  •  Construct:  

Page 66: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  SPARQL  •  ASK:  

Page 67: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  SPARQL  •  ASK:  

Page 68: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  SPARQL  

•  Describe:  –  O   processador   da   query   que   decide   qual   informação  será  retornada  

Page 69: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

JENA  e  Ontologias  

Page 70: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  Ontologias  

•  Jena  permite  trabalhar  com:  

1.  RD F S   (R e s o u r c e   D e s c r i p 2 o n  Framework  Schema);  

 2. OWL  (Web  Ontology  Language)  e  suas  variações;  

Page 71: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  Ontologias  

•  RDFS:  –  É  uma  linguagem  de  construção  ontologia  “fracas”.  

–  É   dita   uma   linguagem   “fraca”   pois   permite   construir  apenas   simples   hierarquias   de   conceitos   e   de  relacionamentos;    

Page 72: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  Ontologias  

•  RDFS:  

Page 73: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  Ontologias  

•  OWL:  –  Primeira  versão  criada  em  2004,  pelo  W3C  Web  Ontology  (WebOnt);  

–  Segunda  versão  foi  lançada  em  2009,  chamada  de  OWL  2;  

–  A  OWL  é  uma  linguagem  que  foi  derivada  das  linguagens  DAML  e  OIL;  

–  A   OWL   também   estende   o   vocabulário   do   Resource   Descrip2on  Framework  Schema  (RDFS);  

–  Principais  per|s:  (i)  OWL  Full  ,  (ii)  OWL  DL  e  (iii)  OWL  Lite;  

–  Outros  per|s:  (i)  OWL  EL,  (ii)  OWL  QL  e  (iii)  OWL  RL    

Page 74: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  Ontologias  

•  OWL:  –  Composta  de  três  blocos  semân4cos:  

•  Classes;    •  indivíduos;  •  Propriedades  (Object  Proper4es  e  datatype  proper4es);  

Page 75: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  Ontologias  •  OWL:  Classes:  

#Canine

ex: Canine owl: Class.

ex: Toto ex: Canine

#Canine

ex: Mammal owl: Class

ex: Canine owl: class; rdfs: subClassOf ex: Mammal

ex: Toto ex: Canine

Page 76: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  Ontologias  •  OWL:  Classes:  

Page 77: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  Ontologias  •  OWL:  Propriedade:  

#Canine

ex: registeredName owl: DataTypeProperty;

rdfs:subPropertyof ex:name;

As   propriedades   fundamentais   em   OWL   são:   OWL:  ObjectProperty  e  owl:DataTypeProperty.    

Page 78: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  Ontologias  •  OWL:  

Page 79: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  Ontologias  •  OWL:  

Page 80: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  Ontologias  •  OWL:  

Relacionamento Definição

Owl:symetricproperty (A p B) implica que (B p A)

Owl: Asymetricproperty (A p B) implica que não (B p A)

OWL: reflexiveProperty Implica que (A p A), para todo A.

OWL: irreflexiveProperty Implica que não há (A p A), para

todo A.

OWL: transitiveProperty Se (A p B) e (B p C) então (A p

C).

OWL: functionalProperty Se (A p x) e ( C p y) então x = y.

OWL: ImverseFunctionalProperty Se (A p B) e (B p C) então A = C

Page 81: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  Ontologias  •  Criando  uma  Ontologia:  

–  A  configuração  padrão  é:  •  OWL-­‐FULL;  •  Armazenamento  em  memória;  •  RDFS  inferência;  

Page 82: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  OWL  

Page 83: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  Ontologias  •  Carregando  um  modelo:  

Page 84: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  Ontologias  Como  alinhar  duas  ontologias  dis+ntas?  

Page 85: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  Ontologias  Como  alinhar  duas  ontologias  dis+ntas?  

 –  Antes   de   realizar   o   alinhamento   é   necessário   decidir   o  

nível  do  alinhamento:  1.  Nível  de  Classe;  2.  Nível  de  propriedade;  3.  Nível  de  individuo;  

Page 86: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  Ontologias  Como  alinhar  duas  ontologias  dis+ntas?  

Page 87: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  Ontologias  Como  alinhar  duas  ontologias  dis+ntas?  

 1.  Carregue  as  ontologias  com  a  semân4ca  dos  elementos;  

2.  Realizar   o   alinhamento   entre   os   elementos   das  ontologias;  

3.  Aplique  um  reasoner  para  realizar  o  alinhamento;  

Page 88: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  Ontologias  Como  alinhar  duas  ontologias  dis+ntas?  

1.  Carregue  as  ontologias  com  a  semân4ca  dos  elementos;  

Page 89: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  Ontologias  Como  alinhar  duas  ontologias  dis+ntas?  

2.  Realizar  o  alinhamento  entre  os  elementos  das  ontologias;  

Page 90: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  Ontologias  

Page 91: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  Ontologias      

Page 92: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  Ontologias      

Page 93: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  Ontologias  Como  alinhar  duas  ontologias  dis+ntas?  

 3.  Aplique  um  reasoner  para  realizar  o  alinhamento;  

Page 94: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  Ontologias  Regras:  

–  Suporte  a  regras;  –  padrão  If-­‐then;  –  O  componente  permite  a  execução  de  regras  de  4po  forward  chaining  e  backward  chaining.    

   

emailChange:

(?person foaf:mbox ?email), strConcat (?email, ? lit),

regex (? lit, ‘(.*gmail.com)’)

à(?person rdf: type people:GmailPerson)

Page 95: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  Ontologias  Regras  :  Forward  Chainning    

 

Page 96: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  Ontologias  •  Regras  :  Backward  Chainning    

 

Page 97: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Jena  e  Ontologias  Regras:  

 

Page 98: Jena - LCAD - UFESvitorsouza/archive/2020/wp... · Jena • Introdução: – Desenvolvido&no&HP&Labem2000; & – Criado&parao&desenvolvimentode&aplicaçõesdeLinking& Datae&Seman4c&Web

Referências  [1]   Hebeler,   John;   Fisher,   Mahew;   Blace,   Ryan;   Perez-­‐Lopez,  Andrew.   2009.Seman+c   Web   Programming.   Wiley   Publishing,  ISBN:  9780470418017.    [2]   Jena,   2014.   hjps://jena.apache.org/.   Acessado   em  23/06/2014.    [3]  DuCharme,  Bob.  Learing  SPARQL.  2  Ed.    [4]  Gómez-­‐Pérez,   Asunción;   Fernández-­‐López,  Mariano;   Corcho,  Oscar.  2004.Ontology  Engineering.  Spriger.  ISBN:  1852335513.