На 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, но чувствую, исходя из фона в реляционных базах данных заставляет меня думать об этом неправильно. Любая помощь приветствуется.