Socket
Socket
Sign inDemoInstall

@tpluscode/sparql-builder

Package Overview
Dependencies
44
Maintainers
1
Versions
56
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @tpluscode/sparql-builder

Simple JS library to build SPARQL queries


Version published
Weekly downloads
1.2K
decreased by-37.73%
Maintainers
1
Created
Weekly downloads
 

Changelog

Source

2.0.2

Patch Changes

  • c48bd28: Export the *Executable types

Readme

Source

@tpluscode/sparql-builder Test codecov npm version

Simple library to create SPARQL queries with tagged ES Template Strings

How is it different from simply string concatenation/plain templates?

  1. Focuses on graph patterns. No need to remember exact syntax
  2. Still looks like SPARQL, having a familiar structure and little glue code
  3. Has the IDE provide syntactic hints of valid SPARQL keywords
  4. Ensures correct formatting of terms (URI nodes, literals variables) via @tpluscode/rdf-string
  5. Automatically shortens URIs with @zazuko/prefixes

Installation

npm i -S @tpluscode/sparql-builder

To be able to execute queries against a remote endpoint install a peer dependency:

npm i -S sparql-http-client

Usage

Build a SPARQL query string

import rdf from '@zazuko/env'
import { SELECT } from '@tpluscode/sparql-builder'

const ex = rdf.namespace('http://example.com/')
const { foaf } = rdf.ns

/*
    PREFIX foaf: <http://xmlns.com/foaf/0.1/>

    SELECT ?person ?name
    FROM <http://example.com/People>
    WHERE 
    {
      ?person a foaf:Person ;
              foaf:name ?name .
    }
*/
const person = rdf.variable('person')
const query = 
  SELECT`${person} ?name`
  .FROM(ex.People)
  .WHERE`
    ${person} a ${foaf.Person} ; 
              ${foaf.name} ?name .
  `.build()

Executing a query

Using sparql-http-client

import rdf from '@zazuko/env'
import SparqlHttp from 'sparql-http-client'
import { ASK } from '@tpluscode/sparql-builder'

const { dbo } = rdf.ns
const dbr = rdf.namespace('http://dbpedia.org/resource/')

const client = new SparqlHttp({
  factory: rdf,
  endpointUrl: 'http://dbpedia.org/sparql',
})

const scoobyDoo = dbr('Scooby-Doo')

/*
    PREFIX dbo: <http://dbpedia.org/ontology/>

    ASK {
        <http://dbpedia.org/resource/Scooby-Doo> a dbo:Person .
    }
 */
ASK`${scoobyDoo} a ${dbo.Person}`
  .execute(client)
  .then(isScoobyAPerson => {
    // Fun fact: DBpedia seems to claim that Scooby-Doo is indeed a Person...
    return isScoobyAPerson
  })

Running examples

The example in docs/examples can be executed locally. To do so, first replace the package import to point to the repository root.

-const { /* */ } = require('@tpluscode/sparql-builder')
+const { /* */ } = require('../..')

Then simply npm run example.

FAQs

Last updated on 28 Mar 2024

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc