├── .github └── workflows │ └── codeql-analysis.yml ├── .gitignore ├── CHANGELOG.md ├── Dockerfile ├── INSTALL.md ├── LICENSE ├── README.md ├── blawx ├── __init__.py ├── admin.py ├── aggregates.py ├── apps.py ├── asgi.py ├── dates.py ├── events.py ├── fixtures │ └── docs │ │ ├── about.yaml │ │ ├── blocks │ │ ├── assumption.yaml │ │ ├── attributed_rule.yaml │ │ ├── categories │ │ │ ├── attribute_display.yaml │ │ │ ├── attribute_selector.yaml │ │ │ ├── category_attribute.yaml │ │ │ ├── category_display.yaml │ │ │ ├── category_equivalence.yaml │ │ │ ├── category_selector.yaml │ │ │ ├── new_attribute.yaml │ │ │ ├── new_category.yaml │ │ │ ├── new_relationship.yaml │ │ │ └── relationship_selector.yaml │ │ ├── constraint.yaml │ │ ├── data_types │ │ │ ├── date.yaml │ │ │ ├── datetime.yaml │ │ │ ├── duration.yaml │ │ │ ├── list.yaml │ │ │ ├── number.yaml │ │ │ ├── time.yaml │ │ │ └── true_false.yaml │ │ ├── data_values │ │ │ ├── date_value.yaml │ │ │ ├── datetime_value.yaml │ │ │ ├── duration_value.yaml │ │ │ ├── false.yaml │ │ │ ├── number_value.yaml │ │ │ ├── time_value.yaml │ │ │ └── true.yaml │ │ ├── date_statements │ │ │ ├── date_add.yaml │ │ │ ├── date_add_days.yaml │ │ │ ├── date_comparison.yaml │ │ │ ├── date_constructor.yaml │ │ │ ├── datetime_combination.yaml │ │ │ ├── datetime_constructor.yaml │ │ │ ├── datetime_to_ts.yaml │ │ │ ├── days_between.yaml │ │ │ ├── duration_between.yaml │ │ │ ├── duration_comparison.yaml │ │ │ ├── duration_constructor.yaml │ │ │ ├── now.yaml │ │ │ ├── time_constructor.yaml │ │ │ ├── today.yaml │ │ │ ├── ts_to_date.yaml │ │ │ ├── ts_to_datetime.yaml │ │ │ ├── ts_to_duration.yaml │ │ │ └── ts_to_time.yaml │ │ ├── events │ │ │ ├── as_of.yaml │ │ │ ├── during.yaml │ │ │ ├── from.yaml │ │ │ ├── initially.yaml │ │ │ └── ultimately.yaml │ │ ├── exceptions │ │ │ ├── according_to.yaml │ │ │ ├── applies.yaml │ │ │ ├── defeated.yaml │ │ │ ├── holds.yaml │ │ │ ├── opposes.yaml │ │ │ ├── overrules.yaml │ │ │ └── section_selector.yaml │ │ ├── fact.yaml │ │ ├── json_input.yaml │ │ ├── list_statements │ │ │ ├── collect_list.yaml │ │ │ ├── empty_list.yaml │ │ │ ├── first_rest.yaml │ │ │ └── list_aggreation.yaml │ │ ├── logic │ │ │ ├── comparison.yaml │ │ │ ├── known_false.yaml │ │ │ └── not.yaml │ │ ├── number_statements │ │ │ ├── calculation.yaml │ │ │ ├── math_operator.yaml │ │ │ └── numerical_constraint.yaml │ │ ├── objects │ │ │ ├── new_object.yaml │ │ │ ├── object_category.yaml │ │ │ ├── object_disequality.yaml │ │ │ ├── object_equality.yaml │ │ │ └── object_selector.yaml │ │ ├── question.yaml │ │ ├── rule.yaml │ │ └── variables │ │ │ ├── unnamed_variable.yaml │ │ │ ├── variable.yaml │ │ │ └── variable_assignment.yaml │ │ ├── components │ │ ├── admin.yaml │ │ ├── blawxbot.yaml │ │ ├── clean.yaml │ │ ├── interface.yaml │ │ ├── scenario_editor.yaml │ │ └── web-api.yaml │ │ ├── examples │ │ ├── beards.yaml │ │ ├── bird.yaml │ │ ├── covid_test.yaml │ │ ├── life_act.yaml │ │ ├── list_demo.yaml │ │ ├── logical_constraints.yaml │ │ ├── mortality.yaml │ │ ├── net30.yaml │ │ ├── numerical_constraints.yaml │ │ ├── oasa.yaml │ │ ├── r34.yaml │ │ ├── rps.yaml │ │ ├── wills.yaml │ │ └── wills_tutorial.yaml │ │ ├── features │ │ ├── answers.yaml │ │ ├── ask_tell.yaml │ │ ├── categories.yaml │ │ ├── comparison.yaml │ │ ├── constraint.yaml │ │ ├── dates.yaml │ │ ├── defaults.yaml │ │ ├── events.yaml │ │ ├── facts_assumptions.yaml │ │ ├── lists.yaml │ │ ├── math.yaml │ │ ├── negation.yaml │ │ ├── num_constraint.yaml │ │ ├── questions.yaml │ │ ├── rules.yaml │ │ └── variables.yaml │ │ ├── guide │ │ ├── conclusion.yaml │ │ ├── deploy_.yaml │ │ ├── encode_rules.yaml │ │ ├── guide.yaml │ │ ├── legal_text.yaml │ │ └── tests.yaml │ │ ├── home.yaml │ │ └── incomplete.yaml ├── globals.py ├── ldap.py ├── models.py ├── parse_an.py ├── passthrough.py ├── reasoner.py ├── requirements.txt ├── serializers.py ├── settings.py ├── signals.py ├── simplifier.py ├── static │ └── blawx │ │ ├── akoma_ntoso.css │ │ ├── android-chrome-192x192.png │ │ ├── android-chrome-512x512.png │ │ ├── apple-touch-icon.png │ │ ├── attributes.js │ │ ├── blawx-blocks.js │ │ ├── blawx2scasp.js │ │ ├── buttons.js │ │ ├── context_menus.js │ │ ├── docs │ │ └── images │ │ │ ├── 5_levels.png │ │ │ ├── RPS_scenario.png │ │ │ ├── RPS_scenario_answers.png │ │ │ ├── RPS_scenario_relevance.png │ │ │ ├── RPS_se_interface.png │ │ │ ├── according_to_any.png │ │ │ ├── according_to_any_question.png │ │ │ ├── according_to_rule.png │ │ │ ├── according_to_which_question.png │ │ │ ├── add_button.png │ │ │ ├── add_fact_menu.png │ │ │ ├── albert_blue_constraint.png │ │ │ ├── alive_from_born.png │ │ │ ├── and_stack.png │ │ │ ├── applicability_presumption.png │ │ │ ├── assume_bob_is_dog.png │ │ │ ├── att_cust_ex_1.png │ │ │ ├── att_cust_ex_2.png │ │ │ ├── att_cust_ex_3.png │ │ │ ├── attribute_selector_unary.png │ │ │ ├── attributed_big_bird.png │ │ │ ├── bad_fact.png │ │ │ ├── bad_rule.png │ │ │ ├── big_bird.png │ │ │ ├── big_bird_question.png │ │ │ ├── birds_cant_talk.png │ │ │ ├── blawx_root_screen.png │ │ │ ├── blawx_root_with_new_project.png │ │ │ ├── blawxbot_buttons.png │ │ │ ├── blawxbot_interface.png │ │ │ ├── blawxbot_sidebar.png │ │ │ ├── blocks │ │ │ ├── according_to.png │ │ │ ├── applies.png │ │ │ ├── as_of.png │ │ │ ├── assumption.png │ │ │ ├── attribute_display.png │ │ │ ├── attribute_selector.png │ │ │ ├── attributed_rule.png │ │ │ ├── calculation.png │ │ │ ├── category_attributes.png │ │ │ ├── category_display.png │ │ │ ├── category_equivalence.png │ │ │ ├── category_selector.png │ │ │ ├── comparison.png │ │ │ ├── constraint.png │ │ │ ├── date.png │ │ │ ├── date_add.png │ │ │ ├── date_add_days.png │ │ │ ├── date_comparison.png │ │ │ ├── date_constructor.png │ │ │ ├── date_value.png │ │ │ ├── datetime.png │ │ │ ├── datetime_calculation.png │ │ │ ├── datetime_constructor.png │ │ │ ├── datetime_to_ts.png │ │ │ ├── datetime_value.png │ │ │ ├── days_between.png │ │ │ ├── defeated.png │ │ │ ├── duration.png │ │ │ ├── duration_between.png │ │ │ ├── duration_calculation.png │ │ │ ├── duration_comparison.png │ │ │ ├── duration_constructor.png │ │ │ ├── duration_value.png │ │ │ ├── during.png │ │ │ ├── empty_list.png │ │ │ ├── fact.png │ │ │ ├── false_value.png │ │ │ ├── first_rest.png │ │ │ ├── from.png │ │ │ ├── holds.png │ │ │ ├── initially.png │ │ │ ├── json_input.png │ │ │ ├── known_false.png │ │ │ ├── list.png │ │ │ ├── list_aggregation.png │ │ │ ├── list_collection.png │ │ │ ├── math_operator.png │ │ │ ├── new_attribute.png │ │ │ ├── new_attribute_binary.png │ │ │ ├── new_attribute_unary.png │ │ │ ├── new_category.png │ │ │ ├── new_object.png │ │ │ ├── new_relationship.png │ │ │ ├── not.png │ │ │ ├── now.png │ │ │ ├── number.png │ │ │ ├── number_value.png │ │ │ ├── numerical_constraint.png │ │ │ ├── object_category.png │ │ │ ├── object_disequality.png │ │ │ ├── object_equality.png │ │ │ ├── object_selector.png │ │ │ ├── opposes.png │ │ │ ├── overrules.png │ │ │ ├── question.png │ │ │ ├── relationship_selector.png │ │ │ ├── rule.png │ │ │ ├── section_selector.png │ │ │ ├── time.png │ │ │ ├── time_calculation.png │ │ │ ├── time_value.png │ │ │ ├── today.png │ │ │ ├── true_false.png │ │ │ ├── true_value.png │ │ │ ├── ts_to_date.png │ │ │ ├── ts_to_datetime.png │ │ │ ├── ts_to_duration.png │ │ │ ├── ts_to_time.png │ │ │ ├── ultimately.png │ │ │ ├── unnamed_variable.png │ │ │ ├── variable.png │ │ │ └── variable_assignment.png │ │ │ ├── bob_age_35.png │ │ │ ├── bob_and_robert_identical.png │ │ │ ├── bob_is_mammal.png │ │ │ ├── bob_is_person.png │ │ │ ├── bot_button.png │ │ │ ├── button_bar.png │ │ │ ├── calculate_first_of_month.png │ │ │ ├── cat_is_mammal.png │ │ │ ├── collapsing_sidebars.gif │ │ │ ├── comments.gif │ │ │ ├── correct_not_any_dogs.png │ │ │ ├── date_calculator_filled.png │ │ │ ├── date_value_filled.png │ │ │ ├── default_attribute_selector.png │ │ │ ├── delete_button.png │ │ │ ├── disjunctive_rule.png │ │ │ ├── does_not_apply.png │ │ │ ├── doesnt_fit.gif │ │ │ ├── dog_and_cat_opposed.png │ │ │ ├── drag_stack.gif │ │ │ ├── duration_examples.png │ │ │ ├── eligibility_overruled.png │ │ │ ├── explanation_with_holds.png │ │ │ ├── explanation_without_holds.png │ │ │ ├── fact_scenario_editor_interface.png │ │ │ ├── family_ontology.png │ │ │ ├── fields.png │ │ │ ├── filled_overrule.png │ │ │ ├── from_ts_blocks.png │ │ │ ├── good_rule.png │ │ │ ├── holds_question.png │ │ │ ├── holds_rule.png │ │ │ ├── house_answers_9.png │ │ │ ├── house_ontology.png │ │ │ ├── how_do_we_know.png │ │ │ ├── initially_not_alive.png │ │ │ ├── inputs.png │ │ │ ├── internal_vertical_connector.png │ │ │ ├── invoice_ontology.png │ │ │ ├── invoice_total.png │ │ │ ├── is_socrates_mortal.png │ │ │ ├── it_rule.png │ │ │ ├── known_category_person.png │ │ │ ├── known_object_bob.png │ │ │ ├── list_of_one.png │ │ │ ├── list_of_two.png │ │ │ ├── lock_button.png │ │ │ ├── logical_constraint_example.png │ │ │ ├── logical_constraint_ontology.png │ │ │ ├── math_test.png │ │ │ ├── missing_vert_connections.png │ │ │ ├── must_pay_tax_rule.png │ │ │ ├── navigation_tree.gif │ │ │ ├── nested_math.png │ │ │ ├── net_30_addition.png │ │ │ ├── new_attribute_declaration_binary.png │ │ │ ├── new_attribute_declaration_unary.png │ │ │ ├── new_category_declaration.png │ │ │ ├── new_object_category.png │ │ │ ├── new_value_form.png │ │ │ ├── not_alive_from_death.png │ │ │ ├── not_alive_query.png │ │ │ ├── num_constraint_answer.png │ │ │ ├── output_pane.gif │ │ │ ├── person_friend.png │ │ │ ├── person_is_category.png │ │ │ ├── person_ontology.png │ │ │ ├── person_with_moustache_not_eligible.png │ │ │ ├── person_with_pet_eligible.png │ │ │ ├── possible_residence_rule.png │ │ │ ├── preloaded_according_to.png │ │ │ ├── preloaded_holds.png │ │ │ ├── project_editor_screen.png │ │ │ ├── project_editor_with_legal_text.png │ │ │ ├── reversed_order_attribute_customization.png │ │ │ ├── rps_1.png │ │ │ ├── rps_10.png │ │ │ ├── rps_11.png │ │ │ ├── rps_12.png │ │ │ ├── rps_13.png │ │ │ ├── rps_14.png │ │ │ ├── rps_15.png │ │ │ ├── rps_16.png │ │ │ ├── rps_17.png │ │ │ ├── rps_18.png │ │ │ ├── rps_19.png │ │ │ ├── rps_2.png │ │ │ ├── rps_20.png │ │ │ ├── rps_21.png │ │ │ ├── rps_22.png │ │ │ ├── rps_23.png │ │ │ ├── rps_24.png │ │ │ ├── rps_25.png │ │ │ ├── rps_26.png │ │ │ ├── rps_27.png │ │ │ ├── rps_3.png │ │ │ ├── rps_4.png │ │ │ ├── rps_5.png │ │ │ ├── rps_6.png │ │ │ ├── rps_7.png │ │ │ ├── rps_8.png │ │ │ ├── rps_9.png │ │ │ ├── scenario_editor.gif │ │ │ ├── scenario_editor_button.png │ │ │ ├── scenario_editor_buttons.png │ │ │ ├── scenario_editor_interface.png │ │ │ ├── score_code.png │ │ │ ├── sibling_rule_broken.png │ │ │ ├── sibling_rule_fixed.png │ │ │ ├── sucker_rule.png │ │ │ ├── tax_without_rep_ontology.png │ │ │ ├── toolbox.gif │ │ │ ├── trash.gif │ │ │ ├── twr_answer.png │ │ │ ├── twr_query.png │ │ │ ├── twr_rule.png │ │ │ ├── ultimately_not_alive.png │ │ │ ├── unground_category.png │ │ │ ├── unnested_math.png │ │ │ ├── vertical_connectors.png │ │ │ ├── view_tab.png │ │ │ ├── voting_age_rule.png │ │ │ ├── who_is_mortal.png │ │ │ └── wrong_not_any_dogs.png │ │ ├── drawers.js │ │ ├── examples │ │ ├── beard_tax.yaml │ │ ├── bird.yaml │ │ ├── covid_test.yaml │ │ ├── life_act.yaml │ │ ├── list_demo.yaml │ │ ├── logical_constraints.yaml │ │ ├── mortality.yaml │ │ ├── net30.yaml │ │ ├── numerical_constraints.yaml │ │ ├── oasa.yaml │ │ ├── r34.yaml │ │ ├── rps.yaml │ │ ├── siblings.yaml │ │ ├── wills.yaml │ │ └── wills_tutorial.yaml │ │ ├── favicon-16x16.png │ │ ├── favicon-32x32.png │ │ ├── favicon.ico │ │ ├── fonts.css │ │ ├── fonts │ │ ├── ibm-plex-sans-v14-latin-500.woff │ │ ├── ibm-plex-sans-v14-latin-500.woff2 │ │ ├── mina-v11-latin-700.woff │ │ └── mina-v11-latin-700.woff2 │ │ ├── import.js │ │ ├── mutators.js │ │ ├── navtree.css │ │ ├── person_friend.png │ │ ├── scasp_generator.js │ │ ├── site.webmanifest │ │ ├── sucker_rule.png │ │ ├── tutorials │ │ └── wills │ │ │ └── images │ │ │ ├── age_attribute.gif │ │ │ ├── blawxbot.gif │ │ │ ├── customize_attributes.gif │ │ │ ├── eligible_attribute.gif │ │ │ ├── jane_is_12.gif │ │ │ ├── jane_question_1.gif │ │ │ ├── jane_question_2.gif │ │ │ ├── navigation_tree.gif │ │ │ ├── person_category.gif │ │ │ ├── rule.gif │ │ │ └── scenario_editor_2.gif │ │ └── user_interface_v1.png ├── templates │ ├── base.html │ ├── base2.html │ ├── blawx │ │ ├── blawx.html │ │ ├── blawxtest_confirm_delete.html │ │ ├── blawxtest_form.html │ │ ├── bot.html │ │ ├── docs.html │ │ ├── docs2.html │ │ ├── index.html │ │ ├── ruledoc.html │ │ ├── ruledoc_confirm_delete.html │ │ ├── ruledoc_form.html │ │ ├── scenario_editor.html │ │ ├── scenario_editor_gcweb.html │ │ └── test.html │ ├── gcweb.html │ ├── includes │ │ ├── breadcrumb.html │ │ ├── footer.html │ │ ├── help_menu.html │ │ ├── leftbar.html │ │ ├── leftbar_nav.html │ │ ├── toolbox.html │ │ ├── topbar.html │ │ └── user_menu.html │ └── registration │ │ ├── logged_out.html │ │ ├── login.html │ │ ├── password_reset_complete.html │ │ ├── password_reset_confirm.html │ │ ├── password_reset_done.html │ │ ├── password_reset_email.html │ │ ├── password_reset_form.html │ │ └── register.html ├── templatetags │ └── markdown_extras.py ├── tests.py ├── urls.py ├── util │ ├── README.md │ ├── blawx_block_definitions.json │ └── blawx_block_library.xml ├── views.py └── wsgi.py ├── blawx_v1.6.16-alpha_interface.png ├── load_data.py ├── manage.py ├── thumbnail.png └── update.sh /.gitignore: -------------------------------------------------------------------------------- 1 | /newblawx/__pycache__/ 2 | /blawx/__pycache__/ 3 | /blawx/migrations/__pycache__/ 4 | *.pyc 5 | transcript 6 | /blawxbot/.rasa/ 7 | /blawxbot/models/ 8 | blawx/util/test.pl 9 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Lexpedite Legal Technologies Ltd. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /blawx/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/__init__.py -------------------------------------------------------------------------------- /blawx/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | 3 | from guardian.admin import GuardedModelAdmin 4 | from preferences.admin import PreferencesAdmin 5 | # Register your models here. 6 | from .models import Workspace, RuleDoc, BlawxTest, BlawxPreference 7 | 8 | class WorkspaceAdmin(GuardedModelAdmin): 9 | fields = ['ruledoc','workspace_name','xml_content','scasp_encoding'] 10 | 11 | class RuleDocAdmin(GuardedModelAdmin): 12 | fields = ['ruledoc_name','rule_slug','scasp_encoding','tutorial','akoma_ntoso','rule_text','navtree','owner','published'] 13 | 14 | class BlawxTestAdmin(GuardedModelAdmin): 15 | fields = ['ruledoc','test_name','xml_content','scasp_encoding', 'tutorial', 'view', 'fact_scenario'] 16 | 17 | 18 | admin.site.register(BlawxPreference, PreferencesAdmin) 19 | admin.site.register(Workspace,WorkspaceAdmin) 20 | admin.site.register(RuleDoc,RuleDocAdmin) 21 | admin.site.register(BlawxTest,BlawxTestAdmin) 22 | -------------------------------------------------------------------------------- /blawx/aggregates.py: -------------------------------------------------------------------------------- 1 | scasp_aggregates = """ 2 | count_blawx_list([],0). 3 | count_blawx_list([_|[]],1). 4 | count_blawx_list([_|Rest],Count) :- 5 | Rest \= [], 6 | count_blawx_list(Rest,RestCount), 7 | Count is RestCount + 1. 8 | 9 | sum_blawx_list([],0). 10 | sum_blawx_list([Any|[]],Any). 11 | sum_blawx_list([First|Rest],Sum) :- 12 | Rest \= [], 13 | sum_blawx_list(Rest,RestSum), 14 | Sum is First + RestSum. 15 | 16 | average_blawx_list([Any|[]],Any). 17 | average_blawx_list(List,Average) :- 18 | count_blawx_list(List,Count), 19 | sum_blawx_list(List,Sum), 20 | Average is Sum / Count. 21 | 22 | % If there is only one element, the maximum of that list is the element. 23 | max_blawx_list([Any|[]],Any). 24 | 25 | % If there are three elements, the maximum is either the first element, or the maximum of the remainder 26 | max_blawx_list([First|Rest],First) :- 27 | max_blawx_list(Rest,RestMax), 28 | First #>= RestMax. 29 | max_blawx_list([First|Rest],RestMax) :- 30 | max_blawx_list(Rest,RestMax), 31 | First #< RestMax. 32 | 33 | min_blawx_list([Any|[]],Any). 34 | min_blawx_list([First|Rest],First) :- 35 | min_blawx_list(Rest,RestMin), 36 | First #=< RestMin. 37 | min_blawx_list([First|Rest],RestMin) :- 38 | min_blawx_list(Rest,RestMin), 39 | First #> RestMin. 40 | 41 | blawx_list_not_between([Head|Tail],Start,End) :- 42 | blawx_not_between(Head,Start,End), 43 | blawx_list_not_between(Tail,Start,End). 44 | blawx_list_not_between([],_,_). 45 | blawx_not_between(X,Y,Z) :- X =< Y. 46 | blawx_not_between(X,Y,Z) :- X >= Z. 47 | 48 | blawx_list_not_before([Head|Tail],End) :- 49 | Head >= End, 50 | blawx_list_not_before(Tail,End). 51 | blawx_list_not_before([],_). 52 | 53 | blawx_list_not_after([Head|Tail],Start) :- 54 | Head =< Start, 55 | blawx_list_not_after(Tail,Start). 56 | blawx_list_not_after([],_). 57 | 58 | """ -------------------------------------------------------------------------------- /blawx/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class BlawxConfig(AppConfig): 5 | default_auto_field = 'django.db.models.BigAutoField' 6 | name = 'blawx' 7 | 8 | def ready(self): 9 | # This implicitly connects signal receivers. 10 | from . import signals 11 | 12 | -------------------------------------------------------------------------------- /blawx/asgi.py: -------------------------------------------------------------------------------- 1 | """ 2 | ASGI config for newblawx project. 3 | 4 | It exposes the ASGI callable as a module-level variable named ``application``. 5 | 6 | For more information on this file, see 7 | https://docs.djangoproject.com/en/4.0/howto/deployment/asgi/ 8 | """ 9 | 10 | import os 11 | 12 | from django.core.asgi import get_asgi_application 13 | 14 | os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'blawx.settings') 15 | 16 | application = get_asgi_application() 17 | -------------------------------------------------------------------------------- /blawx/events.py: -------------------------------------------------------------------------------- 1 | ec_code = """ 2 | blawx_as_of(X,datetime(Y)) :- blawx_as_of(X,date(Y)). 3 | blawx_during(datetime(X),Y,datetime(Z)) :- blawx_during(date(X),Y,date(Z)). 4 | blawx_during(datetime(X),Y,datetime(Z)) :- blawx_during(date(X),Y,datetime(Z)). 5 | blawx_during(datetime(X),Y,datetime(Z)) :- blawx_during(datetime(X),Y,date(Z)). 6 | blawx_becomes(X,datetime(Y)) :- blawx_becomes(X,date(Y)). 7 | """ -------------------------------------------------------------------------------- /blawx/fixtures/docs/about.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: about 3 | fields: 4 | title: About 5 | content: | 6 | # About Blawx 7 | 8 | Blawx is an open source, web-based, user-friendly 9 | interface 10 | to the [s(CASP) programming language](http://ceur-ws.org/Vol-2970/gdeinvited4.pdf) 11 | built 12 | on [Google's Blockly library](https://developers.google.com/blockly), 13 | intended 14 | for use in encoding legislation and contracts. 15 | 16 | Blocks + Law = Blawx. 17 | 18 | It is maintained by [Jason Morris](https://github.com/Gauntlet173) of Lexpedite 19 | Legal Technology, Ltd. It's development has been supported by the Canada School of Public Service, 20 | Employment and Social Development Canada, and the Public Health Authority of Canada. 21 | 22 | To contribute or report problems, please file an issue at the [Blawx repository on GitHub](https://github.com/lexpedite/blawx). -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/assumption.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/assumption 3 | fields: 4 | title: Assumption Block 5 | content: | 6 | # Assumption Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The assumption block is found in the Primary drawer of the Blawx toolbox. 13 | 14 | ## What Does It Do? 15 | 16 | The assumption block is used to tell Blawx to assume that the included statement 17 | may or may not be true, and enables Blawx to answer questions on the basis of 18 | those assumptions. 19 | 20 | ## Technical Details 21 | 22 | An assumption block is an outer block, and is valid if it has exactly one statement block connected to it. 23 | 24 | In the background, the assumption block is implemented as a set of two rules which 25 | say, essentially, "statement is true if it is not known false; statement is known false if not true." 26 | This creates two possible sets of scenarios for Blawx to consider, and Blawx will 27 | provide answers from either scenario if the assumption is required in order to 28 | answer the question. 29 | 30 | Note that because Blawx generates both scenarios, when you are using an assumption block 31 | it is typical for a question and it's opposite to both be answerable at the same time. 32 | 33 | For instance, if you ask Blawx to assume eligibility, it will be able to find a scenario 34 | in which the person is entitled to payment (because they are assumed to be eligible), and a scenario in 35 | which they are not (because they are not to be eligible). 36 | 37 | ## Tips 38 | 39 | Note that if you use a large number of assumptions at the same time, you create exponentially 40 | more fact scenarios for Blawx to consider. That may slow down processing of your code. -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/categories/attribute_selector.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/attribute_selector 3 | fields: 4 | title: Attribute Selector Block 5 | content: | 6 | # Attribute Selector Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The attribute selector block is located in the Known Attributes drawer of the Blawx toolbox. 13 | 14 | ## What Does It Do? 15 | 16 | The attribute selector block is used to set or test a value for an attribute of a given object. 17 | 18 | ## Technical Details 19 | 20 | The attribute selector block's appearance is determined by the attribute declaration block. 21 | 22 | It always has two internal connectors, one for the object, and one for the value. The object 23 | connector accepts an object or a variable. The value connector accepts a variable, or a value 24 | of the correct type if the attribute has a datatype, or an object, if the attribute's datatype is 25 | a category. 26 | 27 | ## Tips 28 | 29 | Most of the work that you will do setting out rules in Blawx will be done using attribute 30 | selector blocks and variables. -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/categories/category_attribute.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/category_attribute 3 | fields: 4 | title: Category Attribute Block 5 | content: | 6 | # Category Attribute Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The category attribute block is located in the Categories drawer of the Blawx toolbox. 13 | 14 | ## What Does It Do? 15 | 16 | The category attribute block is used to create new attributes associated with a category. 17 | 18 | ## Technical Details 19 | 20 | The category attribute block accepts one internal input, which must be a category selector. 21 | It also has an external connector which must be a stack of new attribute blocks, optionally 22 | with attribute display blocks included. 23 | 24 | ## Tips 25 | 26 | Multiple category attribute blocks can be created for the same category, so it is possible 27 | to add attributes to a category in multiple places in your code. -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/categories/category_equivalence.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/category_equivalence 3 | fields: 4 | title: Category Equivalence Block 5 | content: | 6 | # Category Equivalence Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The category equivalence block is located in the Categories drawer of the Blawx toolbox. 13 | 14 | ## What Does It Do? 15 | 16 | The category equivalence block is used to indicate that all members of one category are 17 | also members of another category. 18 | 19 | ## Technical Details 20 | 21 | The category equivalence block is a statement, and can be stacked with other statements. 22 | It accepts two inputs, both of which must be categories. The effect of the category 23 | equivalence block is that all members of the first category are members of the second 24 | category. 25 | 26 | ## Tips 27 | 28 | A category equivalence block is a short-form of a rule that states "when we know 29 | X is in category A, we also know X is in category B". 30 | 31 | Category equivalence happens in one direction only. If you want to say 32 | something like "all tolkien books are great books, and all great books are tolkien books", 33 | you will need two category equivalence blocks. -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/categories/category_selector.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/category_selector 3 | fields: 4 | title: Category Selector Block 5 | content: | 6 | # Category Selector Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The category selector block is located in the Known Categories drawer of the Blawx toolbox. 13 | 14 | ## What Does It Do? 15 | 16 | The category selector block is used to specify a category. 17 | 18 | ## Technical Details 19 | 20 | The category block can be placed only on inputs that 21 | are expecting a category, 22 | such as in a category attribute block, 23 | a category equivalence block, an object category block, or a new attribute block. 24 | 25 | ## Tips -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/categories/new_category.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/new_category 3 | fields: 4 | title: New Category Block 5 | content: | 6 | # New Category Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The new category block is found in the Categories drawer of the Blawx toolbox. 13 | 14 | ## What Does It Do? 15 | 16 | The new category block is used to create a new category of objects. 17 | 18 | ## Technical Details 19 | 20 | The new category block is a statement, and can be stacked with other statements. 21 | 22 | The new category block accepts the name of the category. 23 | 24 | It also accepts text that should appear before and after the name of the object in explanations. 25 | 26 | ## Tips 27 | 28 | Names of categories should be unique, but can safely 29 | overlap with the names of non-boolean attributes. 30 | 31 | To be valid, a category name must 32 | 33 | * contain only numbers, underscores, and letters 34 | * begin with a lowercase letter 35 | * not end in an underscore followed by only digits 36 | 37 | The block will automatically remove leading and trailing spaces, convert spaces to underscores, 38 | and convert an initial uppercase letter into lowercase. Other invalid values will be rejected, and 39 | the value of the field will not be changed. -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/categories/relationship_selector.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/relationship_selector 3 | fields: 4 | title: Relationship Selector Block 5 | content: | 6 | # Relationship Selector Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The relationship selector block is located in the Known Relationships drawer of the Blawx toolbox. 13 | 14 | ## What Does It Do? 15 | 16 | The relationship selector block is used to set or test a value for a relationship between 3 or more objects and values. 17 | 18 | ## Technical Details 19 | 20 | The relationship selector block's appearance is determined by the new relationship block that defines it. 21 | 22 | It has between 3 and 10 internal connectors for objects and values. If a connector is for a data type, it will only 23 | accept values of that type and variables. If a connector is for a category, it will accept objects and variables. 24 | 25 | ## Tips 26 | 27 | -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/constraint.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/constraint 3 | fields: 4 | title: Constraint Block 5 | content: | 6 | # Constraint Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The constraint block is found in the Primary drawer of the Blawx toolbox. 13 | 14 | ## What Does It Do? 15 | 16 | The constraint block is used to set out a combination of statements that cannot 17 | all be true at the same time. 18 | 19 | ## Technical Details 20 | 21 | The constraint block is an outer block. It accepts a single stack of statements, which is valid if it 22 | includes at least one statement. 23 | 24 | A constraint is used to express a set of facts that cannot all be true at the same 25 | time in any of the models returned by any question block. 26 | 27 | For example, you might use a constraint block to indicate that a person cannot 28 | be both the testator of a will and the trustee named in the will at the same time. 29 | 30 | ## Tips 31 | 32 | Using the constraint block can cause your code to run more slowly. -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/data_types/date.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/date 3 | fields: 4 | title: Date Datatype Block 5 | content: | 6 | # Date Datatype Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The date datatype block is located in the Data Types drawer of the Blawx toolbox. 13 | 14 | ## What Does It Do? 15 | 16 | The date datatype block is used to indicate that an attribute has values that are dates. 17 | 18 | ## Technical Details 19 | 20 | The date datatype block is a data type, and can only be used in blocks that are expecting 21 | a data type, which is usually only a new attribute block. 22 | 23 | ## Tips -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/data_types/datetime.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/datetime 3 | fields: 4 | title: Datetime Datatype Block 5 | content: | 6 | # Datetime Datatype Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The datetime datatype block is located in the Data Types drawer of the Blawx toolbox. 13 | 14 | ## What Does It Do? 15 | 16 | The datetime datatype block is used to indicate that an attribute has values that are datetimes. 17 | 18 | ## Technical Details 19 | 20 | The datetime datatype block is a data type, and can only be used in blocks that are expecting 21 | a data type, which is usually only a new attribute block. 22 | 23 | ## Tips -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/data_types/duration.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/duration 3 | fields: 4 | title: Duration Datatype Block 5 | content: | 6 | # Duration Datatype Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The duration datatype block is located in the Data Types drawer of the Blawx toolbox. 13 | 14 | ## What Does It Do? 15 | 16 | The duration datatype block is used to indicate that an attribute has values that are durations. 17 | 18 | ## Technical Details 19 | 20 | The duration datatype block is a data type, and can only be used in blocks that are expecting 21 | a data type, which is usually only a new attribute block. 22 | 23 | ## Tips 24 | 25 | The use of durations including year and month values is not recommended, as they tend to behave 26 | in unpredictable ways, given that months and years are not of a consistent duration. -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/data_types/list.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/list 3 | fields: 4 | title: List Datatype Block 5 | content: | 6 | # List Datatype Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The list datatype block is located in the Data Types drawer of the Blawx toolbox. 13 | 14 | ## What Does It Do? 15 | 16 | The list datatype block is used to indicate that an attribute has values that are lists of values. 17 | 18 | ## Technical Details 19 | 20 | The list datatype block is a data type, and can only be used in blocks that are expecting 21 | a data type, which is usually only a new attribute block. 22 | 23 | ## Tips -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/data_types/number.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/number 3 | fields: 4 | title: Number Datatype Block 5 | content: | 6 | # Number Datatype Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The number datatype block is located in the Data Types drawer of the Blawx toolbox. 13 | 14 | ## What Does It Do? 15 | 16 | The number datatype block is used to indicate that an attribute has values that are numbers. 17 | 18 | ## Technical Details 19 | 20 | The number datatype block is a data type, and can only be used in blocks that are expecting 21 | a data type, which is usually only a new attribute block. 22 | 23 | The number datatype can be used for integers or real numbers. 24 | 25 | ## Tips -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/data_types/time.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/time 3 | fields: 4 | title: Time Datatype Block 5 | content: | 6 | # Time Datatype Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The time datatype block is located in the Data Types drawer of the Blawx toolbox. 13 | 14 | ## What Does It Do? 15 | 16 | The time datatype block is used to indicate that an attribute has values that are times. 17 | 18 | ## Technical Details 19 | 20 | The time datatype block is a data type, and can only be used in blocks that are expecting 21 | a data type, which is usually only a new attribute block. 22 | 23 | ## Tips -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/data_types/true_false.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/true_false 3 | fields: 4 | title: True / False Datatype Block 5 | content: | 6 | # True / False Datatype Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The true / false datatype block is located in the Data Types drawer of the Blawx toolbox. 13 | 14 | ## What Does It Do? 15 | 16 | The true / false datatype block is used to indicate that the datatype of an attribute is a 17 | boolean, or true or false value. 18 | 19 | ## Technical Details 20 | 21 | The true / false datatype block is a datatype block, and can only be used where a datatype 22 | is expected, which is typically limited to the datatype input of a new attribute block. 23 | 24 | ## Tips 25 | 26 | The true / false datatype is used to represent concepts that are either true or false, but 27 | don't hold any other value. -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/data_values/date_value.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/date_value 3 | fields: 4 | title: Date Value Block 5 | content: | 6 | # Date Value Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The Date Value block is located in the dates drawer of the Blawx toolbox. 13 | 14 | ## What Does It Do? 15 | 16 | The Date Value block is used to provide a specific date value. 17 | 18 | ## Technical Details 19 | 20 | The date value block is a value block, and can be used anywhere that is expecting 21 | a value of type "date". This is typically in date statement blocks. 22 | 23 | It has three numerical fields, representing the year, month, and day. Years can be 24 | negative integers, or zero. Valid months are integers between 1 and 12, and valid days are integers between 1 and 31. 25 | 26 | ## Tips 27 | 28 | The date value block will allow you 29 | to specify invalid dates, such as `2000 2 30`. This will not cause a problem in the 30 | Blawx Code Editor, but may result in errors when you run your tests. 31 | -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/data_values/datetime_value.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/datetime_value 3 | fields: 4 | title: Datetime Value Block 5 | content: | 6 | # Datetime Value Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The Datetime Value block is located in the dates drawer of the Blawx toolbox. 13 | 14 | ## What Does It Do? 15 | 16 | The Datetime Value block is used to provide a specific datetime value. 17 | 18 | ## Technical Details 19 | 20 | The datetime value block is a value block, and can be used anywhere that is expecting 21 | a value of type "datetime". This is typically in date statement blocks. 22 | 23 | It has six numerical fields, representing the year, month, day, hour, minute, and seconds. Years can be 24 | negative integers, or zero. Valid months are integers between 1 and 12, and valid days are integers between 1 and 31. 25 | Valid hours are integers from 0 to 23. Valid minutes are integers from 0 to 59. Any non-negative number less than 60 is 26 | a valid seconds value. 27 | 28 | ## Tips 29 | 30 | The datetime value block will allow you 31 | to specify invalid dates, such as `2000 2 30`. This will not cause a problem in the 32 | Blawx Code Editor, but may result in errors when you run your tests. 33 | -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/data_values/duration_value.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/duration_value 3 | fields: 4 | title: Duration Value Block 5 | content: | 6 | # Duration Value Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The Duration Value block is located in the dates drawer of the Blawx toolbox. 13 | 14 | ## What Does It Do? 15 | 16 | The Duration Value block is used to provide a specific duration value. 17 | 18 | ## Technical Details 19 | 20 | The duration value block is a value block, and can be placed anywhere that is expecting 21 | a value of the duration type. This is typically in date statement blocks. 22 | 23 | A duration is a combination of a sign, and four numbers representing the 24 | days, hours, minutes, and seconds of the duration. 25 | If the sign is positive ("+"), the duration is "into the future." If the sign 26 | is negative ("-"), the duration is "into the past." The idea "two days hence" 27 | could be expressed using the values `+ 2 0 0 0`. The idea "one year ago" could be expressed 28 | using the values `- 365 0 0 0`. 29 | 30 | Seconds can be specified with decimal places, all other values need to be non-negative integers. 31 | 32 | ## Tips 33 | 34 | -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/data_values/false.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/false 3 | fields: 4 | title: False Value Block 5 | content: | 6 | # False Value Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The false value block is located in the Data Values drawer of the Blawx toolbox. 13 | 14 | ## What Does It Do? 15 | 16 | The false value block is used to indicate that the value of a true or false attribute 17 | is false. 18 | 19 | ## Technical Details 20 | 21 | The false value block is a boolean value, and can be placed only in locations that 22 | are expecting a boolean value. That is typically limited to the value input of 23 | an attribute selector block, where the attribute is using the "True / False" data type. 24 | 25 | ## Tips -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/data_values/number_value.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/number_value 3 | fields: 4 | title: Number Value Block 5 | content: | 6 | # Number Value Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The number value block is located in the Data Values drawer of the Blawx toolbox. 13 | 14 | ## What Does It Do? 15 | 16 | The number value block is used to provide a specific numerical value. 17 | 18 | ## Technical Details 19 | 20 | The number value block can be used to provide an Integer or a Real number (with 21 | decimal point values). 22 | 23 | ## Tips -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/data_values/time_value.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/time_value 3 | fields: 4 | title: Time Value Block 5 | content: | 6 | # Time Value Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The Time Value block is located in the dates drawer of the Blawx toolbox. 13 | 14 | ## What Does It Do? 15 | 16 | The Time Value block is used to provide a specific time value. 17 | 18 | ## Technical Details 19 | 20 | The time value block is a value block, and can be used anywhere that is expecting 21 | a value of type "time". This is typically in datetime constructor blocks. 22 | 23 | It has three numerical fields, representing the hours, minutes, and seconds. Valid hours 24 | are integers between 0 and 23. Valid minutes are integers between 0 and 59. Valid seconds 25 | are non-negative numbers less than 60. 26 | 27 | ## Tips -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/data_values/true.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/true 3 | fields: 4 | title: True Value Block 5 | content: | 6 | # True Value Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The true value block is located in the Data Values drawer of the Blawx toolbox. 13 | 14 | ## What Does It Do? 15 | 16 | The true value block is used to indicate that the value of a true / false attribute is true. 17 | 18 | ## Technical Details 19 | 20 | The true value block is a boolean value, and can be placed only in locations that 21 | are expecting a boolean value. That is typically limited to the value input of 22 | an attribute selector block, where the attribute is using the "True / False" data type. 23 | 24 | ## Tips -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/date_statements/date_add.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/date_add 3 | fields: 4 | title: Date Add Block 5 | content: | 6 | # Date Add Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The Date Add block is located in the dates drawer of the Blawx toolbox. 13 | 14 | ## What Does It Do? 15 | 16 | The Date Add block is used to require that a relationship hold between two dates and the duration between them. 17 | 18 | It accepts a starting date, a duration, and a datetime that corresponds to adding that duration to the starting date. 19 | 20 | If you provide two of these values, it will derive the third, which means that it can be used to add durations to dates, 21 | or used to subtract dates from one another to get durations. 22 | 23 | ## Technical Details 24 | 25 | The Date Add block is a statement block that can be stacked with other statements. 26 | 27 | It accepts three inputs: a duration value, and two date or datetime values. 28 | 29 | If any two inputs are bound, the third will be derived. If all three are bound, it will check whether the relationship 30 | holds. 31 | 32 | 33 | ## Tips 34 | 35 | To subtract a duration from a date or datetime, use a negative sign in the duration. 36 | 37 | If you add a duration to a date, Blawx will add the duration to 12:00am on that date. 38 | -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/date_statements/date_add_days.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/date_add_days 3 | fields: 4 | title: Date Add Days Block 5 | content: | 6 | # Date Add Days Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The Date Add Days block is located in the dates drawer of the Blawx toolbox. 13 | 14 | ## What Does It Do? 15 | 16 | The Date Add Days block is used to calculate a new datetime value by adding a number of days to 17 | an existing date or datetime value. 18 | 19 | ## Technical Details 20 | 21 | The Date Add Days block is a statement block that can be stacked with other statements. 22 | 23 | It accepts three inputs: a number of days, and two date or datetime values. 24 | 25 | The number of days can include partial days, using decimals such as `5.4`. 26 | 27 | If the first variable is bound to a number of days, and the second value is bound to a 28 | date or datetime, the third variable will be bound to the datetime obtained by adding that 29 | number of days to the datetime provided. If all three are bound, it will check whether the relationship 30 | holds. 31 | 32 | To subtract a number of days from a date or datetime, use a negative value in the number of days. 33 | 34 | ## Tips -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/date_statements/date_comparison.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/date_comparison 3 | fields: 4 | title: Date Comparison Block 5 | content: | 6 | # Date Comparison Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The Date Comparison block is located in the dates drawer of the Blawx toolbox. 13 | 14 | ## What Does It Do? 15 | 16 | The Date Comparison block is used to find out if one date or datetime is before, after, the same 17 | as or different from another date or datetime value. 18 | 19 | ## Technical Details 20 | 21 | The Date Comparison block is a statement block that can be stacked with other statements. 22 | 23 | It accepts two inputs, both of which are expected to be dates, datetimes, or variables, and has a dropdown 24 | field that indicates the type of comparison you want to do. 25 | 26 | 27 | ## Tips 28 | 29 | If you compare a date, it will be treated as though you were comparing 12:00am on that date. 30 | -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/date_statements/date_constructor.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/date_constructor 3 | fields: 4 | title: Date Constructor Block 5 | content: | 6 | # Date Constructor Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The Date Constructor block is located in the data statements drawer of the Blawx toolbox, 13 | in the date sub-drawer. 14 | 15 | ## What Does It Do? 16 | 17 | The Date Constructor block is used to generate a date value dynamically. 18 | 19 | ## Technical Details 20 | 21 | The date constructor block is a value block that returns a value of type date. It can be 22 | used anywhere that a date value block can be used. 23 | 24 | It accepts three inputs, each of which must be a number or a variable. 25 | 26 | ## Tips 27 | 28 | While the date value block will prevent you from entering invalid months (like 13) 29 | and invalid days (like 40), the date constructor block cannot. If you are using 30 | number value blocks in all three inputs of the date constructor block (you are not using 31 | any variables), it is a better practice to use the date value block instead. -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/date_statements/datetime_combination.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/datetime_combination 3 | fields: 4 | title: Datetime Combination Block 5 | content: | 6 | # Datetime Combination Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The Datetime Combination block is located in the dates drawer of the Blawx toolbox. 13 | 14 | ## What Does It Do? 15 | 16 | The Datetime Combination block is used to generate a datetime value dynamically from an existing date and time, 17 | or to extract date and time values from an existing datetime. 18 | 19 | ## Technical Details 20 | 21 | The datetime constructor block is a statement block that relates a datetime to its constituent date and time. It can 22 | be stacked with other statement blocks 23 | 24 | It accepts three inputs: a date, a time, and a datetime. If the datetime is bound to a valid datetime, the date and time 25 | will be bound to its parts. If the date and time are bound to valid values, the datetime will be bound to their combination. 26 | 27 | ## Tips -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/date_statements/datetime_constructor.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/datetime_constructor 3 | fields: 4 | title: Datetime Constructor Block 5 | content: | 6 | # Datetime Constructor Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The Datetime Constructor block is located in the data statements drawer of the Blawx toolbox, 13 | in the date sub-drawer. 14 | 15 | ## What Does It Do? 16 | 17 | The Datetime Constructor block is used to generate a datetime value dynamically. 18 | 19 | ## Technical Details 20 | 21 | The datetime constructor block is a value block that returns a value of type datetime. It can be 22 | used anywhere that a datetime value block can be used. 23 | 24 | It accepts six inputs, each of which must be a number or a variable. For the datetime to be valid, 25 | the year must be an integer, month must be an integer between 1 and 12, day must be a valid integer 26 | between 1 and 31, hours must be an integer between 0 and 23, minutes must be an integer between 0 and 59, 27 | and seconds must be a non-negative number less than 60. 28 | 29 | ## Tips 30 | 31 | While the datetime value block will prevent you from entering invalid months (like 13) 32 | and invalid days (like 40), the datetime constructor block cannot. If you are using 33 | number value blocks in all six inputs of the date constructor block (you are not using 34 | any variables), it is a better practice to use the datetime value block instead. -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/date_statements/datetime_to_ts.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/datetime_to_ts 3 | fields: 4 | title: Datetime to Timestamp Block 5 | content: | 6 | # Datetime to Timestamp Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The Datetime to Timestamp Block is found in the Dates drawer of the Blawx toolbox. 13 | 14 | ## What Does It Do? 15 | 16 | The Datetime to Timestamp block has two inputs that are expecting a datetime, and a number 17 | represeting a POSIX timestamp. The first input must be bound to a datetime value for 18 | the block to operate. If the second input is bound to a specific number value, the block 19 | will evaluate as true if the timestamp and datetime match. If the second input is a variable, 20 | it will be bound to the POSIX timestamp number value that corresponds to the datetime in the first input. 21 | 22 | ## Technical Details 23 | 24 | The Datetime to Timestamp block is a statement and can be stacked with other statement blocks. 25 | 26 | ## Tips 27 | 28 | The Datetime to Timestamp block cannot be used to generate a datetime from a timestamp. To do 29 | that, use the Timestamp to Datetime block. 30 | -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/date_statements/days_between.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/days_between 3 | fields: 4 | title: Days Between Block 5 | content: | 6 | # Days Between Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The Days Between block is located in the data statements drawer of the Blawx toolbox, 13 | in the date sub-drawer. 14 | 15 | ## What Does It Do? 16 | 17 | The Days Between block is used to generate a number value that represents the number 18 | of days that passed between two dates. 19 | 20 | ## Technical Details 21 | 22 | The days between block is a statement block, that can be stacked with other statement 23 | blocks. 24 | 25 | It accepts three inputs, the first two of which must be dates, datetimes, or variables. The third 26 | input must be a number or a variable. If the first two inputs are bound, the variable 27 | in the third input will be bound to a number indicating the number of calendar days 28 | that pass between the two dates or datetimes. 29 | 30 | ## Tips 31 | 32 | The starting date is not counted, but the ending date is. So the number of days 33 | between today and tomorrow is always 1. 34 | 35 | If you use datetimes, the times are taken into account. The number of days between 1pm on 36 | one day and 11am the following day will be less than 1. -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/date_statements/duration_between.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/duration_between 3 | fields: 4 | title: Duration Between Block 5 | content: | 6 | # Duration Between Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The Duration Between block is located in the data statements drawer of the Blawx toolbox, 13 | in the date sub-drawer. 14 | 15 | ## What Does It Do? 16 | 17 | The Duration Between block is used to calculate the duration between two date or datetime values. 18 | 19 | ## Technical Details 20 | 21 | The Duration Between block is a statement block that can be stacked with other statement blocks. 22 | 23 | It accepts three inputs. The first two must be dates, datetimes, or variables. The third must be a duration 24 | or a variable. If the first two inputs are bound to date or datetime values, the third will be bound to 25 | a duration that indicates the time that has passed between the two date or datetimes. Dates will be treated 26 | as midnight on the given date. 27 | 28 | ## Tips 29 | 30 | Unlike previous versions of Blawx, the duration between block will return a simplified duration indicating 31 | the time between two dates. It may return any number of years, or days, but will not return more than 12 months, 32 | more than 23 hours, 59 minutes or 60 or more seconds. 33 | 34 | The use of durations including year and month values is not recommended, as they tend to behave 35 | in unpredictable ways, given that months and years are not of a consistent duration. -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/date_statements/duration_comparison.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/duration_comparison 3 | fields: 4 | title: Duration Comparison Block 5 | content: | 6 | # Duration Comparison Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The Duration Comparison block is located in the dates drawer of the Blawx toolbox. 13 | 14 | ## What Does It Do? 15 | 16 | The Duration Comparison block is used to find out if one duration is larger, smaller, the 17 | same size as or different from another duration. 18 | 19 | ## Technical Details 20 | 21 | The Duration Comparison block is a statement block that can be stacked with other statements. 22 | 23 | It accepts two inputs, both of which are expected to be durations, or variables, and has a dropdown 24 | field that indicates the type of comparison you want to do. 25 | 26 | 27 | ## Tips 28 | 29 | Negative durations are "smaller" than positive durations. 30 | -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/date_statements/duration_constructor.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/duration_constructor 3 | fields: 4 | title: Duration Constructor Block 5 | content: | 6 | # Duration Constructor Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The Duration Constructor block is located in the data statements drawer of the Blawx toolbox, 13 | in the date sub-drawer. 14 | 15 | ## What Does It Do? 16 | 17 | The Duration Constructor block is used to dynamically generate a duration value. 18 | 19 | ## Technical Details 20 | 21 | The Duration Constructor block is a value block that can be used anywhere a duration value block 22 | can be used, and returns a duration value. 23 | 24 | The Duration Constructor block has seven inputs, which accept number values or variables. 25 | 26 | While the duration constructor block will accept any numerical values, a duration value 27 | will only be valid if: 28 | 29 | * the sign value is either `1` (for into the future) or `-1` (for into the past) 30 | * the years, months, and days, hours and minutes are non-negative integers 31 | * the seconds value is a non-negative number 32 | 33 | ## Tips 34 | 35 | If you are not using variables in your duration constructor, you are better off using the duration 36 | value block, which will do more validation of your input to make sure it is a valid duration. 37 | 38 | The use of durations including year and month values is not recommended, as they tend to behave 39 | in unpredictable ways, given that months and years are not of a consistent duration. -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/date_statements/now.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/now 3 | fields: 4 | title: Now Block 5 | content: | 6 | # Now Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The Now block is located in the dates drawer of the Blawx toolbox. 13 | 14 | ## What Does It Do? 15 | 16 | The Now block is used to bind a variable to the datetime value at the time a question is answered by the reasoner. 17 | 18 | ## Technical Details 19 | 20 | The Now block is a statement block, and can be stacked with other statement blocks. 21 | 22 | ## Tips -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/date_statements/time_constructor.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/time_constructor 3 | fields: 4 | title: Time Constructor Block 5 | content: | 6 | # Time Constructor Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The Time Constructor block is located in the data statements drawer of the Blawx toolbox, 13 | in the date sub-drawer. 14 | 15 | ## What Does It Do? 16 | 17 | The Time Constructor block is used to generate a time value dynamically. 18 | 19 | ## Technical Details 20 | 21 | The time constructor block is a value block that returns a value of type time. It can be 22 | used anywhere that a time value block can be used. 23 | 24 | It accepts three inputs, representing the hours, minutes, and seconds. The inputs can be 25 | provided with numbers, or variables. For a time to be valid, hours must be an 26 | integer between 0 and 23, minutes must be an integer between 0 and 59, and seconds 27 | must be a non-negative number less than 60. 28 | 29 | ## Tips -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/date_statements/today.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/today 3 | fields: 4 | title: Today Block 5 | content: | 6 | # Today Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The Today block is located in the dates drawer of the Blawx toolbox. 13 | 14 | ## What Does It Do? 15 | 16 | The Today block is used to bind a variable to the date value at the time a question is answered by the reasoner. 17 | 18 | ## Technical Details 19 | 20 | The Today block is a statement block, and can be stacked with other statement blocks. 21 | 22 | ## Tips -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/date_statements/ts_to_date.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/date_from_ts 3 | fields: 4 | title: Timestamp to Date Block 5 | content: | 6 | # Timestamp to Date Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The Timestamp to Date Block is found in the Dates drawer of the Blawx toolbox. 13 | 14 | ## What Does It Do? 15 | 16 | The timestamp to date block accepts a number which represents a POSIX date, and returns 17 | a date value for use in other date blocks. 18 | 19 | ## Technical Details 20 | 21 | The Timestamp to date block accepts a number or a variable and outputs a Date. 22 | 23 | ## Tips 24 | 25 | The timestamp to date block does not validate the number provided. For consistent results, 26 | it should be a posix timestamp as of midnight at the start of a calendar day, or a multiple of 86400. -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/date_statements/ts_to_datetime.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/datetime_from_ts 3 | fields: 4 | title: Timestamp to Datetime Block 5 | content: | 6 | # Timestamp to Datetime Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The Timestamp to Datetime Block is found in the Dates drawer of the Blawx toolbox. 13 | 14 | ## What Does It Do? 15 | 16 | The Timestamp to Datetime block accepts a number representing 17 | a posix timestamp, and returns a datetime. 18 | 19 | ## Technical Details 20 | 21 | The Timestamp to Datetime block is a value block that accepts a number or a variable and returns a Datetime. 22 | 23 | ## Tips 24 | 25 | A posix timestamp is the number of seconds that have passed from the start of January 1 1970, UTC. -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/date_statements/ts_to_duration.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/duration_from_ts 3 | fields: 4 | title: Timestamp to Duration Block 5 | content: | 6 | # Timestamp to Duration Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The Timestamp to Duration Block is found in the Dates drawer of the Blawx toolbox. 13 | 14 | ## What Does It Do? 15 | 16 | The timestamp to Duration Block accepts a number which represents a number of seconds, and returns a duration value. 17 | 18 | ## Technical Details 19 | 20 | The Timestamp to Duration Block is a value block that accepts a number or a variable and outputs a Duration. 21 | 22 | ## Tips 23 | -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/date_statements/ts_to_time.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/time_from_ts 3 | fields: 4 | title: Timestamp to Time Block 5 | content: | 6 | # Timestamp to Time Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The Timestamp to Time Block is found in the Dates drawer of the Blawx toolbox. 13 | 14 | ## What Does It Do? 15 | 16 | The timestamp to time block accepts a number which represents a time represented as seconds 17 | from midnight, and returns a time value. 18 | 19 | ## Technical Details 20 | 21 | The Timestamp to date block is a value block that accepts a number or a variable and outputs a Time. 22 | 23 | ## Tips 24 | 25 | The timestamp to date block does not validate the number provided. For consistent results, the 26 | number should be less than 86400. To specify times longer than one day, use the timestamp to duration block. -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/events/as_of.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/as_of 3 | fields: 4 | title: As Of Block 5 | content: | 6 | # As Of Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The As Of block is found in the Events drawer of the Blawx toolbox. 13 | 14 | ## What Does It Do? 15 | 16 | The As Of block is used for stating and querying whether a statement holds as of a particular time. 17 | It accepts a datetime input, and a statement. 18 | 19 | ## Technical Details 20 | 21 | The As Of block is a statement block and can be stacked with other statement blocks. 22 | 23 | ## Tips 24 | 25 | It is generally more effective to use the "From" block for setting out events - the points in time at which 26 | the truth of certain statements changes. The As Of block is best used to check whether one of those statements 27 | is true at a given time. -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/events/during.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/during 3 | fields: 4 | title: During Block 5 | content: | 6 | # During Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The During block is found in the Events drawer of the Blawx toolbox. 13 | 14 | ## What Does It Do? 15 | 16 | The During block is used to query what periods of time a statement was true. 17 | It accepts two datetimes and a statement. If the times are variables, and the 18 | statement is specified, it will find the times at which that statement 19 | began to hold, and stopped holding. That is to say, it returns only the 20 | start and end points that are the most extreme for the duration that the statement 21 | was true. 22 | 23 | Because of this it cannot be used to check whether or not something held for the 24 | entirety of a duration. If something is true from date 1 to date 5, and you use 25 | the during block to check if it was true from date 2 to date 4, the during block 26 | will return false, because it returns only the widest possible durations. 27 | 28 | ## Technical Details 29 | 30 | The during block is a statement block and can be stacked with other statement blocks. 31 | 32 | ## Tips 33 | 34 | The during block is capable of reporting that a statement held from the beginning of time, 35 | or until the end of time. But in order to take advantage of that capability, you must 36 | have specified the initial and ultimate values of that statement using the initially 37 | and ultimately blocks. -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/events/from.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/from 3 | fields: 4 | title: From Block 5 | content: | 6 | # From Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The From block is found in the Events drawer of the Blawx toolbox. 13 | 14 | ## What Does It Do? 15 | 16 | The From block is used to indicate that a statement became true at a given point in time. 17 | It accepts a datetime, and the statement, which can be logically negated. 18 | 19 | The From block is the primary way by which you will specify how values changed over time. 20 | The initially and ultimately blocks are also used to provide input to the event reasoning 21 | system, but most useful information will be provided using the From block. 22 | 23 | ## Technical Details 24 | 25 | The from block is a statement block and can be stacked with other statements. 26 | 27 | ## Tips 28 | 29 | Because of the way the Blawx reasoner translates between datetimes and timestamps for use 30 | in event reasoning, the reasoner will fail if From blocks use dates that are calculated 31 | recursively on the basis of other dates. For example, if there is a rule that every 32 | seventh day is a tuesday, and something becomes true on any tuesday, the reasoner will 33 | crash. This is a limitation of the current implementation of event reasoning, and will 34 | hopefully be resolved in future versions. -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/events/initially.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/initially 3 | fields: 4 | title: Initially Block 5 | content: | 6 | # Initially Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The Initially block is found in the Events drawer of the Blawx toolbox. 13 | 14 | ## What Does It Do? 15 | 16 | The initially block is used to indicate that a statement held as of the start of time. 17 | This can be useful for queries using the during block, so that a period can be specified 18 | from the beginning of time until the statement changed. 19 | 20 | ## Technical Details 21 | 22 | The initially block accepts a single statement block. It is a statement block and can be 23 | stacked with other statements. 24 | 25 | ## Tips 26 | -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/events/ultimately.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/ultimately 3 | fields: 4 | title: Ultimately Block 5 | content: | 6 | # Ultimately Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The Ultimately block is found in the Events drawer of the Blawx toolbox. 13 | 14 | ## What Does It Do? 15 | 16 | The ultimately block is used to indicate that a statement holds as of the end of time. 17 | This can be useful for queries using the during block, so that a period can be specified 18 | from the time a statement became true, until the end of time. 19 | 20 | ## Technical Details 21 | 22 | The ultimately block accepts a single statement block. It is a statement block and can be 23 | stacked with other statements. 24 | 25 | ## Tips 26 | 27 | -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/exceptions/according_to.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/according_to 3 | fields: 4 | title: According To Block 5 | content: | 6 | # According To Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The According To block is located in the exceptions drawer of the Blawx toolbox. 13 | 14 | ## What Does It Do? 15 | 16 | The According To block is used to query whether a given conclusion 17 | was reached by a given section of the rules, regardless of whether that conclusion by that section was also overruled. 18 | 19 | ## Technical Details 20 | According to is a statement block, which can be stacked vertically with other statements. 21 | Its input connection accepts a section selector or a variable. 22 | Right now there is no way in blawx to assign a section value to a variable, so the only 23 | variable block that should be used is the "any" variable block. 24 | 25 | It also accepts a statements stack, which should be a single statement block representing the conclusion that may 26 | or may not have tentatively held. 27 | 28 | ## Tips 29 | 30 | It is often not necessary to use the "according to" block. If you use "attributed rules", "according to" statements 31 | are created automatically for you. And if you query a conclusion, the explanation will indicate which sections of 32 | your rules found that conclusion. It is most useful for debugging defaults and exceptions in your code. 33 | -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/exceptions/applies.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/applies 3 | fields: 4 | title: Applies Block 5 | content: | 6 | # Applies Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The Applies block is located in the exceptions drawer of the Blawx toolbox. 13 | 14 | ## What Does It Do? 15 | 16 | The Applies block is used to state or query whether a section of your rules applies to an 17 | object. 18 | 19 | ## Technical Details 20 | 21 | The Applies block is a statement block which can be stacked with other statements. It accepts a 22 | section selector for the specific section and 23 | an object or a variable representing the object to which the section does or does not apply. 24 | 25 | ## Tips 26 | 27 | Rules can use the Applies block to check explicitly whether or not an object applies to a given rule. 28 | Rules generated using the attributed rule block will automatically check the applicability of any 29 | objects which are named in a object category block in the conditions of the rule, only if 30 | "subject to applicability" has been selected on the attributed rule block. If rules are not made 31 | explicitly subject to applicability, and applicability is not explicitly checked in the conditions 32 | of a rule, statements made with the applies block will have no effect. -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/exceptions/holds.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/holds 3 | fields: 4 | title: Holds Block 5 | content: | 6 | # Holds Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The Holds block is located in the exceptions drawer of the Blawx toolbox. 13 | 14 | ## What Does It Do? 15 | 16 | The Holds block is used to query whether a conclusion was reached according to 17 | a given section of the rules, and that conclusion was not overruled. 18 | 19 | ## Technical Details 20 | 21 | The Holds block is a statement block which can be stacked with other statements. It accepts 22 | an input value that can be a section selector block or a variable, and an internal statement stack, which should be a single statement block, which is the conclusion. 23 | 24 | ## Tips 25 | 26 | It is not usually necessary for you to use the "holds" block explicitly. If you use attributed rules, "holds" statements are made 27 | automatically for you. And if you as a question about an attribute, the section that held that statement will be included in the explanation. 28 | The only time you will usually need to use the holds block is if you are troubleshooting problems with your defaults and exceptions. -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/exceptions/opposes.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/opposes 3 | fields: 4 | title: Opposes Block 5 | content: | 6 | # Opposes Block 7 | 8 | **This block is deprecated as of v1.5.0-alpha, and may be removed at any time.** 9 | 10 |  11 | 12 | ## Where Is It? 13 | 14 | The Opposes block is located in the exceptions drawer of the Blawx toolbox. 15 | 16 | ## What Does It Do? 17 | 18 | The Opposes block is used to specify that two conclusions oppose one another, 19 | and if both are found one may overrule the other. 20 | 21 | ## Technical Details 22 | 23 | The opposes block is a statement, which can be stacked with other statements. It 24 | accepts two internal statement stacks, each of which should be filled with a single statement block, 25 | where the two internal statements should be treated as contradictory by the reasoner. 26 | The order of the two internal statements is unimportant. 27 | 28 | ## Tips 29 | 30 | If you have a true/false attribute, it is not necessary to use the opposes block 31 | for Blawx to understand that a "true" value and a "false" value for that attribute for 32 | the same object are opposing statements. -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/exceptions/section_selector.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/section_selector 3 | fields: 4 | title: Section Selector Block 5 | content: | 6 | # Section Selector Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The Section Selector block is located in the known sections drawer of the Blawx toolbox. 13 | 14 | ## What Does It Do? 15 | 16 | The Section Selector block is used to refer to a specific section of your rules. It is 17 | used in According To blocks, to indicate which section reaches the conclusion, and 18 | in Overrules blocks, to indicate which section overrules which other section. 19 | 20 | ## Technical Details 21 | 22 | The Section Selector block is a value block that provides a reference to a section in 23 | the current rule. It is used in According To blocks, and Overrules Blocks. 24 | 25 | ## Tips 26 | 27 | Section selector blocks will be given a name that is the abbreviation of the title in 28 | your rule text, followed by an abbreviation of the section's specific location in the 29 | rule. If you are using spans, it can be helpful to use short span names so as to 30 | avoid the location references from getting too long to be displayed in the block. 31 | 32 | Because the abbreviation used in the section selector block is based on the first 33 | character of the title provided in your legal text, it is advisable not to use punctuation 34 | and numerals at the start of words in the title of your legal text, to ensure that the section 35 | selectors are readable. For example, if your title is "The (Very) Good Act 2004", the 36 | section selector for section 1 of that act will read "T(GA2 1". -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/fact.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/fact 3 | fields: 4 | title: Fact Block 5 | content: | 6 | # Fact Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The fact block is found in the Primary drawer of the Blawx toolbox. 13 | 14 | ## What Does It Do? 15 | 16 | The fact block is used to set out things that are known with certainty. 17 | 18 | This includes statements about what categories and attributes exist, 19 | as well as statements about what objects are known to exist and what values 20 | they have in their attributes. 21 | 22 | ## Technical Details 23 | 24 | The fact block is an outer block. 25 | 26 | The fact block accepts a single stack of statements. Unlike most blocks in 27 | Blawx, the stack is **not** treated as a list of conjoined statements. Instead, 28 | each statement is given its own scope, and does not share variable names with the 29 | other statements in the stack. 30 | 31 | You can have as many fact blocks in your workspace as you like. 32 | 33 | A fact block is complete if it has a stack of at least one statement on its 34 | statement connector. A fact block without at least one statement is incomplete, 35 | but Blawx may ignore it. 36 | 37 | ## Tips 38 | 39 | It is a good idea to use multiple fact blocks to separate out different types 40 | of facts that you may need to deal with at different times. This allows you to 41 | collapse fact blocks that you don't need at the moment, and make your workspace 42 | a little easier to read. 43 | 44 | For instance, you might have one fact block you are using to create categories 45 | and attributes, and another fact block you are using to specify the facts of a test 46 | scenario. 47 | 48 | -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/list_statements/empty_list.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/empty_list 3 | fields: 4 | title: Empty List Block 5 | content: | 6 | # Empty List Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The Empty List block is located in the data statements drawer of the Blawx toolbox, in the List subdrawer. 13 | 14 | ## What Does It Do? 15 | 16 | The Empty List block is used to provide a value representing empty list. This can be used on its own to indicate that a list is completely empty, 17 | or it can be used in the "rest" portion of a First Rest Block to indicate that the list has no further elements. 18 | 19 | ## Technical Details 20 | 21 | The Empty List Block is a value block of the list type. It can be used anywhere a list is expected, including in attributes that 22 | have the list type, and list statement inputs expecting a list. 23 | 24 | ## Tips -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/list_statements/list_aggreation.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/list_aggregation 3 | fields: 4 | title: List Aggregation Block 5 | content: | 6 | # List Aggregation Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The List Aggregation Block is located in the data statements drawer of the Blawx toolbox, in the List subdrawer. 13 | 14 | ## What Does It Do? 15 | 16 | The List Aggregation Block is used to calculate a single value from a list of values. It can be used to count how many 17 | values are in a list, sum them, average them, or find their maximum or minimum value. 18 | 19 | ## Technical Details 20 | 21 | The List Aggregation Block is a statement block and can be stacked with other statement blocks. It has an input for the result, 22 | which must be a number or a variable. It has a field for the aggregate function that is being chosen, and an input which must be 23 | a list or a variable. 24 | 25 | ## Tips 26 | 27 | Blawx does not know in advance whether the list you provide to this block can have the selected aggregate function applied to it. 28 | Any list can have its length counted, but only lists of numerical values can be averaged, for example. If you are having problems 29 | with the list aggregation block, make sure that the lists you are trying to aggregate contain only the expected type of value. -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/logic/comparison.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/comparison 3 | fields: 4 | title: Comparison Block 5 | content: | 6 | # Comparison Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The comparison block is located in the Logic drawer of the Blawx toolbox. 13 | 14 | ## What Does It Do? 15 | 16 | The comparison block is used to determine the relative order of two values. 17 | 18 | ## Technical Details 19 | 20 | The comparison block accepts two variables, or two values of the same type, 21 | which are ordered. It also requires you 22 | to select a comparison between them, one of: 23 | * the same value as 24 | * a different value than 25 | * less than 26 | * greater than 27 | * less than or the same value as 28 | * greater than or the same value as 29 | 30 | The comparison returns true if the comparison between the two values is true. 31 | 32 | ## Tips 33 | 34 | Note that a comparison between two values is different from a numerical constraint, 35 | because a comparison requires that the values being compared be known specifically. 36 | 37 | If the value of a variable X is not known, the numerical constraint X > 10 will result 38 | in an answer of "X > 10". A comparison of `X > 10` while X is unknown will result in 39 | "no models", because an unknown amount is not larger than 10. 40 | 41 | Note also that a comparison between two values is different from a test of equivalence. 42 | If you want to know whether or not two variables have the same value, you can use 43 | the "is the same value as" comparison. If you want to know whether or not two variables 44 | refer to the same object, you need to use the object equivalence block. 45 | 46 | Note that there is a different block, the date comparison block, for comparing dates. -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/number_statements/calculation.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/calculation 3 | fields: 4 | title: Calculation Block 5 | content: | 6 | # Calculation Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The calculation block is located in the Number section of the 13 | Data Statements drawer of the Blawx toolbox. 14 | 15 | ## What Does It Do? 16 | 17 | The calculation block is used to provide a mathematical calculation of a numerical value. 18 | 19 | ## Technical Details 20 | 21 | The calculation block is a statement block, and can be stacked with other statement blocks. 22 | It always evaluates to true. 23 | 24 | The calculation block has two internal connectors. The first requires a variable to which 25 | the result of the calculation will be assigned. The second requires a block that returns 26 | a number, which might include either a number value, or a math operation. 27 | 28 | ## Tips 29 | 30 | Any time that you want to perform a mathematical operation, it needs to be surrounded by 31 | a calculation block. 32 | 33 | Calculation blocks are similar to variable assignment blocks, except that the value assigned 34 | is always a number. If you want to assign a specific number value to a variable, and not 35 | the result of a calculation, you can use the variable assignment block instead. Also, 36 | if you want to assign the value of one variable that is bound to a number to another variable, 37 | you must use the variable assignment block, and not the calculation block. 38 | 39 | -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/number_statements/math_operator.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/math_operator 3 | fields: 4 | title: Math Operator Block 5 | content: | 6 | # Math Operator Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The math operator block is found in the Number section of the Data Statements 13 | drawer in the Blawx toolbox. 14 | 15 | ## What Does It Do? 16 | 17 | The math operator block is used to perform a mathematical operation to two 18 | numerical values. 19 | 20 | ## Technical Details 21 | 22 | The mathematical operator block can only be used inside a calculation block. 23 | 24 | It returns a number. It accepts two internal inputs both of which must be 25 | variables or numbers, or blocks that return a number, like another math operator block. 26 | 27 | It performs the operation selected in the drop-down, either addition, subtraction, 28 | multiplication, or division. 29 | 30 | Normal mathematical order of operations does not apply. Each input to a math operator 31 | block is treated as if it was surrounded by parentheses. So `(2 * (3 + 4))` will always 32 | be evaluated to 14. 33 | 34 | ## Tips 35 | 36 | Some complicated calculations can require nesting multiple math operator blocks inside 37 | one another. If your calculation is becoming difficult to visually read, you can 38 | break it into steps by using multiple calculation blocks, and re-using variables between them. -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/number_statements/numerical_constraint.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/numerical_constraint 3 | fields: 4 | title: Numerical Constraint Block 5 | content: | 6 | # Numerical Constraint Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The numerical constraint block is found in the Number section of the 13 | Data Statements drawer of the Blawx toolbox. 14 | 15 | ## What Does It Do? 16 | 17 | The numerical constraint block is used to specify that a numerical value must adhere to 18 | an equality, disequality, or comparison restraint. 19 | 20 | ## Technical Details 21 | 22 | The numerical constraint block is a statement, and can be stacked with other statements. 23 | 24 | It requires two internal connectors, both of which must be variables or numbers. 25 | 26 | It allows the user to choose the restriction to be applied to the left input, relative 27 | to the right input, including comparisons (greater than, less than, etc), and equalities 28 | and inequalities. 29 | 30 | ## Tips 31 | 32 | The numerical constraint block is a very powerful tool when dealing with numbers that 33 | are constrained to be greater, equal to, or less than other numbers. 34 | 35 | To perform a mathematical calculation using numerical constraints, you constrain a variable 36 | to be equal to the result of a mathematical calculation block. 37 | 38 | If a person at least 16 must pay taxes, and a person at least 18 may vote, then we know 39 | the age of a person who is required to pay taxes and cannot vote is at least 16 and less 40 | than 18. That is a numerical constraint that can be calculated by combining two other 41 | numerical constraints. 42 | 43 | Through the numerical constrain block, Blawx allows you to express those sorts of rules, and get answers 44 | that are expressed as a range like "16 >= Age < 18". -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/objects/object_category.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/object_category 3 | fields: 4 | title: Object Category Block 5 | content: | 6 | # Object Category Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The object category block is found in the Objects drawer of the Blawx toolbox. 13 | 14 | ## What Does It Do? 15 | 16 | The object category block is used to assert (or check) that an object is a member of 17 | a category. 18 | 19 | ## Technical Details 20 | 21 | The object category block is a statement block, and can be stacked with other statements. 22 | 23 | The first internal connector expects an object or a variable. The second dropdown field 24 | allows you to select a category. 25 | 26 | In a question or in the conditions of a rule or constraint, the block checks to see whether the object is 27 | a member of the category. In a conclusion or in a fact, it asserts that the membership is true. 28 | 29 | ## Tips 30 | 31 | Generally, in facts you will want to use the new object block, unless the object has already been 32 | declared as a member of a different category, and you are adding an additional category for that 33 | object. 34 | -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/objects/object_equality.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/object_equality 3 | fields: 4 | title: Object Equality Block 5 | content: | 6 | # Object Equality Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The object equality block is located in the Objects drawer of the Blawx toolbox. 13 | 14 | ## What Does It Do? 15 | 16 | The object equality block is used to assert that two objects are references to 17 | the same real-world concept. 18 | 19 | ## Technical Details 20 | 21 | The object equality block is a statement, and can be stacked with other statements. 22 | 23 | It accepts two internal inputs. Both inputs are expected to be objects, or variables. 24 | 25 | It can be used in conditions of rules and constraints, and in questions, but in most 26 | cases you will want to just re-use the same variable name, which will have the same 27 | effect. 28 | 29 | ## Tips 30 | 31 | The object equality block is used relatively rarely. You are most likely to need it 32 | if you are combining inputs from more than one source, and you want to specify that 33 | an object that was received from one source is identical to an object received from 34 | another. For example, you might have a ruleset for determining the winner of a game 35 | of Rock, Paper, Scissors, and you might import data from a system that plays the 36 | game "Boulder, Parchment, Shears". In that case, it would make sense to say "the 37 | parchment object is the same thing as the paper object", etc. 38 | 39 | Note that saying that two objects are the same thing is different from asserting that 40 | to variables hold the same value. To check to see whether or not two different values 41 | are equal, use the comparison block. -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/objects/object_selector.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/object_selector 3 | fields: 4 | title: Object Selector Block 5 | content: | 6 | # Object Selector Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The object selector block is found in the Known Objects drawer of the Blawx toolbox. 13 | 14 | ## What Does It Do? 15 | 16 | The object selector block is used to refer to an object that has already been declared 17 | by a new object block. 18 | 19 | ## Technical Details 20 | 21 | The new object block has no inputs. It can be placed anywhere that an object is expected. 22 | 23 | ## Tips -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/rule.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/rule 3 | fields: 4 | title: Rule Block 5 | content: | 6 | # Rule Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The rule block is found in the Primary drawer of the Blawx toolbox. 13 | 14 | ## What Does It Do? 15 | 16 | The rule block is used to set out rules with which Blawx can infer new 17 | information from facts. Most legislative provisions will be modeled as 18 | one or more rules. 19 | 20 | The first statement connector, labeled "When we know:", allows you to set 21 | out the conditions in which the rule is true. 22 | 23 | The second statement connect, labeled "We also know:", allows you to set 24 | out the new conclusion that can be drawn when the conditions are known to 25 | be true. This should be a single statement. 26 | 27 | ## Technical Details 28 | 29 | The rule block is an outer block. 30 | 31 | Its top statement connector accepts a stack of one or more condition statements. 32 | These statements are treated as though they are all connected with an "and" 33 | operator, and all variable names are shared among them, and with the conclusion. 34 | 35 | Its bottom statement connector accepts exactly one conclusion statement. 36 | 37 | ## Tips 38 | 39 | Blawx does not currently support an "or" operator. In the meantime, if the same 40 | conclusion can be reached in multiple ways, that should be represented by 41 | multiple rules with the same conclusion. 42 | 43 | Typically, you will want to avoid having variables in the conclusion that are not 44 | also present in the conditions. 45 | 46 | -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/variables/unnamed_variable.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/unnamed_variable 3 | fields: 4 | title: Unnamed Variable Block 5 | content: | 6 | # Unnamed Variable Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The unnamed variable block is located in the Variables drawer of the Blawx toolbox. 13 | 14 | ## What Does It Do? 15 | 16 | The unnamed variable block is used when you need a variable, but you do not need to 17 | use the variable more than once in the same scope, and you don't care what object 18 | was bound to that variable. 19 | 20 | For instance, you might have a rule that makes conclusions about an attribute called "has_a_sibling". 21 | In that rule, you might use an attribute called "sibling_of" to check to see if someone has 22 | a relationship to at least one sibling, but you don't care who the sibling is. In that 23 | case you might write a condition using the unnamed variable, which reads "(Person) is 24 | the sibling of (any)". 25 | 26 | ## Technical Details 27 | 28 | The unnamed variable block accepts no inputs, and has no fields. 29 | 30 | It can be used anywhere an object or a value is expected. 31 | 32 | ## Tips 33 | 34 | It's a good idea to start with named variables, and switch to unnamed variables only when you 35 | are sure your rules are working as anticipated. 36 | -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/variables/variable.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/variable 3 | fields: 4 | title: Variable Block 5 | content: | 6 | # Variable Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The variable block is located in the Variables drawer of the Blawx toolbox. 13 | 14 | ## What Does It Do? 15 | 16 | The variable block is used to create an unknown, and give it a name. Any time the same 17 | variable name is used inside the same scope, Blawx will return answers only where those 18 | statements are true when the same object is used in all of those places. 19 | 20 | Note that the opposite is not true. Blawx does not guarantee that variables with different 21 | names refer to different objects. To force it to do that, you need to use an object 22 | disequality block. 23 | 24 | ## Technical Details 25 | 26 | The variable block requires you to enter a variable name into the text field. 27 | 28 | To be valid, a variable name must 29 | 30 | * contain only numbers, underscores, and letters 31 | * begin with an uppercase letter 32 | * not end in an underscore followed by only digits 33 | 34 | The block will automatically remove leading and trailing spaces, convert spaces to underscores, 35 | and convert an initial lowercase letter into uppercase. Other invalid values will be rejected, and 36 | the value of the field will not be changed. 37 | 38 | The variable block can be entered anywhere an object or a value is expected. 39 | 40 | ## Tips 41 | 42 | The actual names given to your variables are meaningless to Blawx, but they can be helpful 43 | to the reader of your encoding. A variable name like "X" will work perfectly well for 44 | answering questions, but a variable name like "Winner" might be more helpful for making 45 | it obvious why a rule or question was written the way it was. -------------------------------------------------------------------------------- /blawx/fixtures/docs/blocks/variables/variable_assignment.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: blocks/variable_assignment 3 | fields: 4 | title: Variable Assignment Block 5 | content: | 6 | # Variable Assignment Block 7 | 8 |  9 | 10 | ## Where Is It? 11 | 12 | The variable assignment block is found in the Variables drawer of the Blawx toolbox. 13 | 14 | ## What Does It Do? 15 | 16 | The variable assignment block is used to assign an object or value to a variable. 17 | 18 | ## Technical Details 19 | 20 | The variable assignment block is a statement, and can be stacked with other statements. 21 | In the conditions of rules, in a constraint, and in a question block, it is always true, and simply changes 22 | the value of a variable in that scope. 23 | 24 | Its first internal connector expects a variable. Its second internal connector expects 25 | either a variable, an object, or a value. 26 | 27 | It should not be used in facts, or in the conclusions of rules. 28 | 29 | ## Tips 30 | 31 | The variable assignment block is used to assign a value to a variable explicitly. This 32 | can be useful in situations where, for example, you would like to re-run a question where 33 | the same value is being used over and over, and needs to be changed. Using the 34 | variable assignment block would allow you to assign the variable once, and then re-use 35 | it by referring to the same variable name repeatedly. 36 | -------------------------------------------------------------------------------- /blawx/fixtures/docs/components/admin.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: components/admin 3 | fields: 4 | title: Blawx Admin Interface 5 | content: | 6 | # Blawx Administration Interface 7 | 8 | The Blawx Administration Interface is available by navigating to `/admin` on your 9 | Blawx Server. 10 | 11 | The admin interface can be used to view and make changes to the projects owned by anyone on the server, 12 | and to add, change, and delete user accounts, and change what permissions are granted to what 13 | user accounts. 14 | 15 | By default, on a new installation of Blawx, there is an admin account created with the user 16 | name `admin` and the password `blawx2022`. When installing a server to which you want to 17 | restrict access, make sure to change the admin password immediately. 18 | 19 | ## Restricting User Registration 20 | 21 | If you want to prevent people from being able to create their own user accounts on your Blawx server, 22 | access the "Blawx Preferences" section of the admin interface, de-select "Allow Registration", and 23 | click Save. -------------------------------------------------------------------------------- /blawx/fixtures/docs/examples/beards.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: examples/bta 3 | fields: 4 | title: Beard Tax Act 5 | content: | 6 | # Beard Tax Act 7 | 8 | All the example projects are available under the New Project button. 9 | 10 | This example is an implementation inside Blawx of the Beard Tax Act rules as code demonstration task 11 | described at [the Better Rules github page](https://github.com/BetterRules/example-rules-as-code). 12 | 13 | It includes a single test designed to be run inside BlawxBot. Open the project, click on the name 14 | of the test, and click "Bot" to run the demo. -------------------------------------------------------------------------------- /blawx/fixtures/docs/examples/bird.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: examples/bird 3 | fields: 4 | title: Bird Act 5 | content: | 6 | # Bird Act 7 | 8 | All the example projects are available under the New Project button. 9 | 10 | The Bird Act example is used to demonstrate the use of defaults, exceptions, applicability, and references to source 11 | legislation in explanations. -------------------------------------------------------------------------------- /blawx/fixtures/docs/examples/covid_test.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: examples/covid_test 3 | fields: 4 | title: Covid Test 5 | content: | 6 | # Covid Test 7 | 8 | All the example projects are available under the New Project button. 9 | 10 | The Covid Test example demonstrates the use of the addition of sub-day units of time in version 1.3.33-alpha, 11 | by implementing a requirement that a negative covid test be administered no more than 72 hours prior to a flight. -------------------------------------------------------------------------------- /blawx/fixtures/docs/examples/life_act.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: examples/life_act 3 | fields: 4 | title: Life Act 5 | content: | 6 | # Life Act 7 | 8 | All the example projects are available under the New Project button. 9 | 10 | The Life Act example is used to demonstrate temporal reasoning using Blawx's event blocks. -------------------------------------------------------------------------------- /blawx/fixtures/docs/examples/list_demo.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: examples/list_demo 3 | fields: 4 | title: List Demonstration 5 | content: | 6 | # List Demonstration 7 | 8 | All the example projects are available under the New Project button. 9 | 10 | The List Demonstration example demonstrates the use of lists, list collection, and list aggregation blocks. 11 | You provide a person with multiple values for "score". The code adds a "10" to that list of values, and then returns 12 | the average of that new list. -------------------------------------------------------------------------------- /blawx/fixtures/docs/examples/logical_constraints.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: examples/logical_constraints 3 | fields: 4 | title: Logical Constraints Example 5 | content: | 6 | # Logical Constraints Example 7 | 8 | All the example projects are available under the New Project button. 9 | 10 | The Logical Constraints example demonstrates the use of the constraint block in blawx. 11 | 12 | It encodes the following clauses: 13 | 14 | ``` 15 | 1. Bob is a person. 16 | 2. Bob is 40 years of age. 17 | 3. A person cannot have more than one age. 18 | 4. Bob is 50 years of age. 19 | ``` 20 | 21 | Section 3 is encoded using the constraint block, which prevents the code from returning 22 | any models in which the constraint is violated. In this case, the constraint is violated 23 | because bob has been given two ages. So the query "how old is bob" returns no answers. 24 | 25 | If you disable or delete the code in section 2, the query will answer that bob is 50. 26 | If you disable or delete the code in section 4, the query will answer that bob is 40. 27 | If you disable or delete the code in section 3, the query will answer that bob is both 50 and 40. -------------------------------------------------------------------------------- /blawx/fixtures/docs/examples/mortality.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: examples/mortality 3 | fields: 4 | title: Mortality Act 5 | content: | 6 | # Mortality Act 7 | 8 | All the example projects are available under the New Project button. 9 | 10 | The Mortality Act example is used as a minimal example of a Blawx project. -------------------------------------------------------------------------------- /blawx/fixtures/docs/examples/net30.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: examples/net30 3 | fields: 4 | title: Net 30 5 | content: | 6 | # Net 30 7 | 8 | All the example projects are available under the New Project button. 9 | 10 | The Net 30 example is used to demonstrate the use of dates and durations in Blawx. -------------------------------------------------------------------------------- /blawx/fixtures/docs/examples/numerical_constraints.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: examples/numerical_constraints 3 | fields: 4 | title: Numerical Constraints Example 5 | content: | 6 | # Numerical Constraints Example 7 | 8 | All the example projects are available under the New Project button. 9 | 10 | The Numerical Constraints example demonstrates the use of numerical constraints in blawx. 11 | 12 | It sets out three rules: 13 | 14 | * People over 18 may vote 15 | * People over 16 must pay taxes 16 | * People who must pay taxes but may not vote are suckers. 17 | 18 | These are encoded using the numerical constraint blocks, which allows Blawx to reason about 19 | more than one numerical constraint at the same time. 20 | 21 | The "sucker" test asks Blawx to hypothesize about people and their ages, and then asks 22 | whether there are any suckers. The answer returned is that a hypothetical person is a sucker 23 | if they have an age 16 or higher (the rule from section 2), and less than 18 (the opposite of 24 | the rule from section 1). 25 | 26 | Note that in order to ensure that the two constraints are applied to the same age, the attributes 27 | "can vote" and "must pay taxes" were implemented as number attributes, so that the same number could 28 | be referred to in the sucker rule. If this is not done, then Blawx will consider the possibility that 29 | the person has two different ages. -------------------------------------------------------------------------------- /blawx/fixtures/docs/examples/oasa.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: examples/oasa 3 | fields: 4 | title: Old Age Security Act 5 | content: | 6 | # Old Age Security Act 7 | 8 | All the example projects are available under the New Project button. 9 | 10 | The Old Age Security Act example demonstrates a more complicated ruleset, using date features, exceptions and defaults, 11 | and a series of tests with scenario editor views designed to simplify the interface for testing the behaviour of the rules. -------------------------------------------------------------------------------- /blawx/fixtures/docs/examples/r34.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: examples/r34 3 | fields: 4 | title: Rule 34 5 | content: | 6 | # Rule 34 7 | 8 | All the example projects are available under the New Project button. 9 | 10 | The Rule 34 example is used to demonstrate the use of Blawx to detect drafting flaws in legislative texts. -------------------------------------------------------------------------------- /blawx/fixtures/docs/examples/rps.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: examples/rps 3 | fields: 4 | title: Rock Paper Scissors Act 5 | content: | 6 | # Rock Paper Scissors Act 7 | 8 | All the example projects are available under the New Project button. 9 | 10 | The Rock Paper Scissors Act example is used to demonstrate many different features of Blawx. 11 | 12 | A complete run-through of how to generate the Rule Paper Scissors example from scratch 13 | is available as [a tutorial in the Beginner's Guide](/docs/guide/rps). -------------------------------------------------------------------------------- /blawx/fixtures/docs/examples/wills_tutorial.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: examples/wills_tutorial 3 | fields: 4 | title: Wills Act Tutorial 5 | content: | 6 | # Wills Act Tutorial 7 | 8 | Check out this video based on Blawx v1.4.0-alpha, which shows how to enter legislative text, 9 | how to encode your rule, how to test your encoding in the scenario editor, and how to deploy the 10 | encoding as a web API! 11 | 12 | -------------------------------------------------------------------------------- /blawx/fixtures/docs/features/ask_tell.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: features/ask_tell 3 | fields: 4 | title: Asking and Telling 5 | content: | 6 | ## Understanding the Difference between Asking and Telling 7 | 8 | You can think of Blawx has having two different categories of statement connectors: 9 | asking, and telling. 10 | 11 | A rule "asks" whether the conditions are true and "tells" that the conclusion is true. 12 | A question "asks." A fact "tells". 13 | 14 | What a block means can change slightly depending on whether you are using it in an 15 | "ask", or a "tell", but the differences are usually pretty intuitive. 16 | 17 | What might be less intuitive is that the blocks that you use to create objects and 18 | categories can also be used inside an "ask." So a block reading "bob is a person", 19 | when used in a "tell", creates the fact that bob is a person. The same block, used 20 | in an "ask", checks to see whether that fact has been created somewhere else. 21 | 22 | Many blocks that are typically only used inside a fact can also be used inside the 23 | conclusion of a rule. For example, a rule might conclude that "bob is a person", 24 | creating that object only when the conditions of the rule are true. 25 | 26 | ### "Known" Objects and Categories 27 | 28 | Note that right now Blawx cannot differentiate between declarations used in an 29 | "ask", and declarations used in a "tell". So if you use "bob is a person" in the 30 | conditions of a rule, Blawx will nonetheless include "bob" as a "known object". -------------------------------------------------------------------------------- /blawx/fixtures/docs/guide/conclusion.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: guide/conclusion 3 | fields: 4 | title: | 5 | Blawx Beginner's Guide: Conclusion 6 | content: | 7 | # Conclusion 8 | 9 | That's it! Hopefully this Beginner's Guide has given you an idea of what Blawx is, 10 | how it is used, and why it might be useful in Rules as Code. 11 | 12 | * Step 1 - put your legislative text into Blawx using a simple plain-text format 13 | * Step 2 - encode your rules - as rules - in a user-friendly tool, in a structure that mirrors the law 14 | * Step 3 - Use sophisticated reasoning capabilities to ensure your code - and your law - behaves as intended 15 | * Step 4 - Generate explainable, legally compliant apps at the touch of a button 16 | 17 | ## What's Next? 18 | 19 | If you would like to learn more about Blawx, please review the rest of 20 | the documentation. It includes topic-specific pages on Blawx's 21 | components and coding features, examples that you can review, and detailed information 22 | about each of the blocks used in the interface. 23 | 24 | This guide was updated in September of 2022 to be up to date with version 1.3.29-alpha of Blawx. 25 | 26 | If you have any questions, you can write Jason Morris at [jason@lexpedite.ca](mailto:jason@lexpedite.ca). 27 | 28 | Blawx is open source software, available at [the GitHub repository](https://github.com/lexpedite/blawx). 29 | 30 | 31 | -------------------------------------------------------------------------------- /blawx/fixtures/docs/home.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: home 3 | fields: 4 | title: Quick Start 5 | content: | 6 | # Quick Start 7 | 8 | If you are looking for a quick way to get started, check out: 9 | 10 | * [The Wills Act Tutorial](/docs/examples/wills_tutorial) 11 | 12 | The 13 | Blawx documentation is divided into a guide section, and a reference section. 14 | The guide section includes the Components section, 15 | a Features section, 16 | and an Examples section. 17 | 18 | Details on specific interface elements 19 | and how they work are included in the "Specific Blocks" section. The pages 20 | in this section are also accessible by 21 | right-clicking on a block in the Blawx 22 | interface and choosing "Help." 23 | 24 | Blawx is under active development. The 25 | documentation is a work in progress. Some pages may not include much detail, 26 | and some examples may be out of date compared to the interface. If there is 27 | something missing that you need, or something incorrect, please file an issue 28 | at the [Blawx GitHub repository](https://github.com/Blawx/blawx). -------------------------------------------------------------------------------- /blawx/fixtures/docs/incomplete.yaml: -------------------------------------------------------------------------------- 1 | - model: blawx.docpage 2 | pk: incomplete 3 | fields: 4 | title: Incomplete 5 | content: | 6 | # Incomplete 7 | 8 | The Blawx documentation is a work in progress, and 9 | we are currently working on getting it up to speed with version 1.0.0-alpha of 10 | the reasoner and interface. 11 | 12 | The page you are seeking has not been completed 13 | yet. Thanks for your patience. -------------------------------------------------------------------------------- /blawx/globals.py: -------------------------------------------------------------------------------- 1 | from django.conf import settings 2 | 3 | def global_vars(request): 4 | return {'BLAWX_VERSION': settings.BLAWX_VERSION} -------------------------------------------------------------------------------- /blawx/ldap.py: -------------------------------------------------------------------------------- 1 | ldap_code = """ 2 | % We need language for the applies predicate that is not related to any other predicate. 3 | #pred blawx_applies(Y,X) :: '@(Y) applies to @(X)'. 4 | #pred holds(user,blawx_applies,Y,Z) :: 'it is provided as a fact that @(Y) applies to @(Z)'. 5 | #pred holds(user,-blawx_applies,Y,Z) :: 'it is provided as a fact that it is not the case that @(Y) applies to @(Z)'. 6 | #pred holds(X,blawx_applies,Y,Z) :: 'the conclusion in @(X) that @(Y) applies to @(Z) holds'. 7 | #pred holds(X,-blawx_applies,Y,Z) :: 'the conclusion in @(X) that it is not the case that @(Y) applies to @(Z) holds'. 8 | #pred according_to(X,blawx_applies,Y,Z) :: 'according to @(X) @(Y) applies to @(Z)'. 9 | #pred according_to(X,-blawx_applies,Y,Z) :: 'according to @(X) it is not the case that @(Y) applies to @(Z)'. 10 | #pred defeated(X,blawx_applies,Y,Z) :: 'the conclusion in @(X) that @(Y) applies to @(Z) is defeated'. 11 | #pred defeated(X,-blawx_applies,Y,Z) :: 'the conclusion in @(X) that it is not the case that @(Y) applies to @(Z) is defeated'. 12 | """ -------------------------------------------------------------------------------- /blawx/passthrough.py: -------------------------------------------------------------------------------- 1 | blawx_passthrough = """ 2 | #pred blawx_diseq(X,Y) :: '@(X) is not the same object as @(Y)'. 3 | 4 | blawx_diseq(X,Y) :- X \= Y. 5 | 6 | #pred blawx_comparison(X,eq,Y) :: '@(X) is equal to @(Y)'. 7 | #pred blawx_comparison(X,neq,Y) :: '@(X) is not equal to @(Y)'. 8 | #pred blawx_comparison(X,gt,Y) :: '@(X) is greater than @(Y)'. 9 | #pred blawx_comparison(X,gte,Y) :: '@(X) is greater than or equal to @(Y)'. 10 | #pred blawx_comparison(X,lt,Y) :: '@(X) is less than @(Y)'. 11 | #pred blawx_comparison(X,lte,Y) :: '@(X) is less than or equal to @(Y)'. 12 | 13 | blawx_comparison(X,eq,Y) :- X #= Y. 14 | blawx_comparison(X,neq,Y) :- X \= Y. 15 | blawx_comparison(X,gt,Y) :- X #> Y. 16 | blawx_comparison(X,gte,Y) :- X #>= Y. 17 | blawx_comparison(X,lt,Y) :- X #< Y. 18 | blawx_comparison(X,lte,Y) :- X #=< Y. 19 | """ -------------------------------------------------------------------------------- /blawx/requirements.txt: -------------------------------------------------------------------------------- 1 | djangorestframework 2 | markdown 3 | swiplserver 4 | pyyaml 5 | cobalt 6 | clean-law >=0.0.4 7 | django-guardian 8 | django-preferences 9 | django-cors-headers 10 | aiohttp >= 3.9.0b0 11 | openai -------------------------------------------------------------------------------- /blawx/serializers.py: -------------------------------------------------------------------------------- 1 | from .models import Workspace, BlawxTest 2 | from rest_framework import serializers 3 | 4 | class CodeUpdateRequestSerializer(serializers.ModelSerializer): 5 | class Meta: 6 | model = Workspace 7 | fields = ['xml_content', 'scasp_encoding'] 8 | 9 | class TestViewUpdateRequestSerializer(serializers.ModelSerializer): 10 | class Meta: 11 | model = BlawxTest 12 | fields = ['view'] 13 | 14 | class SaveFactsRequestSerializer(serializers.ModelSerializer): 15 | class Meta: 16 | model = BlawxTest 17 | fields = ['fact_scenario'] -------------------------------------------------------------------------------- /blawx/simplifier.py: -------------------------------------------------------------------------------- 1 | from django.http import Http404, HttpResponseNotFound, HttpResponseForbidden 2 | 3 | from rest_framework.decorators import api_view, permission_classes, authentication_classes 4 | from rest_framework.response import Response 5 | # from rest_framework.permissions import AllowAny 6 | from rest_framework.authentication import SessionAuthentication, BasicAuthentication 7 | from rest_framework.permissions import IsAuthenticated, DjangoObjectPermissions, IsAuthenticatedOrReadOnly, AllowAny 8 | 9 | import openai 10 | import os 11 | 12 | prompt_preamble = """ 13 | What follows is an automatically generated explanation. Restate it in plain language without restating mathematical calculations and 14 | without further justifying conclusions for which there is only an absence of evidence in support. 15 | 16 | 17 | """ 18 | 19 | @api_view(['POST']) 20 | @authentication_classes([SessionAuthentication]) 21 | @permission_classes([IsAuthenticated]) 22 | def simplify(request): 23 | if "OPENAI_API_KEY" in os.environ: 24 | completion = openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=[{"role": "user", "content": prompt_preamble + request.data['explanation'] }]) 25 | return Response(completion.choices[0].message.content) 26 | else: 27 | return Response("") -------------------------------------------------------------------------------- /blawx/static/blawx/akoma_ntoso.css: -------------------------------------------------------------------------------- 1 | .akoma-ntoso preface shorttitle { 2 | font-size: x-large; 3 | } 4 | 5 | .akoma-ntoso docnumber { 6 | font-size: large; 7 | } 8 | 9 | .akoma-ntoso heading { 10 | font-weight: bold; 11 | } 12 | 13 | .akoma-ntoso section > num { 14 | font-weight: bold; 15 | } 16 | 17 | .akoma-ntoso subsection num::before { 18 | content: "(" 19 | } 20 | 21 | .akoma-ntoso subsection num::after { 22 | content: ")" 23 | } 24 | 25 | .akoma-ntoso section * { 26 | display:inline; 27 | padding-bottom: 10px; 28 | padding-right: 2px; 29 | padding-left: 2px; 30 | padding-top: 2px; 31 | } 32 | 33 | /* I need to select things that are sections, or subsections, etc. 34 | and I need to select things that are being hovered over, 35 | and I need to select things where there is not a child also 36 | being hovered over. */ 37 | .akoma-ntoso .highlight { 38 | background-color:lightblue; 39 | } 40 | 41 | .akoma-ntoso section { 42 | border:2px solid lightgray; 43 | border-radius: 5px; 44 | } 45 | 46 | .akoma-ntoso subsection { 47 | margin-left: 30px; 48 | display:block; 49 | border:2px solid lightgray; 50 | border-radius: 5px; 51 | } 52 | 53 | .akoma-ntoso paragraph { 54 | margin-left: 30px; 55 | display:block; 56 | 57 | border:2px solid lightgray; 58 | border-radius: 5px; 59 | } 60 | 61 | .akoma-ntoso subparagraph { 62 | margin-left: 30px; 63 | display:block; 64 | 65 | border:2px solid lightgray; 66 | border-radius: 5px; 67 | } 68 | 69 | .akoma-ntoso item { 70 | margin-left: 30px; 71 | display: block; 72 | } -------------------------------------------------------------------------------- /blawx/static/blawx/android-chrome-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/android-chrome-192x192.png -------------------------------------------------------------------------------- /blawx/static/blawx/android-chrome-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/android-chrome-512x512.png -------------------------------------------------------------------------------- /blawx/static/blawx/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/apple-touch-icon.png -------------------------------------------------------------------------------- /blawx/static/blawx/attributes.js: -------------------------------------------------------------------------------- 1 | function setAttributeType(event) { 2 | if (event.type == Blockly.Events.BLOCK_CREATE) { 3 | // console.log("Block was created."); 4 | for (var i = 0; i < event.ids.length; i++) { 5 | block = demoWorkspace.getBlockById(event.ids[i]); 6 | if (block.type == "attribute_selector") { 7 | var attribute_name = block.blawxAttributeName; 8 | if (block.blawxAttributeOrder == 'ov') { 9 | block.getInput('second_element').connection.setCheck([blawxTypeToBlocklyType(block.blawxAttributeType),'VARIABLE']); 10 | block.getInput('first_element').connection.setCheck(['OBJECT','VARIABLE']); 11 | } 12 | else { 13 | block.getInput('first_element').connection.setCheck([blawxTypeToBlocklyType(block.blawxAttributeType),'VARIABLE']); 14 | block.getInput('second_element').connection.setCheck(['OBJECT','VARIABLE']); 15 | } 16 | } 17 | } 18 | } 19 | } 20 | 21 | demoWorkspace.addChangeListener(setAttributeType); -------------------------------------------------------------------------------- /blawx/static/blawx/context_menus.js: -------------------------------------------------------------------------------- 1 | const customizeDisplayMenuItem = { 2 | displayText: 'Customize Display', 3 | preconditionFn: function(scope) { 4 | if (scope.block.type == "attribute_declaration" || scope.block.type == "category_declaration") { 5 | return 'enabled'; 6 | } else { 7 | return 'hidden'; 8 | } 9 | }, 10 | callback: function(scope) { 11 | }, 12 | scopeType: Blockly.ContextMenuRegistry.ScopeType.BLOCK, 13 | id: 'customize_display', 14 | weight: 0, 15 | }; 16 | // Blockly.ContextMenuRegistry.registry.register(customizeDisplayMenuItem); 17 | 18 | const advancedDefeasibilityMenuItem = { 19 | displayText: 'Advanced...', 20 | preconditionFn: function(scope) { 21 | if (scope.block.type == "unattributed_rule") { 22 | return 'enabled'; 23 | } else { 24 | return 'hidden'; 25 | } 26 | }, 27 | callback: function(scope) { 28 | }, 29 | scopeType: Blockly.ContextMenuRegistry.ScopeType.BLOCK, 30 | id: 'advanced_defeasibility', 31 | weight: 0, 32 | }; 33 | // Blockly.ContextMenuRegistry.registry.register(advancedDefeasibilityMenuItem); -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/5_levels.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/5_levels.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/RPS_scenario.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/RPS_scenario.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/RPS_scenario_answers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/RPS_scenario_answers.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/RPS_scenario_relevance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/RPS_scenario_relevance.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/RPS_se_interface.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/RPS_se_interface.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/according_to_any.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/according_to_any.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/according_to_any_question.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/according_to_any_question.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/according_to_rule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/according_to_rule.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/according_to_which_question.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/according_to_which_question.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/add_button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/add_button.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/add_fact_menu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/add_fact_menu.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/albert_blue_constraint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/albert_blue_constraint.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/alive_from_born.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/alive_from_born.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/and_stack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/and_stack.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/applicability_presumption.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/applicability_presumption.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/assume_bob_is_dog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/assume_bob_is_dog.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/att_cust_ex_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/att_cust_ex_1.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/att_cust_ex_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/att_cust_ex_2.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/att_cust_ex_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/att_cust_ex_3.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/attribute_selector_unary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/attribute_selector_unary.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/attributed_big_bird.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/attributed_big_bird.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/bad_fact.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/bad_fact.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/bad_rule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/bad_rule.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/big_bird.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/big_bird.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/big_bird_question.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/big_bird_question.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/birds_cant_talk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/birds_cant_talk.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blawx_root_screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blawx_root_screen.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blawx_root_with_new_project.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blawx_root_with_new_project.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blawxbot_buttons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blawxbot_buttons.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blawxbot_interface.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blawxbot_interface.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blawxbot_sidebar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blawxbot_sidebar.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/according_to.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/according_to.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/applies.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/applies.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/as_of.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/as_of.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/assumption.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/assumption.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/attribute_display.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/attribute_display.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/attribute_selector.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/attribute_selector.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/attributed_rule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/attributed_rule.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/calculation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/calculation.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/category_attributes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/category_attributes.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/category_display.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/category_display.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/category_equivalence.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/category_equivalence.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/category_selector.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/category_selector.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/comparison.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/comparison.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/constraint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/constraint.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/date.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/date.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/date_add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/date_add.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/date_add_days.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/date_add_days.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/date_comparison.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/date_comparison.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/date_constructor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/date_constructor.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/date_value.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/date_value.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/datetime.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/datetime.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/datetime_calculation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/datetime_calculation.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/datetime_constructor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/datetime_constructor.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/datetime_to_ts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/datetime_to_ts.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/datetime_value.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/datetime_value.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/days_between.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/days_between.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/defeated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/defeated.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/duration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/duration.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/duration_between.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/duration_between.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/duration_calculation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/duration_calculation.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/duration_comparison.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/duration_comparison.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/duration_constructor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/duration_constructor.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/duration_value.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/duration_value.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/during.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/during.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/empty_list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/empty_list.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/fact.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/fact.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/false_value.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/false_value.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/first_rest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/first_rest.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/from.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/from.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/holds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/holds.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/initially.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/initially.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/json_input.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/json_input.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/known_false.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/known_false.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/list.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/list_aggregation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/list_aggregation.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/list_collection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/list_collection.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/math_operator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/math_operator.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/new_attribute.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/new_attribute.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/new_attribute_binary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/new_attribute_binary.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/new_attribute_unary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/new_attribute_unary.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/new_category.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/new_category.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/new_object.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/new_object.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/new_relationship.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/new_relationship.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/not.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/not.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/now.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/now.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/number.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/number.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/number_value.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/number_value.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/numerical_constraint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/numerical_constraint.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/object_category.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/object_category.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/object_disequality.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/object_disequality.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/object_equality.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/object_equality.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/object_selector.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/object_selector.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/opposes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/opposes.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/overrules.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/overrules.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/question.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/question.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/relationship_selector.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/relationship_selector.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/rule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/rule.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/section_selector.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/section_selector.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/time.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/time.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/time_calculation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/time_calculation.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/time_value.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/time_value.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/today.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/today.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/true_false.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/true_false.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/true_value.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/true_value.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/ts_to_date.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/ts_to_date.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/ts_to_datetime.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/ts_to_datetime.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/ts_to_duration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/ts_to_duration.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/ts_to_time.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/ts_to_time.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/ultimately.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/ultimately.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/unnamed_variable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/unnamed_variable.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/variable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/variable.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/blocks/variable_assignment.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/blocks/variable_assignment.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/bob_age_35.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/bob_age_35.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/bob_and_robert_identical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/bob_and_robert_identical.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/bob_is_mammal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/bob_is_mammal.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/bob_is_person.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/bob_is_person.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/bot_button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/bot_button.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/button_bar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/button_bar.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/calculate_first_of_month.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/calculate_first_of_month.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/cat_is_mammal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/cat_is_mammal.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/collapsing_sidebars.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/collapsing_sidebars.gif -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/comments.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/comments.gif -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/correct_not_any_dogs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/correct_not_any_dogs.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/date_calculator_filled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/date_calculator_filled.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/date_value_filled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/date_value_filled.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/default_attribute_selector.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/default_attribute_selector.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/delete_button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/delete_button.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/disjunctive_rule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/disjunctive_rule.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/does_not_apply.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/does_not_apply.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/doesnt_fit.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/doesnt_fit.gif -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/dog_and_cat_opposed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/dog_and_cat_opposed.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/drag_stack.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/drag_stack.gif -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/duration_examples.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/duration_examples.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/eligibility_overruled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/eligibility_overruled.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/explanation_with_holds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/explanation_with_holds.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/explanation_without_holds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/explanation_without_holds.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/fact_scenario_editor_interface.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/fact_scenario_editor_interface.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/family_ontology.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/family_ontology.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/fields.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/fields.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/filled_overrule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/filled_overrule.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/from_ts_blocks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/from_ts_blocks.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/good_rule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/good_rule.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/holds_question.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/holds_question.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/holds_rule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/holds_rule.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/house_answers_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/house_answers_9.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/house_ontology.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/house_ontology.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/how_do_we_know.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/how_do_we_know.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/initially_not_alive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/initially_not_alive.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/inputs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/inputs.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/internal_vertical_connector.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/internal_vertical_connector.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/invoice_ontology.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/invoice_ontology.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/invoice_total.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/invoice_total.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/is_socrates_mortal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/is_socrates_mortal.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/it_rule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/it_rule.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/known_category_person.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/known_category_person.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/known_object_bob.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/known_object_bob.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/list_of_one.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/list_of_one.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/list_of_two.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/list_of_two.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/lock_button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/lock_button.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/logical_constraint_example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/logical_constraint_example.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/logical_constraint_ontology.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/logical_constraint_ontology.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/math_test.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/math_test.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/missing_vert_connections.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/missing_vert_connections.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/must_pay_tax_rule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/must_pay_tax_rule.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/navigation_tree.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/navigation_tree.gif -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/nested_math.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/nested_math.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/net_30_addition.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/net_30_addition.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/new_attribute_declaration_binary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/new_attribute_declaration_binary.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/new_attribute_declaration_unary.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/new_attribute_declaration_unary.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/new_category_declaration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/new_category_declaration.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/new_object_category.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/new_object_category.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/new_value_form.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/new_value_form.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/not_alive_from_death.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/not_alive_from_death.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/not_alive_query.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/not_alive_query.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/num_constraint_answer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/num_constraint_answer.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/output_pane.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/output_pane.gif -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/person_friend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/person_friend.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/person_is_category.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/person_is_category.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/person_ontology.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/person_ontology.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/person_with_moustache_not_eligible.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/person_with_moustache_not_eligible.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/person_with_pet_eligible.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/person_with_pet_eligible.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/possible_residence_rule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/possible_residence_rule.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/preloaded_according_to.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/preloaded_according_to.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/preloaded_holds.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/preloaded_holds.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/project_editor_screen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/project_editor_screen.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/project_editor_with_legal_text.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/project_editor_with_legal_text.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/reversed_order_attribute_customization.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/reversed_order_attribute_customization.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/rps_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/rps_1.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/rps_10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/rps_10.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/rps_11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/rps_11.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/rps_12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/rps_12.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/rps_13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/rps_13.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/rps_14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/rps_14.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/rps_15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/rps_15.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/rps_16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/rps_16.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/rps_17.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/rps_17.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/rps_18.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/rps_18.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/rps_19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/rps_19.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/rps_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/rps_2.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/rps_20.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/rps_20.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/rps_21.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/rps_21.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/rps_22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/rps_22.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/rps_23.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/rps_23.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/rps_24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/rps_24.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/rps_25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/rps_25.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/rps_26.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/rps_26.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/rps_27.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/rps_27.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/rps_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/rps_3.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/rps_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/rps_4.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/rps_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/rps_5.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/rps_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/rps_6.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/rps_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/rps_7.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/rps_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/rps_8.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/rps_9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/rps_9.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/scenario_editor.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/scenario_editor.gif -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/scenario_editor_button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/scenario_editor_button.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/scenario_editor_buttons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/scenario_editor_buttons.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/scenario_editor_interface.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/scenario_editor_interface.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/score_code.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/score_code.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/sibling_rule_broken.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/sibling_rule_broken.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/sibling_rule_fixed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/sibling_rule_fixed.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/sucker_rule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/sucker_rule.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/tax_without_rep_ontology.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/tax_without_rep_ontology.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/toolbox.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/toolbox.gif -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/trash.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/trash.gif -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/twr_answer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/twr_answer.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/twr_query.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/twr_query.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/twr_rule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/twr_rule.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/ultimately_not_alive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/ultimately_not_alive.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/unground_category.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/unground_category.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/unnested_math.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/unnested_math.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/vertical_connectors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/vertical_connectors.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/view_tab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/view_tab.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/voting_age_rule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/voting_age_rule.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/who_is_mortal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/who_is_mortal.png -------------------------------------------------------------------------------- /blawx/static/blawx/docs/images/wrong_not_any_dogs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/docs/images/wrong_not_any_dogs.png -------------------------------------------------------------------------------- /blawx/static/blawx/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/favicon-16x16.png -------------------------------------------------------------------------------- /blawx/static/blawx/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/favicon-32x32.png -------------------------------------------------------------------------------- /blawx/static/blawx/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/favicon.ico -------------------------------------------------------------------------------- /blawx/static/blawx/fonts.css: -------------------------------------------------------------------------------- 1 | /* ibm-plex-sans-500 - latin */ 2 | @font-face { 3 | font-family: 'IBM Plex Sans'; 4 | font-style: normal; 5 | font-weight: 500; 6 | src: local(''), 7 | url('/static/blawx/fonts/ibm-plex-sans-v14-latin-500.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ 8 | url('/static/blawx/fonts/ibm-plex-sans-v14-latin-500.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ 9 | } 10 | /* mina-700 - latin */ 11 | @font-face { 12 | font-family: 'Mina'; 13 | font-style: normal; 14 | font-weight: 700; 15 | src: local(''), 16 | url('/static/blawx/fonts/mina-v11-latin-700.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ 17 | url('/static/blawx/fonts/mina-v11-latin-700.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ 18 | } -------------------------------------------------------------------------------- /blawx/static/blawx/fonts/ibm-plex-sans-v14-latin-500.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/fonts/ibm-plex-sans-v14-latin-500.woff -------------------------------------------------------------------------------- /blawx/static/blawx/fonts/ibm-plex-sans-v14-latin-500.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/fonts/ibm-plex-sans-v14-latin-500.woff2 -------------------------------------------------------------------------------- /blawx/static/blawx/fonts/mina-v11-latin-700.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/fonts/mina-v11-latin-700.woff -------------------------------------------------------------------------------- /blawx/static/blawx/fonts/mina-v11-latin-700.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/fonts/mina-v11-latin-700.woff2 -------------------------------------------------------------------------------- /blawx/static/blawx/import.js: -------------------------------------------------------------------------------- 1 | function createImportListener(event) { 2 | if (event.type == Blockly.Events.BLOCK_CREATE) { 3 | for (var i = 0; i < event.ids.length; i++) { 4 | block = demoWorkspace.getBlockById(event.ids[i]); 5 | if (block.type == "import_ruleset") { 6 | currentUri = block.getFieldValue('uri'); 7 | var uri; 8 | if (currentUri == "filename.blawx") { 9 | Blockly.prompt("What is the web address of the published .blawx file you would like to import?",'',function(value){uri = value}); 10 | block.setFieldValue(uri,'uri'); 11 | } else { 12 | uri = currentUri; 13 | } 14 | importSpace = new Blockly.Workspace(); 15 | importDictionary[block.id] = importSpace; 16 | var request = new XMLHttpRequest(); 17 | request.open('GET', uri, true); 18 | request.send(null); 19 | request.onreadystatechange = function () { 20 | if (request.readyState === 4 && request.status === 200) { 21 | var xml = Blockly.utils.xml.textToDom(request.responseText); 22 | Blockly.Xml.domToWorkspace(xml, importSpace); 23 | } 24 | } 25 | 26 | } 27 | 28 | } 29 | } else if (event.type == Blockly.Events.BLOCK_DELETE) { 30 | for (var i = 0; i < event.ids.length; i++) { 31 | if (event.ids[i] in importDictionary) { 32 | var workspace; 33 | workspace = importDictionary[event.ids[i]]; 34 | workspace.dispose(); 35 | delete importDictionary[event.ids[i]]; 36 | } 37 | } 38 | } 39 | } 40 | demoWorkspace.addChangeListener(createImportListener); -------------------------------------------------------------------------------- /blawx/static/blawx/person_friend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/person_friend.png -------------------------------------------------------------------------------- /blawx/static/blawx/site.webmanifest: -------------------------------------------------------------------------------- 1 | {"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"} -------------------------------------------------------------------------------- /blawx/static/blawx/sucker_rule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/sucker_rule.png -------------------------------------------------------------------------------- /blawx/static/blawx/tutorials/wills/images/age_attribute.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/tutorials/wills/images/age_attribute.gif -------------------------------------------------------------------------------- /blawx/static/blawx/tutorials/wills/images/blawxbot.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/tutorials/wills/images/blawxbot.gif -------------------------------------------------------------------------------- /blawx/static/blawx/tutorials/wills/images/customize_attributes.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/tutorials/wills/images/customize_attributes.gif -------------------------------------------------------------------------------- /blawx/static/blawx/tutorials/wills/images/eligible_attribute.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/tutorials/wills/images/eligible_attribute.gif -------------------------------------------------------------------------------- /blawx/static/blawx/tutorials/wills/images/jane_is_12.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/tutorials/wills/images/jane_is_12.gif -------------------------------------------------------------------------------- /blawx/static/blawx/tutorials/wills/images/jane_question_1.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/tutorials/wills/images/jane_question_1.gif -------------------------------------------------------------------------------- /blawx/static/blawx/tutorials/wills/images/jane_question_2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/tutorials/wills/images/jane_question_2.gif -------------------------------------------------------------------------------- /blawx/static/blawx/tutorials/wills/images/navigation_tree.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/tutorials/wills/images/navigation_tree.gif -------------------------------------------------------------------------------- /blawx/static/blawx/tutorials/wills/images/person_category.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/tutorials/wills/images/person_category.gif -------------------------------------------------------------------------------- /blawx/static/blawx/tutorials/wills/images/rule.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/tutorials/wills/images/rule.gif -------------------------------------------------------------------------------- /blawx/static/blawx/tutorials/wills/images/scenario_editor_2.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/tutorials/wills/images/scenario_editor_2.gif -------------------------------------------------------------------------------- /blawx/static/blawx/user_interface_v1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Lexpedite/blawx/6a717b1920e21236536dcd4877e832cdb100f691/blawx/static/blawx/user_interface_v1.png -------------------------------------------------------------------------------- /blawx/templates/blawx/blawxtest_confirm_delete.html: -------------------------------------------------------------------------------- 1 | {% extends "base2.html" %} 2 | 3 | {% block breadcrumb %} 4 | 12 | {% endblock %} 13 | 14 | {% block main_content_card_body %} 15 | 16 |
21 | 22 | {% endblock %} -------------------------------------------------------------------------------- /blawx/templates/blawx/blawxtest_form.html: -------------------------------------------------------------------------------- 1 | {% extends "base2.html" %} 2 | 3 | {% block breadcrumb %} 4 | 11 | {% endblock %} 12 | 13 | {% block main_content_card_body %} 14 | 18 | {% endblock %} -------------------------------------------------------------------------------- /blawx/templates/blawx/docs2.html: -------------------------------------------------------------------------------- 1 | 2 | {% extends "base2.html" %} 3 | {% load markdown_extras %} 4 | 5 | {% block main_content_card_body %} 6 | 9 | {{ docpage.content | markdown | safe }} 10 | {% endblock %} -------------------------------------------------------------------------------- /blawx/templates/blawx/ruledoc_confirm_delete.html: -------------------------------------------------------------------------------- 1 | {% extends "base2.html" %} 2 | 3 | {% block breadcrumb %} 4 | 11 | {% endblock %} 12 | 13 | {% block main_content_card_body %} 14 | 19 | {% endblock %} -------------------------------------------------------------------------------- /blawx/templates/includes/breadcrumb.html: -------------------------------------------------------------------------------- 1 | 2 | 23 | -------------------------------------------------------------------------------- /blawx/templates/includes/footer.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /blawx/templates/includes/leftbar_nav.html: -------------------------------------------------------------------------------- 1 |Logged out!
5 | Click here to login again. 6 | {% endblock %} -------------------------------------------------------------------------------- /blawx/templates/registration/login.html: -------------------------------------------------------------------------------- 1 | {% extends "base2.html" %} 2 | 3 | {% block main_content_card_body %} 4 | 5 | {% if form.errors %} 6 |Your username and password didn't match. Please try again.
7 | {% endif %} 8 | 9 | {% if next %} 10 | {% if user.is_authenticated %} 11 |Your account doesn't have access to this page. To proceed, 12 | please login with an account that has access.
13 | {% else %} 14 |Please login to see this page.
15 | {% endif %} 16 | {% endif %} 17 | 18 | 33 | {% if preferences.BlawxPreference.allow_registration %} 34 |If you do not have an account, you can create one by clicking "Register" below!
35 | 36 | {% endif %} 37 | 38 | 40 | 41 | {% endblock %} -------------------------------------------------------------------------------- /blawx/templates/registration/password_reset_complete.html: -------------------------------------------------------------------------------- 1 | {% extends "base2.html" %} 2 | 3 | {% block main_content_card_body %} 4 |Please enter (and confirm) your new password.
6 | 25 | {% else %} 26 |The password reset link was invalid, possibly because it has already been used. Please request a new password reset.
28 | {% endif %} 29 | {% endblock %} -------------------------------------------------------------------------------- /blawx/templates/registration/password_reset_done.html: -------------------------------------------------------------------------------- 1 | {% extends "base2.html" %} 2 | 3 | {% block main_content_card_body %} 4 |We've emailed you instructions for setting your password. If they haven't arrived in a few minutes, check your spam folder.
5 | {% endblock %} -------------------------------------------------------------------------------- /blawx/templates/registration/password_reset_email.html: -------------------------------------------------------------------------------- 1 | Someone asked for password reset for email {{ email }}. Follow the link below: 2 | {{ protocol}}://{{ domain }}{% url 'password_reset_confirm' uidb64=uid token=token %} -------------------------------------------------------------------------------- /blawx/templates/registration/password_reset_form.html: -------------------------------------------------------------------------------- 1 | {% extends "base2.html" %} 2 | 3 | {% block main_content_card_body %} 4 | 12 | {% endblock %} -------------------------------------------------------------------------------- /blawx/templates/registration/register.html: -------------------------------------------------------------------------------- 1 | {% extends "base2.html" %} 2 | 3 | {% block main_content_card_body %} 4 | 5 | 6 | 7 |If you already have an account, login instead.
15 |