Компонування семантичних REST-сервісів з використанням NEO4J
Розробка моделі опису сервісів, орієнтованої на гіпермедіа. Генерування графа та переходів станів (операції HTTP) в полі активності. Розгляд анотацій, запитів і опису JSON. Особливості компонування семантичних REST-сервісів з використанням NEO4J.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | статья |
Язык | украинский |
Дата добавления | 21.04.2021 |
Размер файла | 2,3 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru
Національний технічний університет України «Київський політехнічний інститут імені Ігоря Сікорського»
Компонування семантичних REST-сервісів з використанням NEO4J
Магас Валентин Васильович Студент
Анотація
Пропонується модель опису сервісів, що орієнтована на гіпермедіа, яка передбачає генерування графа, що захоплює переходи станів (операції HTTP) в шарі активності. Модель сервісів була реалізована у вигляді анотацій і опису JSON. Прототип був розроблений з використанням Neo4j; набір реальних Web API був обраний для ілюстрації нашого підходу.
Ключові слова: Microdata, Neo4j, REST-сервіс, JSON.
Аннотация
КОМПОНОВКА СЕМАНТИЧЕСКИХ REST-СЕРВИСОВ С ИСПОЛЬЗОВАНИЕМ NEO4J
Магас Валентин Васильевич студент Национального технического университета Украины «Киевский политехнический институт имени Игоря Сикорского»
Предлагается модель описания сервисов, ориентированная на гипермедиа, которая предусматривает генерирование графа, захватывает переходы состояний (операции HTTP) в слое активности. Модель сервисов была реализована в виде аннотаций на и описания JSON. Прототип был разработан с использованием Neo4j; набор реальных Web API был выбран для иллюстрации нашего подхода.
Ключевые слова: Microdata, Neo4j, REST-сервис, JSON.
Summary
Mahas Valentyn Student of the National Technical University of Ukraine «Igor Sikorsky Kyiv Polytechnic Institute»
COMPOSITION OF SEMANTIC REST-SERVICES USING NEO4J
We offer a service description model focused on hypermedia that allows the generation of a graph that captures state transitions (i.e. HTTP operations) in an activity layer. The service model was implemented as annotations, and a JSON description. A prototype was developed using Neo4J, and a set of real Web APIs was chosen to illustrate our approach.
Key words: Microdata, Neo4j, REST-service, JSON.
Вступ
Існує два основні підходи до створення Web-сервісів. Один заснований на WSDL / SOAP і більшою мірою поширений в сценаріях B2B; інший -- REST-сервіси або Web API (Application Programmable Interfaces), може часто застосовуються у Web. Web API -- це популяр- ний_спосіб надання доступу до ресурсу, уникаючи складності стека технологій і стандартів, чого вимагають сервіси створені на основі SOAP. На практиці Web API має певні недоліки, такі як виклики RPC тунельовані протоколом HTTP і обмежена еволюційність сервісу, оскільки зв'язок між клієнтом і сервером відбувається шляхом опису сервісу, написаного природною мовою і, зазвичай, надається у вигляді HTML-сторінок. REST сервіси, на противагу, вимагають додаткових обмежень, таких як узгодження контенту, відповідне використання мережевого протоколу і гіпермедіа.
REST-сервіси часто супроводжуються неофіційними документами(наприклад, HTML-сторінки), які написані природною мовою, і використання інтерфейсу сервісу машинними клієнтами. Наразі, немає універсального вирішення даної проблеми і дієвою практикою вважається підключення бібліотек, які додають опис до сервісів. [1] Такий підхід часто неточний, і змушує розробників машинного клієнта брати участь у фазі пробної помилки. У цих умовах, автоматичне виявлення та компонування сервісів важке для підтримки або і зовсім не можливе для реалізації. Основна складність полягає в тому, що в поточних описах сервісів необхідний людський інтелект щоб зрозуміти очікування сервісу від клієнта.
У нашій роботі пропонується підхід, який є сервісним описом, що враховує уніфіковане обмеження інтерфейсу REST, тобто, ідентифікація ресурсів, маніпулювання ресурсами через представлення та гіпермедіа як двигун стану програми. Наведемо реалізацю в JSON, що дозволяє створювати зручну для читання документацію.
Реалізація заснована на метамоделі (Рисунок 1), яка передбачає існування двох шарів: активності (охоплює механізм зміни стану ресурсу) і семантики (охоплює семантику ресурсу).
Рис. 1 Метамодель
Щоб проілюструвати наш підхід, розглянемо наступний сценарій, що формується з трьох веб-ін- терфейсів: Spotify, Songkick і Uber. API Spotify надає доступ до каталогу служби потокової передачі музики. API Songkick надає доступ до бази даних живої музики з інформацією про майбутні і минулі концерти, а також сетлісти. Uber API дозволяє користувачеві отримувати інформацію про типи транспортних послуг, ціну і передбачуваний час прибуття, а також профіль і діяльність користувача.
Розглянемо прикладну задачу композиції сервісів: Користувач хоче відвідати концерт його улюбленого гурту але найближчим часом концертів не передбачається. Тому він вирішує сходити на концерт схожого виконавця. Для цього йому потрібно дізнатися конкретне місце проведення, а також деталі поїздки на таксі на обрану подію.
Така ціль може бути досягнута операціями GET (інформація про виконавців, концертні дані, ціни тощо) до ресурсів Songkick або Spotify. Взаємодія з Uber потрібна консультацій стосовно тарифів (GET), а потім для виклику таксі. Характерно, що інтерфейси неоднорідні і семантика сервісу дозволить виявити відповідні ресурси. Крім того, необхідно опрацьовувати різні ситуації (наприклад, гурт не підходить по стилю, місце події може бути занадто далеко, або оплата за таксі може бути занадто високою). Також важливо розглянути семантику операцій, оскільки ресурс може включати кілька посилань, що відповідають різним запитам з різною семантикою.
1. Реалізація опису сервісів у JSON
Перейдемо до знайомства з використанням JSON для створення окремого і повного опис RESTful веб-сервісу. Він задовольняє дві вимоги: генерування легкої для читання документації і надання машинним клієнтам правил взаємодії з сервісом. Ознайомитись з реалізацією можна на рисунку 2.
REST-сервіс описаний за допомогою таких елементів як name, description, base URI і version. Як видно з рисунку 3, prefix являє собою простір імен ключових значень (починаючи з символу «@») що скорочує посилання на семантичні елементи. На відміну від моделі Microdata, модель JSON описує набір ресурсів, отже, веб-сервіси складаються з ресурсів (Rescourses), описаних в зручному для сприйняття людиною форматі, а також концептуальний об'єкт, який представляє його семантику через посилання (URI). Ресурси є наріжним каменем нашого опису. Кожен ресурс має точку входу, деякі точки входу є абсолютними URL-адресами, тоді як інші посилаються на екземпляри ресурсів, і, як наслідок, URL- адрес включає параметри, значення яких повинні бути визначені під час виконання (type=»path»); такі параметри також посилаються на концепцію. Ресурси, назва та опис в цілому також посилаються на відповідну концепцію ресурсів. Дії пов'язані з операціями, тобто з мережевим протокольним методами, що застосовуються до даного ресурсу. Кожна операція має посилання на концепцію дії, яка визначає операцію на рівні бізнесу (наприклад для покупки, оренди, пошуку тощо).
Рис. 2 Реалізація метамоделі з використанням JSON
Рис. 3 Фрагмент, який зображає використання JSON для опису ресурсу схожих виконавців
Операції також мають параметри і логічний вираз, які дозволяють розробникам вказувати правила, що визначають, які параметри є обов'язковими. Параметри мають ім'я, тип (bool, string), місцезнаходження (path, url, header або body), посилання на концепцію і додаткові специфікації в залежності від кожного типу (maximum, minimum, enumeration і default). Нарешті, відповідь (Response) повністю з'єднує граф, що містить посилання на концепцію, яка очікується для повернення разом з кодом стану HTTP та описом. Природно, що ми описуємо характеристики очікуваної відповіді, однак через динамічний характер REST фактична відповідь може змінюватися.
2. Композиція семантичних REST сервісів
Інформація про веб-сервіси (вершини та ребра) зберігається у графовій базі даних Neo4j. Ця база даних була обрана через відчутну гнучкість, продуктивність і хорошу масштабованість. Для поточної реалізації входом є JSON. Було релізовано два Python парсери. Перший перетворює HTML описи в JSON. Другий обробляє опис JSON і генерує вершини та ребра, які будуть зберігатися в базі даних з використанням бібліотеки Py2neo. JSON описи перевіряються за допомогою JSON Schema перед її парсингом.
Рис. 4 Структура графа реалізації підходу
Описи сервісів, аналізуються для створення графу (рисунок 4). Вершини та ребра позначені атрибутами: закруглені прямокутники для вершин і прямокутні прямокутники для ребер. Вершини та ребра мають внутрішній ідентифікатор в графі, GRI (ідентифікатор ресурсу графа). Resources, Operations, Parameters і Responses -- це вершини в графі, тоді як Actions стають семантичним ребром, що з'єднує ресурси і операції. Resources, Operations, Parameters та Actions пов'язані з Concepts ребром reference.
Concepts самі є вершинами, описаними двома атрибутами, URI і label, що позначає його тип. Concepts можуть відповідати складній семантичній моделі, такій як онтологія (наприклад, відношення «isA» від вершини 6 до 3). У випадку параметрів вони класифікуються на 4 типи (path, url, header і body), і відносяться до Concept Parameter. Відносини між шарами активності RAD також включені і анотуються за допомогою семантики відносини та ідентифікатора GRI.
Повернемося до сформульованої вище задачі з композиції семантичних сервісів. Враховуючи, що користувач знає словник Schema.org, йому потрібно виконати наступні запити:
По-перше, необхідно виявити сервіси, які дозволяють користувачеві шукати аналогічних виконавців (action.GRI = «/GetSimilarArtistsAction»), що забезпечують MusicGroupCollection як результат. На рисунку 5 (b) показаний запит Cypher, який вирішує поставлене завдання.
Згодом користувач повинен знайти інформацію про виконавців, отриманих в попередньому запиті (рисунок 5 (c)). У цьому випадку тільки Songkick може забезпечити таку функціональність, як показано на рисунку 6 (b).
Наступний крок -- знайти інформацію про доступність таксі для знайденого місця проведення (рисунок 5 (d)). Тепер тільки один сервіс (Uber) надає точку входу такий запит: «/GetTaxiCollectionAction» на рисунку 6 (c). Запити (e) і (f) на рисунку 5 представляють наступні кроки: знайти ціни і прогнозований час у дорозі і надати відповіді, аналогічні запитом для доступності таксі, як показано на малюнку 6 (d).
Зверніть увагу, що на даний момент композиція сервісів не може виконуватися автоматично, так як необхідно підтримувати потік даних. Наприклад, для знаходження схожих виконавців, користувач повинен надати інформацію, таку як artists_id і apikey для випадку Songkick і назва музичної групи для випадку Spotify. Тільки два ресурси зі знайдених 7 підтримують параметри artists_id і apikey, Artist's Gigography і ресурс Calendar by Artist, обидва вимагають додаткові параметри конфігурації, такі як page, order і per jage. Однак семантика попередньо го ресурсу відноситься до минулих подій, тоді як останній ресурс відноситься до майбутніх подій. У всіх цих випадках необхідне втручання людини.
Висновок
сервіс запит семантичний гіпермедіа
В даній роботі було сформовано два принципових припущення: розробники сервісів будуть дотримуватися загальної лексики, щоб семантично анотувати їх сервіси і що відповіді сервісів слідують підходу гіпермедіа, що з'єднує їх через посилання. Були запропоновані різні методи для автоматичного зв'язування ресурсів і концепцій [7]. На основі методів, реалізовано робочий прототип, що проілюстрував життєздатність зроблених припущень. Ми слідували евристичному та конвенційному підходам, оскільки реалізуємо пробний інструмент, проте наш намір полягає в продовженні вивчення обробки природної мови і non-logical підходу.
Наш підхід додає новий рівень до архітектури REST, що становить певну проблему для обслуговування. Також важливою проблемою є потік даних між операціями, тобто, перетворення даних відповіді в параметри для виконання нової операції. Завдання не тільки передбачає використання різних типів даних (string, boolean, integer), але також і створення даних, які семантично еквівалентні (хеш-коди для різних API, які виробляються слідуючи різним протоколам).
Отже, анотації виглядають ефективною альтернативою для досягнення поставленої мети. Ця робоча пропозиція спрямована на надання стратегії для виявлення і компонування REST-сервісів, які включають опис, зрозумілий як розробникам так і машинам. В якості подальшої роботи ми зосередимося на виявленні зв'язків між ресурсами на семантичному рівні, та рівні активності.
Рис. 5 Запити Cypher
Рис. 6 Результати виконання запитів з рисунку 5
Література
1. S. Mayer and D. Guinard, «An extensible discovery service for smart things,» in Proceedings of the Second International Workshop on Web of Things. ACM, 2011, p. 7.
2. R. T. Fielding, «Architectural styles and the design of network-based software architectures,» Ph.D. dissertation, University of California, Irvine, Irvine, California, 2000.
3. R. Chinnici, M. Gudgin, J.-J. Moreau, J. Schlimmer, and S. Weerawarana, «Web services description language (wsdl) version 2.0 part 1: Core language,» W3C working draft, vol. 26, 2004.
4. M. Hadley, «Web application description language,» World Wide Web Consortium, Member Submission SUBM- wadl-20090831, August 2009.
5. D. John and M. Rajasree, «Restdoc: Describe, discover and compose restful semantic web services using annotated documentations,» International Journal of Web & Semantic Technology (IJWesT), vol. 4, no. 1, 2013.
6. R. Verborgh, T. Steiner, D. Van Deursen, J. De Roo, R. Van de Walle, and J. Gabarr'o Vall'es, «Description and interaction of restful services for automatic discovery and execution,» in Proceedings of the FTRA 2011 International Workshop on Advanced Future Multimedia Services, 2011.
7. J. Lathem, K. Gomadam, and A. P. Sheth, «Sa-rest and (s)mashups: Adding semantics to restful services,» in First IEEE International Conference on Semantic Computing (ICSC2007), Irvine, California, September 2007, pp. 469-476.
8. J. Kopeck'y, K. Gomadam, and T. Vitvar, «hrests: An html microformat for describing restful web services,» in 2008 IEEE/WIC/ACM International Conference on Web Intelligence, Sydney, Australia, December 2008, pp. 619-625.
9. B. Adida, M. Birbeck, S. McCarron, and S. Pemberton, «Rdfa in xhtml: Syntax and processing -- a collection of attributes and processing rules for extending xhtml to support rdf,» World Wide Web Consortium, Recommendation REC-rdfa-syntax- 20081014, October 2008. Размещено на Allbest.ru
...Подобные документы
Поняття черги в програмуванні, основні операції з чергою і їх реалізація. Опис алгоритму й специфікація програми. Розробка додатку з використанням задачі Ларсона по опису зв'язного неорієнтованого графа. Алгоритм розв’язку і результати виконання програми.
курсовая работа [1,1 M], добавлен 14.09.2012Загальні відомості про дистанційне навчання. Класифікація та характеристика соціальних сервісів. Історія соціальних мереж, технологія та статистика. Удосконалення дистанційного навчання у веб-центрі. Полегшення роботи при написанні звітів, відеоуроки.
курсовая работа [2,1 M], добавлен 15.04.2013Клавіатурний тренажер - вид програмних додатків або онлайн-сервісів, призначених для навчання набору на комп'ютерній клавіатурі. Інкапсуляція - приховування деталей про роботу класів від об'єктів, що їх використовують або надсилають їм повідомлення.
курсовая работа [1,7 M], добавлен 20.05.2017Напрямки використання інформаційно-комунікаційних технологій в процесі навчання студентів. Визначення шляхів залучення комунікаційних мереж і сервісів в систему вищої освіти. Побудова функціонально-інформаційної та техніко-технологічної моделі деканату.
дипломная работа [6,4 M], добавлен 27.01.2022Загальні факти про комп’ютерні ігри. Розгляд основ розробки програмного (джерельного) коду, контенту (малюнки, моделі, музика) та ігрових механік гри "Три стакани". Правила використанням засобів WinAPI. Створення математичної моделі алгоритму програми.
курсовая работа [405,6 K], добавлен 09.06.2015Дослідження вбудованого акселерометра, розробка алгоритму автоматичного підрахунку фізичнх вправ і його практична реалізація у вигляді програмного продукту для смартфонів iPhone. Налаштування сервера. Поширення програмного продукту, його тестування.
дипломная работа [2,6 M], добавлен 14.12.2012Створення баз даних з використанням платформи Microsoft Access 2010 та структурованих запитів SQL. ER-діаграма бази даних з описом кожної сутності та її атрибутів. Розробка інтерфейсу, елементів навігації та макросів для автоматичного виконання запитів.
курсовая работа [3,1 M], добавлен 21.08.2014Поняття та призначення технології скрінкастінгу. Огляд програм та сервісів для запису відео з екрану монітора. Основні концепції створення додатків у середовищі Wіndows. Особливості написання програм у середовищі Delphі. Програмна реалізація системи.
дипломная работа [8,5 M], добавлен 22.10.2012Аналіз літературних та нормативних джерел регулювання діяльності політичних партій. Дослідження і визначення сутності файлообмінних сервісів та їх значення для функціонування Львівської обласної організації Політичної партії "УДАР Віталія Кличка".
курсовая работа [1,1 M], добавлен 30.01.2014Проектування процесора для виконання (з використанням доповняльного коду без відновлення розрядів остачі) операції ділення в двійково-десятковій системі числення. Розробка алгоритму виконання операції та операційного автомату. Розробка карти прошивки.
курсовая работа [263,3 K], добавлен 14.03.2013Опис та порівняння онлайнових електронних перекладних словників ABBYY Lingvo та MultiLex, зручність інтерфейсу, кількість додаткових функцій та сервісів. Головні можливості та порівняння глибини тлумачення електронних онлайнових тлумачних словників.
курсовая работа [38,5 K], добавлен 22.11.2010Онлайн-страхування в мережі Інтернет, його правовий аспект. Програмне забезпечення для організації веб-сайтів в мережі Інтернет: CMS. Система керування вмістом для публікації інформації в Інтернеті: Joomla. Описання процесу створення й реалізації програми
курсовая работа [4,3 M], добавлен 30.09.2014Розробка системи, що виконує функцію автоматизації процесу пропускного пункту підприємства з використанням мов програмування PHP, JavaScript і MySql. Практичні аспекти проектування ГІС із використанням WEB-технологій і баз даних, тестування програми.
дипломная работа [1,5 M], добавлен 25.10.2012Розробка VHDL-програми та синтез елементів пристрою для реалізації підстановки в S-блоках алгоритму DES. Основна функція шифрування (функція Фейстеля). Генерування ключів ki. Проведення симуляції роботи даних програм в середовищі САПР Aldec Riviera 2004.
курсовая работа [176,9 K], добавлен 21.01.2013Визначення та класифікація семантичних мереж. Їх трирівнева архітектура. Семантичні мережі у пам’яті людини. Конкретизація, ієрархія й наслідування фреймів. Асиміляція нових знань на основі семантичних мереж. Поповнення первинних описів на основі фреймів.
реферат [57,6 K], добавлен 11.06.2010Редагування за допомогою текстового редактора NotePad вхідного файлу даних. Програмна реалізація основного алгоритму з використанням засобів об'єктно-орієнтованого програмування. Об’ява та опис класів і об'єктів. Розробка допоміжних програмних засобів.
курсовая работа [69,4 K], добавлен 14.03.2013Розробка програми для моделювання роботи алгоритму Дейкстри мовою C# з використанням об’єктно-орієнтованих принципів програмування. Алгоритм побудови робочого поля. Програмування графічного інтерфейсу користувача. Тестування програмного забезпечення.
курсовая работа [991,4 K], добавлен 06.08.2013Розробка програми на мові програмування Асемблер для обчислення виразу. Розрахунок значень А, В, С у процедурах. Аналіз отриманих результатів за допомогою відлагоджувальника Turbo Debugger при різних заданих значеннях та перевірка їх правильності.
лабораторная работа [203,4 K], добавлен 09.01.2013Розгляд підходу до інтерактивного вивчення англійської мови професійного спрямування студентами-економістами з використанням соціальних мереж. Характеристика різноманітних видів діяльності в соціальних мережах Twitter, Facebook, YouTube, Wikipedia.
статья [20,6 K], добавлен 27.08.2017Серверна мова програмування PHP. База даних MySQL. Мова та стандарти XML. Рівні та способи взаємодії засобів розробки. Засоби трансформації XML. Розробка інтернет-додатку з використанням PHP, MYSQL, XML. Розрахунок трудомісткості створення системи.
дипломная работа [1,8 M], добавлен 19.08.2012