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:

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

  1. 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:

BagianTools
RDF DataEasyRDF (di PHP Laravel)
API OutputJSON-LD
Frontend Viewvis-network.js (JavaScript)
VisualisasiGraph 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! ✅

 

Selamat hari raya idul fitri

0 Comments