Compare commits

...

28 Commits

Author SHA1 Message Date
Chris Cromer d86b1e7dbd
Merge pull request #2 from cromerc/develop
Develop
2023-11-14 13:26:47 -03:00
Chris Cromer b9e8ca4157
Merge pull request #1 from cromerc/docker
Docker
2023-11-14 13:26:21 -03:00
Chris Cromer fd696a87d4
add docker build and instructions 2023-11-14 13:25:38 -03:00
Chris Cromer c0e93e5e27
add out directory to ignore file for git 2023-11-14 13:25:12 -03:00
Chris Cromer 56f9cf6e31
make it clear that it's the sqlite3 library and not the cli 2023-11-14 11:00:01 -03:00
Chris Cromer bac041dd60 Merge pull request 'develop' (#29) from develop into master
Reviewed-on: #29
2023-05-02 23:27:50 -04:00
Chris Cromer 2671e92b01 Merge branch 'master' into develop 2023-05-02 23:27:19 -04:00
Chris Cromer f91930c41d Merge pull request 'feature/remove_sqlite' (#28) from feature/remove_sqlite into develop
Reviewed-on: #28
2023-05-02 23:26:54 -04:00
Chris Cromer df31fda99c
Prepare 1.0.4. 2023-05-02 23:26:01 -04:00
Chris Cromer 819bcebce0
Add script and instructions to download SQLite when building. 2023-05-02 23:24:43 -04:00
Chris Cromer edc0e2a39f
Ignore SQLite source and header files. 2023-05-02 23:23:08 -04:00
Chris Cromer 7f49c1c065
Remove SQLite from repo. 2023-05-02 23:21:56 -04:00
Chris Cromer 20c9a0c1a5 Merge pull request 'develop' (#27) from develop into master
Reviewed-on: #27
2023-04-17 20:49:03 -04:00
Chris Cromer 42d1ac9bb7 Merge pull request 'prepare 1.0.3' (#26) from feature/add_readme into develop
Reviewed-on: #26
2023-04-17 20:48:39 -04:00
Chris Cromer 9869d369c4 Merge branch 'develop' into feature/add_readme 2023-04-17 20:48:32 -04:00
Chris Cromer 5d8b7af28d
prepare 1.0.3 2023-04-17 20:47:59 -04:00
Chris Cromer efc00f3473 Merge pull request 'develop' (#25) from develop into master
Reviewed-on: #25
2023-04-17 20:44:00 -04:00
Chris Cromer 578c350b7b Merge branch 'master' into develop 2023-04-17 20:43:53 -04:00
Chris Cromer f85f8a4637 Merge pull request 'add readme' (#24) from feature/add_readme into develop
Reviewed-on: #24
2023-04-17 20:43:23 -04:00
Chris Cromer 7d57800046
add readme 2023-04-17 20:42:26 -04:00
Chris Cromer bdc69ceea7 Merge pull request 'develop' (#23) from develop into master
Reviewed-on: #23
2023-03-05 23:06:26 -03:00
Chris Cromer 5f9af90e80 Merge branch 'master' into develop 2023-03-05 23:06:20 -03:00
Chris Cromer 4d7ecf8258 Merge pull request 'feature/fix_recursive_rules' (#22) from feature/fix_recursive_rules into develop
Reviewed-on: #22
2023-03-05 23:06:02 -03:00
Chris Cromer 04902214b7
prepare 1.0.2 2023-03-05 23:05:18 -03:00
Chris Cromer 0bfd93150f
update facts and rules recursively 2023-03-05 23:04:17 -03:00
Chris Cromer 96a5f25e02 Merge pull request 'develop' (#21) from develop into master
Reviewed-on: #21
2023-03-05 22:20:21 -03:00
Chris Cromer d4c4d3fe75 Merge pull request 'typo' (#20) from typo into develop
Reviewed-on: #20
2023-03-05 22:19:56 -03:00
Chris Cromer 33808b4906
fix typo 2023-03-05 22:18:52 -03:00
10 changed files with 105 additions and 258137 deletions

10
.dockerignore Normal file
View File

@ -0,0 +1,10 @@
README.md
LICENSE
.pre-commit-config.yaml
.gitignore
.clang-format
examples
Dockerfile
build
builddir
out

3
.gitignore vendored
View File

@ -4,3 +4,6 @@ builddir
*.kb
*.obk
!examples/*.obk
sqlite/*.c
sqlite/*.h
out

26
Dockerfile Normal file
View File

@ -0,0 +1,26 @@
FROM ubuntu:22.04 AS build-prep
RUN apt update && apt upgrade -y
RUN apt install -y llvm clangd meson ninja-build pkg-config libsqlite3-dev doxygen graphviz wget unzip
WORKDIR /obelisk
COPY . .
RUN ./sqlite.sh
FROM build-prep AS build-machine
RUN meson --prefix=/usr build
RUN cd build && ninja -v
FROM build-machine AS build-machine-intermediate
RUN cd /obelisk/build/src/lib && rm -rf *.h *.p models
FROM scratch AS obelisk
COPY --from=build-machine-intermediate /obelisk/build/src /bin/
COPY --from=build-machine-intermediate /obelisk/build/src/lib /lib/
COPY --from=build-machine-intermediate /obelisk/build/doc/man /man/
COPY --from=build-machine-intermediate /obelisk/build/doc/html /doc/
ENTRYPOINT [ "/bin/obelisk" ]
FROM scratch AS binaries
COPY --from=obelisk /bin/obelisk /bin/
COPY --from=obelisk /lib /lib/
COPY --from=obelisk /man /man/
COPY --from=obelisk /doc /doc/

52
README.md Normal file
View File

@ -0,0 +1,52 @@
# Obelisk
The Obelisk project is a declarative language designed to help with the implementation of Artificial Intelligence using an easy to use logical programming language.
## Build requirements
- Meson
- Ninja
- LLVM 14
- sqlite 3 library and headers(in debian libsqlite3-dev)
- C++ 17
- C 17
## Build
### Normal build
```
./sqlite.sh
meson builddir
cd buildir
ninja
```
This process will generate the binary "obelisk", a shared library "libobelisk.so", and a static library "libobelisk.a".
The binary is used to compile and create obelisk knowledge bases and the the libraries can be linked against to consult the Obelisk knowledge base from any software that can link with the libraries.
### Build in docker image
```
docker build ./ --output=out
```
This will create a directory called out which will contain the binaries, libraries, and generated documentation.
## Install
```
ninja install
```
This will install the Obelisk cli and the Obelisk library globally. You can also copy the resulting shared and/or static library to a project to link against and use an Obelisk knowledge base.
## License
Obelisk is licensed under the [The 3-Clause BSD License](LICENSE).
## Authors
- Christopher Cromer
- Martín Araneda

View File

@ -1,7 +1,7 @@
project('obelisk',
'c',
'cpp',
version : '1.0.1',
version : '1.0.4',
license : 'BSD-3-Clause',
default_options : [
'warning_level=3',

11
sqlite.sh Executable file
View File

@ -0,0 +1,11 @@
#!/bin/bash
VERSION=sqlite-amalgamation-3410000
pushd sqlite
wget https://sqlite.org/2023/${VERSION}.zip
unzip ${VERSION}.zip
cp ${VERSION}/sqlite3.c .
cp ${VERSION}/sqlite3.h .
rm -rf ${VERSION} ${VERSION}.zip
popd

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -250,6 +250,7 @@ void obelisk::KnowledgeBase::checkRule(obelisk::Fact& fact)
auto updateFact = rule.getFact();
updateFact.setIsTrue(1.0);
updateFact.updateIsTrue(dbConnection_);
checkRule(updateFact);
}
}
}

View File

@ -15,7 +15,7 @@ namespace obelisk
*
*/
std::string usageMessage = R"(Usage: obelisk [OPTION]... [FILE]...
Compile the obelisk source FILE(s) into knoweldge base and library.
Compile the obelisk source FILE(s) into knowledge base and library.
Options:
-h, --help shows this help/usage message