1+
2+
3+ <!DOCTYPE html>
4+ < html class ="writer-html5 " lang ="en " data-content_root ="../../../ ">
5+ < head >
6+ < meta charset ="utf-8 " />
7+ < meta name ="viewport " content ="width=device-width, initial-scale=1.0 " />
8+ < title > graphbrain.patterns.properties — Graphbrain 0.7.1
9+ documentation</ title >
10+ < link rel ="stylesheet " type ="text/css " href ="../../../_static/pygments.css?v=03e43079 " />
11+ < link rel ="stylesheet " type ="text/css " href ="../../../_static/css/theme.css?v=9edc463e " />
12+
13+
14+ < link rel ="shortcut icon " href ="../../../_static/favicon.png "/>
15+ < script src ="../../../_static/jquery.js?v=5d32c60e "> </ script >
16+ < script src ="../../../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c "> </ script >
17+ < script src ="../../../_static/documentation_options.js?v=5a057da9 "> </ script >
18+ < script src ="../../../_static/doctools.js?v=fd6eb6e6 "> </ script >
19+ < script src ="../../../_static/sphinx_highlight.js?v=6ffebe34 "> </ script >
20+ < script src ="../../../_static/js/theme.js "> </ script >
21+ < link rel ="index " title ="Index " href ="../../../genindex.html " />
22+ < link rel ="search " title ="Search " href ="../../../search.html " />
23+ </ head >
24+
25+ < body class ="wy-body-for-nav ">
26+ < div class ="wy-grid-for-nav ">
27+ < nav data-toggle ="wy-nav-shift " class ="wy-nav-side ">
28+ < div class ="wy-side-scroll ">
29+ < div class ="wy-side-nav-search " style ="background: #333 " >
30+
31+
32+
33+ < a href ="../../../index.html ">
34+
35+ < img src ="../../../_static/graphbrain-logo.png " class ="logo " alt ="Logo "/>
36+ </ a >
37+ < div role ="search ">
38+ < form id ="rtd-search-form " class ="wy-form " action ="../../../search.html " method ="get ">
39+ < input type ="text " name ="q " placeholder ="Search docs " aria-label ="Search docs " />
40+ < input type ="hidden " name ="check_keywords " value ="yes " />
41+ < input type ="hidden " name ="area " value ="default " />
42+ </ form >
43+ </ div >
44+ </ div > < div class ="wy-menu wy-menu-vertical " data-spy ="affix " role ="navigation " aria-label ="Navigation menu ">
45+ < div >
46+ < a href ="https://socsemics.huma-num.fr/ " style ="margin:0px; text-align:center ">
47+ < img style ="width: 75%; height: 75%; border-radius: 0px; margin:0px; padding:5px; background:#ffffff " src ="/_static/socsemics.png "/>
48+ </ a >
49+ </ div >
50+
51+ < p class ="caption " role ="heading "> < span class ="caption-text "> Contents:</ span > </ p >
52+ < ul >
53+ < li class ="toctree-l1 "> < a class ="reference internal " href ="../../../pubs-cases.html "> Publications and Use Cases</ a > </ li >
54+ < li class ="toctree-l1 "> < a class ="reference internal " href ="../../../installation.html "> Installation</ a > </ li >
55+ < li class ="toctree-l1 "> < a class ="reference internal " href ="../../../tutorials.html "> Tutorials and examples</ a > </ li >
56+ < li class ="toctree-l1 "> < a class ="reference internal " href ="../../../manual.html "> Manual</ a > </ li >
57+ < li class ="toctree-l1 "> < a class ="reference internal " href ="../../../team.html "> Team</ a > </ li >
58+ < li class ="toctree-l1 "> < a class ="reference internal " href ="../../../thanks.html "> Thanks</ a > </ li >
59+ </ ul >
60+
61+
62+ </ div >
63+ </ div >
64+ </ nav >
65+
66+ < section data-toggle ="wy-nav-shift " class ="wy-nav-content-wrap "> < nav class ="wy-nav-top " aria-label ="Mobile navigation menu " style ="background: #333 " >
67+ < i data-toggle ="wy-nav-top " class ="fa fa-bars "> </ i >
68+ < a href ="../../../index.html "> Graphbrain</ a >
69+ </ nav >
70+
71+ < div class ="wy-nav-content ">
72+ < div class ="rst-content ">
73+ < div role ="navigation " aria-label ="Page navigation ">
74+ < ul class ="wy-breadcrumbs ">
75+ < li > < a href ="../../../index.html " class ="icon icon-home " aria-label ="Home "> </ a > </ li >
76+ < li class ="breadcrumb-item "> < a href ="../../index.html "> Module code</ a > </ li >
77+ < li class ="breadcrumb-item active "> graphbrain.patterns.properties</ li >
78+ < li class ="wy-breadcrumbs-aside ">
79+ </ li >
80+ </ ul >
81+ < hr />
82+ </ div >
83+ < div role ="main " class ="document " itemscope ="itemscope " itemtype ="http://schema.org/Article ">
84+ < div itemprop ="articleBody ">
85+
86+ < h1 > Source code for graphbrain.patterns.properties</ h1 > < div class ="highlight "> < pre >
87+ < span > </ span > < span class ="kn "> from</ span > < span class ="w "> </ span > < span class ="nn "> typing</ span > < span class ="w "> </ span > < span class ="kn "> import</ span > < span class ="n "> Set</ span >
88+
89+ < span class ="n "> FUNS</ span > < span class ="p "> :</ span > < span class ="n "> Set</ span > < span class ="p "> [</ span > < span class ="nb "> str</ span > < span class ="p "> ]</ span > < span class ="o "> =</ span > < span class ="p "> {</ span > < span class ="s1 "> 'var'</ span > < span class ="p "> ,</ span > < span class ="s1 "> 'atoms'</ span > < span class ="p "> ,</ span > < span class ="s1 "> 'lemma'</ span > < span class ="p "> ,</ span > < span class ="s1 "> 'any'</ span > < span class ="p "> }</ span >
90+
91+ < div class ="viewcode-block " id ="is_wildcard ">
92+ < a class ="viewcode-back " href ="../../../manual/api.html#graphbrain.patterns.is_wildcard "> [docs]</ a >
93+ < span class ="k "> def</ span > < span class ="w "> </ span > < span class ="nf "> is_wildcard</ span > < span class ="p "> (</ span > < span class ="n "> atom</ span > < span class ="p "> ):</ span >
94+ < span class ="w "> </ span > < span class ="sd "> """Check if this atom defines a wildcard, i.e. if its root is a pattern matcher.</ span >
95+ < span class ="sd "> (\\*, ., ..., if it is surrounded by parenthesis or variable label starting with an uppercase letter)</ span >
96+ < span class ="sd "> """</ span >
97+ < span class ="k "> if</ span > < span class ="n "> atom</ span > < span class ="o "> .</ span > < span class ="n "> atom</ span > < span class ="p "> :</ span >
98+ < span class ="k "> return</ span > < span class ="n "> atom</ span > < span class ="o "> .</ span > < span class ="n "> parens</ span > < span class ="ow "> or</ span > < span class ="n "> atom</ span > < span class ="p "> [</ span > < span class ="mi "> 0</ span > < span class ="p "> ][</ span > < span class ="mi "> 0</ span > < span class ="p "> ]</ span > < span class ="ow "> in</ span > < span class ="p "> {</ span > < span class ="s1 "> '*'</ span > < span class ="p "> ,</ span > < span class ="s1 "> '.'</ span > < span class ="p "> }</ span > < span class ="ow "> or</ span > < span class ="n "> atom</ span > < span class ="p "> [</ span > < span class ="mi "> 0</ span > < span class ="p "> ][</ span > < span class ="mi "> 0</ span > < span class ="p "> ]</ span > < span class ="o "> .</ span > < span class ="n "> isupper</ span > < span class ="p "> ()</ span >
99+ < span class ="k "> else</ span > < span class ="p "> :</ span >
100+ < span class ="k "> return</ span > < span class ="kc "> False</ span > </ div >
101+
102+
103+
104+ < span class ="k "> def</ span > < span class ="w "> </ span > < span class ="nf "> is_fun_pattern</ span > < span class ="p "> (</ span > < span class ="n "> edge</ span > < span class ="p "> ):</ span >
105+ < span class ="k "> if</ span > < span class ="n "> edge</ span > < span class ="o "> .</ span > < span class ="n "> atom</ span > < span class ="p "> :</ span >
106+ < span class ="k "> return</ span > < span class ="kc "> False</ span >
107+ < span class ="k "> return</ span > < span class ="nb "> str</ span > < span class ="p "> (</ span > < span class ="n "> edge</ span > < span class ="p "> [</ span > < span class ="mi "> 0</ span > < span class ="p "> ])</ span > < span class ="ow "> in</ span > < span class ="n "> FUNS</ span >
108+
109+
110+ < div class ="viewcode-block " id ="is_pattern ">
111+ < a class ="viewcode-back " href ="../../../manual/api.html#graphbrain.patterns.is_pattern "> [docs]</ a >
112+ < span class ="k "> def</ span > < span class ="w "> </ span > < span class ="nf "> is_pattern</ span > < span class ="p "> (</ span > < span class ="n "> edge</ span > < span class ="p "> ):</ span >
113+ < span class ="w "> </ span > < span class ="sd "> """Check if this edge defines a pattern, i.e. if it includes at least</ span >
114+ < span class ="sd "> one pattern matcher.</ span >
115+
116+ < span class ="sd "> Pattern matcher are:</ span >
117+ < span class ="sd "> - '\\*', '.', '(\\*)', '...'</ span >
118+ < span class ="sd "> - variables (atom label starting with an uppercase letter)</ span >
119+ < span class ="sd "> - argument role matcher (unordered argument roles surrounded by curly brackets)</ span >
120+ < span class ="sd "> - functional patterns (var, atoms, lemma, ...)</ span >
121+ < span class ="sd "> """</ span >
122+ < span class ="k "> if</ span > < span class ="n "> edge</ span > < span class ="o "> .</ span > < span class ="n "> atom</ span > < span class ="p "> :</ span >
123+ < span class ="k "> return</ span > < span class ="n "> is_wildcard</ span > < span class ="p "> (</ span > < span class ="n "> edge</ span > < span class ="p "> )</ span > < span class ="ow "> or</ span > < span class ="s1 "> '{'</ span > < span class ="ow "> in</ span > < span class ="n "> edge</ span > < span class ="o "> .</ span > < span class ="n "> argroles</ span > < span class ="p "> ()</ span >
124+ < span class ="k "> elif</ span > < span class ="n "> is_fun_pattern</ span > < span class ="p "> (</ span > < span class ="n "> edge</ span > < span class ="p "> ):</ span >
125+ < span class ="k "> return</ span > < span class ="kc "> True</ span >
126+ < span class ="k "> else</ span > < span class ="p "> :</ span >
127+ < span class ="k "> return</ span > < span class ="nb "> any</ span > < span class ="p "> (</ span > < span class ="n "> is_pattern</ span > < span class ="p "> (</ span > < span class ="n "> item</ span > < span class ="p "> )</ span > < span class ="k "> for</ span > < span class ="n "> item</ span > < span class ="ow "> in</ span > < span class ="n "> edge</ span > < span class ="p "> )</ span > </ div >
128+
129+
130+
131+ < div class ="viewcode-block " id ="is_unordered_pattern ">
132+ < a class ="viewcode-back " href ="../../../manual/api.html#graphbrain.patterns.is_unordered_pattern "> [docs]</ a >
133+ < span class ="k "> def</ span > < span class ="w "> </ span > < span class ="nf "> is_unordered_pattern</ span > < span class ="p "> (</ span > < span class ="n "> edge</ span > < span class ="p "> ):</ span >
134+ < span class ="w "> </ span > < span class ="sd "> """Check if this edge defines an unordered pattern, i.e. if it includes at least</ span >
135+ < span class ="sd "> one instance of unordered argument roles surrounded by curly brackets.</ span >
136+ < span class ="sd "> """</ span >
137+ < span class ="k "> if</ span > < span class ="n "> edge</ span > < span class ="o "> .</ span > < span class ="n "> atom</ span > < span class ="p "> :</ span >
138+ < span class ="k "> return</ span > < span class ="s1 "> '{'</ span > < span class ="ow "> in</ span > < span class ="n "> edge</ span > < span class ="o "> .</ span > < span class ="n "> argroles</ span > < span class ="p "> ()</ span >
139+ < span class ="k "> else</ span > < span class ="p "> :</ span >
140+ < span class ="k "> return</ span > < span class ="nb "> any</ span > < span class ="p "> (</ span > < span class ="n "> is_unordered_pattern</ span > < span class ="p "> (</ span > < span class ="n "> item</ span > < span class ="p "> )</ span > < span class ="k "> for</ span > < span class ="n "> item</ span > < span class ="ow "> in</ span > < span class ="n "> edge</ span > < span class ="p "> )</ span > </ div >
141+
142+
143+ < div class ="viewcode-block " id ="is_full_pattern ">
144+ < a class ="viewcode-back " href ="../../../manual/api.html#graphbrain.patterns.is_full_pattern "> [docs]</ a >
145+ < span class ="k "> def</ span > < span class ="w "> </ span > < span class ="nf "> is_full_pattern</ span > < span class ="p "> (</ span > < span class ="n "> edge</ span > < span class ="p "> ):</ span >
146+ < span class ="w "> </ span > < span class ="sd "> """Check if every atom is a pattern matcher.</ span >
147+
148+ < span class ="sd "> Pattern matcher are:</ span >
149+ < span class ="sd "> '\\*', '.', '(\\*)', '...', variables (atom label starting with an</ span >
150+ < span class ="sd "> uppercase letter) and functional patterns.</ span >
151+ < span class ="sd "> """</ span >
152+ < span class ="k "> if</ span > < span class ="n "> edge</ span > < span class ="o "> .</ span > < span class ="n "> atom</ span > < span class ="p "> :</ span >
153+ < span class ="k "> return</ span > < span class ="n "> is_pattern</ span > < span class ="p "> (</ span > < span class ="n "> edge</ span > < span class ="p "> )</ span >
154+ < span class ="k "> else</ span > < span class ="p "> :</ span >
155+ < span class ="k "> return</ span > < span class ="nb "> all</ span > < span class ="p "> (</ span > < span class ="n "> is_pattern</ span > < span class ="p "> (</ span > < span class ="n "> item</ span > < span class ="p "> )</ span > < span class ="k "> for</ span > < span class ="n "> item</ span > < span class ="ow "> in</ span > < span class ="n "> edge</ span > < span class ="p "> )</ span > </ div >
156+
157+ </ pre > </ div >
158+
159+ </ div >
160+ </ div >
161+ < footer >
162+
163+ < hr />
164+
165+ < div role ="contentinfo ">
166+ < p > © Copyright 2026 CNRS.</ p >
167+ </ div >
168+
169+
170+
171+ </ footer >
172+ </ div >
173+ </ div >
174+ </ section >
175+ </ div >
176+ < script >
177+ jQuery ( function ( ) {
178+ SphinxRtdTheme . Navigation . enable ( true ) ;
179+ } ) ;
180+ </ script >
181+
182+ </ body >
183+ </ html >
0 commit comments