jRDFa: Browsing and Visualization of Linked Data on the Web André Carlomagno Rocha, Tito Gardel P. Filho, Marilton Cerqueira, Cássio V. S. Prazeres Universidade Federal da Bahia – Departamento de Ciência da Computação MultiViUW: Laboratório de Pesquisa e Experimentação em Multimídia, Computação Visual, Computação Ubíqua e Web Av. Adhemar de Barros, Ondina, Salvador-BA, Brasil {andreluiz, titogardel, mmcerqueira, prazeres}@dcc.ufba.br Nesse sentido, esforços para aproximar essas duas abordagens (documentos e dados) têm sido realizados, como é o caso da recomendação W3C RDFa [1]. O RDFa é uma das formas de serializar dados estruturados no formato RDF [13]. Especificamente, RDFa permite embutir triplas RDF em documentos HTML usando os próprios atributos da linguagem de marcação. Ao incorporar essas estruturas de metadados em páginas HTML, autores são capazes de indicar aos agentes de software o significado de dados que são exibidos para usuários humanos (informações legíveis por humanos), transformando-os em dados legíveis por máquinas [15]. ABSTRACT Several efforts in research and development of technologies have been spent to publish data in open standard formats. The main project in this regard is the Linked Open Data, which goal is to create an open and semantic Web of Data, enabling processing and understanding the data by software agents. However, not only the machines can take advantage of the explicit semantics of data. People can take advantage from the semantic of the data to explore unknown concepts, new relationships and to obtain personalized access to relevant resources and services. However, it is not trivial for a user without experience with Web of Data, to satisfactorily explore and use these data. This paper presents the jRDFa, an approach to support the web developer interested in presenting to non-technical users, semantic data embedded in HTML pages in RDFa format. This paper also presents two ways of presenting data in RDFa that were created using the jRDFa: tooltips visualization and facets navigation. To evaluate the proposed approach, this paper presents results of experiments on HTML pages with embedded jRDFa. Na prática, RDFa refere-se a dados semânticos – obedecendo aos princípios de Linked Data – embutidos na Web de Documentos, de tal forma que possam ser lidos e entendidos por máquinas [2]. Entretanto, não apenas as máquinas podem se beneficiar da semântica explícita e da estruturação dos dados que seguem os princípios de Linked Data [17]. Pessoas podem se beneficiar da semântica dos dados para explorar conceitos desconhecidos, novos relacionamentos e obter acesso personalizado a recursos e serviços relevantes. Contudo, não é trivial, para um usuário sem experiência com a Web de Dados, explorar e usar esses dados de maneira satisfatória [6]. Categories and Subject Descriptors H.5.4 [INFORMATION INTERFACES AND PRESENTATION]: Hypertext/Hypermedia – Navigation, User issues. Para Camarda et al. [7], apesar das centenas de milhares de triplas RDF já existentes na Web de Dados, é difícil encontrar ferramentas de apresentação fáceis de usar, que sejam realmente baseadas em padrões RDF e capazes de demonstrar a eficácia do modelo Linked Data. Davies et al. [9] argumentam que: se a finalidade é a de que os usuários finais possam contribuir para a Web de Dados da mesma forma que eles contribuem para a Web de Documentos, então eles precisam de ferramentas, adequadas à sua condição de usuários não técnicos, que lhes permitam fazê-lo. Além disso, para Cheng et al. [8], comparado com hipertexto da Web, Linked Data pode satisfazer mais precisamente as necessidades de informação, no entanto, ainda faltam ferramentas direcionadas para usuários não técnicos. Keywords Linked Data, jRDFa, Visualização, Navegação, Tooltips, Facetas. 1. INTRODUÇÃO A representação da informação na Web tem evoluído de um espaço global de documentos interligados, a Web de Documentos, para um espaço global em que tanto documentos quanto dados podem estar conectados. No intuito dessa evolução está um conjunto de melhores práticas para publicar, conectar, reutilizar e consumir dados estruturados na Web conhecido como Linked Data [3]. A adoção dessas melhores práticas está possibilitando o desenvolvimento de um ambiente global de dados, chamado de Web de Dados [5]. Segundo Bizer [4], a Web de Dados e a Web de Documentos podem conviver, no mesmo espaço e ao mesmo tempo. Considerando os benefícios que podem ser obtidos por usuários finais diante da semântica dos dados, a falta de habilidade desses usuários no trato com tais dados e a carência de ferramentas com foco na apresentação de dados semânticos, baseadas nos princípios Linked Data, este trabalho apresenta a jRDFa (Javasript for RDFa). Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]. WebMedia’13, November 5–8, 2013, Salvador, Brazil. Copyright is held by the owner/author(s). Publication rights licensed to ACM. ACM 978-1-4503-2559-2/13/11…$15.00. http://dx.doi.org/10.1145/2526188.2526194 A jRDFa é uma abordagem para apoiar o desenvolvedor Web que deseja apresentar, para seus usuários, dados semânticos embutidos em páginas HTML no formato RDFa. A abordagem proposta está implementada como uma biblioteca Javascript, que fornece recursos para lidar, de forma simples e fácil, com as informações semânticas contidas nessas páginas. A biblioteca abstrai as tarefas de recuperação e tratamento de tais informações, deixando o 141 Apresentação (CIA). Essa camada pode ser estendida, por meio do Módulo de Apresentação (MAP), com novas formas de apresentação (navegação e visualização, por exemplo), usando as informações amigáveis fornecidas pela biblioteca. Neste artigo, duas formas de apresentação foram desenvolvidas, como extensão do módulo MAP, e são descritas e discutidas na Seção 3. desenvolvedor livre para se ater apenas na criação de suas formas de apresentação. Para demonstrar a utilização da biblioteca, duas formas de apresentação de conhecimento semântico foram desenvolvidas: uma usando visualização por tooltips e outra usando navegação por facetas. O restante deste artigo está estruturado da seguinte forma: a Seção 2 apresenta e descreve jRDFa, que é a abordagem proposta neste trabalho; na Seção 3 são descritas duas formas de apresentação de informações semânticas geradas pela jRDFa; a Seção 4 apresenta experimentos realizados para avaliação de desempenho da biblioteca; na Seção 5 são apresentados trabalhos relacionados à abordagem proposta neste artigo; e na Seção 6 são apresentadas algumas considerações finais e direções para trabalhos futuros. 2. jRDFa: JavaScript for RDFa A abordagem jRDFa (JavaScript for RDFa) é uma proposta que foi desenvolvida com objetivo de possibilitar que usuários humanos também possam tirar proveito da semântica explícita da Web de Dados. A proposta possibilita a recuperação de dados semânticos contidos em páginas Web, mais precisamente em documentos HTML, e fornece informações previamente tratadas que podem ser utilizadas para melhorar a experiência das pessoas com a Web de Dados, por meio de formas dinâmicas de apresentação. Figura 1. Arquitetura jRDFa. Explicando o fluxo mais detalhadamente, após o término do carregamento da página Web, o MAQ (Módulo de Aquisição) recupera todas as entradas RDFa contidas no documento, por meio de um parser semântico (Green Turtle [11]) e monta o grafo correspondente. Ou seja, nesse momento todas as informações semânticas (triplas RDF) contidas na página Web são recuperadas e adicionadas a um grafo RDF. Em seguida, esse modelo é enviado para a CPS, onde é tratado pelos MRB (Módulo de Resolução Blank Node) e MRA (Módulo de Resolução Ancoragem) para resolver os respectivos problemas (seções 2.2 e 2.3). Neste trabalho, a jRDFa foi implementada como uma extensão à biblioteca jQuery, que é uma biblioteca JavaScript, independente de navegador (browser), criada com o intuito de simplificar o desenvolvimento de scripts em documentos HTML. Dessa forma, a implementação da jRDFa também é uma biblioteca JavaScript, para documentos HTML e independente de navegador. Na prática, o objetivo da biblioteca é extrair conteúdo semântico, representado por RDFa, de páginas HTML e prover visualização e navegação desse conteúdo para usuários humanos. Depois de processado e atualizado, o modelo é encaminhado, sob a forma de informações amigáveis, para a CIA que, por meio do MAP (Módulo de Apresentação), será responsável por apresentar as informações semânticas ao usuário. O MAP possui interfaces bem definidas que o desenvolvedor deve obedecer, para criar novas formas de apresentação, que vão recuperar as informações amigáveis a serem utilizadas na apresentação exibida para o usuário. Por exemplo, o desenvolvedor pode criar uma visualização de dados semânticos na forma de tooltips. Quando o usuário passar o ponteiro do mouse sobre um recurso RDF, um tooltip será exibido contendo as informações amigáveis relacionadas a tal recurso. Da mesma maneira, o desenvolvedor pode criar uma navegação facetada usando as informações tratadas pela biblioteca. Assim, o usuário terá à sua disposição a opção de navegar por meio de facetas em dados relacionados aos recursos presentes na página Web que ele está visitando. Esta seção apresenta os detalhes da arquitetura da biblioteca jRDFa, seu funcionamento e forma de utilização. A seção também descreve os dois algoritmos propostos neste trabalho para resolver dois problemas encontrados durante o desenvolvimento da proposta: o problema do blank node e o problema da ancoragem. 2.1 Arquitetura da jRDFa A biblioteca jRDFa é composta por quatro módulos principais: Módulo de Apresentação (MAP), Módulo de Resolução Blank Node (MRB), Módulo de Resolução Ancoragem (MRA) e Módulo de Aquisição (MAQ). Esses módulos estão distribuídos em três camadas, como pode ser visto na Figura 1: Camada de Interface e Apresentação (CIA), Camada de Processamento Semântico (CPS) e Camada de Aquisição RDFa (CAR). Na Camada de Aquisição RDFa (CAR) os dados semânticos contidos na página Web, descritos por meio de RDFa, são recuperados e adicionados a um grafo RDF, criado no momento do carregamento da biblioteca. Em seguida, esses dados são enviados para a Camada de Processamento Semântico (CPS), com o objetivo de serem tratados adequadamente. O resultado desse tratamento são informações semânticas mais amigáveis, próprias ao consumo de usuários não técnicos. Em outras palavras, o tratamento diz respeito à renomeação de recursos RDF de forma conveniente, abstraindo os URIs, para oferecer uma melhor compreensão ao usuário. 2.2 Resolução do problema do blank node Durante o processo de aperfeiçoamento da proposta, alguns problemas peculiares à natureza estruturada dos dados foram encontrados e tratados. O primeiro deles é o problema do blank node. Em um grafo RDF, um blank node é um nó que representa um recurso para o qual não foi definido um URI ou um literal. Um blank node só pode ser usado como sujeito ou objeto de uma tripla e um recurso representado por um blank node é chamado de recurso anônimo. Depois do processamento dos dados na CPS, as informações tratadas são encaminhadas para a Camada de Interface e 142 Como o objetivo da jRDFa é apresentar dados semânticos para usuários não técnicos, a exibição de um recurso anônimo (não nomeado por um URI ou literal), identificado apenas por um ID, torna-se um problema para a compreensão das informações. Para resolver essa questão, todos os blank nodes são resolvidos utilizando o algoritmo apresentado na Figura 2. Com esse algoritmo todos os blank nodes são nomeados antes da disponibilização das informações amigáveis para a camada de apresentação (CIA). Figura 3. Parte da lista de predicados mais representativos. De modo geral, um determinado blank node pode ser sujeito de mais de uma tripla. Por exemplo, podem existir três triplas contendo o mesmo blank node como sujeito: a primeira com predicado givenName; a segunda com predicado homepage; e a terceira com predicado email. Com base na lista de predicados, o algoritmo vai resolver da seguinte forma: o objeto que melhor representa esse blank node é aquele que possui o predicado givenName, pois esse predicado tem prioridade sobre email e homepage. A partir daí, esse recurso (inicialmente tratado por um ID) passa a ser conhecido pelo valor contido no objeto da tripla que possui o predicado givenName. O valor desse objeto pode ser João ou Maria, que visualmente tem mais significado para o usuário que, por exemplo, um email como [email protected], ou uma homepage como http://www.maria.com. Figura 2. Algoritmo de resolução de blank nodes. O algoritmo funciona da seguinte forma, primeiro, triplesArray (linha 1 da Figura 2) armazena todas as triplas que possuem um determinado blank node como sujeito. Para cada uma dessas triplas, objectsArray (linha 3 da Figura 2) armazena o objeto da tripla. Ao final do processo, o algoritmo retorna o objeto que melhor representa o blank node. Essa tarefa é realizada pela função getRepresentObj (linha 5 da Figura 2), que determina o objeto mais representativo, considerando o predicado de cada objeto em objectsArray. Por exemplo, o dado que melhor representa uma pessoa é seu nome. Portando, se o blank node se refere a uma pessoa, o objeto que melhor representa esse recurso é o que possui o predicado name. 2.3 Resolução do problema da ancoragem O problema da ancoragem diz respeito a mapear um recurso (com todos os dados aos quais ele está ligado diretamente) para um elemento HTML, contendo a informação que melhor representa tal recurso (<span>infoMaisRep</span>). Esse mapeamento é importante porque facilita a exibição de recursos para os usuários finais, organizando as informações em pontos estratégicos da página. A Figura 3 exibe parte da lista de predicados considerados como mais representativos. A lista está ordenada por prioridade, onde name é o predicado de maior representatividade. Para encontrar a informação mais representativa de um determinado recurso na página HTML, foi criado neste trabalho o algoritmo de resolução de ancoragem apresentado na Figura 4. Esse algoritmo recupera tal informação por meio do algoritmo de resolução de blank nodes. Com essa informação, o conjunto de dados, que representa o recurso, pode ser ancorado na página Web por meio de um elemento DOM HTML. Para definir a lista, primeiro foram consideradas as características comuns encontradas na variedade de tipos de recursos presentes na Web de Dados (pessoa, organização, evento, produto, lugar, entre outros). Para muitos desses tipos, a informação que melhor os representa é seu nome (João, SBC, WebMedia2013, Notebook 123abc, Salvador, etc.). No entanto, no caso de um recurso não possuir nome (ou o nome não ter sido definido), a informação mais amigável, a ser apresentada para um usuário final, é o email seguido do título. Por exemplo, considerando um artigo acadêmico, talvez não seja comum definir um nome para tal recurso nem, tão pouco, um email, mas, muito provavelmente, seja definido um título. Recursos como páginas Web ou arquivos mantidos na Internet são certamente melhor representados por seus endereços eletrônicos (por exemplo, uma URL). Essa lógica foi seguida para todos os tipos de recursos. Nos casos em que o recurso não possui nome, email, título ou URL, pode possuir um endereço (addressLocality), no caso de um lugar, ou pode possuir um preço (lowPrice), no caso de um produto, e assim por diante conforme Figura 3. Figura 4. Algoritmo de resolução de ancoragem. O tipo de elemento escolhido para essa tarefa foi o elemento span, por não alterar o layout da apresentação. Nos casos em que o elemento retornado pelo algoritmo de resolução de blank nodes já for do tipo span, a ancoragem (mapeamento) é efetivada. Nos outros casos, um novo elemento do tipo span é criado e adicionado ao DOM como filho do elemento retornado, e, em seguida, a ancoragem é efetivada no novo elemento span. O conteúdo do elemento retornado (informação mais representativa) é transferido para o novo elemento span. O segundo ponto considerado foi a heterogeneidade dos termos utilizados pelos diversos vocabulários contidos na Web de Dados. Muitos vocabulários definem as mesmas informações utilizando termos distintos. Por exemplo, o vocabulário FOAF define um nome como name ou givenName e uma imagem como img, image ou depiction. Dessa forma, neste trabalho todas as variações fazem parte da lista. A quantidade de vocabulários existentes hoje na Web de Dados deve continuar crescendo. A lista de predicados foi baseada apenas nos vocabulários mais conhecidos e frequentemente utilizados (foaf, schema, dc, skos, dentre outros). A lista também pode ser incrementada com a análise de novos vocabulários. Por exemplo, considerando que o recurso “pedro” é sujeito de três triplas: pedro-temNome-Pedro; [email protected]; e pedro-temTipo-Pessoa. Essas informações dizem respeito à pessoa nomeada Pedro e formam um conjunto único de 143 informações. Esse conjunto será atrelado a um elemento HTML da página para melhor apresentar informações sobre Pedro, quando necessário. Esse elemento deve conter como valor o dado mais representativo do recurso “pedro”, por exemplo, seu nome. Dessa forma, o elemento que envolve a string “Pedro” será escolhido. Portanto, o algoritmo de resolução de ancoragem começa utilizando o algoritmo de resolução de blank nodes (ver linha 1 da Figura 4), descrito anteriormente, para descobrir o dado mais representativo de um recurso. Após definir qual o dado mais representativo do recurso, o algoritmo de resolução de ancoragem vai ancorar o conjunto de informações referentes a tal recurso no elemento HTML, que tem como valor exatamente o dado mais representativo do recurso. Para isso, o algoritmo recupera o elemento usando getDOMElement em representInfo (linha 2 da Figura 4). Se o elemento recebido for um span, já é possível ancorar o conjunto de informações nesse elemento (linhas 3 e 8 da Figura 4). Caso contrário, o algoritmo cria um novo elemento span e atribui a ele o conteúdo do elemento recebido (linha 4 da Figura 4). Após isso, o conteúdo do elemento recebido é apagado (linha 5 da Figura 4), pois o conteúdo agora está no elemento span recentemente criado. Por fim, o novo elemento span é inserido na árvore DOM HTML (linha 5 da Figura 4), como filho do elemento recebido e o conjunto de informações é ancorado nesse span (linha 6 da Figura 4). O motivo para usarmos span é que esse elemento não altera os aspectos de exibição das páginas Web (i.e. não modifica o layout criado pelo desenvolvedor da página). Figura 5. Referências e script de carga jRDFa. Dessa forma, a ferramenta já está apta a fornecer informações semânticas tratadas e amigáveis dinamicamente, sem intervenção do desenvolvedor. Ou seja, depois do correto carregamento da página e posteriormente da biblioteca, o objeto map (fornecido pela interface da biblioteca pela função getSemanticInfo()) já está disponível para uso pelo desenvolvedor. A implementação da biblioteca assume que as páginas Web, contendo marcações RDFa, são válidas e bem formadas, obedecendo a recomendação W3C RDFa 1.11. 3. jRDFa: VISUALIZAÇÃO E NAVEGAÇÃO Esta seção descreve duas formas de apresentação desenvolvidas para demonstrar a viabilidade da proposta. A primeira foi criada para apresentar dados semânticos por meio de tooltips dinâmicos. A segunda utiliza facetas para permitir a navegação, de forma simples e prática, nesses dados. As formas de apresentação, aqui chamadas de tooltips e facetas, foram criadas tomando em consideração apenas a apresentação, visualização e/ou navegação dos dados. As questões relacionadas com a recuperação e tratamento dos dados semânticos presentes nas páginas foram deixados a cargo da biblioteca jRDFa. Outros trabalhos, que também tratem da apresentação de conteúdo semântico RDFa, podem se deparar com os problemas de resolução de blank nodes e de resolução de ancoragem. Os algoritmos com as soluções para esses problemas, apresentados neste trabalho, foram implementados, na biblioteca jRDFa, e avaliados (Seção 4). Dessa forma, esses algoritmos podem ser indiretamente utilizados em outros cenários bem como podem ser diretamente reutilizados a partir da biblioteca desenvolvida neste trabalho. 2.4 Funcionamento e Utilização O conhecimento semântico amigável fornecido pela biblioteca jRDFa é disponibilizado por meio de uma interface, que oferece um objeto Javascript contendo um map {infoset : x, HTMLelement : y}. O infoset é um conjunto único de informações de um determinado recurso e HTMLelement é o elemento HTML onde esse conjunto de informações deve ser ancorado. De forma simplificada, essa interface pode ser imaginada como uma função Javascript, getSemanticInfo(), que retorna o referido objeto. De posse desse objeto Javascript, as apresentações podem ser construídas utilizando as informações que ele fornece. Figura 6. Comunicação entre jRDFa e JQueryUI. Para criar novas formas de apresentação, foi utilizada a biblioteca de interface de usuário Javascript JQueryUI. Essa biblioteca facilita a criação das apresentações, por exemplo, tooltips ou facetas, fornecendo toda a parte de interface gráfica com o usuário, de forma que é necessário se ater apenas as informações que serão apresentadas. Para que os tooltips ou as facetas funcionem corretamente, a biblioteca JQueryUI exige, como parâmetros, os textos que serão adicionados como informação e exibidos no corpo do tipo de apresentação escolhido, bem como, o elemento HTML onde o tooltip ou a faceta será ancorado. A biblioteca jRDFa foi desenvolvida completamente em Javascript e pode ser adicionada a qualquer aplicação Web. Para usar a biblioteca, é necessário incluir o arquivo jRDFa.js (linha 7 da Figura 5) e suas dependências (Green Turtle e JQuery, linhas 9 e 11, respectivamente, da Figura 5) no diretório da aplicação, fazendo referência aos arquivos nas páginas Web em que se deseja mostrar as apresentações semânticas. Além disso, para dar início ao processo, é necessário incluir um pequeno script nas páginas, tal como exibido nas linhas 13 a 19 da Figura 5. A Figura 6 mostra o esquema do processo de comunicação entre as bibliotecas dentro do módulo MAP. Conforme descrito 1 144 http://www.w3.org/TR/rdfa-syntax/ anteriormente, a biblioteca jRDFa fornece um objeto Javascript contendo exatamente as informações solicitadas pela biblioteca JQueryUI. Portanto, a criação das formas de apresentação foi facilitada pela utilização da proposta jRDFa. A saída da biblioteca jRDFa foi usada como entrada da biblioteca JQueryUI. Esse processo foi realizado, de forma simples, utilizando o Módulo de Apresentação (MAP) da biblioteca jRDFa em sua Camada de Interface e Apresentação (CIA). 3.1 Visualização por Tooltip Neste trabalho, a visualização por tooltips (caixas de informações ocultas, acionadas por uma determinada ação do usuário) consiste na exibição de tooltips dinâmicos contendo conhecimento semântico oriundo das marcações RDFa presentes na página Web. Esse conhecimento, muitas vezes, não está disponível para o usuário humano, pois o objetivo principal de tais dados é servir de informação útil para agentes de software. Figura 8. Tooltip mostrando informações de Alice. Na Figura 8, pode-se ver o conjunto de informações de “Alice Birpemswick”, mostrando que, além de suas informações básicas como email e telefone, ela conhece “Bob”, “Eve” e “Manu”. Essas últimas informações de relacionamento entre “Alice” e seus amigos não são visíveis na página Web exibida para os usuários sem a utilização da biblioteca jRDFa. A biblioteca JQueryUI, descrita anteriormente e ilustrada na Figura 6, facilita a criação de tooltips fornecendo toda a parte de interface gráfica com o usuário. Para que os tooltips funcionem corretamente a biblioteca JQueryUI recebe como parâmetro, por meio da biblioteca jRDFa, os textos que serão adicionados como informação e exibidos no corpo dos tooltips, bem como, o elemento HTML onde o tooltip deve ser ancorado. Figura 7. Página Web com RDFa embutido. Por conseguinte, os tooltips são criados contendo esses conjuntos de informações amigáveis e ancorados nos elementos HTML, ambos fornecidos pela biblioteca jRDFa. Assim que o usuário passa o ponteiro sobre um elemento que ancora um tooltip, informações, sobre aquele recurso RDF, são exibidas. Por exemplo, considerando que na página exibida para o usuário, existe um texto que contem a string “Paulo” e essa string foi definida como informação mais representativa do recurso “paulo”. Dessa maneira, quando o usuário passar o ponteiro sobre essa string, um tooltip é imediatamente exibido. Esse tooltip contém um conjunto de informações amigáveis sobre Paulo. Esse conjunto pode exibir o telefone, email, homepage, endereço, organização, foto, amigos e várias outras informações sobre o recurso RDF Paulo, que não são exibidas na página Web. A Figura 7 apresenta uma página Web comum, que possui marcações RDFa com o objetivo de disponibilizar dados estruturados para agentes de software. Figura 9. Tooltip mostrando informações de Manu. Na Figura 9, é possível ver as informações que as marcações RDFa guardam acerca da pessoa “Manu”. Na página Web apenas o nome “Manu” está disponível para visualização dos usuários. Entretanto, passando o ponteiro sobre essa string o tooltip exibe todo um conjunto de informações sobre “Manu” (homepage, imagem e telefone). Essas informações estariam inicialmente disponíveis apenas para agentes de software não fosse a utilização da biblioteca jRDFa em conjunto com a visualização por tooltips. 3.2 Navegação Facetada A classificação em facetas busca ser um meio flexível para catalogar itens de informação. As facetas vêm sendo utilizadas em diversos cenários, como uma alternativa às classificações hierárquicas e enumeradas, inerentemente mais rígidas e de difícil manutenção. A origem do conceito de facetas é antiga, Taulbee [18] cita o trabalho de Ranganathan [19], que sugeriu a utilização do esquema em facetas na classificação de livros em um trabalho que começou em 1924. Pode-se observar que a página da Figura 7, mesmo contendo dados estruturados Linked Data, por meio de marcações RDFa, mostra poucas informações para o usuário final. É possível perceber apenas que a página possui informações sobre uma pessoa chamada “Alice Birpemswick”, com seu email, telefone, além do nome de outras pessoas, “Bob”, “Eve” e “Manu”, que, aparentemente, não possuem associação com Alice. As Figuras 8 e 9 exibem a mesma página Web da Figura 7, contudo, dessa vez utilizando a biblioteca jRDFa e a visualização por tooltips para exibir o conhecimento semântico existente na página através de informações amigáveis direcionadas para o usuário comum. Neste trabalho, o modelo de navegação facetada aproveita campos de metadados e valores para fornecer aos usuários uma lista de opções visíveis, com o objetivo de aperfeiçoar suas consultas e tornar o conteúdo das páginas Web, visualmente, mais fácil de ser 145 RDF, definidos por meio de RDFa, dando uma visão clara ao usuário final do conteúdo presente na página e abstraindo as questões técnicas que envolvem o padrão Linked Data. encontrado. A forma de apresentação em navegação facetada, criada com base nas informações produzidas pela biblioteca jRDFa, consiste em fornecer uma aba oculta (preferencialmente no canto esquerdo da página), em forma de menu vertical, disponibilizando facetas semânticas para navegação nos dados estruturados, definidos por meio de RDFa, na página Web. No modo oculto, o usuário pode ver apenas uma faixa vertical translucida no canto da página (não prejudica o layout da página), indicando a presença da aba de navegação facetada. Assim que o ponteiro é posicionado sobre essa faixa, ela se estende, em direção ao centro, para apresentar o menu vertical de facetas semânticas. Assim como na visualização por tooltips, a biblioteca JQueryUI, descrita anteriormente e ilustrada na Figura 6, facilita a criação das facetas fornecendo toda a parte de interface gráfica com o usuário. Para que as facetas funcionem corretamente a biblioteca JQueryUI recebe como parâmetro, por meio da biblioteca jRDFa, um objeto Javascript, contendo um conjunto único de informações, relacionado a um determinado recurso e o elemento HTML que possui o valor que melhor representa esse mesmo recurso (elemento de ancoragem). No caso das facetas, a biblioteca JQueryUI precisa receber como entrada básica o valor do item de menu origem e as informações que serão associadas a esse item de menu (além de outras informações de controle, como nível de taxonomia, por exemplo). Figura 11. Aba de navegação facetada completa. Unindo os dois exemplos citados de utilização da navegação facetada, com a utilização da biblioteca jRDFa, tem-se uma poderosa e, por outro lado, amigável forma de navegação em dados semânticos Linked Data. A Figura 11 mostra a aba de navegação facetada explorando o conhecimento semântico presente da página Web. Portanto, considerando o exemplo do recurso “alice”, pode-se passar, como valor do item de menu origem, o valor do objeto mais representativo desse recurso, o nome “Alice”. Como informações que serão associadas ao item de menu “Alice”, podese passar o conjunto único de informações relacionadas ao recurso “alice”. Desse modo, as informações semânticas amigáveis produzidas pela biblioteca jRDFa podem ser facilmente utilizadas como entrada da biblioteca JQueryUI, para criação de navegação facetada. Isso proporciona uma navegação facilitada nos recursos Linked Data, possibilitando a descoberta de novos conhecimentos, antes disponíveis apenas para as máquinas. A Figura 10 apresenta como essa estrutura é exibida para o usuário. 4. AVALIAÇÃO DA BIBLIOTECA jRDFa Devido ao fato da biblioteca jRDFa realizar um parser no DOM HTML em busca de marcações RDFa durante o carregamento da página Web, o desempenho na exibição das páginas pode ser afetado pelo uso da biblioteca. Além disso, a biblioteca precisa montar um grafo RDF contendo todas as triplas contidas na página e gerar a forma de visualização/navegação. Todo esse processo é realizado em tempo de carregamento da página HTML. Com o objetivo de analisar o impacto de desempenho no carregamento das páginas Web processadas pela biblioteca jRDFa, foram realizados alguns experimentos levando em conta a quantidade de triplas RDFa contidas na página e o respectivo tempo de carregamento da mesma. A Tabela 1 exibe os resultados de medições de desempenho (tempo de carregamento da página) dos experimentos realizados. Tabela 1. Tempo de carregamento (ms = milisegundos) Quant. de Triplas 20 200 2.000 20.000 100.000 Figura 10. Aba de navegação facetada simples. Outra forma interessante de usar a essência do modelo de navegação facetada, é passar como item de menu origem o valor do elemento type, contido em todo conjunto único de informações de um recurso. O elemento type indica o tipo do recurso (pessoa, organização, produto, evento, entre outros). Dessa forma, pode-se passar como informações associadas a esse item de menu uma lista contendo os recursos do tipo determinado. Por exemplo, passando o valor “Pessoa” como item de menu origem para a biblioteca JQueryUI, e como informações associadas a esse item de menu os recursos “bob”, “eve”, “manu” e “alice”, a biblioteca automaticamente apresentará na aba de navegação facetada a opção “Pessoa (4)”. Isso facilita a navegação entre os recursos Com jRDFa 100ms 150ms 520ms 6.950ms 96.200ms Sem jRDFa 100ms 120ms 320ms 2.350ms 19.200ms É possível notar na Tabela 1 e na Figura 12 que páginas contendo até 200 triplas RDFa apresentam diferença de desempenho quase nula em relação à utilização ou não da biblioteca jRDFa. De fato, observando a Figura 12, os experimentos mostraram que em páginas contendo até 2.000 triplas RDFa a diferença de desempenho é pouco alterada. A métrica tempo de carregamento utilizada na Tabela 1 para avaliar o comportamento da biblioteca jRDFa é diretamente dependente do ambiente (CPU, memória, etc.) de execução dos experimentos. Dessa forma, para melhor avaliar o comportamento da biblioteca, foi utilizado o cálculo da 146 desses recursos já foi avaliada em outros trabalhos na literatura, como, por exemplo, por Oren et al. [22]. escalabilidade, apresentado na Figura 13, que avalia o comportamento da biblioteca em várias iterações à medida que se aumenta o número de triplas RDFa na página. 5. TRABALHOS RELACIONADOS Nesta seção são discutidos alguns trabalhos que tratam de apresentação de dados na Web de dados. A pesquisa foi concentrada, principalmente, nas áreas de navegação e visualização de formatos Linked Data, além de trabalhos que visam extração de informações em páginas Web. Lin e Hu [14] apresentam o HTMLParser, que é um método para analisar páginas HTML e efetivamente extrair conteúdos de forma linear ou aninhada. O parser possui filtros e tags personalizadas, oferecendo uma interface de utilização simples. As aplicações que utilizam HTMLParser têm como principais aspectos a extração e transformação de informações. O trabalho dos autores é similar ao Módulo de Aquisição (MAQ) proposto neste trabalho. Entretanto, o MAQ tem funcionalidades específicas para extração de RDFa de páginas HTML, que não é o objetivo da proposta de Lin e Hu. Figura 12. Tempo de carregamento da página. A escalabilidade foi medida calculando a variação do tempo de carregamento da página dividida pela variação da quantidade de triplas na página a cada iteração, ou seja, à medida que se aumenta a quantidade de triplas RDFa. Dessa forma, a escalabilidade (ECB) foi calculada utilizando a seguinte equação: Hepp et al. [12] propuseram o RDF2RDFa, que parte do princípio de que muitos potenciais usuários da Web Semântica têm dificuldades técnicas para publicar conteúdo no formato estruturado (e.g usuários de Sistema de Gerenciamento de Conteúdo ou Wikis). Dessa forma, RDF2RDFa permite o uso de RDFa para embutir triplas RDF não triviais no formato de elementos invisíveis div/span em documentos HTML preexistentes, simplificando a publicação de conteúdo em formato RDF em conformidade com Linked Data. Ao inserir RDFa utilizando elementos invisíveis nas páginas HTML, Hepp et al. deixam claro que o foco deles é disponibilizar essas informações para agentes de software. Dessa forma, é possível utilizar a biblioteca jRDFa, proposta neste artigo, para expor as informações também para pessoas. Conforme pode ser observado na Figura 13, cada ponto no gráfico corresponde a uma medida de escalabilidade correspondente a cada momento em que a página tinha 200, 2.000. 20.000 ou 100.000 triplas RDFa. É importante notar na Figura 13 que o comportamento do carregamento da página, com ou sem a biblioteca jRDFa, é semelhante até a quantidade de 20.000 triplas. Os experimentos realizados tiveram o objetivo de avaliar os limites de desempenho (computabilidade) da biblioteca, chegando ao ponto de se colocar 100.000 triplas RDFa em uma única página HTML. Considerando a avaliação realizada, concluiu-se que a utilização da biblioteca jRDFa não impacta o carregamento da página quando a mesma possui até 2.000 triplas RDFa. Segundo Bizer et al. [21], existem na Web atual cerca de 168 milhões de páginas HTML com RDFa embutido e com uma média de apenas 6,4 triplas RDFa por página HTML. Pode-se notar na Tabela 1 e na Figura 12 que a utilização da biblioteca jRDFa, com até 20 triplas por página HTML, não impacta no tempo de carregamento da página que se mantém em 100ms (com ou sem a jRDFa). Camarda et al. [7] apresentam a ferramenta LodLive, que tem como objetivo principal navegar em recursos RDF usando uma visualização em grafo dinâmico. A diferença principal para a proposta apresentada neste artigo é que a jRDFa pode ser estendida com diversas formas de apresentação, enquanto que o foco do LodLive é a navegação utilizando grafos RDF. Cheng et al. [8] propõem um navegador Linked Data chamado MyView, que permite aos usuários consultarem Linked Data por navegação, de uma coleção de entidades para outra. O navegador permite que usuários façam consultas na Web de Dados e utilizem essas consultas para navegar sobre os dados. Claramente, os objetivos de Cheng et al. são diferentes da proposta apresentada neste artigo. O objetivo do jRDFa é permitir ao usuário visualizar/navegar em informações RDFa embutidas nas páginas HTML que ele está visitando. Batista e Schwabe [20] apresentam o LinkedTube, que é um serviço para criar relações, semânticas ou não, entre vídeos disponíveis na Web. Para as relações semânticas, os autores realizam consultas, em bases de vídeos e em bases Linked Data, para gerar as relações entre os vídeos no formato RDF. Os resultados das relações criadas podem ser visualizados diretamente em RDF ou em uma interface HTML criada especificamente para o LinkedTube. A biblioteca jRDFa, proposta neste trabalho, poderia ser utilizada no LinkedTube, assim como em outras ferramentas HTML, para apresentar dados RDF serializados como RDFa. Figura 13. Escalabilidade. Do ponto de vista de avaliação de usabilidade, a jRDFa utiliza recursos de navegação e visualização já bastante utilizados em aplicações Web: tooltips e facetas. Dessa forma, a usabilidade A análise dos trabalhos relacionados evidenciou que a apresentação (visualização e navegação) para usuários não técnicos na Web de Dados ainda é um problema em aberto e que 147 muita coisa ainda pode ser proposta. Este trabalho identificou a relevância de construir uma biblioteca Javascript para apoiar o desenvolvedor Web, interessado em apresentar, de forma simples e eficiente, dados estruturados no formato RDFa para tais usuários. 6. CONSIDERAÇÕES FINAIS A semântica explícita na Web de Dados pode trazer benefícios para uma grande diversidade e tipos de usuários. Em especial, usuários sem experiência com esse espaço global de dados precisam de ferramentas que os apoiem na descoberta de informações interessantes e novos relacionamentos, na exploração de conceitos desconhecidos e na apresentação do conhecimento estruturado. A proposta apresentada neste artigo está fundamentada e inserida nesses aspectos, dado que permite a usuários comuns terem acesso a informações semânticas, muitas vezes ocultas em marcações RDFa de páginas Web. Os tooltips e as facetas, exibidos pela biblioteca jRDFA proposta neste trabalho, visam facilitar a apresentação dessas informações simplificando-as e, consequentemente, ajudando as pessoas a entender melhor tais informações, que, na maioria das vezes, têm como usuários alvo os agentes de software. [4] Bizer, C. 2011. Evolving the web into a global data space. In Proceedings of the 28th British national conference on Advances in databases (BNCOD'11), Alvaro A. A. Fernandes, Alasdair J. G. Gray, and Khalid Belhajjame (Eds.). SpringerVerlag, Berlin, Heidelberg, 1-1. Camarda, D. V., Mazzini, S., and Antonuccio, A. 2012. LodLive, exploring the web of data. In Proceedings of the 8th International Conference on Semantic Systems (I-SEMANTICS '12), Harald Sack and Tassilo Pellegrini http://doi.acm.org/10.1145/2362499.2362532. [8] Cheng, G., Wu, H., Gong, S., Zhang, H. and Qu, Y. (2011). Browsing Linked Data with MyView. In Proceedings of The 10th International Semantic Web Conference (ISWC2011). [9] Davies, S., Hatfield, J., Donaher, C., and Zeitz, J. 2010. User Interface Design Considerations for Linked Data Authoring Environments. In Proceedings of LDOW. [14] Lin, S., and Hu, Y. 2010 An Approach of Extracting Web Information Based on HTMLParser. Information Technology and Computer Science (ITCS), 2010 Second International Conference on, vol., no., pp.284-287, 24-25. [15] Pereira, M., and Martins, J.A. 2012. aRDF: a plugin to expose RDFa semantic information using Grails. In Proceedings of the 6th Euro American Conference on Telematics and Information Systems (EATIS '12), Rogerio Patricio Chagas do Nascimento http://doi.acm.org/10.1145/2261605.2261622. [16] Talis http://docs.api.talis.com/platform-api/output-types/rdf-json (last viewed April 28, 2013). [17] Ziegler, J. 2011. Semantic web meets UI: context-adaptive interaction with semantic data. In Proceedings of the 29th Annual European Conference on Cognitive Ergonomics (ECCE '11). http://doi.acm.org/10.1145/2074712.2074716 [18] Taulbee , O. E. Classification in information storage and retrieval, in 20th National Conference. Cleveland, Ohio, United States: ACM Press, 1965, pp. 119–137. [19] Ranganathan, S. Prolegomena to Library Classification, 2nd ed. London: Library Association, 1957. Adida, B., Herman, I., Sporny, M. and Birbeck, M. 2012. RDFa Primer, http://www.w3.org/TR/xhtml-rdfa-primer/ (visitado em 28/04/2013). Berners-Lee, T. 2006. Design Issues: Linked Data. http://www.w3.org/DesignIssues/LinkedData.html (visitado em 28/04/2013). [7] [13] Klyne, G., and Carroll, J. 2004. Resource Description Framework (RDF): Concepts and Abstract Syntax. W3C Recommendation 10 February 2004. Series editor: Brian McBride, http://www.w3.org/TR/rdf-concepts/ (last viewed April 28, 2013). 7. REFERÊNCIAS [3] Brunetti, J., Auer, S., and García, R. 2012. The Linked Data Visualization Model. [12] Hepp, M., García, R. and Radinger, A. 2009. RDF2RDFa: Turning RDF into Snippets for Copy-and-Paste. 8th International Semantic Web Conference (ISWC). AGRADECIMENTOS: Os autores agradecem a CAPES, CNPq, FAPESB e RNP, pelo apoio financeiro às pesquisas. Adida, B., McCarron, S., Herman, I. and Birbeck, M. 2012. RDFa Core 1.1: Syntax and processing rules for embedding RDF through attributes, http://www.w3.org/TR/rdfa-syntax/ (visitado em 28/04/2013). [6] [11] Green Turtle https://code.google.com/p/green-turtle/ (last viewed April 28, 2013). Como trabalhos futuros, pretende-se adicionar à biblioteca um módulo de consulta a Web de Dados, para permitir que a partir de um recurso obtido na página, execute-se uma consulta em um endpoint Linked Data, através de SPARQL e obtenham-se dados relacionados. Isso enriquece o conjunto de informações exibidas em um tooltip ou nas facetas e permite que as pessoas de fato vivenciem a Web de Dados. [2] Bizer, C., Heath, T., and Berners-Lee, T. 2009. Linked Data---The Story So Far. International Journal on Semantic Web and Information Systems (IJSWIS). [10] Dietzold, S., Hellmann, S., and Peklo, M. 2008. Using Javascript RDFa Widgets for Model/View Separation inside Read/Write Websites. 4th Workshop on Scripting for the Semantic Web (SFSW). Os experimentos realizados demonstraram a viabilidade da proposta da jRDFa do ponto de vista de desempenho. Avaliações com grupos de usuários podem ser realizadas com o objetivo de descobrir tendências no comportamento das pessoas ao se depararem com essas informações semânticas e estruturadas da Web de Dados. Isso pode possibilitar a descoberta: i) de limitações da proposta não observadas até então; ii) de aspectos relativos à apresentação das informações, tais como, forma, posicionamento, tamanho, cor, dentre outros. O estudo de usuário ainda pode revelar novas ideias e abordagens a serem seguidas no decorrer do desenvolvimento da biblioteca. [1] [5] [20] Batista , C. E. C. F. e Schwabe, D. 2009. LinkedTube: semantic information on web media objects. In Proceedings of the XV Brazilian Symposium on Multimedia and the Web (WebMedia '09). ACM, New York, NY, USA , 7 pages. [21] Bizer, C., Mühleisen, H., Harth, A., Stadtmüller, S., Meusel, R., Schuhmacher, M., Völker, J. and Eckert, K. 2012. Web Data Commons Extraction Report, http://webdatacommons.org/201208/stats/stats.html (visitado em 15/07/2013). [22] Oren, E., Delbru, R. and Decker, S. 2006. Extending Faceted Navigation for RDF Data. In Proceedings of The Semantic Web ISWC 2006. Lecture Notes in Computer Science Volume 4273, 2006, pp 559-572. 148