1.0.13 • Published 2 years ago

sfs-api v1.0.13

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

sfs-api

SFS (Semantic Faceted Search) is a library for implementing semantic faceted search in modern web applications.

If you want to use SFS in a React app, check out react-sfs.

Installation

Install via yarn add sfs-api or npm install sfs-api.

Configuration and usage

First you need to define facets which you want to use. At this moment only 2 facet types are supported - CheckboxFacet and SelectFacet. However, you can implement your own facet by extending abstract Facet class.

Example facets:

export const nationalityFacet = new SelectFacet({
  id: "nationality",
  predicate: "dbp:nationality",
  labelPredicates: ["rdfs:label"],
});

export const birthPlaceFacet = new CheckboxFacet({
  id: "birthPlace",
  predicate: "dbp:birthPlace",
  labelPredicates: ["rdfs:label", "skos:prefLabel"],
});

Class for interacting with facet search is SfsApi.
IMPORTANT: baseQuery has to return _id and _label variable.

  • _id variable is used as primary row identifier and other facets use this variable to build their own queries.
  • _label variable is used when using search query.

More about configuration properties can be found in SfsApi documentation.

Example configuration:

const language = "en";
export const sfsApiDbpedia = new SfsApi({
  endpointUrl: "https://dbpedia.org/sparql",
  facets: [nationalityFacet, birthPlaceFacet],
  baseQuery:
    `SELECT DISTINCT ?_id ?_label 
  WHERE 
  { ?_id a dbo:Writer .    
    FILTER isIRI(?_id)
    OPTIONAL
      { ?_id rdfs:label ?rdfsLabel 
        FILTER langMatches(lang(?rdfsLabel), "${language}")
      }
    OPTIONAL
      { ?_id skos:prefLabel ?prefLabel 
        FILTER langMatches(lang(?prefLabel), "${language}")
      }
      BIND(coalesce(?rdfsLabel, ?prefLabel, ?_id) AS ?_label) 
  }
  ORDER BY ASC(?_label)`,
  language,
  prefixes: {
    rdfs: "http://www.w3.org/2000/01/rdf-schema#",
    skos: "http://www.w3.org/2004/02/skos/core#",
    dbp: "http://dbpedia.org/property/",
    dbo: "http://dbpedia.org/ontology/",
  },
});

API reference

Events

SfsApi and Facets emit Events. You can subscribe to these events and update your UI according to them.

Examples

Check out React demo with the use of react-sfs.

1.0.9

2 years ago

1.0.8

2 years ago

1.0.11

2 years ago

1.0.10

2 years ago

1.0.13

2 years ago

1.0.12

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.7

2 years ago

1.0.6

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.0

2 years ago