Skip to content
This repository has been archived by the owner on Dec 14, 2021. It is now read-only.
/ ux-methods-poc Public archive

A lightweight jamstack knowledge graph application

Notifications You must be signed in to change notification settings

andybywire/ux-methods-poc

Repository files navigation

This repository is no longer under active development.

This is the Proof of Concept version of UX Methods, retained here for reference. For the current version of this project, please the active UX Methods repository.


UX Methods.org wordmark

An Open Source Jamstack Knowledge Graph

WebsiteCompetency QuestionsOntologyData Pipeline

Table of Contents

Overview

UX Methods is a collaborative, lightweight Jamstack knowledge graph. It is built with Jekyll and powered by a purpose-built UX Methods Ontology via the Jekyll-RDF plugin. Its goal is to document and interconnect the practices and techniques of user experience design, and to provide a use case from which to explore the uses (and limitations) of "boutique" knowledge graphs. It is built with open source tools and technologies, and is designed to evolve and scale over time.

The UX Methods project envisions:

  • A living, collaborative ontology to which collaborators from across the community can contribute.

  • A freely accessible linked open data knowledge base that accurately describes and communicates the meaningful relationships between user experience design methods.

  • A flexible starter kit of tools and technologies that can be used to prototype, explore, and learn about knowledge graphs and knowledge graph applications.

  • A user-friendly web interface that affords a useful, usable access point to the knowledge captured in the UX methods ontology and knowledge base.

Screenshot of UXMethods.org website on desktop and mobile

Data Pipeline

Version 1.0 of UX Methods uses auto-classification, semantic data integration, and natural language processing for the organization, presentation, and discovery of content. These features are intentionally built with widely accessible and freely available tools like Google Sheets and Forms, Jekyll, and Protégé.

RDF data—which accounts for virtually all website content beyond "About" content located on the About page and in the footer—is queried from the UXMethods.owl file in the _data directory. This file is the core of the UX Methods knowledge graph and is composed of UX methods, UX discipline, and method outcomes data in combination with the UX Methods Ontology.

A flow diagram detailing the Capture, Extract/Transform/Load, Semantic Reasoning, Publication, and Iteration phases of the UX Methods Knowledge Graph workflow.

The goal of this configuration is to create a model that can be replicated on any (or no) budget, and which requires as little technical skills acquisition as is feasibly possible. As this project grows and evolves, these components will undoubtedly change to accommodate automation, scale, and quality control. The goal at present is to maintain a "simple" version in a 1.0 branch as a reference for those interested in starting a project from a simple basic setup.

Extract/Transform/Load

The Extract/Transform/Load (ETL) pipeline captures and translates tabular data from Google Sheets into RDF using the Tarqle conversion tool. Tarql runs locally and requires Java 1.8 or above. Tarqle mappings and details of the pipeline workflow can be found in the etl folder

Semantic Reasoning

To keep the knowledge graph simple and easily reproducible, version 1.0 does not rely on a graph database, which means that there is not an active inference engine to run queries against. In order to take advantage of the semantic entailments that make knowledge graphs so useful (like automatic classification and knowledge discovery), the KG data and UX Methods Ontology are processed by Protégé's built in reasoner, and then exported as a flat RDF/XML file, complete with inferences.

This would not scale to a large data set, but if makes experimentation for a small proof-of-concept—or for learning—less complicated that integrating a server, reasoner, and connected databases. Details of the inferred axiom export process can be found in the _data file.

Publication

Jekyll-RDF is used to query flat UX Methods KG RDF/XML data and generate methods, disciplines, and resources pages. Data from this RDF/XML file is also used to build site menus, populate the search index, and generate linked data in the form of JSON-LD. While Jekyll is a convenient, well known, and well supported static site generator, there is no fundamental connection between UX Methods KG data and Jekyll that isn't well supported by a wide range of similar tools and technologies.

Ontology

The UX Methods Ontology (it's "Knowledge Model") encodes a very simple set of semantic rules about how Methods, Disciplines, and WebResources interact and interrelate.

An object model style diagram describing the simple semantic structure of the UX Methods ontology

These rules are more fully annotated and described in the UX Methods Ontology, which can be opened and explored directly in the desktop version of the free ontology editing tool Protégé. For more details on the UX Methods Ontology goals, development methodology, competency questions, and SPARQL validation queries check out the ontology description in _data.

Additional Tools

In addition to Jekyll and Jekyll-RDF, this project uses:

  • [Lunr.js](https://lunrjs.com/) for search
  • SASS for CSS preprocessing
  • GULP for development workflow automation

Contributing

Contributions to and suggestions for this project are welcome. To get started with your own local version from which to submit pull requests:

  1. Fork and clone this repository. You'll also want to be sure you have Jekyll installed on your machine.

  2. Run NPM install in the project file

    $ npm install

  3. Compile the base site and start the server with gulp

    $ gulp

Learn more about contributing to open source projects at opensource.com.

About

A lightweight jamstack knowledge graph application

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published