Vorgänge zum Erstellen, Lesen, Aktualisieren und Löschen (Erstellen/Lesen/Aktualisieren/Löschen, CRUD) sind die grundlegendsten Datenbankvorgänge, aber auch die wichtigsten Vorgänge. CRUD-Operationen werden in relationalen Datenbanksystemen normalerweise mithilfe der Structured Query Language (SQL) ausgeführt. Da das Web immer datenorientierter wird, besteht die Notwendigkeit, von SQL-basierten CRUD-Operationen zu Semantic Web-basierten CRUD-Operationen überzugehen. Erfahren Sie, wie Sie PHP verwenden, um CRUD-Operationen mit dem semantikbasierten Web durchzuführen. Häufig verwendete Abkürzungen
API – Application Programming Interface
CRUD – Create/Read/Update/Delete
HTTP – Hypertext Transfer Protocol
MVC – Pattern – View – Control Model-View-Controller
OOP – Object-Oriented Programming
RDF – Resource Description Framework
SPARQL – Simple Protocol und RDF-Abfragesprache
SQL – Strukturierte strukturierte Abfragesprache
UI – Benutzeroberfläche
W3C – World Wide Web Consortium
Bei der Entwicklung von Webanwendungen ist es ein Standard, eine Datenbankstruktur zu erstellen, die den serverseitigen Code für die Logikschicht und die UI-Ebene enthält . Um eine Verbindung zu einer Datenbank herzustellen, muss serverseitiger Code einige grundlegende Vorgänge ausführen, z. B. das Erstellen, Aktualisieren, Löschen und – was am wichtigsten ist – das Lesen von Datensätzen. Da es sich bei der Backend-Datenbank von Webanwendungen in der Regel um eine relationale Datenbank handelt, werden diese CRUD-Operationen mit der bekannten SQL-Sprache ausgeführt. Da die Webentwicklung jedoch zunehmend auf objektorientierte Programmierung (OOP) setzt, hat sich das Modell geändert.
Das Resource Description Framework (RDF) ist eine ideale Möglichkeit, Objekte zu beschreiben und gleichzeitig die Bedeutung der Daten beizubehalten. Simple Protocol and RDF Query Language (SPARQL – ausgesprochen „Sparkle“) ist die Sprache, die normalerweise zum Abfragen dieser Daten verwendet wird, da ihre Anweisungsstruktur mit der Struktur von RDF selbst übereinstimmt. RDF und SPARQL sind beide Technologien im sogenannten Semantic Web Stack.
Um Semantic-Web-Konzepte vollständig anzuwenden, können Sie SPARQL verwenden, um traditionelle Webentwicklungstechniken auf RDF-Daten anzuwenden. In diesem Artikel erfahren Sie, wie Sie mithilfe eines vereinfachten MVC-Designmodells (Model-View-Controller), der serverseitigen Skriptsprache PHP und SPARQL eine Verbindung zu RDF herstellen – im Gegensatz zur Verwendung von SQL in einem relationalen Datenbanksystem.
Voraussetzungen fürSQL- und SPARQL-CRUD-Operationen.
In diesem Artikel wird ein grundlegendes Verständnis von SQL, PHP und der Entwicklung von Webanwendungen vorausgesetzt. Auch das Verständnis des Semantic Web ist von Vorteil. Um Befehle zum Erstellen, Aktualisieren und Löschen von Semantic Web-basierten Daten auszuführen, benötigen Sie eine Semantic Web-Datenbank, die die SPARQL/Update-Spezifikation unterstützt.
Bei der Entwicklung mit SQL und SPARQL müssen Sie die Gemeinsamkeiten und Unterschiede zwischen CRUD-Operationen berücksichtigen. Listing 1 zeigt den SQL-Code für den Lesevorgang.
SELECT realname, dob, locationFROM UserTable WHERE realname = „John Smith“;
Vergleichen Sie diesen SQL-basierten Code mit dem in Listing 2 gezeigten SPARQL-basierten Code. Der Grund für die Verwendung dieser beiden Lesevorgänge liegt darin, dass sie am einfachsten zu verstehen, zu implementieren und zu veranschaulichen sind. Dies gilt sowohl für SQL als auch für SPARQL.
PREFIX foaf:< http://xmlns.com/foaf/0.1/ > PREFIX 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 "John Smith" ;foaf:birthday?dob ;foaf:location ?location .} ;
Wenn Sie sich die beiden Listen ansehen, denken Sie wahrscheinlich zuerst, dass die SPARQL-Version deutlich länger ist als die SQL-Version. Das stimmt, aber lassen Sie sich nicht davon täuschen, dass SQL zwangsläufig einfacher und sauberer ist. Abhängig von der Engine, auf der es läuft, kann SPARQL über einen sogenannten Linked-Data-Effekt bereitgestellt werden. Darüber hinaus ermöglicht es dynamische Schemata, da es im Gegensatz zur strikten relationalen SQL-Perspektive über eine objektorientierte Perspektive verfügt, die miteinander verknüpft ist. Wenn Sie eine relationale Datenbanktabelle in viele Datensilos aufteilen möchten, würden Sie tatsächlich viel mehr SQL-Codezeilen als SPARQL verwenden – ganz zu schweigen von vielen lästigen JOIN-Deskriptoren in SQL.
Die ersten beiden Zeilen von SPARQL sind PREFIX-Anweisungen. Gemäß der Semantic-Web-Theorie verfügt jeder Inhalt – unabhängig davon, ob es sich um ein Objekt oder eine Datendiagrammquelle (auch ein Objekt) handelt – über einen Uniform Resource Identifier (URI). Die PREFIX-Zeile wendet einfach ein temporäres Tag auf einen URI an – in diesem Fall „Friend of a Friend“ und das RDF-Schema. Der Vorteil besteht darin, dass Sie die PREFIX-Anweisung später in Abfragen verwenden können, ohne den vollständigen URI verwenden zu müssen.
Die nächste Zeile des SPARQL-Codes beschreibt die Abfrageanforderung. Diese Anweisung entspricht im Wesentlichen der SQL-Anweisung, mit Ausnahme der zusätzlichen Abfrage des URI. Beachten Sie die Verwendung des Fragezeichens (?), um anzuzeigen, dass es sich bei dem Begriff um eine Variable handelt.
Die FROM-Anweisung beschreibt, wo die Daten abgerufen werden. Dies ist in SQL und SPARQL dasselbe, mit der Ausnahme, dass in SPARQL der Datenquellenname ein URI und nicht eine Zeichenfolge ist, die einen physischen Standort auf einem Computer oder Netzwerk darstellt.
Die WHERE-Anweisungen der beiden sind völlig unterschiedlich, da Sie bei SPARQL das Schema angeben müssen, das zum Abrufen der Daten verwendet wird. Auch hier gilt: Wenn Sie dies mit dem relationalen Ansatz versucht haben, ist dieser viel teurer als einfaches SQL: Sie müssen PHP, die Programmiersprache Java oder eine andere serverseitige Sprache verwenden, um die Prüfungen zwischen Datenquellen durchzuführen. Was die SPARQL-Codezeile erreicht, ist relativ einfach, einschließlich der Sicherstellung, dass die abgerufenen Daten nur vom Typ Person sind. SPARQL ruft den Namen und den Standort ab und führt einen Mustervergleich durch, um den richtigen John Smith zu finden.
Das Erstellen von
CRUD-Operationen in SPARQL ist im Allgemeinen komplizierter als Leseoperationen. Diese Vorgänge können jedoch abgeschlossen werden. Zunächst fügt der Erstellungsvorgang einen neuen Datensatz oder ein neues Objekt in die Tabelle oder das Diagramm ein.
INSERT INTO UserTable (realname, dob, location) VALUES („John Smith“, „1985-01-01“, „Bristol, UK“);
Vergleichen Sie nun den SQL-basierten Code in Listing 3 mit dem SPARQL-basierten Code in Listing 4: Erstellungsvorgang in .
PRÄFIX foaf:< http://xmlns.com/foaf/0.1/ > PRÄFIX rdf: < http://www.w3.org/1999/02/22-rdf-syntax-ns#>INSERT INTO GRAPH < http: //www.example.com/graph > (?realname, ?dob, ?location) {< http://www.example.org/graph/johnsmith#me > rdf:Type foaf:Person ; foaf:name "John Smith“ ; foaf:birthday <1985-01-01T00:00:00> ; foaf:location „Bristol, UK“ }