Date

Call-in Information

Time: 10:00 am, Eastern Time (New York, GMT-04:00)

To join the online meeting:

  • https://lyrasis.zoom.us/j/84378615572?pwd=bGUxSjlyRTdjOGl5U1B6L0Yva3RQdz09

    Meeting ID: 843 7861 5572
    Passcode: 556561
    One tap mobile
    +16699006833,,84378615572#,,,,*556561# US (San Jose)
    +19292056099,,84378615572#,,,,*556561# US (New York)

    Dial by your location
            +1 669 900 6833 US (San Jose)
            +1 929 205 6099 US (New York)
            +1 253 215 8782 US (Tacoma)
            +1 301 715 8592 US (Washington DC)
            +1 312 626 6799 US (Chicago)
            +1 346 248 7799 US (Houston)
            877 853 5257 US Toll-free
            888 475 4499 US Toll-free
    Meeting ID: 843 7861 5572
    Passcode: 556561
    Find your local number: https://lyrasis.zoom.us/u/kerqtGDrJ4

Slack

Attendees

(star)  Indicating note-taker

  1. Dragan Ivanovic 
  2. Georgy Litvinov 
  3. Benjamin Gross 
  4. Benjamin Kampe
  5. Veljko Maksimovic 
  6. Mark Vanin 
  7. William Welling 
  8. Huda Khan (star)
  9. Brian Lowe 
  10. Vivian Silva
  11. Andreas Czerniak
  12. Michel Héon 

Agenda

  1. Questions/Issues/Pull requests/Announcements
    1. VIVO 1.13.0 release candidate -
      1. Release Testing - 1.13.0
      2. Release Notes
      3. https://github.com/vivo-project/Vitro/pull/296
  2. The ongoing sprint
    1. A Dynamic API label for issues and PR
    2. repositories and branches
      1.  https://github.com/vivo-project/Vitro/tree/sprint-dynapi-2022-feb-staging
      2. https://github.com/vivo-project/Vitro-angular
    3. Testing strategy
    4. Tracks
      1. Project board - https://github.com/orgs/vivo-project/projects/2 
      2. Ontology
        1. RDF representation of dynamic actions and resourceAPIs
      3. Binding
        1. Binding to Java objects representation 
      4. Execution
        1. Execution of a dynamic action
      5. RCP Endpoint
      6. REST Endpoint
      7. Security
        1. Definition of dynamic action roles
        2. Authentication (endpoint and UI)
        3. Authorization
          1. JWT
      8. Validation
        1. syntax,
        2. SHACL rules for all dynamic actions
      9. UI for exposing dynamic API
        1. Angular & Angular Material
          1. the server side module 
            1. https://angular.io/guide/universal
          2. a central state management up front
            1. https://ngrx.io/
          3. i18n library 
            1. https://ngneat.github.io/transloco/
          4. GitHub CI Actions
            1. build
            2. lints
              1. adopt a style guide and have it enforced using linting
            3. tests
              1. incorporate best practices and have test coverage in initial commit
                1. CodeCov vs Coverall vs Other options
          5. library for common modules and custom elements
            1. one or two or more modules
      10. CRUD operations for custom actions
      11. UI for management of custom actions
      12. Exploitation

