I created a schema where some of the entities are simple dictionaries, fields of other entities: Category (field of Topic), Domain (e.g. “Streaming”, “DevOPS”).
When a category is provided, I’m checking if it already exists (get by description). If not, I insert it.
I realised that if the category field of the topic is just String (I get rid of the Category entity), and I insert two topics with the same value in the field category, Grakn will show a connection between these topics and the attribute “category”. This is similar to what I achieve by having a separate entity for category (in terms of avoiding duplicates).
Question: Is it worth it having a separate entity for things like category if these will only contain a description field? Is it better or worse in terms of performance having this field in Topic as String and leaving it to Grakn to point to the same String literal? Is there any other disadvantage in that approach in comparison to having a separate class for the Category vocabulary?