GeoKnow/Jassa-Core

View on GitHub
DEVNOTES.md

Summary

Maintainability
Test Coverage
## TODOS

* Make the FacetConceptSupplier Configurable, so it is possible to switch between e.g declared and used properties
 * Currently this is hard coded in facete/FacetServiceUtil.createFacetConceptSupplier(facetConfig)
 * But it should go to the FacetServiceBuilder


## Extending Object Templates

A `sponate.MappedConcept` is a template for creating objects based on a (SPARQL) service. (-> Actually we could generalize it to any service).

We could exploit the `$ref` feature to work with lookup services:

{
  id: '?s',
  labelInfo: { $ref: { target: lookupService , on: '?s' } },
}


Issue: Can we also do concept based lookups with listServices?

{
  id: '?s',
  labelInfo: { $ref: { target: listService , on: '?o' } },
}
from: '?s directorOf ?o'

listService.fetchItems(({?s directorOf ?o}, ?o))


If we use a mappedConcept, we could even join it in (the Sponate Engine will take care of that):

{
    id: '?s',
    labelInfo: { $ref: { target: mappedConcept, on: '?foo', join: true } } // For mappedConcepts we could implement this kind of join support
}


So, actually all that is missing is having some meaningful API on AggObject.

We could subclass AggObject to e.g. AggObjectCustom


.add('attr', object)
  -> object can be:
 * sponate template
 * var
 * expr
 * mappedConcept
 * lookupService
 * listService


//So what gives me a headache is, that the add method needs to be bound to a sponate-context,
//so the AggObjectCustom must have the reference as well.

Hm, actually... the reference to the parser should be sufficient...