« Another Sunday, another sport, another race! | Main | SAP Business By Design - sceptical empiricism by design? »


Bruce Stewart

I used to argue, some 20 years ago, that relations were far more important than objects. I never pushed it as far as to say that "it's relations that are real and objects that are imagined" but in reading this this morning it is now clear to me that that was where I was headed.

When it comes to the morass out there, what matters is the context that relational statements provide. This is (if you recall the Newton) what makes the data soup function in a useful way.

Good article, thanks for writing it.


Ike! Well, mad props for working the problem, and having the courage and discipline to continue through to the right answer.

Actually, its rigorous thinking that solves the problem, and that's something that seems to be falling out of fashion in some circles.

I would love to see the new approach in action, it hits a note with me, at least.



when you say "relations were far more important than objects" you're spot on the Semantic Web / RDF thinking. The beauty about triples is that you can in fact replace all properties of such with triples - and I would love to do that, been tinkering with it... still do. But we have the issue of using some objects as "containers" keeping a tab on number of pills or liters of liquid therein. Important stuff to keep an eye on for enterprise systems one might say :)

In addition we use "object driven" instead of "event/transaction driven" workflows.

Thus we drifted towards a hybrid - proper objects with properties, then using triples as "knowledge enhancers". But more on that later!



good to get a stroke for being stubborn!
I find solace in what Kathy Sierra's horse trainer says: "Take the time it takes so it takes less time!"

So glad my "investors" allows me to do the right thing... shoot, there goes the wine budget again :D

Ian Prince

Hi Sig,

Interesting atticle, as always. Might "going RDF" be throwing out the baby with the bath water....?

IMHO full-blow RDF is hard in the real-world. Tags on the other hand are beautifully simple and easy.

Maybe a half-way house is in order? Have you considered attribute-value data modelling where tags are "qualified"? In your example that would give the object Sig the attribute "lives-in" with value "France".


Ian, lemme me:

1. "Full-blow RDF is hard in real world" - as you can see from the post - I think it's even worse, rather impossible as information is still contained in mashups of objects (documents, web pages, forms) and that simply does not work with predicators, thus RDF could not work. But that's why thingamy have a chance as we work with minimum singular objects only.

2. "Half-way" is rather precisely what we do - keeping the proper objects thus only needing to add the predicators. Had the issue of some objects being containers of screws, pills and such enabled for transactions...

3. "Qualified tags" - but of course, that is precisely what the triples attain: The subject being the variable you're working with or object you're looking for, the predicator being the "qualifier" and the object being any object in the system. The little trick we're using there (more about that in later post) is to allow the "builder" to add what we call "functional classes" like location, work function etc. so you can define 'France', 'Warehouse B', 'MD', 'Nurse' and whatnot. Thus the old "tag" of 'France' becomes 'lives in + France' and 'speaks + French' and so forth. Think "tags" -> functional object then add the 'predicator' as qualifier and voila!

4. "Throwing baby out.." - the good thing is that we really only is cleaning up, replacing the four knowledge enhancers (place, owner, tag, link) with one single system that allows to replace those four and any other you might dream up - and that with a yet unknown precision! That should simplify use methinks, easier to grasp one term than four, and the terms are semantic to boot. Did I mention simpler code too? What's not to love then? :D

Balaji Sowmyanarayanan

Plain old Tags to be replaced with lispy First Class objects in Thingamy? Awesome!
Stealthy cherry in the cake? Good Show!
Cannot wait for the next post!

Tomi Itkonen

"... to add what we call "functional classes" like location, work function etc. so you can define 'France', 'Warehouse B', 'MD', 'Nurse' and whatnot."

Sig, are these functional classes similar to the classes in OOP languages like Java?

In Java, you could first define a Location class. Then you would create an instance of that class, like this:
Location france = new Location("France");



without being much of a Java expert (so not!) your description fits.

In fact, in the system when you build a model of an enterprise or organisation a part is to define classes which you then use to create instances or objects with. (After all, the whole idea of enterprises or organisations is to take tangible or virtual objects and add value to these in sequences using other objects).

When you create classes in our system you have to choose a base-type that is useful for the system later:

Say "nonaccounted-user" type that is used for classes for persons or organisations that will use the system - it has certain default properties given like username, password, e-mail and such.

Ditto for "accountable-item" and "accountable-container" that has default properties pertaining to value and for container, initial and current amount.

The "functional" type will not have any default properties, any properties must be defined by the user when she "builds" the class - but it has the ability to be automatically added to a separate builder interface where the builder can add instances for each "functional"-type class as these might not be typical objects that you will add value to nor use in workflows. They're there for one purpose, to add knowledge to other objects.

Thomas Otter

Indeed there is something to all of this RDF, OWL and co. I'm still figuring it out.
more here.

Account Deleted

