Description

Angular is a popular Javascript framework for creating browser based applications. With Angular Universal, it has the capability of server side rendering for clients without Javascript enabled - including search engines.

Angular is gaining traction amongst open source projects - see DSpace 7 development of a new UI.

Implementing MVC within Javascript has a lot of potential for us to make it easier for sites to customise the UI, pulling data as required, whilst also improving scalability of pages that may contain many hundreds of elements (a profile page with many publications).

Reason

As a Javascript framework, data is typically supplied in json format. For most applications, this would be a Json serialization of an internal object model. However, in Vitro / VIVO, the domain model is not expressed in code. It is simply a collection of triples that conform to the VIVO-ISF ontology.

We can serialise the triples to JSON-LD, but that potentially exposes a level of complexity to the Angular application that will hamper front end development.

The purpose of this experiment is to demonstrate how easy or complex it would be to deal with JSON-LD in an Angular front end.

Goals

  1. Create a demonstration page fed by JSON-LD - e.g. a person with publications
  2. Determine how developer-friendly the use of a JSON-LD model is
  • No labels

2 Comments

  1. We are already feeding VIVO lists with json via elastic which is harvested from vivo. See:

    Elastic has a simple json structure that is easy to read and we are ingesting vivo data into ES without much difficulty. see:

    We would like to extend this to be json-ld and use the json-ld context to maps keys to schema.org to be re-used by the UI for improved SEO.

    Currently we are using facetview https://github.com/CottageLabs/facetview2 but Benjamin Gross has noticed that changes will need to be made to upgrade to elastic 5.6. This seems like a good breaking point to examine tools like angular to pull json-ld data from a search index like elastic. I would like to scope this to just agree on the json structure and context mapping for an interface agreement and work forward to develop a UI that consumes the json data.

    Some interesting notes of work in this area:

    Angular issues: 

    Angular 1 or 2 ---- I lobby for angular 2 since this project is just starting

    Other questions:

    1. what context to present? vivo-isf, schema.org?
      1. i vote for schema.org for presentation layer because of seo and user base. This will also allow for a mapping between schema and isf
  2. Don,

    That's interesting, and worth noting - it's probably a good idea if the data structures that we are generally using align with the data structures in the search engine.

    I think testing ElasticSearch with JSON-LD is it's own experiment, as would be looking at how we might work with json formatted as you currently do with ElasticSearch, as the main json representation that we would shuttle between the front and back ends (as an alternative to json-ld).

    Multiple experiments that converge on what would be a coherent architecture - even if the destination is quite the same as any of the starting points.