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

Refactor RestExceptionHandler to use JOPA #253

Open
blcham opened this issue Aug 6, 2024 · 1 comment
Open

Refactor RestExceptionHandler to use JOPA #253

blcham opened this issue Aug 6, 2024 · 1 comment

Comments

@blcham
Copy link
Contributor

blcham commented Aug 6, 2024

  • ValidationErrorResponse should be part of SPipes model within s-pipes core as we want to log validation errors into RDF4J

@blcham
Copy link
Contributor Author

blcham commented Aug 6, 2024

Some additional info:


MB:

Chtel bych se zeptat jakou sanci mam v "JOPA + nase knihovna pro serializaci do JSONLD" generovat nasledujici:

{
  "@context": {
    "variable1": "http://onto.fel.cvut.cz/ontologies/s-pipes/variable1",
    "variable2": "http://onto.fel.cvut.cz/ontologies/s-pipes/variable2",
    "module": "http://onto.fel.cvut.cz/ontologies/s-pipes/module",
    "message": "http://onto.fel.cvut.cz/ontologies/s-pipes/message",
    "constraintQuery": "http://onto.fel.cvut.cz/ontologies/s-pipes/constraintQuery",
    "constraintFailureEvidences": {
      "@id": "http://onto.fel.cvut.cz/ontologies/s-pipes/constraintFailureEvidences",
      "@container": "@list"
    },
    "ValidationConstraintError": "http://onto.fel.cvut.cz/ontologies/s-pipes/ValidationConstraintError"
  },
  "@type": "ValidationConstraintError",
  "module": "ExampleModule",
  "message": "Example error message",
  "constraintQuery": "SELECT ?variable1 ?variable2 WHERE { ... }",
  "constraintFailureEvidences": [
    {
      "variable1": "value1_1",
      "variable2": "value1_2"
    },
    {
      "variable1": "value2_1",
      "variable2": "value2_2"
    }
  ]
}

Ta problematicka cast je:

"constraintFailureEvidences": {
      "@id": "http://onto.fel.cvut.cz/ontologies/s-pipes/constraintFailureEvidences",
      "@container": "@list"
    },

a

 "constraintFailureEvidences": [
    {
      "variable1": "value1_1",
      "variable2": "value1_2"
    },
    {
      "variable1": "value2_1",
      "variable2": "value2_2"
    }
  ]

Protoze to reprezentuje ResultSet-y z SPARQL query tedy "variable1", "variable2" se zmeni poctem (muze byt vic promennych) i nazvem (muzu se jmenovat libovolne) ...

Predpokladam, ze by to asi slo naimplementovat tak ze bych musel doplnit ID a typ (napr. ID = "http://onto..../row-data-23093201", typ = "http://onto..../row-data") a pak dalsi problem bych cekal ze bude usporadani promennych (chtel bych definovat usporadani v jakem se serializuje v tom JSON-LD objektu, tedy v tomto priklade bych chtel abych "variable1" bylo pred "variable2" ....

Zbyle veci predpokladam, ze najdu (nemusis mi psat odkazy -- jenom potvrdit ze to jde)

  1. aby to byl "@list" -- jenom oanotuji field v JOPA
  2. usporadani promennych v JSONLD -- to asi vyresit nepujde co?
  3. jinak pujde to vyresit i v JOPA verzi 0.18.7

ML:

  1. Je-li field typu List, mělo by to automaticky generovat příslušný @container: @list
  2. Použiješ anotaci @JsonLdAttributeOrder a do ní napíšeš názvy fieldů v pořadí, v jakém se mají serializovat
  3. No, těžko říct, můžeš zkusit v JB4JSON-LD dát exclusion na jopa-api a doufat, že to nepadne pak na chybějící API

Nevím, jak přesně vypadá ten objekt constraitnFailureEvidences, jestli je to jen wrapper okolo mapy (což předpokládám). V tom případě by sis mohl napsat custom serializer, který ti do kontextu dá příslušný mapping pro variable1 atd., jinak jsou mapy podporovány jen na úrovni JOPA @properties, tj. klíčem mapy by musela být přímo IRI a tu to použije naplno v JSON-LD (tj. do kontextu se to vůbec nedostane).
Snad ti to takhle pomůže, případně si můžeme zavolat nebo můžu zkusit udělat nějaký POC, pokud mi dáš vstupní data (tj. nějaké třídy a sample data a očekávaný výstup) (edited)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant