Cara Implementasi Rdf Di Laravel / Php
Kalau kamu mau implementasi RDF + Visualisasi Graph di Laravel atau PHP, itu bisa banget!
caranya seperti berikut :
1. RDF di PHP
Ada beberapa library RDF di PHP seperti:
EasyRDF → https://www.easyrdf.org/
ARC2 (sedikit lama tapi masih jalan)
rdf-php (lebih ringan)
Yang paling banyak dipakai sekarang: EasyRDF
2. Flow Umum di Laravel
Laravel (PHP) untuk RDF:
Gunakan EasyRDF untuk buat, parsing, dan query RDF
Simpan data RDF atau query hasilnya
Untuk visualisasi graph (NetworkX / Matplotlib kan Python), jadi kita bisa:
a) Export RDF ke format JSON atau JSON-LD
b) Pakai library JavaScript di frontend seperti vis-network, cytoscape.js, atau d3.js untuk visualisasi graph di browser langsung.
3. Step-by-Step lebih konkrit:
✅ Install EasyRDF di Laravel Project
Tambahkan EasyRDF via Composer:
composer require easyrdf/easyrdf
✅ Contoh Membuat RDF Graph di PHP (Laravel Controller)
resource('ex:Buku001', 'ex:Buku');
$penulis = $graph->resource('ex:Penulis001', 'ex:Penulis');
$penerbit = $graph->resource('ex:Penerbit001', 'ex:Penerbit');
$buku->add('ex:judul', 'Belajar RDF');
$buku->add('ex:ditulisOleh', $penulis);
$buku->add('ex:diterbitkanOleh', $penerbit);
$buku->addLiteral('ex:tahunTerbit', 2022);
$penulis->add('ex:nama', 'Ahmad Fauzi');
$penerbit->add('ex:nama', 'Pustaka Cerdas');
// Serialize RDF Graph ke JSON-LD atau RDF/XML
$rdfJson = $graph->serialise('jsonld');
// Bisa dikirim ke View
return response()->json(json_decode($rdfJson));
}
}
✅ Frontend Visualisasi Graph
Setelah PHP menyiapkan RDF sebagai JSON-LD, kita bisa visualisasi dengan JavaScript di frontend!
Misal pakai vis-network.js:
Tambahkan di blade view (resources/views/graph.blade.php
)
<!DOCTYPE html>
<!DOCTYPE html>
<html>
<head>
<title>Visualisasi RDF Graph</title>
<script type="text/javascript" src="https://unpkg.com/vis-network/standalone/umd/vis-network.min.js"></script>
<style>
#graph { width: 100%; height: 700px; border: 1px solid lightgray; }
</style>
</head>
<body>
<h2>Graph Buku - Penulis - Penerbit</h2>
<div id="graph"></div>
<script type="text/javascript">
fetch('/rdf-graph')
.then(response => response.json())
.then(data => {
// Parsing JSON-LD RDF ke nodes & edges
let nodes = [];
let edges = [];
let nodeIds = [];
for (const [subject, props] of Object.entries(data['@graph'])) {
if (!nodeIds.includes(subject)) {
nodes.push({id: subject, label: subject});
nodeIds.push(subject);
}
for (const [predikat, objek] of Object.entries(props)) {
if (Array.isArray(objek)) {
objek.forEach(o => {
if (!nodeIds.includes(o['@id'])) {
nodes.push({id: o['@id'], label: o['@id']});
nodeIds.push(o['@id']);
}
edges.push({from: subject, to: o['@id'], label: predikat});
});
} else {
edges.push({from: subject, to: objek, label: predikat});
}
}
}
const container = document.getElementById('graph');
const dataGraph = {
nodes: new vis.DataSet(nodes),
edges: new vis.DataSet(edges)
};
const options = {
edges: { arrows: 'to' },
layout: { improvedLayout: true }
};
new vis.Network(container, dataGraph, options);
});
</script>
</body>
</html>
Flow Akhir Laravel:
Bagian | Tools |
---|---|
RDF Data | EasyRDF (di PHP Laravel) |
API Output | JSON-LD |
Frontend View | vis-network.js (JavaScript) |
Visualisasi | Graph interaktif di Browser |
Summary:
PHP Laravel buat RDF pakai EasyRDF ✅
API Response JSON-LD ✅
Visualisasi network graph di frontend browser pakai JavaScript ✅
Bisa clusterkan Buku, Penulis, Penerbit dengan warna berbeda di frontend! ✅
2 Comments
Valenriyan Kurniawan Gea
07-06-2025 at
Program yang diangkat pada website merupakan studi kasus yang menunjukkan penggunaan nested loop (for di dalam for) dalam bahasa C, dengan tambahan percabangan if dan perintah break untuk menghentikan iterasi. Tujuan utamanya adalah untuk memahami bagaimana alur kontrol bekerja saat terdapat kondisi tertentu di dalam loop bersarang. Secara khusus, program ingin mencetak nilai dari variabel i danj, kemudian menghentikan loopj (loop bagian dalam) saat j bernilai 3, serta menunjukkan bagaimana kondisi i 2 juga bisa memengaruhi alur iterasi. Namun, karena urutan if dalam loop, kondisi i 2 tidak pernah diproses lebih awal dibanding j3, sehingga memiliki dampak yang tidak terlihat secara langsung. Proses eksekusi dimulai dari perulangan luar dengan i yang berjalan dari 1 hingga 5. Di dalamnya. terdapat perulangan j yang juga berjalan dari 1 hingga 5. Pada setiap iterasi, program mencetak nilai i dan j. Ketika j bernilai 3, break dijalankan, menyebabkan loop ? langsung dihentikan dan lanjut ke iterasi i berikutnya. Karena kondisi if (j = 3) diletakkan sebelum if (i ==2), maka saat j mencapai 3, program keluar dari loop sebelum sempat mengevaluasi apakah i 2. Hal ini menunjukkan bahwa urutan penulisan if memengaruhi jalannya program, khususnya dalam situasi di mana banyak kondisi break digunakan. Hasil output program menunjukkan bahwa untuk setiap nilai i dari 1 sampai 5, j hanya mencetak hingga 3, kemudian langsung keluar dari loop j. Tidak terlihat adanya efek dari kondisi i 2, karena tidak pernah sempat dijalankan akibat j 3 selalu dieksekusi lebih dulu. Output berupa daftar pasangan i dan juntuk j= 1, 2, dan 3 di setiap iterasi i. Ini membuktikan bahwa kondisi break yang dijalankan lebih awal dalam urutan logika akan lebih dominan dalam menentukan jalannya program. Program ini sangat baik sebagai latihan memahami kontrol alur program bersarang dan bagaimana perintah break bisa digunakan secara strategis.
Valenriyan Kurniawan Gea
07-06-2025 at
Program yang diangkat pada website merupakan studi kasus yang menunjukkan penggunaan nested loop (for di dalam for) dalam bahasa C, dengan tambahan percabangan if dan perintah break untuk menghentikan iterasi. Tujuan utamanya adalah untuk memahami bagaimana alur kontrol bekerja saat terdapat kondisi tertentu di dalam loop bersarang. Secara khusus, program ingin mencetak nilai dari variabel i danj, kemudian menghentikan loopj (loop bagian dalam) saat j bernilai 3, serta menunjukkan bagaimana kondisi i 2 juga bisa memengaruhi alur iterasi. Namun, karena urutan if dalam loop, kondisi i 2 tidak pernah diproses lebih awal dibanding j3, sehingga memiliki dampak yang tidak terlihat secara langsung. Proses eksekusi dimulai dari perulangan luar dengan i yang berjalan dari 1 hingga 5. Di dalamnya. terdapat perulangan j yang juga berjalan dari 1 hingga 5. Pada setiap iterasi, program mencetak nilai i dan j. Ketika j bernilai 3, break dijalankan, menyebabkan loop ? langsung dihentikan dan lanjut ke iterasi i berikutnya. Karena kondisi if (j = 3) diletakkan sebelum if (i ==2), maka saat j mencapai 3, program keluar dari loop sebelum sempat mengevaluasi apakah i 2. Hal ini menunjukkan bahwa urutan penulisan if memengaruhi jalannya program, khususnya dalam situasi di mana banyak kondisi break digunakan. Hasil output program menunjukkan bahwa untuk setiap nilai i dari 1 sampai 5, j hanya mencetak hingga 3, kemudian langsung keluar dari loop j. Tidak terlihat adanya efek dari kondisi i 2, karena tidak pernah sempat dijalankan akibat j 3 selalu dieksekusi lebih dulu. Output berupa daftar pasangan i dan juntuk j= 1, 2, dan 3 di setiap iterasi i. Ini membuktikan bahwa kondisi break yang dijalankan lebih awal dalam urutan logika akan lebih dominan dalam menentukan jalannya program. Program ini sangat baik sebagai latihan memahami kontrol alur program bersarang dan bagaimana perintah break bisa digunakan secara strategis.