Hi! I've been following your hard work here for a while :) really appreciate it. (Also, thank you for maintaining Protégé! I taught it to students when I was in academia.)
I've just noticed your issue here: linkml/linkml#3912
I tried it with LinkML-Scala (our implementation of the LinkML spec from Scala), and it is indeed reported as an error:
In general, we took the approach of starting from a blank canvas and sticking to the spec as closely as possible. We were also frustrated by linkml/linkml's spec non-compliance.
This made me think – would it be possible to reuse some of our work for your purposes? The "secondary aims" you list in the README are already possible in LinkML-Scala, on the JVM. We have a fully-featured SchemaView interface, schema derivation, and infrastructure for building generators. These generators can be simply Java classes, you only need a Maven dependency on LinkML-Scala: https://central.sonatype.com/artifact/eu.neverblink.linkml/schemaview_3
Example generator (RDFS): https://github.com/NeverBlink-OSS/linkml-scala/blob/main/generator/src/eu/neverblink/linkml/generator/rdfs/RdfsGenerator.scala
With this, it's totally possible to write a Java generator in pure Java. It could use either direct string interpolation or something like javapoet.
Does this sound interesting? To be honest, we will also need a good Java generator at some point, so I would be very happy to support your work here in some way. If for example the Scala interfaces turn out to be annoying to use from Java, we could add Java façades.
Hi! I've been following your hard work here for a while :) really appreciate it. (Also, thank you for maintaining Protégé! I taught it to students when I was in academia.)
I've just noticed your issue here: linkml/linkml#3912
I tried it with LinkML-Scala (our implementation of the LinkML spec from Scala), and it is indeed reported as an error:
In general, we took the approach of starting from a blank canvas and sticking to the spec as closely as possible. We were also frustrated by linkml/linkml's spec non-compliance.
This made me think – would it be possible to reuse some of our work for your purposes? The "secondary aims" you list in the README are already possible in LinkML-Scala, on the JVM. We have a fully-featured SchemaView interface, schema derivation, and infrastructure for building generators. These generators can be simply Java classes, you only need a Maven dependency on LinkML-Scala: https://central.sonatype.com/artifact/eu.neverblink.linkml/schemaview_3
Example generator (RDFS): https://github.com/NeverBlink-OSS/linkml-scala/blob/main/generator/src/eu/neverblink/linkml/generator/rdfs/RdfsGenerator.scala
With this, it's totally possible to write a Java generator in pure Java. It could use either direct string interpolation or something like javapoet.
Does this sound interesting? To be honest, we will also need a good Java generator at some point, so I would be very happy to support your work here in some way. If for example the Scala interfaces turn out to be annoying to use from Java, we could add Java façades.