Skip to content

smushing

A FOAF smushing example.

Filter a graph by normalizing all foaf:Persons into URIs based on their mbox_sha1sum.

Suppose I get two FOAF documents each talking about the same person (according to mbox_sha1sum) but they each used a BNode for the subject. For this demo I’ve combined those two documents into one file:

This filters a graph by changing every subject with a foaf:mbox_sha1sum into a new subject whose URI is based on the sha1sum. This new graph might be easier to do some operations on.

An advantage of this approach over other methods for collapsing BNodes is that I can incrementally process new FOAF documents as they come in without having to access my ever-growing archive. Even if another 65b983bb397fb71849da910996741752ace8369b document comes in next year, I would still give it the same stable subject URI that merges with my existing data.

Attributes:

EXAMPLES_DIR module-attribute

EXAMPLES_DIR = parent

STABLE module-attribute

STABLE = Namespace('http://example.com/person/mbox_sha1sum/')

g module-attribute

g = Graph()

newURI module-attribute

newURI = {}

o module-attribute

o = get(o, o)

out module-attribute

out = Graph()

s module-attribute

s = get(s, s)