npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

jassa

v0.5.0

Published

JAvascript Suite for Sparql Access

Readme

Sponate: Tackling the SPARQL-JSON impedance mismatch

Launched Sept 28 2013. As of Oct 4, 2013, there is only (or already) a teaser yet.

Motivation and Vision

JSON and template engines go together like butter and bread for creating awesome HTML views with little or no coding.* The same relation holds between SPARQL and Open Data: up to now, this is probably one of the best ways to publish data in an easily reusable way.** However, combining SPARQL with JSON is often painful, as the data models simply don't match up.

This pain is similar to the one which one encounters when mapping between relational database management systems and object oriented languages.

And this is where Sponate jumps in. 'Sponate' mixes the technologies SParql, jsON, hiberNATE, but also Jena, and mongoDB. And for the teaser also angular. Sponate allows one declare mappings between SPARQL elements and JSON document templates. Queries can be performed over these JSON templates using a mongoDB like API.

* If you are unfamiliar with template engines, check out angular, handlebars, mustache, or have a look at the template-engine-chooser

** A discussion is out of scope, but the main reasons are:

  • SPARQL is a standardized query language for web databases, and those databases are becoming increasingly popular with the growth of the LOD cloud.
  • The underlying data model, called RDF, makes it possible to create links between individual pieces of data, which is not possible to this extent using formats such as JSON, XML, CSV and so on.
  • And with RDF in some cases people are actually finding consensus on quasi-standard schemas for common modeling problems.

Components

Sponate is a module of the JAvascript Suite for Sparql Access (JASSA), which is structured as follows:

  • Jassa.rdf: A port of some core Jena classes. The most prominent class is Jassa.rdf.Node.
  • Jassa.sparql: A port of some Jena sparql classes. These are used to create queries in a structured fashion. Builds on top of the rdf namespace.
  • Jassa.sponate: The sponate system is located in this namespace and builds on top of the other two.

If you have used Java jena before, you will notice that the interfaces are (almost) identical.

Teaser

A simple demo is already working and available here. It works directly on DBpedia and creates a table showing castles together with their list of owners (some have more than 1). Have a look at the source code how it is done - it's less than 100 lines.

var service = sponate.ServiceUtils.createSparqlHttp('http://dbpedia.org/sparql', ['http://dbpedia.org']);
var store = new sponate.StoreFacade(service, prefixes);

store.addMap({
    name: 'castles',
    template: [{
        id: '?s',
        name: '?l',
        owners: [{
            id: '?o',
            name: '?on'
        }]
    }],
    from: '?s a dbpedia-owl:Castle ; rdfs:label ?l ; dbpedia-owl:owner ?o . ?o rdfs:label ?on . Filter(langMatches(lang(?l), "en")) . Filter(langMatches(lang(?on), "en"))'
});


// This is a mongoDB like interface - the goal is to reach interoperability
store.castles.find({id: {$eq: '<http://dbpedia.org/resource/Hume_Castle>'}});

Getting involved

Interested in contributing? Drop me a mail, see here for my email.

Planned features

  • Add support for rewriting criterias to SPARQL filters
  • Add support for limit and offset
  • Add support for order by
  • Add support for references/relations (oneToOne and oneToMany) between mappings
  • Add support for lazy fetching of relations based on 'hibernate-like' proxy objects
  • Test and polish
  • Integrate the faceted search components of the Faceted SPARQL browser Facete.

This project is part of GeoKnow and maintained by the AKSW research group.