A Figura 75 apresenta a modelagem MPGrafo-2 na interface gráfica do Neo4j. Nessa figura o grafo atende à seguinte configuração visual: os VD são amarelos, mostrando o nome do rótulo e a propriedade principal, os VA são verdes, mostrando o nome do rótulo e
o identificador, e os SubGV mostram o nome do rótulo e a propriedade principal em todos os seus vértices, os quais possuem três cores: azul para os vértices de rótulo (:Person), vermelho para os vértice de rótulo (:Publication) e roxo para os vértices de rótulo (:Venue), como ilustra a Figura 75.
Figura 75 - Modelagem MPGrafo-2 no Neo4j
A partir dessa modelagem executamos as consultas no Neo4j, iniciando com o exemplo das Figuras 59 e 60, que agrega as informações de publicações em função do ano e local de publicação. A Figura 76 apresenta a consulta especificando na linha 2 uma consulta em Cypher que seleciona as dimensões DimDate e DimPublicationVenue; na linha 3 as configurações que analisam os VA; na linha 4 não foram requisitadas medidas de análise para analisar os vértices do subgrafo agregado; e na linha 5 a configuração dimensional para unificar os VD por meio da configuração {DimDate:'year',DimPublicationVenue:'type'}.
1 Call olap.aggregate.graphResult(
2 "MATCH (dim_date:DimDate)-[reldi_date]->(va:
𝑟
𝑉𝐴), (va:𝑟
𝑉𝐴)- [relsub:𝑟
𝑟𝑒𝑙𝑠𝑢𝑏]->(SubGV), (dim_publ:DimPublicationVenue)-[reldi_publ]- >(va:𝑟
𝑉𝐴) RETURN reldi_date, reldi_publ, va, relsub;",3 [{`*`:'count', citation:['sum','avg'], author:['sum'], sumSalary:['sum','avg'], sumDegreeM:['sum','avg']}, {`*`:'count'}],
4 [],
5 {DimDate:'year',DimPublicationVenue:'type'})
Figura 76 - Consulta as informações de publicação agregando-as por ano e local de publicação
Com a execução dessa consulta, obtivemos um resultado gráfico que retratamos na Figura 77. Esse resultado é representado por um grafo de propriedade, contendo: cinco VD na cor amarela, sendo dois da dimensão DimDate 2010 e 2016, e três da dimensão DimPublicationVenue “School”, “Journal” e “Proceedings”; três VAagr na cor verde; nove SubGagr na cor cinza, visto que em cada subgrafo analítico existem três rótulos diferentes; cinco vértices de rótulo (:Person) na cor azul; quatro vértices de rótulo (:Publication) na cor vermelha; e três vértices de rótulo (:Venue) na cor roxa.
Na agregação dos VA foram produzidos três VAagr: o primeiro, da esquerda para direita, agregou dois VA e possui a combinação dos VD “School” e 2010; o segundo agregou um VA e possui a combinação dos VD “Journal” e 2010; e o terceiro agregou um VA e possui a combinação dos VD “Proceedings” e 2016.
O grafo de resposta representado na Figura 77 mostra selecionado o VAagr com a combinação de VD “Journal” e 2010. Com isso, aparecem os resultados da configuração de medida descrita na linha 3 da Figura 76 {`*`:'count', citation:['sum','avg'], author:['sum'], sumSalary:['sum','avg'], sumDegreeM:['sum','avg'], que resultaram nas seguintes propriedades:
• count_* - informa a quantidade de VA, que compõem o VAagr selecionado; • sum_citation - soma os valores da propriedade “citation”;
• avg_citation - calcula a média dos valores da propriedade “citation”; • sum_author - soma os valores da propriedade “author”;
• sum_sumSalary - soma os valores da propriedade “sumSalary”;
• avg_sumSalary - calcula a média dos valores da propriedade “sumSalary”; • sum_sumDegreeM - soma os valores da propriedade “sumDegreeM”; e
• avg_sumDegreeM - calcula a média dos valores da propriedade “sumDegreeM”; Os valores resultantes das medidas são visíveis na Figura 77.
Figura 77 - Resultado da consulta que agrega as publicações por ano e local de publicação
A próxima consulta é baseada no exemplo de consulta das Figuras 61 e 62, que agrega as informações de publicações que foram realizadas nas instituições (School) no ano 2010. A Figura 78 apresenta a consulta especificando na linha 2 uma consulta em Cypher que seleciona e restringe as dimensões com os respectivos valores: DimDate com a propriedade “year” = 2010 e DimPublicationVenue com a “type” = “School”; na linha 3 as configurações que analisam os VA; na linha 4 definimos medida de análise para os vértices de rótulo {:Person, :Publication e :Venue} que compõem o Subgrafo Analítico; e na linha 5 a configuração dimensional para unificar os VD por meio da configuração {DimDate:'year',DimPublicationVenue:'type'} .
76. Ela restringe os VD da dimensão “DimDate” recuperando apenas os VD com valor “2010” na propriedade “year”, e os VD da dimensão “DimPublicationVenue” com valor “School” na propriedade “type”. Com a execução dessa consulta, obtivemos um resultado que é ilustrado na Figura 79.
1 Call olap.aggregate.graphResult(
2 "MATCH (dim_date:DimDate)-[reldi_date]-
>(va:
𝑟
𝑉𝐴),(dim_publ:DimPublicationVenue)-[reldi_publ]->(va:𝑟
𝑉𝐴),(va:𝑟
𝑉𝐴)- [relsub:𝑟
𝑟𝑒𝑙𝑠𝑢𝑏]->(SubGV) where dim_date.year = '2010' and dim_publ.type = 'School' RETURN reldi_date, reldi_publ, va, relsub;",3 [{`*`:'count', citation:['sum','avg'], author:['sum']}, {`*`:'count'}] 4 [{Person:{salary:['collect','max'],shortName:['collect']},
Publication:{citation:['collect']}, Venue:{shortName:['collect']} }], 5 {DimDate:'year',DimPublicationVenue:'type'})
Figura 78 - Consulta e agrega as informações de publicações das instituições no ano 2010
Figura 79 - Resultado da consulta que agrega as publicações de instituições em 2010
Esse resultado da consulta apresenta um grafo de propriedades, contendo: dois VD na cor amarela, sendo um da dimensão DimDate com valor 2010 e outro da dimensão DimPublicationVenue com valor “School”; um VAagr na cor verde; três SubGagr na cor cinza; dois vértices de rótulo (:Person) na cor azul; dois vértices de rótulo (:Publication) na
cor vermelha; um vértices de rótulo (:Venue) na cor roxa.
Na agregação dos VA, foi produzido um único VAagr, que agregou dois VA combinando os VD “School” e 2010, como mostra a Figura 79. Além disso, essa figura apresenta o VAagr selecionado mostrando nas propriedades os valores resultantes das medidas de análise, que foram requisitadas na linha 3 da Figura 78.
Além desses resultados, essa consulta também requisitou na linha 4 da Figura 78 medidas de análise para processar os vértices de rótulo Person, Publication e Venue que constituem o SubGagr. A configuração de medida [{Person:{salary:['collect','max'], shortName:['collect']}, Publication:{citation:['collect']}, Venue:{shortName:['collect']} }] resultou em valores e propriedades que retratam as medidas de análise nos vértices do SubGagr, como mostram os valores dos vértices selecionados na Figura 78.
Essas medidas são expressas nas propriedades dos seguintes rótulos: • Person
o collect_salary - lista os valores da propriedade “salary” dos vértices (:Person); o max_salary - apresenta o maior valor da propriedade “salary” dos vértices
(:Person);
o collect_ shortName - lista os valores da propriedade “shortName” dos vértices (:Person);
• Publication
o collect_ citation - lista os valores da propriedade “citation” dos vértices (:Person);
• Venue
o collect_ shortName - lista os valores da propriedade “shortName” dos vértices (:Person);
A B
Figura 80 - Resultado da consulta detalhando os vértices do SubGagr
Por fim, concluímos a apresentação das consultas multidimensionais em grafo utilizando a implementação da AAMPGrafo no Neo4j. Na próxima seção, discutimos a representação visual das consultas em Cypher e a forma de representar os dados agregados em consultas analíticas e multidimensionais em grafo.