데이터로그
Datalog| 패러다임 | 논리, 선언적 |
|---|---|
| 가족 | 서언, 머리말 |
| 첫 등장 | 1986; 전 ( |
| 안정적 해제 | 2.0 |
| 타이핑 규율 | 약한 |
| 방언 | |
| Datomic, pyDatalog, Dyna 등 | |
| 영향을 받은 | |
| 서언, 머리말 | |
데이터로그는 선언적 논리 프로그래밍 언어로서 구문론적으로 프롤로그의 하위집합이다. 연역 데이터베이스의 질의어로 자주 사용된다. 최근 몇 년 동안 데이터로그는 데이터 통합, 정보 추출, 네트워킹, 프로그램 분석, 보안, 클라우드 컴퓨팅 및 머신러닝에서 새로운 응용 프로그램을 발견했다.[1][2]
그 기원은 로직 프로그래밍의 시초까지 거슬러 올라가지만, 1977년경 헤르베 갈레르와 잭 밍커가 로직과 데이터베이스에 관한 워크숍을 조직하면서 별개의 영역으로 부각되었다.[3] David Maier는 Datalog라는 용어를 만든 공로를 인정받았다.[4]
기능, 제한 및 확장 기능
Prolog에서와 달리 Datalog 프로그램의 문장은 어떤 순서로도 명시될 수 있다. 또한 유한 집합에 대한 데이터로그 쿼리는 종료가 보장되므로 데이터로그에는 Prolog의 컷 오퍼레이터가 없다. 이것은 데이터로그를 완전히 선언적인 언어로 만든다.
Prolog와 대조적으로 데이터로그
- 술어의 인수로 복잡한 용어를 허용하지 않음(예: p (1, 2)는 허용되지만 p (1, 2)는 허용되지 않음),
- 부정과 재귀의 사용에 일정한 계층화 제한을 가한다.
- 절의 머리 부분에 나타나는 모든 변수는 해당 절의 본문에 비산술 양성(즉, 부정되지 않은) 문자에도 나타나야 한다.
- 절 본문에 음의 리터럴로 나타나는 모든 변수는 절 본문에 있는 어떤[5] 양의 리터럴에서도 나타날 것을 요구한다.
데이터로그를 이용한 쿼리 평가는 1차 로직을 기반으로 하기 때문에 건전하고 완전하다. 그러나 Datalog는 Turing 완료되지 않아 쿼리 해상도를 위해 개발된 효율적인 알고리즘을 활용할 수 있는 도메인별 언어로 사용된다. 실제로, 매직 세트 알고리즘,[6] 표 논리 프로그래밍[7] 또는 SLG 분해능과 같은 쿼리를 효율적으로 수행하기 위한 다양한 방법이 제안되었다.[8]
널리 사용되는 일부 데이터베이스 시스템에는 데이터로그를 위해 개발된 아이디어와 알고리즘이 포함된다. 예를 들어 SQL:1999 표준은 재귀 쿼리를 포함하며, IBM DB2에서는 매직 세트 알고리즘(Datalog 쿼리의 빠른 평가를 위해 초기 개발)이 구현된다.[9] 더욱이 데이터로그 엔진은 의미 웹을 위한 Intellidimens의 데이터베이스와 같은 전문화된 데이터베이스 시스템 뒤에 있다.[citation needed]
예를 들어 집계 기능을 지원하거나, 객체 지향 프로그래밍을 허용하거나, 절의 수장으로서 분리를 허용하는 등 데이터로그에 몇 가지 확장 작업이 이루어졌다. 이러한 확장은 데이터로그 의미론의 정의와 해당 데이터로그 해석기의 구현에 상당한 영향을 미친다.
조각
데이터로그 프로그램은 규칙체에서 부정(negative)을 사용할 수도 있고 사용하지 않을 수도 있다: 부정(negative)이 있는 데이터로그 프로그램은 의미론이 잘 정의되어 있는지 확인하기 위해 그것을 계층화된 부정으로 사용해야 하는 경우가 많다. 데이터로그 프로그램은 규칙체 내의 변수들 사이의 불평등을 사용할 수도 있고 사용하지 않을 수도 있다.
데이터로그의 일부 통사적 단편은 다음과 같이 정의되었다.
- 선형 데이터로그(여기서 규칙 본체는 단일 원자로 구성되어야 함)
- 모든 규칙에 대해 규칙 본체에서 발생하는 모든 변수는 보호 원자라고 불리는 적어도 하나의 원자에서 함께 발생해야 하는 보호 데이터로그
- 프런티어 보호 데이터로그. 여기서 모든 규칙에 대해 규칙 본체와 규칙 머리(프런티어 변수라고 함) 간에 공유되는 모든 변수는 모두 보호 원자에서 함께 발생해야 한다.
또 다른 제한사항은 재귀 사용에 관한 것이다: 비재귀 데이터로그는 데이터로그 프로그램의 정의에서 재귀가 허용되지 않음으로써 정의된다. Datalog의 이 파편은 결합 질의의 결합처럼 표현되지만, 비반복적인 Datalog처럼 쿼리를 쓰는 것은 더 간결할 수 있다.
표현력
데이터로그의 경계성 문제는 데이터로그 프로그램이 경계인지, 즉 입력 데이터베이스의 프로그램을 평가할 때 도달하는 최대 재귀 깊이는 일정하게 경계할 수 있는지 묻는다. 즉, 이 질문은 데이터로그 프로그램을 비반복 데이터로그 프로그램으로 다시 작성할 수 있는지를 묻는다. 임의의 Datalog 프로그램의 경계성 문제를 해결하는 것은 이해할 수 없지만,[10] Datalog의 일부 파편으로 제한함으로써 취소할 수 있다.
예
이 두 선은 두 가지 사실, 즉 항상 유지되는 것을 정의한다.
부모(허수아비, 브룩스). 부모(브룩스, 다모클스). 이것이 그들이 의미하는 바는, Xerces는 브룩의 부모, Brook은 다모클레스의 부모라는 것이다. 대문자로 시작하는 문자열은 변수를 나타내기 때문에 이름은 소문자로 쓴다.
이 두 선은 규칙을 정의하는데, 그것은 어떻게 새로운 사실을 알려진 사실로부터 유추할 수 있는지를 정의한다.
조상(X, Y) :- 부모(X, Y). 조상(X, Y) :- 부모(X, Z), 조상(Z, Y). 의미:
- X가 Y의 부모라면 X는 Y의 조상이다.
- X가 일부 Z의 부모라면 X는 Y의 조상이고, Z는 Y의 조상이다.
이 줄은 쿼리:
?- 조상(허수아비, X). 다음과 같은 질문을 한다. Xerces가 조상인 X는 모두 누구인가? 위에서 설명한 사실과 규칙을 포함하는 데이터로그 시스템에 대해 포즈할 때 브룩과 다모클을 반환할 수 있다.
규칙에 대한 자세한 내용: 규칙의 가운데에는 :- 기호가 있다: 이 기호의 왼쪽 부분은 규칙의 머리, 오른쪽 부분은 본문이다. <머리>는 이렇게 쓰여 있다. <몸>이 사실이라는 것이 알려지면 <머리>는 사실이라고 알려져 있다. 규칙에서 대문자는 변수를 나타낸다. 예제에서 우리는 X와 Y가 누구인지 모르지만, X가 해당 Y의 상위인 경우 일부 X는 일부 Y의 상위 항목이다. 조항들의 순서는 질의 호출의 결과를 계산하기 위한 조항의 순서에 따라 달라지는 프롤로그와는 대조적으로 데이터로그에서 관련되지 않는다.
데이터로그는 확장 술어 기호(사실에 의해 정의됨)와 강도 술어 기호(규칙에 의해 정의됨)[11]를 구별한다. 위의 예에서 ancestor 강도의 술어 기호인데 parent 확장성이 있다. 술어는 사실과 규칙에 의해서도 정의될 수 있으며 따라서 순전히 확장적이거나 강화적이지는 않지만, 데이터로그 프로그램은 중복된 역할을 가진 술어 기호 없이 동등한 프로그램으로 다시 작성될 수 있다.
구문
데이터로그 프로그램은 사실과 규칙의 목록으로 구성된다.[12] 상수와 변수가 각각 두 개의 카운트 가능한 상수와 변수 집합이고 관계가 카운트 가능한 술어 기호 집합인 경우, 다음 문법은 데이터로그 프로그램의 구조를 나타낸다.
<>program>.::=<>fact>,<>program>,>rule>,<>program>, ɛ<>fact>.::=<>relation>,"("<>constant-list>,"cm이다."<>rule>.::=<>atom>,":-"<>atom-list>,"."<>atom>.::=<>relation>,"("<>term-list>,")"<>atom-list>.::=<>atom>,<>atom>,","<>atom-list>,<>term>.::.)<>constant>, <, variable>,<>term-list>.::=<>term>,<>term>,","<>term-list>,<>constant-list>.::=<>constant>,<>constant>는;",.<<상속자 명단>> 원자는 문헌에서 리터럴이라고도 한다.
의미론
데이터로그 프로그램의 의미론에는 크게 사용되는 세 가지 접근법이 있다: 모델-이론, 고정점 및 증명-이론적 접근법이 있으며, 마아텐 판 엠덴과 로버트 코왈스키에[13] 의해 보다 일반적으로 Horn 절 논리 프로그램에 대해 개발되고 동등하게 나타난다.
모델 이론
사실이나 규칙은 그 하위단어가 모두 상수일 경우 그라운드라고 불린다. R이1 R의2 모든 변수에 대한 상수의 대체 결과인 경우, 접지 규칙 R은1 다른 규칙 R의2 접지 인스턴스다.
Datalog 프로그램의 Herbrand 베이스는 프로그램에 나타나는 상수로 만들 수 있는 모든 접지 원자의 집합이다. 해석(데이터베이스 인스턴스라고도 함)은 Herbrand 베이스의 하위 집합이다. 해석에 있어서 지상 원자는 I의 요소라면 I. 해석에 있어서 하나의 법칙이 진실이라면 I. 그 규칙의 각 지상 사례에 대해, 만약 육체의 모든 조항이 I에 진실이라면, 그 규칙의 머리도 또한 I에서 참이다.
데이터로그 프로그램 P의 모델은 P의 모든 기초 사실을 포함하는 P의 해석 I이며, I에서 P의 모든 규칙을 진실되게 만든다. 모델-이론적 의미론에서는 데이터로그 프로그램의 의미가 최소 모델(동일하게, 모든 모델의 교차점)이라고 말한다.[14]
픽스포인트 의미론
데이터로그 프로그램 P(즉, I = P(H), 여기서 H는 P의 Herbrand 기반이고 P는 파워셋 연산자)의 해석 집합으로 하자. 다음과 같이 I에서 I까지의 지도를 정의하십시오. P에 있는 각 규칙의 각 접지 인스턴스에 대해, 본문의 모든 조항이 입력 해석에 있는 경우, 접지 인스턴스의 헤드를 출력 해석에 추가한다. 그렇다면 이 지도의 고정점은 프로그램의 최소 모델이다. 픽스포인트 의미론은 최소 모델을 계산하기 위한 알고리즘을 제안한다. 프로그램의 기본 사실 집합부터 시작한 다음, 해결점에 도달할 때까지 규칙의 결과를 반복적으로 추가하십시오.[15]
평가하기
데이터로그 프로그램을 평가하는 방법에는 여러 가지가 있는데 성능 특성이 다르다.
상향식 평가 전략
상향식 평가 전략은 프로그램의 사실로부터 시작하여 어떤 목표나 질의가 설정될 때까지 또는 프로그램의 완전한 최소 모델이 만들어질 때까지 규칙을 반복적으로 적용한다.
네이브 평가
Nauve 평가는 Datalog 프로그램의 고정점 의미론을 반영한다. Naïve 평가는 프로그램 내 사실에 초기화되는 일련의 "알려진 사실"을 사용한다. 프로그램에 있는 각 규칙의 모든 기본 인스턴스를 반복적으로 열거하여 진행한다. 만약 지상의 본체에 있는 각 원자가 알려진 사실들의 집합에 있다면, 머리 원자는 알려진 사실들의 집합에 추가된다. 이 과정은 고정된 지점에 도달할 때까지 반복되며, 더 이상 사실을 추론할 수 없다. Naveve 평가는 프로그램의 전체 최소 모델을 생산한다.[16]
데이터로그를 구현하는 시스템
다음은 데이터로그를 기반으로 하거나 데이터로그 인터프리터를 제공하는 시스템의 짧은 목록이다.
무료 소프트웨어/오픈 소스
| 기록 위치 | 이름 | 온라인으로 시도하십시오. | 외부 데이터베이스 | 설명 | 면허증 |
|---|---|---|---|---|---|
| C | XSB | 데이터로그와 유사한 종료 및 효율성을 제공하는 탭이 있는 Unix 및 Microsoft Windows용 로직 프로그래밍 및 연역적 데이터베이스 시스템(증분 평가[17] 포함) | GNU LGPL | ||
| C++ | 산호[18] | 반나선형 데이터로그 평가와 함께 C++로 작성된 연역 데이터베이스 시스템. 1988-1997. | 사용자 정의 라이센스, 비상업적 사용을 위한 무료 | ||
| DLV[19] | 분리 헤드 절을 지원하는 데이터로그 확장. | 교육 및 비영리 단체에서 사용할[20] 뿐만 아니라 교육 및 비영리 단체에서 사용할 수 있는 사용자 정의 라이센스 | |||
| 인터포[21] QL | Windows, Mac OS X 및 Linux용 C++로 구현된 Datalog 유사 4QL 쿼리 언어의 오픈 소스 명령줄 통역기 부정은 재귀뿐만 아니라 규칙의 머리와 본체에서도 허용된다. | GNU GPL v3 | |||
| RD폭스[22] | 기억 속의 | 데이터로그 추론이 가능한 고성능 RDF 트리플 스토어. 증분 평가를 위한 FBF 알고리즘 구현 | 사용자 정의 라이센스, 비상업적 사용을[23] 위한 무료 | ||
| 수플레[24] | 네 | 파일, 인메모리, sqlite3 | Datalog를 고성능 병렬 C++ 코드로 변환하는 컴파일러와 고성능 인터프리터를 갖춘 오픈 소스 Datalog 엔진. 정적인 프로그램 분석의 맥락에서 접하는 대규모 데이터 세트에 대한 복잡한 데이터로그 쿼리를 위해 특별히 설계됨. | UPL v1.0 | |
| 클로저 | 캐스칼로그 | 하둡 | Hadoop 클러스터에 저장된 데이터를 쿼리하기 위한 Clojure 라이브러리 | 아파치 | |
| 클로저 데이터로그 | 데이터로그의 측면을 구현하는 기부 도서관 | Eclipse 공용 라이센스 1.0 | |||
| XTDB(이전의 Crux) | 네 | 아파치 카프카 | 문서 및 트랜잭션의 로그 중심 스트리밍을 사용하여 상당한 아키텍처 유연성과 우아한 수평적 확장을 달성하는 "분할되지 않은" 아키텍처를 갖춘 범용 데이터베이스. Pluggable 구성 요소로는 Kafka, RocksDB, LMDB 등이 있다. 인덱스는 기본적으로 시점 데이터로그 쿼리를 지원하는 비트엠포럴이다. Java와 HTTP API가 제공된다. | MIT 라이선스 | |
| 자료표기 | 기억 속의 | 브라우저에서 실행되는 불변 데이터베이스 및 데이터로그 쿼리 엔진 | Eclipse 공용 라이센스 1.0 | ||
| 데이탈레빈 | LMDB | LMDB 내구성 스토리지에 최적화된 데이터스크립트 포크 | Eclipse 공용 라이센스 1.0 | ||
| 데이타하이크 | 파일, 인메모리 | 히치커 트리를 사용하여 내구성이 뛰어난 백엔드가 있는 데이터스크립트의 포크. | Eclipse 공용 라이센스 1.0 | ||
| 나가/아사미 | 파일, 인메모리 | 기본 데이터로그 구문을 평가하고 데이터베이스를 사용하여 실행하는 그래프 데이터베이스(Asami)와 규칙 처리 시스템(Naga)의 조합. 브라우저(메모리), JVM(메모리/파일) 또는 네이티브(메모리/파일)에서 실행. | Eclipse 공용 라이센스 1.0 | ||
| 얼랑 | 데이터로그 | 라이브러리는 데이터로그를 사용하여 n-arry 스트림의 관계를 쿼리하고 공식화하도록 설계되었다. 일반 로직 프로그래밍 패러다임의 단순화된 버전을 이용해 애드호크 쿼리 엔진을 구현한다. 도서관은 데이터 통합, 정보 교환 및 의미 웹 애플리케이션의 개발을 촉진한다. | 아파치 v2 | ||
| 하스켈 | 다이나[25] | 다이나는 통계 AI 프로그래밍을 위한 선언적 프로그래밍 언어다. 언어는 데이터로그를 기반으로 하며 전진 및 후진 체인을 모두 지원하고 증분 평가를 지원한다. | GNU AGPL v3 | ||
| DDlog[26] | DDlog는 메모리 내 증분형 데이터로그 엔진이다. 입력 변경에 대응하여 출력을 점진적으로 업데이트하는 프로그램 작성에 적합하다. DDlog 프로그래머는 데이터로그의 사투리를 사용하여 선언적인 방식으로 원하는 입력-출력 매핑을 지정한다. 그런 다음 DDlog 컴파일러는 효율적인 증분 구현을 통합한다. DDlog는 차동 데이터 흐름[27] 라이브러리를 기반으로 한다. | MIT 라이선스 | |||
| 자바 | abcDatalog[28] | AbcDatagrogal은 자바어로 작성된 로직 프로그래밍 언어 Datalog의 오픈 소스 구현이다. 공통 Datalog 평가 알고리즘과 일부 실험용 다중 스레드 평가 엔진을 즉시 구현할 수 있다. 용어의 명시적(해제) 통합 및 계층화된 부정과 같은 핵심 Datalog 이상의 언어 기능을 지원한다. 또한, ABCDatakalog는 새로운 평가 엔진과 새로운 언어 기능으로 쉽게 확장할 수 있도록 설계되었다. | BSD | ||
| 아이리스[29] | IRIS는 함수 기호, 내장 술어, 로컬로 계층화되거나 변형되지 않은 논리 프로그램(잘 근거된 의미론 사용), 안전하지 않은 규칙 및 XML 스키마 데이터 유형으로 데이터로그를 확장한다. | GNU LGPL v2.1 | |||
| 예나 | 데이터로그 구현을 범용 규칙 엔진의 일부로 포함하는 시맨틱 웹 프레임워크, OWL과 RDFS 지원을 제공한다.[30] | 아파치 v2 | |||
| 소시아라이트[31] | SociaLite는 스탠포드에서 개발된 대규모 그래프 분석을 위한 데이터로그 변형 모델이다. | 아파치 v2 | |||
| 그랄[32] | Graal은 실존적 규칙인 Datalog+/-의 틀 안에서 지식 기반을 쿼리하기 위한 자바 툴킷이다. | CeCIL v2.1 | |||
| 플렉스 | 네 | 데이터로그에서 영감을 받은 기능 및 로직 프로그래밍 언어로서 사용자 정의 래티스와 단조로운 필터/전송 기능이 있다. | 아파치 v2 | ||
| 루아 | 데이터로그[33] | 네[34] | 경량 연역 데이터베이스 시스템 | GNU LGPL | |
| OCAML | 데이터로그[35] | 상향식 및 하향식 알고리즘을 지원하는 OCaml에 대한 메모리 내 데이터로그 구현. | BSD 2-클러스터 | ||
| 서언, 머리말 | DES[36] | 코스에서 데이터로그를 가르치는 데 사용되는 오픈 소스 구현 | GNU LGPL | ||
| 파이톤 | pyDatalog | SQL 방언 11개 | Python의 도구 상자에 논리 프로그래밍을 추가하십시오. 데이터베이스나 Python 객체에 대해 논리 쿼리를 실행할 수 있으며, 논리 절을 사용하여 Python 클래스의 동작을 정의할 수 있다. | GNU LGPL | |
| 라켓 | 라켓용[37] 데이터로그 | GNU LGPL | |||
| 데이터펀[38] | 반자동의 일반화 데이터로그 | GNU LGPL | |||
| 루비 | 꽃이 피다/봉오리 | 데이터 중심 구조로 프로그래밍하기 위한 Ruby DSL로, 논리에 시간적 차원을 추가하는 Datalog의 Dedalus 확장에 기초한다. | BSD 3-폐쇄 | ||
| 녹 | 크레페 | 크레페(Crepe)는 선언적 논리 프로그램을 러스트(Rust)로 작성할 수 있는 도서관으로, 데이터로그와 같은 구문이 있다. 효율적이고 안전한 코드를 생성하고 러스트 프로그램과 원활하게 상호 운용되는 절차적 매크로를 제공한다. 또한 Datalog 규칙 내에서 계층화된 부정, 반선호도 평가, 외부 기능 호출과 같은 확장을 지원한다. | MIT 라이센스 / Apache 2.0 | ||
| 데이터프로그 | 데이터프로그(Datafrog)는 경량 데이터로그 엔진으로 다른 러스트(Rust) 프로그램에 내장되도록 고안된 엔진이다. | MIT 라이센스 / Apache 2.0 | |||
| 터미네이터스DB | 인메모리 | 터미네이터스DB는 오픈 소스 그래프 데이터베이스 및 문서 저장소다. 데이터 집약적인 애플리케이션 및 지식 그래프를 공동으로 구축하도록 설계됨. | 아파치 v2 | ||
| Tcl | tclbdd.[39] | 바이너리 의사결정도를 기반으로 한 구현. Tcl용 최적화 컴파일러 개발을 지원하기 위해 제작됨. | BSD | ||
| 기타 또는 알 수 없는 언어 | bddbddb[40]. | 스탠포드 대학에서 행해진 데이터로그의 구현 대형 자바 프로그램의 포인트투 분석을 포함한 자바 바이트코드를 질의하는 데 주로 사용된다. | GNU LGPL | ||
| 콘셉트베이스[41] | 데이터로그 쿼리 평가자에 기초한 연역적이고 객체 지향적인 데이터베이스 시스템 : 트리거된 절차와 재작성을 위한 프롤로그, (메타)모델링을 위한 »라고 불리는 공리화된 데이터로그. 주로 개념 모델링 및 메타모델링에 사용된다. | BSD 2-폐쇄 |
비무료 소프트웨어
- 데이터믹은 확장 가능하고 유연하며 지능적인 애플리케이션을 지원하도록 설계된 분산 데이터베이스로, 새로운 클라우드 아키텍처에서 실행된다. 데이터로그를 쿼리 언어로 사용한다.
- 파운데이션DB는 pyDatalog에 대한 사용 자습서와 함께 무료로 데이터베이스 바인딩을 제공한다.[42]
- Leapsight Symant Dataspace(LSD)는 고가용성, 내결함성, 운영 단순성 및 확장성을 제공하는 분산 연역형 데이터베이스다. LSD는 질의와 추론을 위해 Leaplog(Datalog 구현)를 사용하며 Leapsight에 의해 만들어졌다.[43]
- LogicBlox, 웹 기반 소매 계획 및 보험 적용에 사용되는 Datalog의 상업적 구현.
- Profium Sense는 Java로 작성된 네이티브 RDF 호환 그래프 데이터베이스다. 사용자 정의 규칙에 대한 데이터로그 평가 지원을 제공한다.
- .QL은 보안 취약점을 탐지하기 위해 소스 코드를 분석하기 위해 Semmle이 만든 Datalog의 상용 객체 지향 변종이다.[44]
- SecPAL은 마이크로소프트 리서치가 개발한 보안 정책 언어다.[45]
- 스타도그는 자바에서 구현된 그래프 데이터베이스다. 그것은 데이터로그 평가를 포함한 광범위한 추론 능력을 제공하는 RDF와 모든 OWL 2 프로파일에 대한 지원을 제공한다.
- StrixDB: 상용 RDF 그래프 저장소로, Lua API 및 Datalog 추론 기능을 준수하는 SPARQL. 베타 버전이 Perl Artic License 2.0 아래에 있지만, httpd(Apache HTTP Server) 모듈 또는 독립 실행형으로 사용할 수 있음.
참고 항목
- 응답 세트 프로그래밍
- 결막조회
- DLV
- 플렉스
- SWRL
- 데이터로그와 유사한 구문을 가진 관계형 데이터베이스의 무결성 제약에 대한 언어인 TGD(Tuple-Generation Dependency)
참조
- ^ Huang, Green, and Loo, "Datalog and Emerging applications", SIGMOD 2011 (PDF), UC Davis
{{citation}}: CS1 maint : 복수이름 : 작성자 목록(링크) - ^ "Neural Datalog Through Time: Informed Temporal Modeling via Logical Specification". Proceedings of ICML 2020.
- ^ Gallaire, Hervé; Minker, John ‘Jack’, eds. (1978), "Logic and Data Bases, Symposium on Logic and Data Bases, Centre d'études et de recherches de Toulouse, 1977", Advances in Data Base Theory, New York: Plenum Press, ISBN 978-0-306-40060-5.
- ^ Abiteboul, Serge; Hull, Richard; Vianu, Victor (1995), Foundations of databases, p. 305, ISBN 9780201537710.
- ^ 데이터로그
- ^ Bancilhon. "Magic sets and other strange ways to implement logic programs" (PDF). PT: UNL. Archived from the original (PDF) on 2012-03-08.
{{cite journal}}: Cite 저널은 필요로 한다.journal=(도움말) - ^ Pfenning, Frank; Schuermann, Carsten. "Twelf User's Guide". CMU.
{{cite journal}}: Cite 저널은 필요로 한다.journal=(도움말) - ^ "Efficient top-down computation of queries under the well-founded semantics" (PDF).
{{cite journal}}: Cite 저널은 필요로 한다.journal=(도움말) - ^ Gryz; Guo; Liu; Zuzarte (2004). "Query sampling in DB2 Universal Database" (PDF). Proceedings of the 2004 ACM SIGMOD international conference on Management of data - SIGMOD '04. p. 839. doi:10.1145/1007568.1007664. ISBN 978-1581138597. S2CID 7775190.
- ^ Hillebrand, Gerd G; Kanellakis, Paris C; Mairson, Harry G; Vardi, Moshe Y (1995-11-01). "Undecidable boundedness problems for datalog programs". The Journal of Logic Programming. 25 (2): 163–190. doi:10.1016/0743-1066(95)00051-K. ISSN 0743-1066.
- ^ Lifschitz (2011). "Datalog Programs and Their Stable Models". Datalog Reloaded. Lecture Notes in Computer Science. Vol. 6702. DE: Springer. pp. 78–87. CiteSeerX 10.1.1.225.4027. doi:10.1007/978-3-642-24206-9_5. ISBN 978-3-642-24205-2.
- ^ Ceri, Gottlob & Tanca 1989, 페이지 146.
- ^ 1976년 M.H. 반 엠덴과 R.A. 코왈스키. 프로그래밍 언어로서의 술어 논리의 의미론. ACM 저널 (JACM), 23(4), 페이지 733-742.
- ^ Ceri, Gottlob & Tanca 1989, 페이지 149.
- ^ Ceri, Gottlob & Tanca 1989, 페이지 150.
- ^ Ceri, Gottlob & Tanca 1989, 페이지 154.
- ^ XSB 시스템 버전 3.7.x .
- ^ Coral Database Project web page.
- ^ "DLVSYSTEM S.r.l. DLV". www.dlvsystem.com. Retrieved 2018-11-29..
- ^ "DLVSYSTEM S.r.l. DLV". www.dlvsystem.com. Retrieved 2018-11-29.
- ^ 4QL.
- ^ RDFox web page.
- ^ RDFox licence, archived from the original on 2018-02-21, retrieved 2018-11-29.
- ^ Souffle Compiler, 2018-12-12.
- ^ "Dyna", Dyna web page, archived from the original on 2016-01-17, retrieved 2016-11-07.
- ^ DDlog
- ^ Differential Dataflow
- ^ AbcDatalog.
- ^ Iris reasoner.
- ^ "Jena". Source forge.
- ^ SociaLite homepage, archived from the original on 2017-09-11, retrieved 2015-10-12.
- ^ Graal library.
- ^ Ramsdell, "Datalog", Tools, NEU.
- ^ Sangkok, Y, "Wrapper", Mitre Datalog, Git hub, (JavaScript에 컴파일됨).
- ^ Cruanes, Simon, "datalog", datalog, GitHub.
- ^ Saenz-Perez (2011), "DES: A Deductive Database System", Electronic Notes in Theoretical Computer Science, ES, 271: 63–78, doi:10.1016/j.entcs.2011.02.011.
- ^ "Datalog", Racket (technical documentation).
- ^ "Datafun", Datafun in Racket (Links to paper, talk and github site).
- ^ Kenny, Kevin B (12–14 November 2014). Binary decision diagrams, relational algebra, and Datalog: deductive reasoning for Tcl (PDF). Twenty-first Annual Tcl/Tk Conference. Portland, Oregon. Retrieved 29 December 2015.
- ^ "bddbddb", Source forge.
- ^ ConceptBase.
- ^ FoundationDB Datalog Tutorial, archived from the original on 2013-08-09.
- ^ "Leapsight". Archived from the original on 2018-11-11.
- ^ Semmle QL.
- ^ "SecPAL". Microsoft Research. Archived from the original on 2007-02-23.
참고 문헌 목록
- Ceri, S.; Gottlob, G.; Tanca, L. (March 1989). "What you always wanted to know about Datalog (and never dared to ask)". IEEE Transactions on Knowledge and Data Engineering. 1 (1): 146–166. CiteSeerX 10.1.1.210.1118. doi:10.1109/69.43410. ISSN 1041-4347.
추가 읽기
- Grädel, Erich; Kolaitis, Phokion G.; Libkin, Leonid; Maarten, Marx; Spencer, Joel; Vardi, Moshe Y.; Venema, Yde; Weinstein, Scott (2007), Finite model theory and its applications, Texts in Theoretical Computer Science. An EATCS Series, Berlin: Springer-Verlag, ISBN 978-3-540-00428-8, Zbl 1133.03001