Initial greetings

Hello everyone!

My name is Fulvio and I am a system administrator from Italy.
I’ve come into contact with DMX while doing research on tools for personal knowledge management several months and, although rather difficult for me to grok, the concept behind it stuck.
Recently I’ve started (well more like continued) to despair trying to find a system which might help me model interconnected information in a visual fashion for my work (and not just that).
We manage several tens of platforms for customers, but the amount of information is becoming difficult to manage, especially with the quantity of customisations and the amount of layers of systems we need to deal with.
I wished to find a flexible model to flesh out the objects involved and link them in a way which would be easy for a human to understand and search, which could be used by a team to store and search for information through connections. For instance, which configuration files must be modified to activate a certain functionality? What’s impacted by rebooting or shutting down a certain subservice? Which customer was this customisation created for? On which servers or for which customers is that certain functionality enabled? That information would come mostly, but not necessarily, from manual input.

I’ve started looking into the concept of topic maps and I find it appealing for my purposes, although at this point my understanding is still too shallow to grasp it properly. Not to mention that, as it goes for many concepts or software which match the way I think things should be approached or handled, there doesn’t seem to be a sizable and well-maintained ecosystem around it, afaics.

If anyone would provide me some pointers to good material to deepen my understanding on the subject I would really appreciate it.
In the meantime I have a few questions which I hope might find quick answers for.
Is there a way to load a sizable amount of topics into DMX? Creating hundreds/thousands of topics by hand through the visual editor might be tiresome…
Is there a way to query for information on the basis of the connections between topics? A graph query language of some sort?
Is there a way to have some kind of versioning for the modifications on the topics?

As far as bugs are concerned, what’s the preferred way to notify the developers? I’ve installed the latest beta and found a few where exceptions were generated and the interface went wrong in a few ways.

Just to clarify, I am mainly researching out of a personal quest to find a tool which can store, retrieve and display information in a way matching the way I think, something which has escaped me until now. I would like to apply, as I mentioned, something like this for my work, but it’s not something I’ve been tasked to do nor, I am afraid, something my management has even perceived as a desirable approach (especially since I don’t think they envisioned such a tool nor they might think it exists).

Regardless, I am very happy to see people trying their best to develop tools to grapple with information and complexity, something I am increasingly worried about, since most people seem all to happy to drown in it with all the nefarious consequences that brings. Sorry for information dump and thanks for any help which might be provided.

Fulvio Scapin

1 Like
  1. I also want to know how to import DMX if I have a large number of very structured data in a domain field, so as to build topic map very quickly and handle it manually later.

  2. Now DMX’s editor can only do some simple text editing functions, and its typesetting function is very weak. Can it be replaced with a rich text editor?

Hi Fulvio!

Great you are getting in touch! Here is Juergen. I have worked as sysadmin and in devops for many years. Many times I was thinking into the same directions as you, namely to use DMX for documentation and dependency management in the field of IT services. I think it could make a perfect fit. I am keen to support you in finding out, if DMX can help you and your organization’s requirements.

BUG REPORTS

To start with, for bug reporting you may either use this forum, or you can also contact the developers via github issues here: https://github.com/jri/deepamehta/issues.

IMPORT/INPUT DATA

For getting data into DMX there are many possibilities. To start with you could use its REST API with the scripting language of your choice. I have written a python example: https://git.dmx.systems/dmx-contrib/py4dmx. But you could also simply start e.g. with bash/curl. It’s also relatively easy to realize a CSV importer plugin.

VERSIONING

DMX has no general versioning mechanisms. Due to the generic nature of the platform, it highly depends on the usecase what kind of history you want to track and where. The good news it that there are many possibilities to realize versioning, be it within DMX or using an external tool like GIT or by combining the two. Before diving deeper into the topic, it would be necessary to be more specific regarding the requirements.

QUERIES

DMX returns all directly related topics instantly. There is also a Lucene based full text search. Beyond that custom queries can be implemented depending on your needs via a custom plugin.

DOCUMENTATION

Even though the DMX documentation is still work in progress, it is already quite substantial: https://docs.dmx.systems. Let us know if it is of any help and feel free to ask more questions as they arise.

