Operasi membuat, membaca, memperbarui, dan menghapus (Buat/Baca/Perbarui/Hapus, CRUD) adalah operasi database yang paling dasar, namun juga merupakan operasi yang paling penting. Operasi CRUD biasanya dilakukan dengan menggunakan Structured Query Language (SQL) dalam sistem database relasional. Ketika Web menjadi lebih berorientasi pada data, ada kebutuhan untuk beralih dari operasi CRUD berbasis SQL ke operasi CRUD berbasis Web Semantik. Pelajari cara menggunakan PHP untuk melakukan operasi CRUD dengan web berbasis semantik. Singkatan yang umum digunakan
API - Antarmuka Pemrograman Aplikasi
CRUD - Buat/Baca/Perbarui/Hapus
HTTP - Protokol Transfer Hiperteks
MVC - Pola - Tampilan - Kontrol Model-Tampilan-Pengontrol
OOP - Pemrograman Berorientasi Objek
RDF - Kerangka Deskripsi Sumber Daya
SPARQL - Protokol Sederhana dan Bahasa Kueri RDF
SQL - Bahasa Kueri Terstruktur Terstruktur
UI - Antarmuka pengguna
W3C - Konsorsium World Wide Web
Saat mengembangkan aplikasi web, ini adalah standar untuk membuat struktur database yang menampung kode sisi server untuk lapisan logika dan lapisan UI . Untuk terhubung ke database, kode sisi server perlu melakukan beberapa operasi dasar seperti membuat, memperbarui, menghapus, dan—yang paling penting—membaca catatan. Karena database backend aplikasi Web biasanya merupakan database relasional, operasi CRUD ini dilakukan menggunakan bahasa SQL yang terkenal. Namun, seiring dengan semakin banyaknya pengembangan Web yang mengadopsi pemrograman berorientasi objek (OOP), modelnya pun berubah.
Resource Description Framework (RDF) adalah cara ideal untuk mendeskripsikan objek sambil menjaga makna data. Protokol Sederhana dan Bahasa Kueri RDF (SPARQL—diucapkan "sparkle") adalah bahasa yang biasanya digunakan untuk menanyakan data ini karena struktur pernyataannya cocok dengan struktur RDF itu sendiri. RDF dan SPARQL keduanya merupakan teknologi yang disebut tumpukan Web semantik.
Untuk sepenuhnya menerapkan konsep Web Semantik, Anda dapat menggunakan SPARQL untuk menerapkan teknik pengembangan Web tradisional pada data RDF. Artikel ini akan menunjukkan kepada Anda cara menyambung ke RDF menggunakan model desain Model-View-Controller (MVC) yang disederhanakan, bahasa skrip sisi server PHP, dan SPARQL—sebagai lawan menggunakan SQL dalam sistem database relasional.
PrasyaratOperasi CRUD SQL dan SPARQL
Artikel ini mengasumsikan pemahaman dasar tentang SQL, PHP, dan pengembangan aplikasi Web. Memahami Web Semantik juga bermanfaat. Untuk menjalankan perintah buat, perbarui, dan hapus pada data berbasis Semantic Web, Anda memerlukan database Semantic Web yang mendukung spesifikasi SPARQL/Update.
Saat mengembangkan dengan SQL dan SPARQL, Anda perlu melihat persamaan dan perbedaan antara operasi CRUD. Listing 1 menunjukkan kode SQL untuk operasi baca.
SELECT realname, dob, locationFROM UserTable WHERE realname = "John Smith";
Bandingkan kode berbasis SQL ini dengan kode berbasis SPARQL yang ditunjukkan pada Listing 2. Alasan penggunaan kedua operasi baca ini adalah karena keduanya paling mudah dipahami, diterapkan, dan diilustrasikan. Ini sama untuk SQL dan SPARQL.
PREFIX foaf:< http://xmlns.com/foaf/0.1/ > PREFIX rdf: < http://www.w3.org/1999/02/22-rdf-syntax-ns#>PILIH ?uri ?nama ?
dob ?locationFROM<http://www.example.org/graph>WHERE
{ ?urirdf:type foaf:Person ;foaf:name "John Smith" ;foaf:birthday?dob ;foaf:location ?location .} ;
Saat melihat kedua daftar tersebut, pemikiran pertama Anda mungkin adalah versi SPARQL jauh lebih panjang daripada versi SQL. Ini benar, tetapi jangan tertipu dengan berpikir bahwa SQL lebih sederhana dan bersih. Bergantung pada mesin yang dijalankannya, SPARQL semuanya dapat dikirimkan melalui apa yang disebut efek data tertaut. Selain itu, memungkinkan skema dinamis karena memiliki perspektif berorientasi objek yang terhubung satu sama lain, berbeda dengan perspektif relasional SQL yang ketat. Jika Anda ingin memisahkan tabel database relasional menjadi banyak silo data, Anda sebenarnya akan menggunakan lebih banyak baris kode SQL daripada SPARQL—belum lagi banyak deskriptor GABUNG yang mengganggu di SQL.
Dua baris pertama SPARQL adalah pernyataan PREFIX. Menurut teori Web Semantik, semua konten—apakah itu objek atau sumber grafik data (juga objek)—memiliki Uniform Resource Identifier (URI). Baris PREFIX hanya menerapkan tag sementara ke beberapa URI—dalam hal ini, Friend of a Friend dan skema RDF. Keuntungannya adalah Anda nantinya bisa menggunakan pernyataan PREFIX dalam kueri tanpa harus menggunakan URI lengkap.
Baris kode SPARQL berikutnya menjelaskan permintaan kueri. Pernyataan ini pada dasarnya sama dengan pernyataan SQL, kecuali permintaan tambahan untuk URI. Perhatikan penggunaan tanda tanya (?) untuk menunjukkan bahwa suku tersebut adalah variabel.
Pernyataan FROM menjelaskan di mana mendapatkan data. Hal yang sama terjadi pada SQL dan SPARQL, hanya saja pada SPARQL nama sumber data adalah URI, bukan string yang mewakili lokasi fisik pada komputer atau jaringan.
Pernyataan WHERE keduanya sangat berbeda, karena dengan SPARQL, Anda harus menentukan skema yang digunakan untuk memperoleh data. Sekali lagi, jika Anda mencoba melakukan ini menggunakan pendekatan relasional, ini jauh lebih mahal daripada SQL biasa: Anda perlu menggunakan PHP, bahasa pemrograman Java, atau bahasa sisi server lainnya untuk melakukan pemeriksaan antar sumber data. Apa yang dicapai oleh baris kode SPARQL relatif mudah, termasuk memastikan bahwa data yang diambil hanya bertipe Person. SPARQL akan mendapatkan nama dan lokasi serta melakukan beberapa pencocokan pola untuk menemukan John Smith yang benar.
Membuat
operasi CRUD di SPARQL umumnya lebih rumit daripada operasi baca. Namun, operasi ini dapat diselesaikan. Pertama, operasi buat menyisipkan catatan atau objek baru ke dalam tabel atau bagan.
INSERT INTO UserTable (nama asli, dob, lokasi) VALUES ("John Smith", "1985-01-01", "Bristol, UK");
Sekarang, bandingkan kode berbasis SQL di Listing 3 dengan kode berbasis SPARQL di Listing 4 buat operasi di .
PREFIX foaf:< http://xmlns.com/foaf/0.1/ > PREFIX rdf: < http://www.w3.org/1999/02/22-rdf-syntax-ns#>MASUKKAN KE GRAFIK < http: //www.example.com/graph > (?nama asli, ?dob, ?lokasi) {< http://www.example.org/graph/johnsmith#me > rdf:Type foaf:Person ; Smith" ; foaf:ulang tahun <1985-01-01T00:00:00> ; foaf:lokasi "Bristol, Inggris" }