Half a croissant, on a plate, with a sign in front of it saying '50c'
h a l f b a k e r y
Is it soup yet?

idea: add, search, annotate, link, view, overview, recent, by name, random

meta: news, help, about, links, report a problem

account: browse anonymously, or get an account and write.



Database of everything

Now you _can_ compare apples to oranges, with an object-oriented database of everything
  (+5, -4)
(+5, -4)
  [vote for,

Object-oriented design mimics real life: objects have properties, and values for those properties, as well as behavior. All objects descend from the base abstract "object", which has properties that all objects possess. Other objects are derived from this object, or other objects also so derived, forming an object heirarchy. Every derivation inherits the properties and behavior of its parent, and adds additional properties and functionality of its own.

Anyway, we can use this technology to build a database of everything. As we build, we will identify objects, what object they descend from, what new and overridden properties and functionality they possess. Certain properties will coincide with properties of other objects. When we get finished, we will be able to compare any two objects, no matter how seemingly unrelated they are, and from our database get values from any matching properties anywhere up the object heirarchy. And we can get a true, accurate, usable comparison of apples and oranges. We will be able to decide which is better, Michael Douglas films or programmable calculators. We can decide between alligator soup and church bells. Cat food or the Constitution? Shakespeare plays or Texas? Tunafish or Basketball? Think of the comparison possibilities that are, until now, unfathomable. All because of object-oriented technology and our new database of everything.

globaltourniquet, May 04 2001

Cyc http://www.cyc.com/
If it could be baked, they would have baked it. Suffice it to say that invoking Cyc among AI researchers is something akin to invoking Hitler among historians. [egnor, May 04 2001, last modified Oct 21 2004]

Knowledge Representation http://directory.go...dge_Representation/
This is what you're talking about. It's a deep and largely unsolved field. Feel free to follow some of these links and start learning; I suspect that if you do, you will eventually give up with your brain tied in knots. [egnor, May 04 2001, last modified Oct 21 2004]

Ontologies http://www.lsi.upc....gic/ON-TO/ON-TO.htm
Specifically, you are proposing that we build an Ontology of Everything. This is pretty much a classic mistake AI newbies make. This is not an easy problem, and simply waving the "O-O" magic wand ("no programming required" my ass!) won't change that. [egnor, May 04 2001, last modified Oct 21 2004]

everything2 http://www.everything2.com/
This really has nothing to do with what you're proposing, but if I don't add this link someone else will. [egnor, May 04 2001, last modified Oct 21 2004]

Semantic Networks http://www.duke.edu...nn/mwb/15semnet.htm
With your talk of "Texas ... Executions ... Shakespeare", it sounds like you might want something from this particular well-explored field. Many of these systems are capable of finding paths between points. This particular page talks about "Insight Generators" used for marketing purposes (?) that do something very close to what you're describing. [egnor, May 04 2001, last modified Oct 21 2004]

W3C Semantic Web Activity http://www.w3.org/2001/sw/Activity
I'm sure someone will bring this up. [egnor, May 04 2001, last modified Oct 21 2004]

NHFSD http://www.halfbakery.com/idea/NHFSD
Non-hierarchical file management system with properties of database with unlimited number of fields [Inyuki, Oct 21 2004]


       Take away the comparison bit??? That's the whole point! See, ravenswood understands!
globaltourniquet, May 04 2001

       "Better" is subjective but since everyone's individual worldview would also be in the database than certainly the DB o' E would be able to define "better" in the same terms used by the person querying it. Simp. An order of techno-monks under the leadership of Abbot globaltourniquet should be able to knock this out in a few hundred years, don't you think?   

       [Peter (you posted while I had my pinky stuck between caps lock and "A") ]: Maybe the point of globaltourniquet's DB o' E is to catalogue all the properties of each object--not a trivial task--and then one would not have to input all the qualities of Texas and Shakespeare before applying the (admittedly rather magical) comparison algorithm.   

       But whatta I know? I have to use Access, forgawdsake.
Dog Ed, May 04 2001, last modified May 05 2001

       or trained monkeys.   

       (Which is better, trained monkeys or techno-monks?)   

       [Peter] No magic, but the ability to easily categorize properties and functionality. The beauty of O-O is that you would need no algorithm. The object encapsulates the data about it, no programming required. Take like properties and compare the values straight-up. As for quantifying "better", you could specify the parameters of "good" at search time. There would be default assumptions, possibly (as Dog Ed suggests) based loosely on also-contained individual world-view.   

       So, comparing Shakespeare plays to Texas, we might get a "better" result for Shakespeare plays if we parameterize the query with "things that don't execute too many people are better." (Titus Andronicus included...)
globaltourniquet, May 04 2001

       "The beauty of O-O is that you need no algorithm. The object encapsulates the data about it, no programming required."   

       Ho ho ho. Not at all.   

       Go start building it, and you'll quickly discover that what seems simple and straightforward to you now -- objects and properties and relations and comparisons -- is not only complex and tricky, but so complex and tricky that it has stymied and confused the best of our minds, ever.   

       If we could simply "build an O-O database of everything", don't you think somebody would have done so by now? To be sure, people have tried; I'll add links.   

       I challenge you to invent and defend even a simple example of a small part of your database.
egnor, May 05 2001

       I never claimed the task would be easy. It will take a couple of decades, perhaps. But they cracked the genetic code, didn't they? That took a while too...   

       Of course it's possible. Tricky? Certainly. It's tricky putting together an O-O model for the relatively simple answering service billing program I'm currently working on. But once the model is in place, the data, while time-consuming, will be fairly straight-forward to load into the database. There would be some controversy while decisions had to be made whether tomato is subclassed from vegetable or fruit, but we can work all that out....   

       [egnor] You are overextending my idea. I'm not asking for AI here. I don't imagine we can simply make a database that will give us the answer to life, the universe and everything, or even recommend a cure for cancer. Just a cross-reference database that will allow me to compare Shakespeare plays to Texas, based on the properties of these items that we can come up with. I can make a small model in less than a day. The issue is coming up with all of the desired properties and functionality. That will take a couple or few decades.
globaltourniquet, May 05 2001

       <fruit>If you're gonna play Shakespeare in Texas, ya gotta have a fiddle in the bard *dodges tomatoes*</fruit>
thumbwax, May 05 2001

       but how do you organize them? on a colour wheel or by family tree?
technobadger, May 05 2001

       Where do the knives go? In the knife drawer?

Does the bread knife go in there? The best silver knives? The Stanley knife from my toolbox? Palette knives?

OO is very, very limited in any but a few limited knowledge domains.
hippo, May 05 2001

       global: I think that the database no matter how easy or hard to create would not yield the results you're looking for.   

       If you compared a shakespeare play to an orange you'd have great difficulty finding any properties that matched (and even if the property names matched they would probably be referring to different things). However, since I get the feeling yhat you wrote this with you tongue firmly lodged in your cheek I won't bat on about it.   

       What you do have, though is an interesting slant on indexing the internet. You could look at something like the yahoo structure and continue the tree until you get to specific bits of information.   

       people.william_shakespeare[1].plays.live_performances.reviews might lead to an interesting list of sites if you want to go to a play.
st3f, May 05 2001

       That must make typing a thought-provoking experience.
st3f, May 05 2001

       Acrually st3f, I was partly kind of hoping for reaction from people on comparing odd things, and how it might work. Like Shakespeare plays and Texas could be compared on the execution level.   

       You say it wouldn't yield the results I'm looking for. Au contraire, I'm looking for automated, stretched connections and associations, even if they are by double meaning. I would find that amusing and enlightening. Mind-strertching, if you will. Like cryptic crosswords. It would be fascinating to see if more people are executed in Shakespeare's plays than in Texas.   

       As for other comparisons, commonly basil is an ingredient of alligator soup. Well, aren't there church bells in St. Basil's cathedral? See? There you go!
globaltourniquet, May 05 2001

       I admit the ROI is pretty low. But with enough effort, it _could_ be done. (Just like with enough effort, we could turn the moon pink.)   

       For those of you who claim that it can't be done "with no programming", what I mean is if the O-O model is well structured, if you don't care about a fancy UI (which duh of course would take programming), then all that would be required to get information is skillfully written queries.   

       I can mock you up a prototype for some objects we have already referenced right now (for you C++ types, forgive the object pascal-like pseudocode... I hate C++)   

TPlayList = TList of TPlay;
TUSStateList = TList of TUSState;

       TLiteraryWork = class(TDocument) (or whatever);
author: TPerson;

       TPlay = class(TLiteraryWork)
NumberOfExecutions: integer;
etc etc

       TUSState = class(TState)
name: string;
NumberOfExecutions: integer;

       now, for the queries (again, psuedo-code)   

       select texas.NumberOfExecutions, sum(shksp.NumberOfExecutions) from TUSStateList texas, TPlayList shksp where TUSStateList.name = 'Texas' and TPlayList.author = 'Shakespeare'   

       Of course given the above pseudo-code you would get repeated entries for Texas for every Shakespeare play (and vice-versa if there were more than one state named 'Texas'), but don't make me fix that. Suffice it to say that I could.   

       Piece of cake.
globaltourniquet, May 05 2001

       <Homer>mmmmmmm, caaaaake</Homer>
thumbwax, May 05 2001

       Ever read The Library of Babel by Jorge Luis Borges?
snagger, Sep 20 2001

       This would not work. To compare the number of executions in Texas with the number of executions in Shakespeare, you'd have to derive them both from a common superclass CThingsWithExecutionsInThem. You'd end up with each object derived from about a million classes. There would be some scope for inheritance expressing subclassing of concepts, but huge amounts of multiple inheritance.   

       For example, Richard II would be in CHistoryPlays derived from CPlays, derived from CLiteraryWorks, derived from CTexts, derived from CIntellectualCreations, but also in CFictionalisedHistory (which would inherit from CHistoryText), CThingsWithExecutionsInThem, CThingsMadeInEngland, CThingsContainingMirrors, etc.   

       But basically, making this object-oriented would add little to the useability. You cannot divide the whole world up by a tree structure in which each node has only one parent, and expect it to still express all the relationships between objects.   

       OO also wouldn't help when things can vary in their properties: how would you represent something which is both a tragedy and a history play, or comes in a wide range of colours from yellow through green to black? And you couldn't use Java, which doesn't allow multiple inheritance.   

       What you want to do is for each object assign a large number of fields representing different statistics, allowing multiple values in some fields, and try to keep the field names in common. So the entry for Richard II reads (in part) "Genre: History Play; art form: Play, Literature; Author: William Shakespeare; Themes: Divine rule of kings, self-deception, treason, justification for treason; Number of Executions: (I forget)..." Such a database would need algorithms to search it, but allowing algorithms to be defined afterwards gives more flexibility anyway.
pottedstu, Oct 16 2001

       Well, to me it sounds like someone who's just discovered OO and gotten terribly excited by it all, which is fair enough, because when it first clicks in it is exciting... and suddenly everything looks like an object.   

       But it your goal falls apart when you look at the problem in reverse. In your last example, you basically hard-coded a comparison of executions between Texas and a Shakespeare Play. Well, sure anyone can do that, but that's not what you really want, is it? Given that what you mean to say is that any object in the giant "tree" of everything can be compared to another, you are implying that an Orange must also possess, whether directly, or by inheritance, a "NumberOfExecutions" member. So would a Coffee Cup, Henry VIII, a Kodiak Bear, a Harvest Mouse, a Thames River Cruise, a Pick Axe, a Combine Harvester, and a Rabbit Warren. Everything, in fact, must share everyone else's comparable attributes, otherwise you can't do the kind of query you mocked up in the pseudo code, except upon strictly pre-defined pairs of objects (which defeats your goal). Even if some base object way up the ancestral tree contained all these comparable attributes (such as "NumberOfExecutions, NumberOfThorns,NumberOfTusks,ColorOfAntlers,NumberOfTeeth", etc), you are still dealing with a massive, massive unwieldy object somewhere up there - and that simply is not OO anymore - that's what they call a "Dog's Breakfast".... it's not a question of whether it would take 2 decades or 100 years - the end result would render the task a brutally ugly waste of time!
kai_g, Nov 16 2001

       Further above, thinking about it a few seconds longer, this is possibly the least Object-Oriented idea I've ever heard of! What's the point of all that classification, etc, if ultimately everything is comparable to everything else through the same attributes?! It's like buying a Lotto game with all 40 numbers out of 40 selected!
kai_g, Nov 16 2001

       //because when it first clicks in it is exciting... and suddenly everything looks like an object. //

So many times I have heard comments very similar to this describing the epiphany, the golden Aha! surrounding the moment that the OO concept comes into sharp relief in the mind. It must be a cool experience. Alas, I haven't had that moment, yet.
bristolz, Nov 17 2001

       Good idea. "Database with unlimited number of fields" migh be it. Every object = property. Every new record in database becomes also a new field. So we may measure apples in oranges...(see link). However, in a database of everything, every object should have its set of [statements], not a set of IDs as it is in NHFSD.
Inyuki, Jan 22 2003

       It wouldn't work. By definition, the database itself would have to be in the database---which means it'd have to be in the database that's in the database, and so on. Of course, everything in the universe is related, so you'd eventually come full-circle and find yourself back in the original database. In fact, that may be what's going on right now. It's hard to be sure---everything is so realistic.
Ander, May 08 2003

       Start with Monster 0.
lawpoop, Jul 16 2003

       Database of everything? Umm, I think it's called "The World Wide Web". Your domain name is the primary key for information you publish. Your email address is the primary key for your online identity.   

       As far as creating a "database of everything" using OO techniques - you still need to define what descends from what, and that ain't trivial.   

       I have about 50,000 mp3s, and I have trouble putting them into categories. I mean, is this "folk rock" or "electro-folk" or "alt. acoustic"? I have albums that definitely fit into 1 but not all of the above categories. The more you try to classify things definitely, the harder it becomes, and this is using a limited domain of knowledge -- music.
lo_fye, Mar 09 2004

       Baked. (Google Base)
Inyuki, Nov 17 2005

       After about two years working on the database design and various prototypes, I have now written a Database for Everything. I have called it the Ultimate Database and it seems to work. If anybody is interested then let me know. I am looking for contributors and investors.
sohcahtoa314, Sep 01 2008

       [sohcahtoa314] how did you solve the fundamental and unbelievably tricky taxonomical problems associated with such a concept?   

       Also, does it run on MySQL?   

       By the way, yes I'm interested - if a little sceptical.
zen_tom, Sep 01 2008

       //If anybody is interested then let me know//
I am interested.
//I am looking for contributors and investors.//
I feel my interest waning somewhat. The problem with having objects like // which has properties that all objects possess // is that there are (at least) two possible problems. Russell's-type paradox and Ramsey theory. The former allows for exclusions of something from your everything and the latter gets very big very fast.
4whom, Sep 01 2008

       don't you just create a bunch of rdf triplets, put them in objects, and toss them in a database?   

       each triplet is an object. each item is a pointer to something.   

       then instead of doing people.bill. plays.live_performances you do   

       object['people'] ['involvedWith'] -> object['plays'] ['type'] -> object['live'] ['whatever'] -> object['reviews'] ['blah']   

       then you just search by object and then pull everything else out by recursion and a handful of keys which of course you need to more or less have though you could get all keys.   

       see then you can pretend to have objects. and pretend to use rdf. because rdf is cack. it's like those herrings that icelanders piss on and bury in the snow, and then when it is rotten, they dig it out and eat it.
mylodon, Sep 01 2008


back: main index

business  computer  culture  fashion  food  halfbakery  home  other  product  public  science  sport  vehicle