Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Aggiungere a Graphol il supporto per la definizione DatatypeDefinition #177

Open
valeriosantarelli opened this issue Jan 20, 2022 · 5 comments
Assignees
Labels
enhancement New feature or request graphol: syntax
Milestone

Comments

@valeriosantarelli
Copy link
Contributor

Il tentativo di costruire un DatatypeDefinition (quello in figura) risulta nell'errore che riporto sotto:

Schermata 2022-01-20 alle 11 40 15

Traceback (most recent call last):
  File "eddy/core/diagram.py", line 417, in mouseMoveEvent
  File "eddy/core/profiles/common.py", line 118, in checkEdge
  File "eddy/core/profiles/rules/owl2.py", line 518, in __call__
  File "eddy/core/owl.py", line 2186, in forDatatype
KeyError: http:///www.obdasystems.com/testontology/teenageInteger

L'errore viene generato al momento di attaccare l'input edge dal nodo Datatype al nodo operatore data.

@valeriosantarelli valeriosantarelli added the bug Something isn't working label Jan 20, 2022
@valeriosantarelli valeriosantarelli added this to the Eddy 3.3 milestone Jan 20, 2022
@mnamici
Copy link
Collaborator

mnamici commented Jan 20, 2022

Per essere sicuri, intendi proprio DatatypeDefinition o DatatypeRestriction? Perché a meno che non sto capendo male quell'espressione costruisce la seconda delle due.

@valeriosantarelli
Copy link
Contributor Author

Allora io stavo provando a costruire un assioma di questo tipo qui:

DatatypeDefinition(:personAge DatatypeRestriction(xsd:integer xsd:minInclusive "0"^^xsd:integer xsd:maxInclusive "150"^^xsd:integer)) 

La DatatypeRestriction me l'ha fatta fare, ma poi quando provo a definire la DatatypeDefinition va in errore. Forse sto sbagliando io?

@mnamici
Copy link
Collaborator

mnamici commented Jan 20, 2022

Per come è implementato attualmente, nella figura sopra il nodo Datatype che stai collegando in input al nodo operatore data in realtà rappresenta il tipo su cui stai applicando la restrizione, ovvero il primo argomento di DatatypeRestriction. Quindi collegando l'arco input dal nodo test:teenageInteger al nodo data avresti come traduzione l'espressione:

DatatypeRestriction(
    test:teenageInteger 
    xsd:minInclusive     "13"^^xsd:integer 
    xsd:maxInclusive    "19"^^xsd:integer
)

L'eccezione esce fuori quando viene fatta la verifica che le constraining facet connesse al nodo data (nel caso sopra xsd:minInclusive e xsd:maxInclusive) siano ammesse per il Datatype specificato (test:teenageInteger), e poiché si tratta di un datatype custom queste non sono definite.
Questo chiaramente va risolto però per quanto riguarda la specifica di assiomi DatatypeDefinition non credo ci sia proprio il modo di definirli attualmente in Eddy.

@valeriosantarelli
Copy link
Contributor Author

Mi sa che hai ragione in effetti. Si può definire una DatatypeRestriction, un datatype custom, ma una DatatypeDefinition mi sa proprio di no.

@mnamici
Copy link
Collaborator

mnamici commented Jan 20, 2022

Sì secondo me sono due issue distinte:

  • la prima (che potrebbe essere questa) è decidere come gestire l'espressione di restrizioni sui datatype che non facciano parte del datatype map OWL 2. L'effetto immediato è che si esce dal profilo DL ma ciò non toglie che si potrebbe voler permettere;
  • la seconda è definire un modo per specificare assiomi di tipo DatatypeDefiniton, ad esempio al momento non si possono neanche specificare assiomi del tipo:
    DatatypeDefinition(test:IntOrString DataUnionOf(xsd:integer xsd:string))
    in quanto non c'è attualmente modo di collegare l'or con il nodo datatype.

mnamici added a commit that referenced this issue Apr 21, 2022
Before this commit, attempting to build an OWL expression of the form:

DatatypeRestriction(my:dataType <facet> [<facet])

would result in an exception being thrown due to the fact that for
custom datatypes there is no known constraining facet applicable.
While it is arguable whether to allow restricting custom datatypes
with contraining facets since there is no known facet space defined
for the datatype, the thrown exception definetely represents a bug
due to the Facet enum not being able to deal with custom datatypes.

This commit fixes this behaviour, while taking a relaxed approach
on what facets can be applied to custom datatypes, essentially
allowing the use of all possible constraining facets since even if
this has no clear semantic meaning (hence no reasoning will be possible),
it is still syntactically correct.
If at a later time we decide that this kind of expression should be
forbidden by the syntactic check, it would be enough to simply return
an empty set of facets for custom datatypes.

See: #177
@valeriosantarelli valeriosantarelli removed this from the Eddy 3.3 milestone May 18, 2022
@valeriosantarelli valeriosantarelli changed the title Errore definizione DatatypeDefinition Aggiungere a Graphol il supporto per la definizione DatatypeDefinition May 18, 2022
@valeriosantarelli valeriosantarelli added enhancement New feature or request and removed bug Something isn't working labels May 18, 2022
@valeriosantarelli valeriosantarelli added this to the Eddy 3.4 milestone May 19, 2022
@valeriosantarelli valeriosantarelli modified the milestones: Eddy 3.4, Eddy 4.0 Sep 20, 2022
@mnamici mnamici mentioned this issue Jun 1, 2023
4 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request graphol: syntax
Projects
None yet
Development

No branches or pull requests

3 participants