생성, 읽기, 업데이트 및 삭제(생성/읽기/업데이트/삭제, CRUD) 작업은 가장 기본적인 데이터베이스 작업이지만 가장 중요한 작업이기도 합니다. CRUD 작업은 일반적으로 관계형 데이터베이스 시스템에서 SQL(구조적 쿼리 언어)을 사용하여 수행됩니다. 웹이 더욱 데이터 지향적으로 변하면서 SQL 기반 CRUD 작업에서 시맨틱 웹 기반 CRUD 작업으로 전환할 필요가 있습니다. PHP를 사용하여 의미 기반 웹에서 CRUD 작업을 수행하는 방법을 알아보세요. 일반적으로 사용되는 약어
API - 응용 프로그래밍 인터페이스
CRUD - 생성/읽기/업데이트/삭제
HTTP - 하이퍼텍스트 전송 프로토콜
MVC - 패턴 - 보기 - 모델-뷰-컨트롤러 제어
OOP - 객체 지향 프로그래밍
RDF - 자원 설명 프레임워크
SPARQL - 단순 프로토콜 및 RDF 쿼리 언어
SQL - 구조적 구조적 쿼리 언어
UI - 사용자 인터페이스
W3C - 월드 와이드 웹 컨소시엄
웹 애플리케이션을 개발할 때 논리 레이어와 UI 레이어에 대한 서버 측 코드를 수용하는 데이터베이스 구조를 만드는 것이 표준입니다. . 데이터베이스에 연결하려면 서버 측 코드에서 레코드 생성, 업데이트, 삭제 및 가장 중요한 읽기와 같은 몇 가지 기본 작업을 수행해야 합니다. 웹 애플리케이션의 백엔드 데이터베이스는 일반적으로 관계형 데이터베이스이므로 이러한 CRUD 작업은 잘 알려진 SQL 언어를 사용하여 수행됩니다. 그러나 웹 개발에서 객체 지향 프로그래밍(OOP)을 점점 더 많이 채택함에 따라 모델이 변경되었습니다.
RDF(Resource Description Framework)는 데이터의 의미를 유지하면서 개체를 설명하는 이상적인 방법입니다. SPARQL("스파클"로 발음)은 명령문 구조가 RDF 자체의 구조와 일치하기 때문에 이 데이터를 쿼리하는 데 일반적으로 사용되는 언어입니다. RDF와 SPARQL은 모두 소위 시맨틱 웹 스택의 기술입니다.
시맨틱 웹 개념을 완전히 적용하려면 SPARQL을 사용하여 전통적인 웹 개발 기술을 RDF 데이터에 적용할 수 있습니다. 이 기사에서는 관계형 데이터베이스 시스템에서 SQL을 사용하는 대신 단순화된 MVC(Model-View-Controller) 디자인 모델, PHP 서버측 스크립팅 언어 및 SPARQL을 사용하여 RDF에 연결하는 방법을 보여줍니다.
SQL 및 SPARQL CRUD 작업
전제 조건 이 기사에서는 SQL, PHP 및 웹 애플리케이션 개발에 대한 기본적인 이해가 있다고 가정합니다. 시맨틱 웹을 이해하는 것도 유익합니다. 시맨틱 웹 기반 데이터에 대해 생성, 업데이트 및 삭제 명령을 실행하려면 SPARQL/업데이트 사양을 지원하는 시맨틱 웹 데이터베이스가 필요합니다.
SQL과 SPARQL로 개발할 때 CRUD 작업 간의 유사점과 차이점을 살펴봐야 합니다. 목록 1은 읽기 작업에 대한 SQL 코드를 보여줍니다.
SELECT realname, dob, locationFROM UserTable WHERE realname = "John Smith";
이 SQL 기반 코드를 목록 2에 표시된 SPARQL 기반 코드와 비교하세요. 이 두 가지 읽기 작업을 사용하는 이유는 이해하고 구현하고 설명하기 가장 쉽기 때문입니다. 이는 SQL과 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 .} ;
두 목록을 보면 아마도 SPARQL 버전이 SQL 버전보다 상당히 길다는 생각이 먼저 들 것입니다. 이것은 사실입니다. 그러나 SQL이 필연적으로 더 간단하고 깔끔하다고 생각하는 것에 속지 마십시오. 실행 중인 엔진에 따라 SPARQL은 모두 연결된 데이터 효과를 통해 전달될 수 있습니다. 또한 엄격한 SQL 관계형 관점과 달리 서로 연결된 객체지향 관점을 가지므로 동적 스키마를 가질 수 있습니다. 관계형 데이터베이스 테이블을 많은 데이터 사일로로 분리하려는 경우 SQL의 성가신 JOIN 설명자는 말할 것도 없고 실제로 SPARQL보다 더 많은 SQL 코드 줄을 사용하게 됩니다.
SPARQL의 처음 두 줄은 PREFIX 문입니다. 시맨틱 웹 이론에 따르면 개체이든 데이터 그래프 소스(또는 개체)이든 모든 콘텐츠에는 URI(Uniform Resource Identifier)가 있습니다. PREFIX 줄은 단순히 일부 URI(이 경우 친구의 친구 및 RDF 스키마)에 임시 태그를 적용합니다. 이점은 나중에 전체 URI를 사용하지 않고도 쿼리에서 PREFIX 문을 사용할 수 있다는 것입니다.
SPARQL 코드의 다음 줄은 쿼리 요청을 설명합니다. 이 문은 URI에 대한 추가 요청을 제외하면 기본적으로 SQL 문과 동일합니다. 용어가 변수임을 나타내기 위해 물음표(?)를 사용하는 것에 유의하십시오.
FROM 문은 데이터를 가져올 위치를 설명합니다. 이는 SPARQL에서 데이터 소스 이름이 컴퓨터나 네트워크의 물리적 위치를 나타내는 문자열이 아닌 URI라는 점을 제외하면 SQL 및 SPARQL에서도 동일합니다.
SPARQL을 사용하면 데이터를 얻는 데 사용되는 스키마를 지정해야 하기 때문에 둘의 WHERE 문은 완전히 다릅니다. 다시 말하지만, 관계형 접근 방식을 사용하여 이 작업을 수행하려고 하면 일반 SQL보다 훨씬 비용이 많이 듭니다. 즉, 데이터 소스 간 확인을 수행하려면 PHP, Java 프로그래밍 언어 또는 기타 서버 측 언어를 사용해야 합니다. SPARQL 코드 라인이 수행하는 작업은 검색되는 데이터가 Person 유형인지 확인하는 것을 포함하여 비교적 간단합니다. SPARQL은 이름과 위치를 가져오고 일부 패턴 일치를 수행하여 올바른 John Smith를 찾습니다.
SPARQL에서 CRUD 작업을생성하는 것은
일반적으로 읽기 작업보다 더 까다롭습니다. 그러나 이러한 작업은 완료될 수 있습니다. 먼저 만들기 작업은 테이블이나 차트에 새 레코드나 개체를 삽입합니다.
INSERT INTO UserTable (realname, dob, location) VALUES ("John Smith", "1985-01-01", "Bristol, UK")
이제 목록 3의 SQL 기반 코드를 다음의 SPARQL 기반 코드와 비교합니다
.목록 4의 생성 작업은 .
PREFIX foaf:< http://xmlns.com/foaf/0.1/ > PREFIX 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 "John ; Smith" ; foaf:생일 <1985-01-01T00:00:00> ; foaf:위치 "영국 브리스톨" }