Making Ruby SPARQL

Start presentation

Slide 1: Title, etc.

Making Ruby SPARQL


Rich Morin,

with help from

Gregg Kellogg,

Slide 2: Motivation

  • has ~30K gems, and counting...

  • This is awesome, but:

    • Selecting gem(s) can be challenging.

    • So can integrating and managing them.

    • It's becoming a "success disaster".

Slide 3: Prospects

  • Good information might ease these tasks, but:

    • It may be difficult to locate.

    • It may not even be available.

  • So, where are the power tools?

    • Continuous harvesting of graph-structured data

    • Linked Data magic: SPARQL, JSON-LD, RDF, URIs

    • Tools for developing and using access "recipes"

Slide 4: Approach

  1. Provide information via JSON-LD and/or RDF.

  2. Retrieve and present via SPARQLy GUI recipes.

  3. Profit!!! (or at least, more convenience...)

Slide 5: Background - The Web

  • The Web works fine for human users:

    • Text provides detailed information.

    • Images and styling provide "hints".

  • But not so well for computer access:

    • Screen-scraping is difficult and brittle.

    • Processing text and images is hard.

    • Dynamic content makes things even harder.

Slide 6: Background - The Semantic Web

  • The Semantic Web works fine for computers:

    • Semantic markup: no screen-scraping

    • Simple statements: easy to process

    • Unique terms: easy to compare

Slide 7: Background - Semantic Web Technology

  • A lot of useful technology is already available:

    • Linked Data: multiple data sources

    • Ontologies: define and/or map terms

    • SPARQL: powerful query language

    • Triple Stores: RDF-optimized databases

Slide 8: Conceptual Overview

  • RDF statements are [subject, verb, object] triples:

    rich_morin     is_working_on    sparqly_ruby
    gregg_kellogg  is_working_on    RDF_rb
    gregg_kellogg  is_working_on    sparqly_ruby

  • Each part of the triple must be unique:

    • Any part can be a URL (ie, URI, IRI).

    • The object can be a literal (eg, 42).

Slide 9: SPARQL Examples

SPARQL is a lot like SQL...

    SELECT ?sr_author
    WHERE  { ?sr_author is_working_on sparqly_ruby . }
    SELECT ?project count(distinct ?project)
    WHERE  { ?author is_working_on ?project . }
    gregg_kellogg  is_working_on    RDF_rb
    gregg_kellogg  is_working_on    sparqly_ruby
    rich_morin     is_working_on    sparqly_ruby
    sparqly_ruby   helps_document   ruby_code

Slide 10: Questions & Answers

  • You have questions; we have (some) answers...

Slide 11: Backup Slides...

Slide 12: Brainstorming

  • What are the typical use cases?

  • What information would be useful?

  • How can the information be obtained?

  • How should the information be presented?

Slide 13: ETL Overview

Here is an overview of the ETL data flow:

Slide 14: GUI Overview

Here is the current GUI architecture
(using GitHub Pages, Jekyll, etc.):

Slide 15: Tools - Overview

  • Ontology editors
    • data modeling, lexicon development, etc.
    • formal (eg, RDF, OWL) ontologies

  • RDF triplestores
    • special-purpose databases for RDF triples

  • Reasoners
    • infer based on RDF statements, rules, etc.

  • SPARQL Endpoints
    • accessed via HTTP (eg, GET, POST)
    • produce JSON, RDF/XML, Turtle, etc.

Slide 16: Tools - General

  • Most packages are written in C or Java.

  • However, they usually just "drop in".

  • Development is generally done in Eclipse.

Slide 17: Tools - Rubyish

  • Java tools can be accessed via JRuby.

  • SPARQL endpoints support HTTP / REST.

Slide 18: Books

This wiki page is maintained by Rich Morin, an independent consultant specializing in software design, development, and documentation. Please feel free to email comments, inquiries, suggestions, etc!

Topic revision: r16 - 02 Mar 2012, RichMorin
This site is powered by Foswiki Copyright © by the contributing authors. All material on this wiki is the property of the contributing authors.
Foswiki version v2.1.6, Release Foswiki-2.1.6, Plugin API version 2.4
Ideas, requests, problems regarding CFCL Wiki? Send us email