Я пытаюсь преобразовать следующий запрос SQL в Neo4j, но не смог понять, как работать со встроенными запросами в Neo4j.
SQL-запрос:
with aux as ( -- Amount of citations
select p.id, p.scientist_id, p.title, count(*) as citations
from paper p join citation c2 on (p.id = c2.paper_id)
group by 1,2,3 )
select id, name, min(h) as h_index from (
select c.id,
c.name,
aux1.title,
aux1.citations,
-- Replacing the use of analytical functions
-- Eq. to: count(*) over (parition by c.id order by p.citations desc)
( select count(*) from aux aux2
where aux2.citations >= aux1.citations
and aux2.scientist_id = aux1.scientist_id) as h
from scientist c join aux aux1 on (c.id = aux1.scientist_id)
) where h >= citations
group by id, name;
Этот запрос в основном извлекает h-индекс исследователя.Для этого мне сначала нужно ввести все статьи каждого автора и количество цитирований (статья).Это соответствует первому запросу «aux», который в Neo4j я написал так:
MATCH (p:Paper) - [w:WRITTEN_BY] -> (a:Author)
MATCH (p:Paper) - [c:CITED_BY] -> (p)
WITH count(c) as Citations
RETURN a.authorName, p.paperTitle, Citations
Как вы можете видеть, я уже получил предложение aux в Neo4j, но я не знаю, как продолжитьSQL выберите для извлечения окончательного числа ч.
Большое спасибо за вашу помощь!