Skip to content

Custom data indexes  #9

Open
Open
@blake-regalia

Description

@blake-regalia

Something to keep in mind when developing filterable source is that SPARQL 1.1 is not readily capable of expressing all types of queries and this can get complicated when graph pattern matching has to be reconciled with arbitrary data indexes. Take the following exploratory work done on graphy for example which use indexes that are baked into the HDT file being queried:

k_store.pattern({
   '?place': {
      a: 'dbo:Place && (dbo:City || dbo:National_Park)',

      // use built-in data index "its:number" to perform numeric range filter
      dbo_population: '{its:number is > 100e3}',

      // use built-in text index "its:text" to perform string matching
      dbo_abstract: '{its:text contains /central/i}',

      // use registered custom data comparison algorithm to match terms whose contents are locale-dependent
      dbo_annual_cost: '{currency:worth is > $20m and <= $40m}',

      // use registered spatial index to solve topological query
      ago_footprint: '{ago:geometry is within ?state and contains ?park}',

      // use registered knn to find neighbors
      ago_centroid: '{ago:geometry closest 10 ?park}'
   },
})

Notice how the spatial queries cannot be adequately solved using a filter; for optimal performance, the query engine must be able to decide the order in which to solve the joins amongst the graph patterns and each of the topological queries.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions