5.1. ferramentas para publicação de dados
TRANSCRIPT
1Labora tory for A dvanc ed
C ollabora tion
L A C
5.1 – Ferramentas para public aç ão de dados
Karin BreitmanJosé Viterbo
Edgard MarxPercy Salas
Publicação de Dados Governamentais no Padrão Linked Data
2
Triplify
3
R equerimentos S oftw are
• Lic enç a– GNU Lesser General Public License.
• R equis itos• Web S erver
– Apache (recomendado)– IIS
• PHP (ready) , Ruby/Python (dev)• B anc o de Dados
– MyS QL, S QLite, Oracle, DB2, MS S QLPostgreS QL
4
Triplify• Objetivo
“Expor a semântica disponível em RDBMS de uma forma simples”.
• O que éUm “plugin” para aplicações Web PHP, Ruby/Python (dev).
• O que fazDisponibiliza os dados de BD’s relacionais em triplas.
• O que g era Arquivos RDF, JS ON e Linked Data
5
Triplify : C onfig uraç ão
• Consultas SQL selecionando a informação, que gostariam que seja disponível publicamente (Open Data)
S ELECT id, name AS ‘foaf:name’ FROM users
6
Triplify : E s trutura S QL Query
• Primeira coluna dever conter identificadores para serem utilizados para gerar URI’s das Instâncias
Select id, name AS ‘foaf:name’ FROM users
• Nome das colunas utilizados para gerar as propriedades renomeando as colunas da tabela
Select id, name AS ‘foaf:name’ FROM users
Pode-se utilizar propriedades de vocabulários existentes: FOAF, SIOC …
7
Triplify : E s trutura S QL Query
• Consultas devem retornar valores literais ou referencias para outras instancias
8
Triplify : E xemploLOC ADOR A
$triplify['objectProperties']=array('customer'=>
"select customer_id as id,concat(concat(first_name,' '),last_name) as 'foaf:name’,first_name as 'foaf:firstName’,last_name as 'foaf:surname’,store_id as 'customerOf’,SHA(email) as 'foaf:mbox_sha1sum’,address_id as 'liveAt’,create_date as 'dcterms:created’from customer”, … )
$triplify['objectProperties']=array(
'sioc:address'=>'address’,'customerOf'=>'store’,'liveAt'=>'address’…
);
$triplify['classMap']=array( 'customer'=>'foaf:Person’, 'store'=>'gr:LocationOfSales’, 'address'=>'vcard:Address');
9
Triplify : Integ raç ão em Apps . Web
• Acrescentar o diretório do Triplify a raiz da aplicação.
• Definir consultas SQL e ajustar o arquivo de configuração.
• Possibilitar o acesso direto ao banco de dados relacional através:
– Objeto PDO.– Driver de conexão Mysql.– Utilizar um outro framework para
abstração de base de dados (ODBC).
10
D2R Q e D2R S erver
11
R equerimentos S oftw are
• Licença– GNU General Public License
• Requerimentos• Java 1.4 ou pos terior
• B anc o de Dados– MyS QL, Oracle, MS S QL
PostgreS QL e ODBC (não automática).
12
D2R Q e D2R S erver : Introduç ão
• Objetivo“Permitir que aplicações consigam ter uma RDF-view em um banco de dados non-RDF”.
• O que éPlataforma desenvolvida em Java para publicação de dados de BD em grafo RDF (on-the-fly)
• O que gera RDF/XML (default), RDF/XML-ABBREV, N3, N-TRIPLE.
• Quais BD’s SuportaOracle, MySQL, PostgresSQL, Microsoft SQL Server, fontes de dados ODBC (sem geração automática).
13
D2R Q e D2R S erver : Introduç ão
• O que Permite– Mapeamento do BD para grafo virtual
RDF– Consultas: linguagem SPARQL– RDF dumps– Acessar a informação do BD como
Linked Data sobre a Web.
14
D2R Q
• D2R Q M apping Lang uag eLinguagem declarativa que descreve o mapeamento.
• D2R S erverservidor HTTP que fornece uma visão Linked Data e permite consultas SPARQL.– Tool que usa o D2RQ mapping para mapear o
conteúdo do BD• D2R Q E ng ine
plug-in para Jena e Sesame Semantic Web toolkits.
15
Arquitetura da pla ta forma D2R Q
16
D2R Q : Tipos de M apeamento [1]
• Automátic oCria um arquivo de mapeamento default analisando o esquema do BD .
• Tabela = Classes;• Colunas = Propriedades;
generate-mapping [-u username] [-p password] [-d driverclass] [-o outfile.n3] [-b base uri] jdbcURL
generate-mapping -o mapping .n3 -d driver.class.name -u db-user -p db-password jdbc:url:... E xemplo
17
D2R Q : Tipos de M apeamento [2]
• C us tomizadoM odificar o arquivo gerado pelo ”gerenate-mapping”
Utilizar vocabulários conhecidos– foaf, sioc, dc, goodrelations, etc.
18
D2R Q : M apeamento C us tomizado
M odificando o arquivo mapping .n32. Definir c onexão ao B D
map:MyDatabase a d2rq:Database;
d2rq:jdbcDS N "jdbc:mysql://localhost/mydb";
d2rq:jdbcDriver "com.mysql.jdbc.Driver";
d2rq:username "user";
d2rq:password "password".
3. Definir a s entidadesmap:People a d2rq:C lassMap;
d2rq:uriPattern “http://.../people/@ @ User.ID@ @ ”.
d2rq:condition “User.deleted=0”.
19
1. Adicionar propriedades para as entidades
map:People a d2rq:C lassMap;d2rq:uriPattern “http://.../people/@ @ User.ID@ @ ”;d2rq:condition “User.deleted=0”;d2rq:class foaf:Person .
(C lassMap)
map:People a d2rq:C lassMap .map:name a d2rq:PropertyBridge;d2rq:belongsToClassMap map:People;d2rq:property foaf:nick;d2rq:column “User.name”.
D2R Q : M apeamento C us tomizado
S
P
(D ata Properties)
O
20
1. Adicionar propriedades para as entidades
map:People a d2rq:C lassMap;d2rq:uriPattern “http://.../people/@ @ User.ID@ @ ”;d2rq:condition “User.deleted=0”;d2rq:class foaf:Person .
(C lassMap)
map:mbox_sha1 a d2rq:PropertyBridge;d2rq:belongsToClassMap map:People;d2rq:property foaf:mbox_sha1sum;d2rq:sqlExpression“S HA1(CONCAT(‘mailto:’, User.email))”.
D2R Q : M apeamento C us tomizado
(D ata Properties)
S
P
O
21
D2R Q : M apeamento C us tomizado
1. Link as entidadesmap:Photos a d2rq:C lassMap;d2rq:uriPattern “http://.../photo/@ @ Photo.ID@ @ ”;d2rq:class foaf:Image .
map:photo a d2rq:PropertyBridge;d2rq:belongsToClassMap map:People;d2rq:property foaf:made;d2rq:uriPattern “http://.../photo/@ @ Photo.UserID@ @ ”.
(Photo.UserID is a foreign key to User.ID)
map:photo a d2rq:PropertyBridge;d2rq:belongsToClassMap map:People;d2rq:property foaf:made;d2rq:join “User.ID = Photo.UserID”;d2rq:refersToClassMap map:Photos . (Object Properties)
22
D2R S erver : S ta rt the s erver
• Uma vez que temos o arquivo de mapeamento mapping .n3 executamos o seguinte comando
d2r-server mapping.n3
• Agora podemos navegar sobre o grafo RDF, atraves do servidor D2R- Server
http://localhost:2020/
23
24
OpenLink V irtuos o R DF V iew s
General Public License e Proprietario
25
V irtuos o R DF V iew s : Introduç ão
• Objetivo“Converter dinamicamente dados relacionais em RDF e expô-lo no Virtuoso-hosted S PARQL endpoint.”.
• O que éVirtuoso RDF Views mapea dados relacionais em RDF e permite que a representação do RDF possa ser personalizada.
• O que g era RDF/XML. (Quad S torage)
• Qua is B D’s S uportaOracle, MS S erver, DB2, Informix, Progress, MyS QL, Ingres, Firebird, PostgreS QL e ODBC ou JDBC accesiveis RDBMS .
26
@prefix peo: <http://localhost:8890/rdfv_demo/schemas/peoplet#> .
peo:People a rdfs:Class ; rdfs:label ”People" ; rdfs:comment "An OpenLink People" .
V irtuos o R DF V iew s : M apeamento [1]
• Definição de cada tabela em classes RDFS IRI
foa f:name a rdf:Property ;
rdfs:domain peo:People ;
rdfs:range xsd:string;
rdfs:label ”people name" .
ClassMap
Properties
foa f:made a rdf:Property ;
rdfs:domain peo:People ;
rdfs:range ; photo:Photo
rdfs:label ”photo id" .Data Properties Object Properties
27
V irtuos o R DF V iew s : M apeamento [2]
• Construir Subject IRI’s para cada classe utilizando as chaves primarias de cada tabela
sparqlprefix peo: <http://localhost:8890/rdfv_demo/schemas/people#>create iri class peo:us er_iri "http://localhost:8890/rdfv_demo/testdata/people#%s" (in user_id varchar not null) .
peo:us er_iri a rdf:Property ;
rdfs:domain peo:People ;
rdfs:range xsd:string;
rdfs:label ”people id" .
28
V irtuos o R DF V iew s : M apeamento [3]
• Construir Predicados IRI’s para cada classe utilizando o resto de colunas de cada tabelasparqlprefix qs: <http://localhost:8890/rdfv_demo/quad_storage/>prefix peo: <http://localhost:8890/rdfv_demo/schemas/people#>prefix pho: <http://localhost:8890/rdfv_demo/schemas/photos#>
c reate quad s torag e qs:default from OPLWEB.DBA.PEOPLE as people_tbl from OPLWEB.DBA.PHOTOS as photos_tbl{ create qs:people as graph <http://localhost:8890/rdfv_demo/testdata/people#> { peo:user_iri(people_tbl.U S E R _ID ) a peo:People as qs:people_People ; foaf:name people_tbl.N AM E as qs:people_peopleName ;} .
29
Triplify D2R S erver V irtuos o R DF V iew s
Tec nolog ia PHP Java M iddleware S olution
S PAR QL E ndpoint
- S im S im
Ling uag em de M apeamento
SQL RD F based RD F based
G eraç ão de mapeamento
Manual S em i-automático
M anual
E s c a labilidade Media – Alta(Não S PARQL)
M edia Alta
Link: http://esw.w3.org/Rdb2RdfXG/StateOfTheArt
30
Princ ipa is R eferênc ia s• D2RQ, site
http://www4.wiwiss.fu-berlin.de/bizer/d2r-server/#development, Consultado 20/05/10
• W3C Group, site http://esw.w3.org/Rdb2RdfXG/StateOfTheArt, Consultado 21/05/10
• Triplify, site http://triplify.org/Documentation, Consultado 21/05/10
• Mapping Relational Data to RDF with Virtuoso's RDF Views, site http://virtuoso.openlinksw.com/Whitepapers/html/rdf_views/virtuoso_rdf_views_example.html, Consultado 19/05/10