johanwk / elot

Emacs Literate Ontology Tool
GNU General Public License v3.0
8 stars 2 forks source link

rdfpuml setup #5

Closed VladimirAlexiev closed 7 months ago

VladimirAlexiev commented 8 months ago

With rdfpuml, my setup on Windows is kind of inconvenient. The Perl installation and everything, I wasn't able to make it portable at all.

I think you mentioned a Docker image for rdfpuml -- would that be something that could be fetched from somewhere else, then made easy to access from this repo, perhaps?

See https://github.com/VladimirAlexiev/rdf2rml/blob/master/README.org#docker-image, but I personally don't use Docker. This was made by my colleagues and has a snapshot of rdfpuml and plantuml versions as indicated. If I made extensions/fixes to rdfpuml, we'll ask them to refresh the docker image.

johanwk commented 8 months ago

Well, I have used Docker in various cases, but have never set anything up myself. Perhaps the right thing to do is to just follow your advice exactly. The thing that was complicated in my case was getting Strawberry Perl to install the various needed packages. Complicated, mainly because of lack of experience -- but this will likely also apply for many ontologists who will want to use the tool. I'm really uncertain on this point. Docker, is it easier, or maybe not? Will Docker steal too much CPU, and downgrade the experience overall? Something tells me that if we were to go the Docker route, it would make sense to include more than just Perl, rdf2rdml, plantuml. Then I would like to have plantuml in "server" mode to avoid the long startup time, and have a facility for turning Manchester Syntax into Turtle, for querying, i.e., so that queries can be the source of rdfpuml diagrams. All this can be done in due time.

VladimirAlexiev commented 7 months ago

@johanwk

johanwk commented 7 months ago

As we discussed, I think a self-contained exe will help a lot to make rdfpuml accessible to Windows users.

Regarding plantuml, I think it's preferable to have a local copy of the jar. I can say for myself that I would worry about sending confidential information to an unknown service. Granted, this will not apply very often at all, but it's a worry that can get in the way.

I suppose that the fewer demands we put on the users, the better. It should suffice to have plantuml, rdfpuml, and an OMN-to-Turtle converter. (I'm currently looking at the right way to invoke java..)

VladimirAlexiev commented 7 months ago

Done: https://github.com/VladimirAlexiev/rdf2rml/blob/master/doc/rdfpuml.md#packaged-binary

Please try it and let me know if it works.

johanwk commented 7 months ago

Wonderful!! I'll try it out as soon as I can, hopefully tomorrow.

I suppose that for Linux and MacOS use, the standard/included Perl version will suffice. What do you think? I can test on MacOS.

johanwk commented 7 months ago

I can confirm that the executable does indeed work!

There are warnings from Perl about LC_ALL and LANG that I'm not able to get my head around. However, the rdfpuml executable does handle extended characters correctly. (plantuml needs to be called with -charset utf-8)

johanwk commented 7 months ago

A speed test shows that a typical run of rdfpuml, then plantuml takes nearly 10 seconds on my six-year-old laptop.

$ time ( LC_ALL=C rdfpuml testrdfpuml.ttl; java -jar ../bin/plantuml/plantuml.jar -charset utf8 testrdfpuml.puml )

real    0m9,196s
user    0m0,030s
sys     0m0,077s

I don't really know what the figures mean, but it seems startup is where time gets spent. It's remarkably similar between rdfpuml and plantuml.

$ time LC_ALL=C rdfpuml testrdfpuml.ttl; time java -jar ../bin/plantuml/plantuml.jar -charset utf8 testrdfpuml.puml

real    0m4,513s
user    0m0,000s
sys     0m0,015s

real    0m4,523s
user    0m0,000s
sys     0m0,062s