4 ms·
How can I use Prolog to actually get something done, other than academic tasks? Say I want to use it as a database query language, presumably that's not going
by lionkor 2y ago
How can I use Prolog to actually get something done, other than academic tasks?
Say I want to use it as a database query language, presumably that's not going to happen, right?
- vixen99 2y agoDitto!
- aktuel 2y agoThere you go: https://github.com/aarroyoc/postgresql-prolog https://github.com/aarroyoc/postgresql-prolog
- Twey 2y agoIn a sense, Prolog _is_ a database query language. The base facts in Prolog are equivalent to the rows of a table. You can also ‘table’ predicates with variables (over a finite subset of values) by memoizing the results.
- tgamblin 2y ago> Datalog is a declarative logic programming language. While it is syntactically a subset of Prolog, Datalog generally uses a bottom-up rather than top-down evaluation model. This difference yields significantly different behavior and properties from Prolog. It is often used as a query language for deductive databases. https://en.m.wikipedia.org/wiki/Datalog https://en.m.wikipedia.org/wiki/Datalog
- 2-3-7-43-1807 2y agodo you know what you are writing about? I mean have you actually done something with datalog? and then _which_ datalog? if yes, then you are probably someone working with it academically or the answer is no. because try to even set a toy project up with it (for the purpose of learning how to use it) and you'll quickly run into unmaintained interpreters, discussions of what datalog is and what not and you can choose between difficult to understand academic papers or simplistic introductions that lead you no where.
- UltraSane 2y agoHave you tried Datomic?
- 2-3-7-43-1807 2y agono. https://github.com/Datomic/codeq https://github.com/Datomic/codeq : last update to that repo was 12 years ago. it's JDK which I find unappealing. also, how close is it to Datalog? https://github.com/gns24/pydatomic https://github.com/gns24/pydatomic : last update 11 years ago. and that's representative of pretty much anything regarding Datalog. So, I'll just stick to Prolog then. --- have you? would you recommend it?
- UltraSane 2y agoI tried using Datomic Pro for a CMDB. I liked how logical queries were but I ended up going with Neo4j instead because finding paths between two nodes is incredibly useful in IT. https://central.sonatype.com/artifact/com.datomic/local/1.0.267 https://central.sonatype.com/artifact/com.datomic/local/1.0....
- 2-3-7-43-1807 2y agomhm ... sounds like you don't know what you are talking about if you conflate Neo4j/Cypher with Datalog ... because "in IT".
- UltraSane 2y agoI'm fully aware they are very different things. I'm just saying I have tried using datomic and I really like it's query language but it cannot find a path between two objects like Neo4j which is a killer feature in a CMDB. My dream DB would be a hybrid of Neo4j and Datomic. An example of where Neo4j really shines is I found a site with BGP route dumps. The file contains over 57 million very redundant Autonomous System paths that are just sequences of a IP prefix and the AS path it is reachable by. By loading each IP prefix and AS hop as (Prefix)-[:ANNOUNCED_BY]->[:AS]-[:BGP_NEXT_HOP]->[:AS] I can easily trace paths from one prefix to another by going MATCH path = (p1:Prefix)-[:*]->(p2:Prefix) return path which will return which AS announce the prefixes and all BGP paths between them. It really is very powerful.
- upghost 2y agoNo, unless you count cancer research[1], particle physics experiments[2], and government funding allocations[3]. [1]: https://dcnorris.github.io/precautionary/index.html https://dcnorris.github.io/precautionary/index.html [2]: https://github.com/mthom/scryer-prolog/discussions/2441 https://github.com/mthom/scryer-prolog/discussions/2441 [3]: https://link.springer.com/chapter/10.1007/978-981-97-2300-3_9 https://link.springer.com/chapter/10.1007/978-981-97-2300-3_... Regarding how, check out Power of Prolog on YouTube.
- smarx007 2y ago+ https://sicstus.sics.se/customers.html https://sicstus.sics.se/customers.html
- kevindamm 2y agoConsider also checking out Datomic, though technically it's datalog not prolog, and not for connecting to your already-in-use SQL system, but it is a good example of taking the expressive power of logic programming to interface with a database.
- kevindamm 2y agoEDIT: (too late to edit above) s/logic programming/relational programming/ it isn't as expressive as LP or CLP and works best embedded in a functional-biased language
- LoneGeek 2y agoFor example: Void Linux installer implemented in GNU Prolog (https://github.com/sdbtools/void-pi https://github.com/sdbtools/void-pi).
- deleted 2y ago[deleted]
- YeGoblynQueenne 2y ago>> How can I use Prolog to actually get something done, other than academic tasks? Choose the task, download Prolog and start coding. That's, generally, how you "get something done". As to using Prolog as a database query language, I'd say that's like using a piano as a lawn ornament, but you can certainly replace a traditional relational DB with Prolog. The SWI-Prolog website does that and the developers explain how to do it in this article: Can I replace a LAMP stack with SWI-Prolog? https://www.swi-prolog.org/FAQ/PrologLAMP.md https://www.swi-prolog.org/FAQ/PrologLAMP.md And here's some more about using Prolog for good, old-fashioned, web development, in the sense of creating sites that run on the web and have visitors etc etc, particularly the SWI-Prolog website itself: Eat Your Own Dog Food https://www.swi-prolog.org/dogfood.html https://www.swi-prolog.org/dogfood.html