Операции создания, чтения, обновления и удаления (Create/Read/Update/Delete, CRUD) — это самые основные операции с базой данных, но они также являются наиболее важными операциями. Операции CRUD обычно выполняются с использованием языка структурированных запросов (SQL) в системах реляционных баз данных. Поскольку Интернет становится все более ориентированным на данные, возникает необходимость перехода от операций CRUD на основе SQL к операциям CRUD на основе семантической сети. Узнайте, как использовать PHP для выполнения операций CRUD в семантической сети. Часто используемые сокращения
API — интерфейс прикладного программирования
CRUD — создание/чтение/обновление/удаление
HTTP — протокол передачи гипертекста
MVC — шаблон — представление — модель управления-представление-контроллер
OOP — объектно-ориентированное программирование
RDF — структура описания ресурсов
SPARQL — простой протокол и Язык запросов RDF
SQL — структурированный язык структурированных запросов.
Пользовательский интерфейс — пользовательский интерфейс.
W3C — Консорциум World Wide Web.
При разработке веб-приложений стандартом является создание структуры базы данных, в которой размещается серверный код для уровня логики и уровня пользовательского интерфейса. . Чтобы подключиться к базе данных, серверный код должен выполнить некоторые базовые операции, такие как создание, обновление, удаление и, что наиболее важно, чтение записей. Поскольку серверная база данных веб-приложений обычно представляет собой реляционную базу данных, эти операции CRUD выполняются с использованием хорошо известного языка SQL. Однако по мере того, как в веб-разработке все чаще применяется объектно-ориентированное программирование (ООП), модель изменилась.
Структура описания ресурсов (RDF) — это идеальный способ описания объектов, сохраняющий смысл данных. Язык запросов Simple Protocol и RDF (SPARQL — произносится как «искра») — это язык, который обычно используется для запроса этих данных, поскольку его структура операторов соответствует структуре самого RDF. RDF и SPARQL — это технологии так называемого семантического веб-стека.
Чтобы в полной мере применить концепции семантической сети, вы можете использовать SPARQL для применения традиционных методов веб-разработки к данным RDF. В этой статье показано, как подключиться к RDF, используя упрощенную модель проектирования Модель-Представление-Контроллер (MVC), серверный язык сценариев PHP и SPARQL — в отличие от использования SQL в системе реляционных баз данных.
Предварительные условиядля операций SQL и SPARQL CRUD
В этой статье предполагается базовое понимание разработки SQL, PHP и веб-приложений. Понимание семантической сети также полезно. Чтобы выполнять команды создания, обновления и удаления данных на основе семантической сети, вам нужна база данных семантической сети, поддерживающая спецификацию SPARQL/Update.
При разработке с использованием SQL и SPARQL необходимо учитывать сходства и различия между операциями CRUD. В листинге 1 показан код SQL для операции чтения.
SELECT realname, dob, locationFROM UserTable WHERE realname = "John Smith"
Сравните этот код на основе SQL с кодом на основе SPARQL, показанным в листинге 2. Причина использования этих двух операций чтения заключается в том, что их легче всего понять, реализовать и проиллюстрировать. Это одинаково как для SQL, так и для SPARQL.
ПРЕФИКС foaf: < http://xmlns.com/foaf/0.1/ > ПРЕФИКС rdf: < http://www.w3.org/1999/02/22-rdf-syntax-ns#>SELECT ?uri ?name ? dob ?locationFROM< http://www.example.org/graph>WHERE { ?urirdf:type foaf:Person ;foaf:name "Джон Смит" ;foaf:день рождения?dob ;foaf:location ?location .}
в сравнении
;При просмотре этих двух списков вы, вероятно, в первую очередь думаете, что версия SPARQL значительно длиннее версии SQL. Это правда, но не обманывайтесь, полагая, что SQL обязательно проще и понятнее. В зависимости от механизма, на котором он работает, SPARQL может быть реализован посредством так называемого эффекта связанных данных. Более того, он позволяет использовать динамические схемы, поскольку имеет объектно-ориентированную перспективу, связанную друг с другом, в отличие от строгой реляционной перспективы SQL. Если бы вы хотели разделить таблицу реляционной базы данных на множество хранилищ данных, вам пришлось бы использовать гораздо больше строк кода SQL, чем SPARQL, не говоря уже о множестве надоедливых дескрипторов JOIN в SQL.
Первые две строки SPARQL — это операторы PREFIX. Согласно теории семантической сети, весь контент — будь то объект или источник графа данных (также объект) — имеет универсальный идентификатор ресурса (URI). Строка PREFIX просто применяет временный тег к некоторому URI — в данном случае «Друг друга» и схеме RDF. Преимущество заключается в том, что позже вы сможете использовать оператор PREFIX в запросах без необходимости использования полного URI.
Следующая строка кода SPARQL описывает запрос запроса. Этот оператор по существу аналогичен оператору SQL, за исключением дополнительного запроса URI. Обратите внимание на использование вопросительного знака (?), чтобы указать, что термин является переменной.
Оператор FROM описывает, где получить данные. Это то же самое в SQL и SPARQL, за исключением того, что в SPARQL имя источника данных представляет собой URI, а не строку, представляющую физическое местоположение на компьютере или в сети.
Операторы WHERE в этих двух случаях совершенно разные, поскольку в SPARQL вы должны указать схему, используемую для получения данных. Опять же, если вы пытались сделать это, используя реляционный подход, это намного дороже, чем простой SQL: вам нужно использовать PHP, язык программирования Java или какой-либо другой серверный язык для выполнения проверок между источниками данных. Действия строки кода SPARQL относительно просты, включая обеспечение того, чтобы извлекаемые данные имели только тип Person. SPARQL получит имя и местоположение и выполнит сопоставление с образцом, чтобы найти правильного Джона Смита.
Создание
операций CRUD в SPARQL обычно является более сложной задачей, чем операции чтения. Однако эти операции можно выполнить. Сначала операция создания вставляет новую запись или объект в таблицу или диаграмму.
INSERT INTO UserTable (настоящее имя, дата рождения, местоположение) VALUES («Джон Смит», «1985-01-01», «Бристоль, Великобритания»
Теперь сравните код на основе SQL в листинге 3 с кодом на основе SPARQL в листинге 3)
;Листинг 4. Операция создания в .
ПРЕФИКС foaf: < http://xmlns.com/foaf/0.1/ > ПРЕФИКС rdf: < http://www.w3.org/1999/02/22-rdf-syntax-ns#> ВСТАВКА В ГРАФ < http: //www.example.com/graph > (?realname, ?dob, ?location) {< http://www.example.org/graph/johnsmith#me > rdf:Type foaf:Person ; foaf:name "Джон Смит" ; foaf:birthday <1985-01-01T00:00:00> ; foaf:location "Бристоль, Великобритания" }