{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/systematic-reasoning-about-relational-domains","title":"Systematic Reasoning About Relational Domains With Graph Neural Networks","arxiv_id":"2407.17396","date":"2024-07-24","proceeding":null,"authors":["Irtaza Khalid","Steven Schockaert"],"abstract":"Developing models that can learn to reason is a notoriously challenging problem. We focus on reasoning in relational domains, where the use of Graph Neural Networks (GNNs) seems like a natural choice. However, previous work on reasoning with GNNs has shown that such models tend to fail when presented with test examples that require longer inference chains than those seen during training. This suggests that GNNs lack the ability to generalize from training examples in a systematic way, which would fundamentally limit their reasoning abilities. A common solution is to instead rely on neuro-symbolic methods, which are capable of reasoning in a systematic way by design. Unfortunately, the scalability of such methods is often limited and they tend to rely on overly strong assumptions, e.g.\\ that queries can be answered by inspecting a single relational path. In this paper, we revisit the idea of reasoning with GNNs, showing that systematic generalization is possible as long as the right inductive bias is provided. In particular, we argue that node embeddings should be treated as epistemic states and that GNN should be parameterised accordingly. We propose a simple GNN architecture which is based on this view and show that it is capable of achieving state-of-the-art results. We furthermore introduce a benchmark which requires models to aggregate evidence from multiple relational paths. We show that existing neuro-symbolic approaches fail on this benchmark, whereas our considered GNN model learns to reason accurately.","url_abs":"https://arxiv.org/abs/2407.17396v1","url_pdf":"https://arxiv.org/pdf/2407.17396v1.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"systematic-reasoning-about-relational-domains","repo_url":"https://github.com/erg0dic/gnn-sg","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"inductive-bias","task_name":"Inductive Bias"},{"task_slug":"systematic-generalization","task_name":"Systematic Generalization"}],"methods":[{"method_slug":"focus","method_name":"Focus"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2407.17396","atlas_url":"https://app.syntology.ai/?focus=2407.17396","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2407.17396"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/erg0dic/gnn-sg","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran":9,"unverified":1},"by_repo_kind":{"official":{"samples":10,"ran":9,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"b499d63f3e151bcc","entry":"apply_prob_constraints_row_col","repo":"erg0dic/gnn-sg","repo_kind":"official","path":"src/utils.py","file_url":"https://github.com/erg0dic/gnn-sg/blob/HEAD/src/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"b499d63f3e151bcc"}},{"code_sha256_prefix":"1f4eed9bd5dab8be","entry":"compute_algebraic_closure_for_paths","repo":"erg0dic/gnn-sg","repo_kind":"official","path":"src/comp_dataset_generator.py","file_url":"https://github.com/erg0dic/gnn-sg/blob/HEAD/src/comp_dataset_generator.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"1f4eed9bd5dab8be"}},{"code_sha256_prefix":"450e7e3a9b1078da","entry":"compute_sim","repo":"erg0dic/gnn-sg","repo_kind":"official","path":"src/model_nbf_general.py","file_url":"https://github.com/erg0dic/gnn-sg/blob/HEAD/src/model_nbf_general.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"450e7e3a9b1078da"}},{"code_sha256_prefix":"8941c24e039224c5","entry":"entropy","repo":"erg0dic/gnn-sg","repo_kind":"official","path":"src/model_nbf_general.py","file_url":"https://github.com/erg0dic/gnn-sg/blob/HEAD/src/model_nbf_general.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"8941c24e039224c5"}},{"code_sha256_prefix":"47018080816b2451","entry":"get_acc","repo":"erg0dic/gnn-sg","repo_kind":"official","path":"src/utils.py","file_url":"https://github.com/erg0dic/gnn-sg/blob/HEAD/src/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"47018080816b2451"}},{"code_sha256_prefix":"cd8dbbb1d4fa1f4b","entry":"get_negative_relations","repo":"erg0dic/gnn-sg","repo_kind":"official","path":"src/model_nbf_fb.py","file_url":"https://github.com/erg0dic/gnn-sg/blob/HEAD/src/model_nbf_fb.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"cd8dbbb1d4fa1f4b"}},{"code_sha256_prefix":"bd75778ce5bcfcd6","entry":"kl_div","repo":"erg0dic/gnn-sg","repo_kind":"official","path":"src/model_nbf_fb.py","file_url":"https://github.com/erg0dic/gnn-sg/blob/HEAD/src/model_nbf_fb.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"bd75778ce5bcfcd6"}},{"code_sha256_prefix":"00538f78c1005cc9","entry":"stable_norm_denominator","repo":"erg0dic/gnn-sg","repo_kind":"official","path":"src/model_nbf_general.py","file_url":"https://github.com/erg0dic/gnn-sg/blob/HEAD/src/model_nbf_general.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"00538f78c1005cc9"}},{"code_sha256_prefix":"c55be2270957af67","entry":"xent","repo":"erg0dic/gnn-sg","repo_kind":"official","path":"src/model_nbf_fb.py","file_url":"https://github.com/erg0dic/gnn-sg/blob/HEAD/src/model_nbf_fb.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"c55be2270957af67"}},{"code_sha256_prefix":"ae574bc97431f499","entry":"compose","repo":"erg0dic/gnn-sg","repo_kind":"official","path":"src/comp_dataset_generator.py","file_url":"https://github.com/erg0dic/gnn-sg/blob/HEAD/src/comp_dataset_generator.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"ae574bc97431f499"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}