obdasystems / eddy

A graphical editor for the specification and visualization of Graphol ontologies
GNU General Public License v3.0
57 stars 7 forks source link

Annotation Property con valore di tipo IRI #193

Closed valeriosantarelli closed 1 year ago

valeriosantarelli commented 2 years ago

Al momento non sembra possibile da Eddy definire una annotazione il cui valore sia non un letterale, ma una IRI.

Ad esempio, definire un assioma come l'ultimo visualizzato in questo screenshot, assioma 18

dove prov:wasAssociatedWith è una AnnotationProperty.

Da Protégé questo è possibile farlo dalla maschera delle annotazioni, andando sul tab EntityIRI o IRIEditor:

Schermata 2022-04-27 alle 15 59 16

mnamici commented 1 year ago

Oggi con @MariaRosariaFraraccio abbiamo investigato un pò sul problema della specifica di IRI come valore di annotazioni, in particolare per quanto riguarda lo stato attuale del file graphol ed è venuto fuori che di fatto si tratta di un bug, quindi possiamo risolvere questa mancanza in breve tempo prima della release v4.0 con il nuovo formato graphol.

TL;DR Questa issue si può risolvere senza cambiare il file graphol, e includerla in una v3.5 che possiamo fare a breve intanto che finalizziamo le modifiche per graphol v4.

Riporto di seguito il problema riscontrato per riferimento.

In sostanza allo stato attuale (v3) graphol supporta già la specifica delle IRI come valori di annotazioni, la quale mancanza infatti appariva molto insolita (ma solleva il problema della mancanza di un documento di specifica del file graphol che appena risolto vorrei creare come pagina wiki per riferimenti futuri), in particolare sia parser che serializzatore del formato possono gestirli. Ciò si può vedere ad esempio considerando il seguente progetto graphol:

<?xml version="1.0" encoding="UTF-8"?>
<graphol version="3">
  <project name="TestProject" version="1.0">
    <ontology iri="https://example.org/test/">
      <imports/>
      <prefixes/>
      <datatypes/>
      <languages/>
      <facets/>
      <annotationProperties>
        <annotationProperty>https://example.org/test/wikiURL</annotationProperty>
      </annotationProperties>
      <iris>
        <iri>
          <value>https://example.org/test/C</value>
          <annotations>
            <annotation>
              <subject>http://example.com/annotation/C</subject>
              <property>https://example.org/test/wikiURL</property>
              <object>
                  <iri>https://example.org/test/wiki/C</iri>
              </object>
            </annotation>
          </annotations>
        </iri>
      </iris>
    </ontology>
    <diagrams>
      <diagram name="d" width="5000" height="5000">
        <node id="n2" type="concept" color="#fcfcfc">
          <geometry width="110" y="30" height="50" x="400"/>
          <iri>https://example.org/test/C</iri>
          <label width="110" y="30" customSize="0" height="23" x="400" size="12"/>
        </node>
      </diagram>
    </diagrams>
  </project>
</graphol>

dove il concetto C ha come valore dell'annotazione wikiURL una IRI. Se si apre questo progetto con la v3.4 l'annotazione viene riconosciuta correttamente, e il salvataggio dopo modifiche la preserva.

Il bug si riscontra se si tenta di modificare l'annotazione con IRI, in quanto l'interfaccia la trasforma silenziosamente in un letterale.

L'altro aspetto che riguarda l'enhancement è invece l'impossibilità di specificare le IRI come oggetto di annotazioni, il che richiede l'implementazione nell'interfaccia grafica.

valeriosantarelli commented 1 year ago

Ok, ottimo. Allora l'intervento si riduce sensibilmente, e possiamo procedere con la versione 3.5. In effetti questo è l'unico task che ha un carattere di relativa urgenza.