Context
I’m a newcomer to dataview and, outside using HTML twenty years ago, I have no knowledge of coding, hence the very long step-by-step description to make sure I’m making myself clear (apologies in advance)
Over the last five days, I’ve been studying the documentation (which I admit to having some trouble understanding), trying to adjust my existing workflow to its capabilities and reading lots of help posts which have indeed helped me a lot.
What I’m trying to do
I’ve got notes on animal/plant species named eg. “Corvus corax ~ corvo comum ~ common raven”
Each note has several aliases to allow for natural links eg. [Corvus corax, corvo comum, corvo, common raven, raven]
Each note for a species has got a list of fields such as:
Reino:: [[animalia]]
Filo:: [[chordata]]
Sub-Filo:: [[vertebrados]], [[craniata]]
Clade:: [[sauropsida]]
Clade:: [[avemetatarsalia]]
Clade:: [[ornithurae]]
Classe:: [[aves]]
Ordem:: [[passeriformes]]
Família:: [[corvídeos ~ crows (fam corvidae)|corvídeos]]
Género:: [[corvos e gralhas ~ ravens and crows (gén Corvus)|Corvus]]
Espécie:: Corvus corax ~ corvo comum ~ common raven
Each field has a link as its value, which directs to notes where the term is explained and then has a dataview table that works as an index of species with that value.
Originally, I intended to have a table showing:
Ordem | Família | Género | Espécie
Grouped by the first three columns, but after going through some reading, I realised it was beyond my ability and fell back on a workaround that requires only one level of grouping based on the value under a certain field.
TABLE WITHOUT ID
Género AS Género,
rows.file.link AS "Espécie"
FROM "Biosfera/Animais/Aves"
WHERE Espécie != null
WHERE Família = [[corvídeos ~ crows (fam corvidae)|corvídeos]]
GROUP BY Género
This works.
Género | Espécie
Corvus… | Corvus corax…
… … … … | Corvus brachyrhynchos…
But…
A lot of these filenames/links are works in progress. The scientific name is always the given, but either the English or the Portuguese common names are often added later, which causes the file name to change and the “dataview code” to break. So I need the above block to be…
NOT THIS
WHERE Família = [[corvídeos ~ crows (fam corvidae)|corvídeos]]
THIS
WHERE contains(Família, [[corvidae]])
which does not work
Things I have tried
Based on answers to other help requests and the documentation, I tried to say (what I think might be):
WHERE contains(Família, "[[corvidae]]") -> the object Família has a link with that word
Dataview: No results to show for table query
WHERE contains(Família, [["corvidae"]]) -> the object Família has that word inside a link
Dataview: No results to show for table query
WHERE contains(Família, ([[corvidae]])) -> maybe it isn't an object but a string which is a link?
Dataview: No results to show for table query
WHERE contains(Família, (corvidae)) -> maybe it isn't an object but a string (forget it's a link)
Género | Espécie
(empty) | Corvus (que é o Género, não a Espécie)
What am I missing?
Note: to the exception of very uniquely specifc words, all words on file names have small caps to avoid any problems with case sensitivity