Datalog is easily identified with a subset of Prolog that doesn't use function symbols, but only constants and variables. But pure Datalog that doesn't use negation has a further constraint(*):
- Every fact is ground.
- Every variable in the head of a rule, also occurs in the body of the rule.
Can we conclude that single sided unification is enough to answer hierarchical Datalog queries? Or are there examples, demonstrable in SWI-Prolog 8.3.19 which has (=>)/2 for single sided
unfication, that are pure Datalog but do not run with single sided uniification?
(*)
What You Always Wanted to Know About Datalog
Ceri et. al. - 1989
https://www.researchgate.net/publication/3296132