Получение одного поля в счетчике на Нептуне - PullRequest
0 голосов
/ 09 июля 2020

На AWS Neptune, у меня есть магазин SPARQL, в котором хранятся учетные записи, организации и сцены. Я пытаюсь получить список сцен, принадлежащих организации, и некоторую информацию об учетной записи для учетной записи, которая создала сцену, и количество организаций, которым нравится актив. Вот запрос для этого:

SELECT
          ?identifier
          ?title
          ?updatedAt
          ?asset
          ?profile
          ?givenName
          ?familyName
          (COUNT(?likedBy) as ?likedByCount)
      WHERE {
          ?scene   :organization :org_123 ;
                          :identifier ?identifier ;
                          :title ?title ;
                          :updatedAt ?updatedAt;
                          :asset ?asset .
                          OPTIONAL { ?scene :likedBy ?likedBy . }
          ?account        :created ?scene ;
                          :profile ?profile ;
                          :givenName ?givenName ;
                          :familyName ?familyName .
      }
      GROUP BY
          ?identifier
          ?title
          ?asset
          ?updatedAt
          ?profile
          ?givenName
          ?familyName

      ORDER BY DESC(?updatedAt)
      LIMIT 100

Вышеупомянутый запрос работает правильно. Теперь я также хотел бы вернуть логическое значение, если вызывающей организации в настоящее время нравится сцена, например. организация: org_234, но как я ни стараюсь, мне не удается получить рабочую версию. Я пробовал использовать подзапрос, но мне не удается отфильтровать сцены из родительского запроса. Ниже приведены результаты, которые я пытаюсь получить (называется: org_234, и это сцены, принадлежащие org_123):

Identifier title  updatedAt  asset     profile  givenName familyName likedByCount likes
scene_abc  scene1 2020-01-01 file1.jpg bob      bob       smith      20           true
scene_bcd  scene2 2020-01-02 file2.jpg fred     fred      smith      8            false
scene_cde  scene5 2020-01-05 file5.jpg fred     fred      smith      50           false
scene_def  scene6 2020-01-04 file6.jpg bob      bob       smith      16           true

У меня есть предикат на сцене: likeBy и предикат на организацию of: like, поэтому предыдущее должно быть создано со следующими данными:

:scene_abc :likedBy :org_234
:scene_abc :likedBy :org_345
:org_234   :likes   :scene_abc
:org_345   :likes   :scene_abc
:scene_bcd :likedBy :org_345
:org_345   :likes   :scene_bcd
:scene_cde :likedBy :org_345
:org_345   :likes   :scene_cde
:scene_def :likedBy :org_234
:org_234   :likes   :scene_def

Я потерялся в этом, так как кажется, что это должно быть легко выполнить sh, но чувствую, исходя из фона в реляционных базах данных заставляет меня думать об этом неправильно. Любая помощь приветствуется.

...