Sig, I know how hard can be to spot a design "issue" and have the "guts" (and the money...) to fix it. And I am glad for all of us "Thingamy users" that you decided to do it.
In fact I went through a number of situations where the tags metaphore did not seem like the right way to do it.
One example for all: a typical bill of materials relationship with top level items and components (and/or machines). Fairly boring manufacturing stuff, uh?
If you end up with 2-3,000 end items and 200-300,000 components you can forget about using tags.
Triples, will see. They look promising.

Breaking your own rules? Well, maybe. Knowledge has been defined a long time ago as the process of adapting your understanding to things. It's always very, VERY hard ;-)

Ram Manohar Tiwari

Sig + lives in + France

And do you mean "Forever"?, "Happily"? :)

Is it just about putting the "verb" back?




and your and other's patience is very much appreciated while I tinker!

The neatest of the really old definitions of "knowledge" is my favourite - Plato's - "knowledge is how objects relate to other objects". If you saw a cup for the first time ever, it's when you get the idea that you can pour liquid into it and lift it to your lips - i.e. the relationship between objects - that makes it useful.

And thus "triples' being pure relationship definers between objects should be pretty pure knowledge enhancers!

Just the little detail to get it into a format UI wise etc that makes it easy to use... but that's just another job... ;)



excellent example which I'll grab with gusto:

The "predicator" of the N-triple is per definition "a verb phrase considered as a constituent of clause structure, along with subject, object and adjunct".

In thingamy the one who builds the model will define predicators at will - for whatever need your reality requires.

So you could add predicators beside the "lives in" like "lives happily in", "lives against his will in". Or one could use two or more, combine "lives in" with "does not like" or "likes" :)

And then you add a triple "sig + has spouse + Tittin" while Tittin has a triple "Tittin + thrives in + France" allowing a report of persons who either likes the place they live in or have a spouse who like the place they live in. And so forth ad nauseam!

No system-practical limits to knowledge with other words!

Ram Manohar Tiwari

Hi Sig,

Thanks for the explanation. But for the sake of curiosity:
How would you handle the time/object dependency?
I am not sure if I am able to convey my question properly but..

I need a report of People whose spouse likes to live in France as of a particular date. Because there are some people who likes to live in France during summer and summer of France is from Date1 till Date2 ( and the dates depend on the year )...



ah, there we are in front of the issue already: Every object in the system, not only the objects used in processes, but also system objects (from the build of your enterprise model) are time stamped and keeps a tab on all changes to all properties and who did it.

In other words reports can use time-period or point of time in combination with whatever other data the object holds.

"Just for fun" we have a "historical browser" - go back in time and not only do you get the system including report templates and workflow settings as they were on that date and minute, you get the objects and all the property values as they were then (i.e. if you have added properties later those would not show) - even layout changes to exactly what it looked like then.

Delete something, even an object and it magically reappears in historical browsing (nothing is ever deleted, just hidden). Add a log and all is set to cover SOX, Basel II and anything else you can throw at it (as long as the processes actually are used).

An important part is that thingamy is "object driven" - i.e. the objects follows the defined processes and initiates the events, and even or transaction is purely a change to an object done by an assignee. And that data - time, who, what - is captured and can be used forever.

BTW, you being a SAPpie - are you going to the Teched in Munich in October? If you do let's meet up and I'll show you!

Ram Manohar Tiwari

["Just for fun" we have a "historical browser" - go back in time and not only do you get the system including report templates and workflow settings as they were on that date and minute]

Viewing the history is easy but viewing the history from the eyes of historical characters ...only if your workflow engine and complete architecture [ and hardware :) ] can go back to the historical date, you should have called it the Time Machine.

Incidentally, yesterday I was thinking about an archiving requirement to keep the record of invoice outputs sent to the customers. And I thought only if all my settings and programs/underlying engine can revert back to the old date, I may not need any archiving solution :) And not only I can find the original invoice sent but also that why it was incorrect [ as I can run the historical system/programs/sapscripts/data ] .

And then I realized that I am asking for a time machine.

But I generally like the "Just for Fun" stuff from inventors because in essence those are the real additions. Something so new that you cannot justify it otherwise but by calling it "Just for Fun".

Many thanks for your answers and the invitation. Unfortunately, I will not be there in TechEd. Just to keep my innocence intact ;-) .
But I will keep an eye here.

pihl jones


Sig, don't do it. This is *suicide*! The point about tags is, that however ambiguous they are, they are *easy* for your users to figure out.

Triples, relational models are not. As Ram points out, just because you model using a relation rather than a bunch of tags, doesn't mean you eliminate ambiguity.

Forcing a more complex representation syntax on the user won't save them from ambiguity.

Let the users work out their own modelling schema. One which works for them.