Notes

  1. Questions/Issues/Pull requests/Announcements

    1. VIVO 1.13.0 release candidate -
      1. Release Testing - 1.13.0
      2. Release Notes
      3. https://github.com/vivo-project/Vitro/pull/296
    2. New member: Vivian Silva from Brazil
      1. Trying to implement national grid in Brazil.  Colleague (Washington) attended CRIS conference in Dubronik. Met with Christian Hauschke who advised attending dev meeting
      2. Problems with data loading into VIVO. Hard to load large amounts of data.  Can add description of problem in slack
      3. Dragan: Custom solution for aggregating data, but then migrating data to VIVO.  
        1. Vivian: Load data from multiple sources into relational DB, convert to RDF, and then load into VIVO
      4. Open Repositories conference underway in Denver.  Presentation on VIVO and DSpace at conference
  2. The ongoing sprint
    1. A Dynamic API label for issues and PR
    2. repositories and branches
      1.  https://github.com/vivo-project/Vitro/tree/sprint-dynapi-2022-feb-staging
      2. https://github.com/vivo-project/Vitro-angular
    3. Testing strategy
    4. Tracks
      1. Project board - https://github.com/orgs/vivo-project/projects/2 
      2. Ontology
        1. RDF representation of dynamic actions and resourceAPIs
      3. Binding
        1. Binding to Java objects representation 
      4. Execution
        1. Execution of a dynamic action
      5. RCP Endpoint
      6. REST Endpoint
      7. Security
        1. Definition of dynamic action roles
        2. Authentication (endpoint and UI)
        3. Authorization
          1. JWT
        4. Veljko: Working endpoint which uses authentication measures to check user credentials and writes user object to a session
          1. Trying to figure out how to get user roles
          2. User account object with field for all permissions, but roles aren’t really mentioned.  But there are parts of code where roles are mentioned. 
            1. E.g. Display by role permission, role identifier, request action 
            2. Trying to find which function is called to get role for a specific user
            3. Role for displaying page or accessing data? Is there central way to get role info for a particular user?
      8. Validation
        1. syntax,
        2. SHACL rules for all dynamic actions
        3. Dragan: has continued to work on this track.  Validator capable of loading SHACL rules and validate if new file is in accordance with those rules.
          1. If something already in graph, accept a resource URI and then see if valid according to SHACL rules
          2. Need to still decide whether we would get rid of any data that is not valid (Please correct if I got this wrong)
          3. Validation required when loading into graph and making available at endpoint
      9. UI for exposing dynamic API

        1. Angular & Angular Material
          1. the server side module 
            1. https://angular.io/guide/universal
          2. a central state management up front
            1. https://ngrx.io/
          3. i18n library

            1. https://ngneat.github.io/transloco/
          4. GitHub CI Actions
            1. build
            2. lints
              1. adopt a style guide and have it enforced using linting
            3. tests
              1. incorporate best practices and have test coverage in initial commit
                1. CodeCov vs Coverall vs Other options
          5. library for common modules and custom elements
            1. one or two or more modules
        2. William: Boilerplate (no UX, etc).  Dependencies up to date. CI actions in GitHub. 
          1. Next step: spinning up Dynamic API backend .  Will look at CORS setup in Tomcat.  
          2. UI: creating feature store. Using NGX (manual redux). Observing to create routing system.  Simple route to go to each of these resources.  Then steps of calling getters/exposing crud operations.  
          3. Blocker: don’t have a graph yet to expose
        3. Dragan: Thought sprint focused on exposing dynamic actions. Also doing edit?
          1. William: No just exposing all available REST endpoints. As bound to resources, delineation to route by resource.  
            1. Solr query: custom action on one of resources.
      10. CRUD operations for custom actions
      11. UI for management of custom actions
      12. Exploitation

N3 triple editing

Georgy: Additions and Retractions objects in ModelChange processing

Veljko: How can user specify which triple is removed/added (modified)

Georgy: Boolean data property that switches action from addition to retraction.  Property in ontology, domain is N3TemplateClass and range is boolean.  

Veljo: How would modification work? Chaining addition and retraction

Georgy: Or one N3 file for addition, one N3 file for retraction.  

Two files. N3 template wants to remove something and then add something. 

  1. N3 file with values to be added
  2. N3 file with values to be removed

Huda: Reminisced about N3 optionals and requireds and N3 editing

Georgy: If we have two separate transactions for deletions and insertions, would that affect performance?

Brian: Moving away from the process where it’s one atomic transaction where we dedup triples between additions and transactions and then add and remove: feels like that might be mistake.  

Georgy: ModelChange - additions and retractions.  Does code handle both together?

Brian: 

William (from chat): Have to drop off for local standup. Have question attempting to load dynamic api n3. Not being picked up. Where in vivo-home do they need to be placed? Posted question in slack

Veljko: Seems like an open question still.  Is there code that processes additions and retractions together?

Georgy: Yes, there should be code looking at intersections

Veljko: May leave security track for now and look at editing

Huda (from chat): this is how it used to work

https://github.com/vivo-project/Vitro/blob/main/api/src/main/java/edu/cornell/mannlib/vitro/webapp/edit/n3editing/VTwo/ProcessRdfForm.java#L502

(Generate the minimal set of additions and retractions to be passed along)

Georgy: If Veljko switches focus to N3templates, better for Mark to work on pull request.  Not to overload Veljko with both N3 templates and security

William: Do we need editing if we just want to start out with read?

Cloned all four repositories.  Spinning up, it does not seem to be loading.

Dragan: Startup listeners should be checked.  Done in Vitro. If running full VIVO, startup listeners need to be copied over. 

Benjamin (from chat): https://github.com/vivo-project/Vitro/blob/sprint-dynapi-2022-feb-staging/webapp/src/main/webapp/WEB-INF/resources/startup_listeners.txt

Draft notes in Google Docs

Task List

Previous Tasks 

  • No labels