Open
Description
Right now, we use "directed" if a term can work on directed networks and analogously for undirected. On the other hand, we use "bipartite" for terms that only work on bipartite networks. For example,
absdiff
: works for everything, has keywords "directed" and "undirected"b1factor
: works for bipartite undirected only, has keywords "bipartite" and "undirected"
This is not very consistent conceptually, and it also produces inconsistent search results:
- Searching with keyword "undirected" returns all terms (including bipartite-only) suitable for undirected networks (e.g., both
absdiff
andb1factor
). - Searching with keyword "bipartite" returns terms that work only on bipartite networks (e.g.,
b1factor
but notabsdiff
).
The question is what should we do?
My sense is that the most common use cases would be something like:
- List terms that work for a bipartite (undirected) network.
- List terms that work for a unipartite undirected network.
- List terms that work for a unipartite directed network.
Here are some ideas:
- We could accomplish this by declaring "bipartite" to be a third type of network. Then,
absdiff
would get all three keywords, whereasb1factor
would get only "bipartite". The downside of this is that it's not technically correct and is not future-proof, if we ever decide to implement directed bipartite networks. - We could keep the status quo but also implement some way of specifying logical expressions in the search. For example,
~undirected&!bipartite
would includeabsdiff
but notb1factor
(i.e., terms that work for undirected unipartite networks), whereas~undirected
would include both (i.e., everything that works for bipartite undirected networks). However, this is cumbersome and counterintuitive. - We could declare that "bipartite" should be used the way "directed" and "undirected" are (i.e., so that
absdiff
gets the keyword as well) and also implement some way of specifying logical expressions in the search. Then,~bipartite
would getabsdiff
andb1factor
(i.e., terms that work for undirected bipartite networks), but so would~undirected
. We may want to the introduce a keyword "unipartite". (A term that supports both should have both keywords.)
Any thoughts?
@mbojan @CarterButts @martinamorris @drh20drh20 @sgoodreau @handcock