If they want to use tags called "verb-resident-in" and "object-Sig" and "subject-france", let them. If they don't, don't force it on them. It won't help, and in the worse case, will get you into the no-win situation of trying to "help" them by defining a business modelling-schema of your own.

And then two further bad things will happen :

a) your schema won't fit their business and they'll reject Thingamy

b) they won't understand your schema, it will look too complicated for them, and they'll reject Thingamy

As I see it, the selling point of Thingamy is that it's a completely non-comital about schema and let's the users or VARs model their business as they like. Getting involved in the SemWeb will take you away from there.


Phil, excellent, excellent!

A real good nudge I must say, much appreciated such brain-activity-inducing pokes, so let me try to address the issues:

First of all I agree heartily that simplicity and freedom comes first.
The thing about any property that is added to an object is that it requires precision as well as simplicity:
1. so a user can understand what the adder of knowledge meant, and
2. so an IT system can make use of it when it's supposed to "pick up" an object following some rules in a run or when applying accounting rules to the objects.

Coming back to the current system; I found that we needed (semantic tags) place and owner in particular for accounting purposes, links were mostly useful for report production while tags were the most iffy ones while very generic.
Place and owner are very precise and thus also very easy to use - but at the end they are triples - widget is located in warehouse B.
Tags I still believe can only have any practical use if multiple-tags-filtering is available and we have that.
But still, user-friendliness is so-so. Just due to the simplicity in fact - every post herein I tag for Technorati, and every time it creates some head-scratching and a less than perfect result.

In fact because of the limitations described just by using four different "knowledge enhancers" (place, owner, tag, link) I do impose a schema upon the user, which is limiting, slightly hard to understand and thus bad.

Enter triples, and please disregard the Semantic Web here (as mentioned I do not think that will work as long as the objects in the cloud are mashups of objects) - I'm only using the semantic idea:

Subject + Predicator + Object.
(Relating the Subject in a specific way to the Object and vice versa).

The subject is given - that is the object you're looking for or the object you're adding information to.
The objects are a natural part of the system anyway - just define them as today.

So the only new thing is the predicator. And I would argue that the information delivered by the predicator could be quite precise, as precise as semantics allows (even programming languages are semantic so it should be possible to have a high degree of precision).

This will for the user be schema-free as she can define these freely at will (albeit same issue as for tags: Shall end user or only model builder be allowed to add? I'll leave that to system owner).

In that case she can, if she's a true believer in tags, add a triple to the system like this: [subject] has tag [tag] where [tag] is a class of tag objects just like today. Thus adding this triple to an object would be identical to the tagging today.

Then when hit by the iffyness of that sentence (as today) she can add another triple to the system - [subject] has owner [owner] and so forth without limits according to her organisation's specific needs.

In other words, I'm moving from a schema restricted to four "knowledge enhancers" to a freely definable schema for "knowledge enhancers" - or rather "relationships" as Plato defines knowledge.

As to ease-of-use. Well, an answer will be in later (after some tweaking I suspect!), but: Predicators like "lives in", "likes", "is owner of" - are easy to understand while giving a high degree of precision.
I for one struggles more with tags as I choose one and start thinking "but what do I mean by that?". When I add "lives in France" to myself as subject it comes quite naturally!

And I do count on one thing - it should be easier to understand one method - add a predicator and object to a subject - than to get my head around when and how to use place, owner, tag and links. I am sure you as a programmer will see how it simplifies code as well - that I like a lot too! :D

I see that I need to do two more posts soon - been mulling over them for awhile - one more detailed about how it will "look like" in thingamy in practice and one on my belief that the Semantic Web will not work (for now) and that the only place to use the otherwise intriguing concept is in a controlled environment where you can minimise the information to singular objects!

Apologies for such a long and iffy ramble! Would love to do a Skype and discuss the finer details if you have the time - interesting issues these!

Stephan H. Wissel


I would say a "simple" Tag carries already more information.

"Paul" [tagged] "Carlsberg" with "Drinkable" on "24/3/2007". So the Tag contains:
Who did, what action, to whom, with which result and when. Where "which result" would be the tag value. The flaw of the tag is that the action is that the verb is static "has tagged". So the real thing are the triplets but with Meta data: Owner, lifecycle and related relations (ouch).
Sig lives in France since 1998 (according to Paul), before that look here... Sometimes the source of a relation is not relevant, sometimes it is, especially if there are conflicting relationship information.
:-) stw

The comments to this entry are closed.

My Photo


  • Phone: +33 6 8887 9944
    Skype: sigurd.rinde
    iChat/AIM: sigrind52

Tweet this

Thingamy sites

  • Main site
  • Concept site

Tittin's blog


Enterprise Irregulars


Twitter Updates

    follow me on Twitter


    • Alltop, all the cool kids (and me)


    Blog powered by Typepad
    Member since 01/2005