DMX (dmx.webclient) is already using a rich text editor: quilljs.

DMX’s typesetting function can be extended by a plugin, e.g. dmx-plugins/dmx-dita

Hello Juergen. Thanks for the pointers. I’ll delve deeper as soon as I’ll get some spare time.
I would like to follow up a bit on the query front if I may.
Full-text search is enough to locate topics by name, for instance. But I guess that it would not be enough to really exploit the linked nature of the topics to extract meaningful information from the relationships between them beyond what one could peruse manually exploring every single topic and the connections between them. Something which limits the usefulness of the linked data beyond simple point-and-click interactions to explore the links.
Is there any readily-available way to explore or interface with database underneath beyond looking for text matches on names of properties or topics? It seems strange to me that such a development never made its way among the core functionalities.

Thanks,
Fulvio

Thank you for your answer. I’ll try!

The text search can be combined with the structure to some degree already. E.g. you can search for instances of a certain topic type that has a specific string in its children (also via the REST API). To understand better what you are looking for could you provide an example? What would you want to know? What would be a question you wanted to answer with DMX? How? Thx!

DMX Webclient makes use of Quill, which is a rich text editor. With “typesetting function” I guess you think of font selection, colors, etc. Quill does have these features, the DMX Webclient however hides them at the moment (in order to keep the toolbar small).

DMX should provide a config option to allow the user to configure which Quill features to activate.


The DMX Core provides basic retrieval operations:

  • get topic(s)/assoc(s) by-id, by-URI, by-type, by-value (wildcard support)
  • fulltext
  • parent/child hierarchy
  • 1-hop traversal to neighboring topic(s)/assoc(s); optional params include
    • assoc-type, my-role-type, others-role-type, others-type

Start with these basic operations. You can do quite a lot with them.

From the basic operations you can build more complex operations in e.g. bash, python, or Java.

The Core’s operations are accessible by:

  • REST API: you use a shell command (e.g. curl) or scripting language (bash, python, …) to query the DMX server via HTTP (localhost:8080/core/...).
    Unfortunately the REST API is not yet documented. For self exploration see the @Path method annotations in WebservicePlugin.java
  • Java API, that is when you’re writing a DMX plugin. This is covered in the DMX Developer Guide. See both, the Core Service’s retrieval methods, and DMXObject’s traversal methods.
    The latter is useful information for REST API users as well as the REST API is built on-top of the Java API.

Let me know if you need further assistance.

Hi @trantor, Hi @zhlbb!

Regarding your question, with DMX 5.0, the dmx-csv module is available and compatible again.

You can download it from here along with the dmx-upload-dialog plugin (which simplifies the csv file import process a bit):
https://dmx.berlin/plugins/

Using the DMX CSV Plugin you can bulk create, update and delete instance of one specific topic type. The update and delete functionality is based on an Identifier being part of your CSV file in the very first column.

The plugins usage is described in a bit more detail in the plugins README. There you also find some example .CSV Files to import “Note” or “Bookmark” topics from a CSV file. In the DMX Plugins section of the DMX Documentation you also find an illustrated usage guide of the plugin (https://dmx.readthedocs.io/en/latest/plugins.html#csv-importer).

You can query DMX’s semantic stoage using the Java API. In there, every Topic or Assoc is an instance of a DMXObject. So, every Topic or Assoc offers you several getRelated*-Calls which you can parametrize according to your interest. This way you can construct yourself an arbitrary resultset. This is how one would traverse the graph from a Person Name topic to a Person topic in a Java Plugin:

Topic person = personName.getRelatedTopic(COMPOSITION, CHILD, PARENT, PERSON);

Therefore I can recommend you to check out the Java API Documentation if you are interested in that:
https://apidocs.dmx.systems/systems/dmx/core/DMXObject.html#getRelatedAssoc-java.lang.String-java.lang.String-java.lang.String-java.lang.String-

I hope this helps.

Hi @trantor

It might be of interest to you that DMX 5.1 (released just a few days ago) offers some great new Association search capabilities. Ticket #402 and #406 cover these aspects in the DMX 5.1 Milestone.

1 Like