($and/ <== DO NOT REMOVE - switch for preventing MathML interpretation of dollar signs on this page)

About

This page describes common patterns to filter XDI messages intended for humans.

Change Log

Channels (Semantic Tagging)

The simplest pattern for filtering XDI messages is to place the message (or a reference to the message) in an XDI context that describes or "tags" it. Various terms are used in different products and technologies to describe this type of semantic categorization including "channels", "rooms", and "forums".

Applying a semantic tag in XDI is simply a matter of placing a message collection inside a entity class node describing the semantic category. Here is an example of how a group +!:uuid:x-1 can create a channel called #baseball:

+!:uuid:x-1#baseball[$msg]

Channels can of course be nested to any depth. Here are examples of more specialized #baseball channels.

+!:uuid:x-1#baseball#catchers[$msg]
+!:uuid:x-1#baseball#pitchers[$msg]
+!:uuid:x-1#baseball#pitchers#statistics[$msg]
+!:uuid:x-1#baseball#pitchers#salaries[$msg]
+!:uuid:x-1#baseball#pitchers#trades[$msg]

An XDI message may be sent or "tagged" more than one channel without sending multiple copies by using a $has relation to aggregate the message in as many channels are applicable.

+!:uuid:x-1[$msg]*!:uuid:x-2<$string>/&/"Randy Johnson's fastest pitch ever..."
+!:uuid:x-1#baseball#pitchers[$msg]/$has/+!:uuid:x-1[$msg]*!:uuid:x-2
+!:uuid:x-1#baseball#pitchers#statistics[$msg]/$has/+!:uuid:x-1[$msg]*!:uuid:x-2

Threads

A channel is "flat", i.e., all the messages in the channel form a single stream. To add another dimension of relevance, messages can be grouped into threads.

A channel is one-dimensional: a class used to categorize a [$msg] entity collection. A thread is two-dimensional: a [$thread] entity collection in which each member entity describes a [$msg] collection pertaining to a specific subject (where that subject is an attribute of the thread entity). Example:

+!:uuid:x-1[$thread]*!:uuid:x-3<$label>/&/"Why Randy Johnson belongs in the Hall of Fame"
+!:uuid:x-1[$thread]*!:uuid:x-3[$msg]*!:uuid:x-2<$string>/&/"Randy Johnson's fastest pitch ever..."

Since a thread is itself a collection of messages, the thread can be tagged with the relevant channels rather than having to tag each individual message.

+!:uuid:x-1[$thread]*!:uuid:x-3<$label>/&/"Why Randy Johnson belongs in the Hall of Fame"
+!:uuid:x-1[$thread]*!:uuid:x-3[$msg]*!:uuid:x-2<$string>/&/"Randy Johnson's fastest pitch ever..."
+!:uuid:x-1#baseball#pitchers[$msg]/$has/+!:uuid:x-1[$thread]*!:uuid:x-3
+!:uuid:x-1#baseball#pitchers#statistics[$msg]/$has/+!:uuid:x-1[$thread]*!:uuid:x-3

Linked Threads

TODO

SemanticFiltering (last edited 2016-03-28 16:23:44 by drummond)