Jump to content

LogicBlox: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
MaD70 (talk | contribs)
Added chain of acquisitions from other companies
MaD70 (talk | contribs)
m Formatted references for readability; first step to their correction and update
Line 11: Line 11:
}}
}}


The '''LogicBlox system''' is a [[Commercial software|commercial]], [[Declarative programming|declarative]], [[Incremental computing|incremental]] [[logic programming language]] and [[deductive database]] inspired by [[Datalog]]. The LogiQL programming language extends Datalog with several features, including stratified negation, aggregation, and a module system. LogicBlox has been used to build [[Pointer analysis|pointer analyses]] for [[Java (programming language)|Java]].<ref>{{Cite book |last1=Antoniadis |first1=Tony |last2=Triantafyllou |first2=Konstantinos |last3=Smaragdakis |first3=Yannis |title=Proceedings of the 6th ACM SIGPLAN International Workshop on State of the Art in Program Analysis |chapter=Porting doop to Soufflé |date=2017-06-18 |chapter-url=https://doi.org/10.1145/3088515.3088522 |series=SOAP 2017 |location=New York, NY, USA |publisher=Association for Computing Machinery |pages=25–30 |doi=10.1145/3088515.3088522 |isbn=978-1-4503-5072-3|s2cid=3074689 }}</ref>
The '''LogicBlox system''' is a [[Commercial software|commercial]], [[Declarative programming|declarative]], [[Incremental computing|incremental]] [[logic programming language]] and [[deductive database]] inspired by [[Datalog]]. The LogiQL programming language extends Datalog with several features, including stratified negation, aggregation, and a module system. LogicBlox has been used to build [[Pointer analysis|pointer analyses]] for [[Java (programming language)|Java]].<ref>{{Cite book
|last1 = Antoniadis
|first1 = Tony
|last2 = Triantafyllou
|first2 = Konstantinos
|last3 = Smaragdakis
|first3 = Yannis
|title = Proceedings of the 6th ACM SIGPLAN International Workshop on State of the Art in Program Analysis
|chapter = Porting doop to Soufflé
|date = 2017-06-18
|chapter-url = https://doi.org/10.1145/3088515.3088522
|series = SOAP 2017
|location = New York, NY, USA
|publisher = Association for Computing Machinery
|pages = 25–30
|doi = 10.1145/3088515.3088522
|isbn = 978-1-4503-5072-3
|s2cid = 3074689
}}</ref>


On December 3, 2014 Predictix acquired LogicBlox.<ref>{{Cite web |title=Predictix Acquires LogicBlox |url=https://mergr.com/predictix-acquires-logicblox |access-date=2024-06-08 |website=mergr.com}}</ref> On June 28, 2016 Infor acquires Predictix.<ref>{{Cite web |title=Infor Acquires Predictix |url=https://finance.yahoo.com/news/infor-acquires-predictix-120000577.html |access-date=2024-06-08 |website=finance.yahoo.com}}</ref>
On December 3, 2014 Predictix acquired LogicBlox.<ref>{{Cite web
|title = Predictix Acquires LogicBlox
|url = https://mergr.com/predictix-acquires-logicblox
|access-date = 2024-06-08
|website = mergr.com
}}</ref>
On June 28, 2016 Infor acquires Predictix.<ref>{{Cite web
|title = Infor Acquires Predictix
|url = https://finance.yahoo.com/news/infor-acquires-predictix-120000577.html
|access-date = 2024-06-08
|website = finance.yahoo.com
}}</ref>


== Features ==
== Features ==


* [[Stratification (mathematics)|Stratified]] negation<ref>{{Cite web |title=6.4. Negation - LogicBlox 3.10 Reference Manual|url=https://developer.logicblox.com/content/docs/core-reference/webhelp/formula-negation.html |access-date=2023-03-04 |website=developer.logicblox.com}} "Additionally, negation is only allowed when the platform can determine a way to stratify all rules and constraints that use negation."</ref>
* [[Stratification (mathematics)|Stratified]] negation<ref>{{Cite web
|title = 6.4. Negation - LogicBlox 3.10 Reference Manual
|url = https://developer.logicblox.com/content/docs/core-reference/webhelp/formula-negation.html
|access-date = 2023-03-04
|website = developer.logicblox.com
}}
"'Additionally, negation is only allowed when the platform can determine a way to stratify all rules and constraints that use negation.'"
</ref>
* [[Aggregate function|Aggregate functions]]<ref>{{Cite web |title=Chapter 7. Rules - LogicBlox 3.10 Reference Manual|url=https://developer.logicblox.com/content/docs/core-reference/webhelp/rules.html#rules-aggregation |access-date=2023-03-04 |website=developer.logicblox.com}}</ref>
* [[Aggregate function|Aggregate functions]]<ref>{{Cite web
|title = Chapter 7. Rules - LogicBlox 3.10 Reference Manual
|url = https://developer.logicblox.com/content/docs/core-reference/webhelp/rules.html#rules-aggregation
|access-date = 2023-03-04
|website = developer.logicblox.com
}}</ref>
* Evaluation using a novel worst-case optimal [[join algorithm]].<ref>{{Cite arXiv
* Evaluation using a novel worst-case optimal [[join algorithm]].<ref>{{Cite arXiv |last=Veldhuizen |first=Todd L. |date=2013-12-20 |title=Leapfrog Triejoin: a worst-case optimal join algorithm |class=cs.DB |eprint=1210.0481 }}</ref><ref>{{Cite book |last1=Aberger |first1=Christopher R. |last2=Tu |first2=Susan |last3=Olukotun |first3=Kunle |last4=Ré |first4=Christopher |title=2016 IEEE 32nd International Conference on Data Engineering Workshops (ICDEW) |chapter=Old techniques for new join algorithms: A case study in RDF processing |date=May 2016 |chapter-url=https://ieeexplore.ieee.org/document/7495625 |pages=97–102 |doi=10.1109/ICDEW.2016.7495625|arxiv=1602.03557 |isbn=978-1-5090-2109-3 |s2cid=10016546 }}</ref>
|last = Veldhuizen
|first = Todd L.
|date = 2013-12-20
|title = Leapfrog Triejoin: a worst-case optimal join algorithm
|class = cs.DB
|eprint = 1210.0481
}}</ref>
<ref>{{Cite book
|last1 = Aberger
|first1 = Christopher R.
|last2 = Tu
|first2 = Susan
|last3 = Olukotun
|first3 = Kunle
|last4 = Ré
|first4 = Christopher
|title = 2016 IEEE 32nd International Conference on Data Engineering Workshops (ICDEW)
|chapter = Old techniques for new join algorithms: A case study in RDF processing
|date = May 2016
|chapter-url = https://ieeexplore.ieee.org/document/7495625
|pages = 97–102
|doi = 10.1109/ICDEW.2016.7495625
|arxiv = 1602.03557
|isbn = 978-1-5090-2109-3
|s2cid = 10016546
}}</ref>
* [[Data constructor]]s
* [[Data constructor]]s
* Static typing<ref>{{Cite book
* Static typing<ref>{{Cite book |last1=Zook |first1=David |last2=Pasalic |first2=Emir |last3=Sarna-Starosta |first3=Beata |date=2009 |editor-last=Gill |editor-first=Andy |editor2-last=Swift |editor2-first=Terrance |title=Typed Datalog |url=https://link.springer.com/chapter/10.1007/978-3-540-92995-6_12 |journal=Practical Aspects of Declarative Languages |series=Lecture Notes in Computer Science |volume=5418 |language=en |location=Berlin, Heidelberg |publisher=Springer |pages=168–182 |doi=10.1007/978-3-540-92995-6_12 |isbn=978-3-540-92995-6}} "Our type system has been implemented as a part of the LogicBlox development environment."</ref>
|last1 = Zook
|first1 = David
|last2 = Pasalic
|first2 = Emir
|last3 = Sarna-Starosta
|first3 = Beata
|date = 2009
|editor-last = Gill
|editor-first = Andy
|editor2-last = Swift
|editor2-first = Terrance
|title = Typed Datalog
|url = https://link.springer.com/chapter/10.1007/978-3-540-92995-6_12
|journal = Practical Aspects of Declarative Languages
|series = Lecture Notes in Computer Science
|volume = 5418
|language = en
|location = Berlin, Heidelberg
|publisher = Springer
|pages = 168–182
|doi = 10.1007/978-3-540-92995-6_12
|isbn = 978-3-540-92995-6
}}
"'Our type system has been implemented as a part of the LogicBlox development environment.'"
</ref>
* A [[Modular programming|module]] system
* A [[Modular programming|module]] system
* [[Probabilistic programming]] features
* [[Probabilistic programming]] features
* [[Incremental computing|Incremental computation]]<ref>{{Cite book
* [[Incremental computing|Incremental computation]]<ref>{{Cite book |last1=Singh |first1=Shikha |last2=Madaminov |first2=Sergey |last3=Bender |first3=Michael A. |last4=Ferdman |first4=Michael |last5=Johnson |first5=Ryan |last6=Moseley |first6=Benjamin |last7=Ngo |first7=Hung |last8=Nguyen |first8=Dung |last9=Olesen |first9=Soeren |last10=Stirewalt |first10=Kurt |last11=Washburn |first11=Geoffrey |title=2020 IEEE International Parallel and Distributed Processing Symposium (IPDPS) |chapter=A Scheduling Approach to Incremental Maintenance of Datalog Programs |date=May 2020 |chapter-url=https://ieeexplore.ieee.org/document/9139794 |pages=864–873 |doi=10.1109/IPDPS47924.2020.00093|isbn=978-1-7281-6876-0 |s2cid=216513350 }}</ref>
|last1 = Singh
* Debugging with provenance<ref>{{Cite book |last1=Köhler |first1=Sven |last2=Ludäscher |first2=Bertram |last3=Smaragdakis |first3=Yannis |date=2012 |editor-last=Barceló |editor-first=Pablo |editor2-last=Pichler |editor2-first=Reinhard |title=Declarative Datalog Debugging for Mere Mortals |url=https://link.springer.com/chapter/10.1007/978-3-642-32925-8_12 |journal=Datalog in Academia and Industry |series=Lecture Notes in Computer Science |volume=7494 |language=en |location=Berlin, Heidelberg |publisher=Springer |pages=111–122 |doi=10.1007/978-3-642-32925-8_12 |isbn=978-3-642-32925-8}}</ref><ref>{{Cite web |title=Chapter 17. Provenance |url=https://developer.logicblox.com/content/docs/core-reference/webhelp/provenance.html |access-date=2023-03-11 |website=LogicBlox 3.10 Reference Manual}}</ref>
|first1 = Shikha
|last2 = Madaminov
|first2 = Sergey
|last3 = Bender
|first3 = Michael A.
|last4 = Ferdman
|first4 = Michael
|last5 = Johnson
|first5 = Ryan
|last6 = Moseley
|first6 = Benjamin
|last7 = Ngo
|first7 = Hung
|last8 = Nguyen
|first8 = Dung
|last9 = Olesen
|first9 = Soeren
|last10 = Stirewalt
|first10 = Kurt
|last11 = Washburn
|first11 = Geoffrey
|title = 2020 IEEE International Parallel and Distributed Processing Symposium (IPDPS)
|chapter = A Scheduling Approach to Incremental Maintenance of Datalog Programs
|date = May 2020
|chapter-url = https://ieeexplore.ieee.org/document/9139794
|pages = 864–873
|doi = 10.1109/IPDPS47924.2020.00093|isbn=978-1-7281-6876-0
|s2cid = 216513350
}}</ref>
* Debugging with provenance<ref>{{Cite book
|last1 = Köhler
|first1 = Sven
|last2 = Ludäscher
|first2 = Bertram
|last3 = Smaragdakis
|first3 = Yannis
|date = 2012
|editor-last = Barceló
|editor-first = Pablo
|editor2-last = Pichler
|editor2-first = Reinhard
|title = Declarative Datalog Debugging for Mere Mortals
|url = https://link.springer.com/chapter/10.1007/978-3-642-32925-8_12
|journal = Datalog in Academia and Industry
|series = Lecture Notes in Computer Science
|volume = 7494
|language = en
|location = Berlin, Heidelberg
|publisher = Springer
|pages = 111–122
|doi = 10.1007/978-3-642-32925-8_12
|isbn = 978-3-642-32925-8
}}</ref>
<ref>{{Cite web
|title = Chapter 17. Provenance
|url = https://developer.logicblox.com/content/docs/core-reference/webhelp/provenance.html
|access-date = 2023-03-11
|website = LogicBlox 3.10 Reference Manual
}}</ref>


== References ==
== References ==
Line 32: Line 183:


=== Sources ===
=== Sources ===
* {{Cite book
* {{Cite book |last1=Green |first1=Todd J. |last2=Aref |first2=Molham |last3=Karvounarakis |first3=Grigoris |date=2012 |editor-last=Barceló |editor-first=Pablo |editor2-last=Pichler |editor2-first=Reinhard |title=LogicBlox, Platform and Language: A Tutorial |url=https://link.springer.com/chapter/10.1007/978-3-642-32925-8_1 |journal=Datalog in Academia and Industry |series=Lecture Notes in Computer Science |volume=7494 |language=en |location=Berlin, Heidelberg |publisher=Springer |pages=1–8 |doi=10.1007/978-3-642-32925-8_1 |isbn=978-3-642-32925-8}}
|last1 = Green
* {{Cite book |last1=Aref |first1=Molham |last2=ten Cate |first2=Balder |last3=Green |first3=Todd J. |last4=Kimelfeld |first4=Benny |last5=Olteanu |first5=Dan |last6=Pasalic |first6=Emir |last7=Veldhuizen |first7=Todd L. |last8=Washburn |first8=Geoffrey |title=Proceedings of the 2015 ACM SIGMOD International Conference on Management of Data |chapter=Design and Implementation of the LogicBlox System |date=2015-05-27 |chapter-url=https://doi.org/10.1145/2723372.2742796 |series=SIGMOD '15 |location=New York, NY, USA |publisher=Association for Computing Machinery |pages=1371–1382 |doi=10.1145/2723372.2742796 |isbn=978-1-4503-2758-9|s2cid=2161070 }}
|first1 = Todd J.
* {{Cite book |last1=Kifer |first1=Michael |url=https://books.google.com/books?id=q6dwDwAAQBAJ&dq=%22LogicBlox%22+-wikipedia&pg=PA335 |title=Declarative Logic Programming: Theory, Systems, and Applications |last2=Liu |first2=Yanhong Annie |date=2018-09-19 |publisher=Morgan & Claypool |isbn=978-1-970001-97-6 |language=en|pages=345}}
|last2 = Aref
|first2 = Molham
|last3 = Karvounarakis
|first3 = Grigoris
|date = 2012
|editor-last = Barceló
|editor-first = Pablo
|editor2-last = Pichler
|editor2-first = Reinhard
|title = LogicBlox, Platform and Language: A Tutorial
|url = https://link.springer.com/chapter/10.1007/978-3-642-32925-8_1
|journal = Datalog in Academia and Industry
|series = Lecture Notes in Computer Science
|volume = 7494
|language = en
|location = Berlin, Heidelberg
|publisher = Springer
|pages = 1–8
|doi = 10.1007/978-3-642-32925-8_1
|isbn = 978-3-642-32925-8
}}
* {{Cite book
|last1 = Aref
|first1 = Molham
|last2 = ten Cate
|first2 = Balder
|last3 = Green
|first3 = Todd J.
|last4 = Kimelfeld
|first4 = Benny
|last5 = Olteanu
|first5 = Dan
|last6 = Pasalic
|first6 = Emir
|last7 = Veldhuizen
|first7 = Todd L.
|last8 = Washburn
|first8 = Geoffrey
|title = Proceedings of the 2015 ACM SIGMOD International Conference on Management of Data
|chapter = Design and Implementation of the LogicBlox System
|date = 2015-05-27
|chapter-url = https://doi.org/10.1145/2723372.2742796
|series = SIGMOD '15
|location = New York, NY, USA
|publisher = Association for Computing Machinery
|pages = 1371–1382
|doi = 10.1145/2723372.2742796
|isbn = 978-1-4503-2758-9
|s2cid = 2161070
}}
* {{Cite book
|last1 = Kifer
|first1 = Michael
|url = https://books.google.com/books?id=q6dwDwAAQBAJ&dq=%22LogicBlox%22+-wikipedia&pg=PA335
|title = Declarative Logic Programming: Theory, Systems, and Applications
|last2 = Liu
|first2 = Yanhong Annie
|date = 2018-09-19
|publisher = Morgan & Claypool
|isbn = 978-1-970001-97-6
|language = en
|pages = 345
}}


== Further reading ==
== Further reading ==


* {{Cite book
* {{Cite book |last1=Halpin |first1=Terry |url=https://books.google.com/books?id=UBYeBQAAQBAJ&dq=logicblox&pg=PP1 |title=LogiQL: A Query Language for Smart Databases |last2=Rugaber |first2=Spencer |date=2014-11-13 |publisher=CRC Press |isbn=978-1-4822-4493-9 |language=en}}
|last1 = Halpin
|first1 = Terry
|url = https://books.google.com/books?id=UBYeBQAAQBAJ&dq=logicblox&pg=PP1
|title = LogiQL: A Query Language for Smart Databases
|last2 = Rugaber
|first2 = Spencer
|date = 2014-11-13
|publisher = CRC Press
|isbn = 978-1-4822-4493-9
|language = en
}}


== See also ==
== See also ==

Revision as of 17:22, 8 June 2024

LogiQL
ParadigmsDeclarative, Logic programming
FamilyDatalog
Typing disciplineStatic
LicenseCommercial
Websitelogicblox.com
Influenced by
Datalog

The LogicBlox system is a commercial, declarative, incremental logic programming language and deductive database inspired by Datalog. The LogiQL programming language extends Datalog with several features, including stratified negation, aggregation, and a module system. LogicBlox has been used to build pointer analyses for Java.[1]

On December 3, 2014 Predictix acquired LogicBlox.[2] On June 28, 2016 Infor acquires Predictix.[3]

Features

[7]

[11]

References

Notes

  1. ^ Antoniadis, Tony; Triantafyllou, Konstantinos; Smaragdakis, Yannis (2017-06-18). "Porting doop to Soufflé". Proceedings of the 6th ACM SIGPLAN International Workshop on State of the Art in Program Analysis. SOAP 2017. New York, NY, USA: Association for Computing Machinery. pp. 25–30. doi:10.1145/3088515.3088522. ISBN 978-1-4503-5072-3. S2CID 3074689.
  2. ^ "Predictix Acquires LogicBlox". mergr.com. Retrieved 2024-06-08.
  3. ^ "Infor Acquires Predictix". finance.yahoo.com. Retrieved 2024-06-08.
  4. ^ "6.4. Negation - LogicBlox 3.10 Reference Manual". developer.logicblox.com. Retrieved 2023-03-04. "'Additionally, negation is only allowed when the platform can determine a way to stratify all rules and constraints that use negation.'"
  5. ^ "Chapter 7. Rules - LogicBlox 3.10 Reference Manual". developer.logicblox.com. Retrieved 2023-03-04.
  6. ^ Veldhuizen, Todd L. (2013-12-20). "Leapfrog Triejoin: a worst-case optimal join algorithm". arXiv:1210.0481 [cs.DB].
  7. ^ Aberger, Christopher R.; Tu, Susan; Olukotun, Kunle; Ré, Christopher (May 2016). "Old techniques for new join algorithms: A case study in RDF processing". 2016 IEEE 32nd International Conference on Data Engineering Workshops (ICDEW). pp. 97–102. arXiv:1602.03557. doi:10.1109/ICDEW.2016.7495625. ISBN 978-1-5090-2109-3. S2CID 10016546.
  8. ^ Zook, David; Pasalic, Emir; Sarna-Starosta, Beata (2009). Gill, Andy; Swift, Terrance (eds.). Typed Datalog. Lecture Notes in Computer Science. Vol. 5418. Berlin, Heidelberg: Springer. pp. 168–182. doi:10.1007/978-3-540-92995-6_12. ISBN 978-3-540-92995-6. {{cite book}}: |journal= ignored (help) "'Our type system has been implemented as a part of the LogicBlox development environment.'"
  9. ^ Singh, Shikha; Madaminov, Sergey; Bender, Michael A.; Ferdman, Michael; Johnson, Ryan; Moseley, Benjamin; Ngo, Hung; Nguyen, Dung; Olesen, Soeren; Stirewalt, Kurt; Washburn, Geoffrey (May 2020). "A Scheduling Approach to Incremental Maintenance of Datalog Programs". 2020 IEEE International Parallel and Distributed Processing Symposium (IPDPS). pp. 864–873. doi:10.1109/IPDPS47924.2020.00093. ISBN 978-1-7281-6876-0. S2CID 216513350.
  10. ^ Köhler, Sven; Ludäscher, Bertram; Smaragdakis, Yannis (2012). Barceló, Pablo; Pichler, Reinhard (eds.). Declarative Datalog Debugging for Mere Mortals. Lecture Notes in Computer Science. Vol. 7494. Berlin, Heidelberg: Springer. pp. 111–122. doi:10.1007/978-3-642-32925-8_12. ISBN 978-3-642-32925-8. {{cite book}}: |journal= ignored (help)
  11. ^ "Chapter 17. Provenance". LogicBlox 3.10 Reference Manual. Retrieved 2023-03-11.

Sources

Further reading

See also