Задача Office Graph — строить полнофункциональные приложения, глубоко настраиваемые и отвечающие потребностям пользователей. Все отличительные черты Office Graph связаны с автоматически определяемыми программой индивидуальными и принимаемыми на себя отношениями.

Возможно, вы что-то знаете, а, может быть, никогда и не слышали о языке запросов графов GQL для SharePoint Online. Моя статья адресована тем, кто не знаком с этим языком. Речь в ней пойдет о том, что представляет собой язык, откуда он появился и каким образом может принести пользу вашей компании.

Компания Microsoft выпустила платформу под именем Office Graph как базовую составную часть Office 365. Эта платформа предоставляет данные, основанные на пользовательском контенте, учетных данных и действиях. Она известна как Intelligent Framework для Office 365. Платформа построена на основе очень сложного кода машинного обучения, позволяющего назначать связи между сообщениями электронной почты, переговорами в социальных сетях, встречах и документах в SharePoint и OneDrive. Цель Office Graph — построение настраиваемых полнофункциональных приложений, отвечающих актуальным потребностям пользователей. Так, Office Graph может определить связь на основе документа и пользователей, совместно работавших с ним. Каждый из пользователей произвел какие-то действия с контентом, поэтому связь определяется в программе Office Graph.

Office Graph содержит данные, представляющие объекты, в том числе людей, файлы и взаимодействие между объектами. Такие объекты именуются «переходами» (edge). Каждый переход в Office Graph содержит источник и целевой узел: источник именуется субъектом (actor), а целевой узел именуется объектом. Переход представляет собой связь между субъектом и объектом. Сам переход имеет типы и описания свойств, которые можно использовать в программном коде и представлять различные идентификаторы и значения, необходимые для запросов.

Office Graph получает информацию из SharePoint Online, OneDrive for Business, Exchange Online, Azure Active Directory и Delve. Пользователи, направляющие запросы в Office Graph, обычно ищут объекты, связанные с другими объектами, а также базовую информацию о них и их связях. Например, вы можете искать «все, связанное с Джеймсом Брауном» или «все элементы, созданные Брюсом Ли».

В языке запросов графов предусмотрен один базовый оператор, ACTOR. Этот оператор обнаруживает все действия выбранного субъекта, соответствующего примененному фильтру, а затем возвращает все объекты для типов действий. В примере «все, связанное со мной» используется следующий синтаксис:

ACTOR (ME)

В результате возвращаются объекты, связанные со мной. Однако, если выполнить тот же запрос, но для «Джеймса Брауна», в первую очередь необходимо знать его идентификатор (в данном случае — 123). При этом используется следующий синтаксис:

ACTOR (123)

Чтобы извлечь оба объекта, связанные одновременно со мной и Джеймсом Брауном, требуется использовать следующий синтаксис:

AND (ACTOR (ME), ACTOR (123))

Объединение ACTORS и ACTIONS обеспечивает дополнительные возможности извлечения контента. Если нужно получить объекты, недавно просмотренные как мной, так и Джеймсом Брауном, используется синтаксис, аналогичный приведенному выше. Однако на этот раз добавляется число ACTION, указывающее Office Graph на необходимость возвращать только недавно просмотренные объекты.

AND (ACTOR (ME, action:1001), ACTOR (123, action:1001))'

Как мы видим, синтаксис довольно простой для запросов любого типа, так как основан на передаче ACTOR, а затем FILTER некоторого вида.

Текущий документированный список описаний и типов ACTION можно найти по адресу: https://msdn.microsoft.com/office/office365/howto/query-Office-graph-using-gql-with-search-rest-api. Сокращенный список представлен в таблице.

 

Список описаний и типов действий ACTION

Типичный способ взаимодействия с Office Graph с использованием языка запросов графов — через API-интерфейсы SharePoint REST, доступные в клиенте Office 365. Возвращаясь к примеру с извлечением объектов, недавно просмотренных как мной, так и Джеймсом Брауном, мы используем следующий синтаксис API REST:

/_api/search/query? Querytext='*'
  &Properties='GraphQuery:
  AND (ACTOR (ME\, action\:1001)\,
  ACTOR (123\, action\:1001))'

В результате будет возвращен JSON, к которому можно направлять дальнейшие запросы и представлять в стандартном SharePoint или обычных элементах управления. NET.

Данный процесс обеспечивает превосходный способ персонализировать работу пользователя в приложениях, построенных на Office 365. Этот пример позволит вам понять, с чего следует начинать, приступая к работе с Office Graph и языком запросов графов.