January 2, 2016 by Seth
Here is the structure of the quads database that worked quite well …
 
source: data structure

CREATE TABLE `quads` (
  `context` varchar(255) NOT NULL,
  `subject` varchar(255) NOT NULL,
  `verbseq` char(10) NOT NULL,
  `verb` varchar(100) NOT NULL,
  `objectseq` char(10) NOT NULL,
  `object` varchar(5000) NOT NULL,
  `objecttype` tinytext NOT NULL,
  `id` int(11) NOT NULL auto_increment,
  `by` tinytext NOT NULL,
  `changeDate` datetime NOT NULL,
  `ip` char(20) NOT NULL,
  `protect` tinytext NOT NULL,
  PRIMARY KEY  (`id`),
  KEY `context` (`context`,`subject`,`verbseq`,`verb`),
  KEY `subject` (`subject`,`verbseq`,`verb`,`objectseq`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=221 ;
 
Each quad is supposed to be unique (there may only be one one) for each context+subject+verb+objectseq.  That will be enforced by the update code.
 ( what if someone updates the page_definitions directly with a duplicate ?) 
In most cases the quads are unique for context+subject+verb because in most cases objectseq is blank; but there needs to be multiples on things like page_definitions right_column, see bozo directory.
by Seth in group tagtalking — 2009-12-21 10:43:40, changed 2016-01-02 16:57:30 thought 13073
no comments
January 2, 2016 by Seth
I successfully built this website entirely from quads.   I closed it down about a year or so ago … but it worked just fine.
    by Seth in group tagtalking — 2016-01-02 16:53:37 thought 19497
    1 comment thread
    Seth 2016-01-02 17:10:17 [item 19497#40765]
    In all the implementations I have seen quads don’t necessarily decrease the code or complexity of the website, they only shift it around and sometimes make you stand on your head to make something work that would be simple in a traditional table based system.

    One place they do shine however, is simplification of the SQL analysis. For instance, I am pretty sure you are missing indexes on some key columns that are slowing down some queries. With quads that would never happen as all 4 columns are always indexed … at least until you have to have a quadrature² query in order to get some information … then even a quad table slows down … like I say, it’s really just a tradeoff. Some things are well suited to it, others not, and most don’t really matter (FBI being one I expect that doesn’t really matter)
    i agree.   I am not suggesting that whole websites should be built like i did group tagtalking .  

    rather now i am suggesting it could be built from thoughts.

    i mostly regurgetated this experience for the design of a quads table as seen in Repeating Quads Structure on tagtalking dev blog

    but tagtalking was an interesting experience … you probably didnt even know that i did it.
    December 24, 2009 by Seth

    A tag names a room.  Tagging posts (or entries) will put those items in a room.  People do that and those people have names.  This is a bit different than here at fastblogit.  Here we have groups and authors and tag rooms.  Here an author can post in only one group at a time but he can tag his post in whatever tag room he chooses.   Group rooms are distinct from tag rooms.  The place where that hurts is that then he must keep logging in and out of groups to  have full access to the site. 

    Tagtalking just has People and Rooms ... people have names and rooms have tags.  Your own group room is just another tag room.  You will be permitted to post in whatever room that you in fact have the permission to post into.   But you can put a post in a room simply by tagging it with the room name.   But doesn't that kind of break the idea that you need permission to post in a room? 

    Thing is at tagtalking we have the idea of a primary tag room.  That would be the room in which you made your post.  That primary room dictates the content of the post by virtue of it's quads defining the inputs.  Although the primary tag room is just another tag room it forms the basis of control of a  space by people who are priviliged in that room.  Interesting, huh?

    What happens when people tag posts to some room and then somebody comes along and claims control in that room?  Then the fun begins, huh?

      What should the difference be between

    by Seth in group tagtalking — 2009-12-24 10:32:51, changed 2009-12-24 13:00:54 thought 13094
    no comments
    December 24, 2009 by Seth
    _____________________________

    http://tagtalking.net/feed/?tags=bozo  is working now.

    Some problems remain ...
    • If someone starts off by attaching media from the web, then we don't know the media length to put in the enclosure element.  This will still work for most aggregators, i think, but it doesn't work in the Google Reader (my prefered feed reader)  ... there it shows the player, but nothing plays.
      • The solution is (1) either ask the user for the length (yuck, many people won't know how to obtain that); or (2) figure out how to read the length of the file out on the web via some php http get ... which so far has proven to be quite a challenge for me.  Practical solutions gleefully accepted. 
      • .... or now that i wrote it all  out the solution is obvious and already implemented.  Simply default the length to a high value ... say 100,000,000 bytes.  Then Google seems to be happy with it and joyfully plays just as much of it as is actually there.
    • The author element has not been filled out on entries.  Mybe if i wrap it down, the solution will instantly emerge above.  If a (group?) specifies author as a element to input, then it is easy to look for that and put it in the feed.  But what if that group does not want to bother to input an author?  Thing is it is always sombody who posts.  Is that person not always the author of the post? So if you cannot post unless you sign in to tagtalking, then why not default the author to that user name.  Of course i'll need to implement users before this will work.

    by Seth in group tagtalking — 2009-12-24 09:49:22, changed 2009-12-24 10:18:45 thought 13093
    no comments
    December 23, 2009 by Seth

    Why encourage blog comments, when we can start a discussion about any blog entry at facebook where all of our friends will have a chance to see it and join in the fun.  But if it is done like we do it now from fastblogit (see fshare button on top of this screen ), then there could be many different dialogue streams for the same item because every time a different person shared it that would post something to their wall.  Now you may like that, but i don't necessarily like it.  So what if the first person who clicks on the fshare button turned the button into a link to his entry on his wall and that link would stay that way?

    In other words, the fshare button on the top of the permalink for this item would change to something like the following: go to shared dialogue on facebook after somebody (probably the author) shared it.
    by Seth in group tagtalking — 2009-12-23 09:15:33, changed 2009-12-23 09:55:06 thought 13088
    no comments
    December 22, 2009 by Seth
    Taking the feeds out of the virtual processor (i just don't want to complicate that program).  So feeds will be served by one file /feed/index.php with the parameters supplied in get parameters.  Url to look like ...
    The first tag always being the primaryDirectory that has settings associated.  But if there are no settings associated, then the settings would default.

    Ok finished the parser for the virtual URLs.  It was based pretty much on the one at fastblogit.  Here are the cases that are handeled ..
    So they all seem to work, try them if you doubt me.  Next i'll write all the SQL statements.

    Ok, some of the paths i've decided not to use.  It's just too much ucking around to get forms and actions going in a virtual URL environment ... why bother.  So instead, i'll just put those in traditional files in the web root that the server can find without using redirects; and use the parameter string to designate the command.  Like the following ...
    _____ below this line is still in the design, but has been taken out

    tagtalking.net 
      • promo and or the river
    • tagtalking.net/DIRECTORY
      • directory home page, shows push down blog posts of podcasts and media.  This is the directory that controls the style of page and also probably the privdledges.  DIRECTORY is the reference to the quads definition of the pages.
    • tagtalking.net/DIRECTORY/COMMAND
      • COMMAND would be something like:
        • description - designates the description form
        • processDescription - process the above form
        • upload - the upload/attachment page
        • processUpload - process the above form
    • tagtalking.net/user
      • goes to a fixed page that is similar to the door at fbi.
      • note: the user is global, not necessarily underneath the DIRECTORY
      • but the DIRECTORY can grant privileges to a user via the quads
    • tagtalking.net/tags/LISTofTAGS
      • note this is the same URL format as here at fastblogit
      • This gives the postings for the appropriate tag rooms
    • tagtalking.net/DIRECTORY/tags/LISTofTAGS
      • note this is the same URL format as here at fastblogit
      • This filters the postings to the major DIRECTORY
    • tagtalking.net/quads/COMMAND
      • These commands might be something like
        • browse
        • edit
        • etc
      • not sure where best place to get the major DIRECTORY is on this
    by Seth in group tagtalking — 2009-12-04 12:10:33, changed 2009-12-22 10:55:51 thought 12971
    1 comment thread
    Seth 2015-12-10 12:52:57 [item 12971#21277]
    seth 2009-12-05 09:45:12 item 12971
    Interesting inadvertant sharing possibility i wonder if i should prevent from happening ...
    source: in test from taking this link from fastblogit yields

    HTTP_REFERER=http://fastblogit.com/tagtalking/
    primaryDirectory=tagtalking
    Array
    (
    [0] => http:
    [1] =>
    [2] => fastblogit.com
    [3] => tagtalking
    [4] =>
    )

    ... of course you should take the upload link from within a virtual tagtalking directory (see the upload link on jimbo ).  I mean what if there were a tagtalking podcast directory, why not allow people to take a direct link to the upload area for group?  LOL, or am i tripping?
    But seriously, it's not about what domain their coming from, it's about whether they have that virtual directory registered in the quads over at tagtalking.net.  If they do, then one hyperlink is just as good as another. 
    December 17, 2009 by Seth
    The enclosure is the data created by virtue of sombody attaching some kind of media to an entry.   According to the feeds (both RSS and Atom) it requires the following data:
    • URL of the media file
    • type - designates a standard MIME type. an mp3 would be
      type="audio/mpeg"
    • length - length in bytes of the media file
    It would seem that this would translate into the following in my quads database
    • context:  PrimaryDirectory
    • subject:  item number
    • verb: "enclosure"
    • object: url
    • objectType: "enclosure"
    Note: i'm seriously drifting to the idea that all of the properties for the enclosure end up being their own quads.  For example ...
    • type: audio/mpeg
    • length: 9200054 (bytes)
    • size: 35 (minutes)
    • artist: Paula Waby
    • playerTemplate:  name of player template
    • etc ...
    Only restraint here with tagtalking is that it will restrain one item to one enclosure.  I don't think that is a problem.  The advantage is that i can add properties at will and allow the applications and players to use whatever they can pick up on.  The alternative was to code these as name=value pairs on the  object of the single enclosure quad ... but then why build in all of that extra code when it's already pretty much in the quads processing already.

    Feed:  The atom feed will generate  the following code ...
    <link rel="enclosure" type="audio/mpeg" length="1337"
    href="http://example.org/audio/ph34r_my_podcast.mp3"/>
    .. i will assume that i can put additional properties there.

    Questions i still have ...
    • how does one publish a youtube video here ... what would the enclosure look like?  
      • enclosure: URL (example)
      • playerTemplate: youTubeEmbed (see embed code on youtube ... this is a reference to that)
    • How do i provide enough information to generate the html to embed players for the  various medias, still provide the information for the enclosure in the feed, and provide the ability to download the file?
    by Seth in group tagtalking — 2009-12-15 08:10:50, changed 2009-12-17 10:45:35 thought 13024
    1 comment thread
    Seth 2015-12-10 12:52:57 [item 13024#21321]
    I just wiped out my whole quads database with a dumb query ...
    source: my test query
    UPDATE `quads`  SET `context` = "bozo" , `subject` = "71", `verb` = "enclosure", `object` = "http://www.speaktomecatalog.com/mp3/CLKNCAT.mp3" , `objecttype` = "enclosure"
    ... it needed a where or something else.

    December 15, 2009 by Seth
    I'll want to have a accessible media player on the site.  It needs to have the following features:
    • accessible to screen readers
    • plays audio, video, and youtube
    Matt May from facebook here has suggested JW Player.  Thanks Matt !

    Other possibilities might be on tag player.
    by Seth in group tagtalking — 2009-12-15 09:57:44, changed 2009-12-15 10:01:11 thought 13027
    1 comment thread
    Seth 2015-12-10 12:52:57 [item 13027#21312]
    the setup wizzard is
    December 15, 2009 by Seth
    So the structure of the hyper link is as follows
    • http://www.facebook.com
    • /apps
    • /directory.php#
    • /profile.php?
      • v=feed&
      • story_fbid=243448043992&
      • id=100000470462538
    by Seth in group tagtalking — 2009-12-15 07:40:24, changed 2009-12-15 07:46:50 thought 13023
    1 comment thread
    Seth 2015-12-10 12:52:57 [item 13023#21310]
    In other words, go here and discuss this on facebook, don't bother discussing it here.  I'm already discussing it with Elaine there.  If you don't have a facebook entry, too bad ... get one ... after all there is a whole new social thingy going on here, tune in ... or go away.
    December 15, 2009 by Seth
    looks like Google assimilated FeedBurner while i was sleeping.
    by Seth in group tagtalking — 2009-12-15 07:28:51 thought 13022
    no comments
    December 12, 2009 by Seth
    Are these worth doing?

    But my big question i asked to the group ...
    source: me to the group
    I want to make use of these (new?) meta data elements but i publish Atom feeds instead of RSS. Are these specifications compatible with Atom feeds such that i can just put this name-space into Atom and use these properties there? Will any aggregator ever see them in my Atom feed?
    ...

    source: the new spec
    <media:content
      url="http://www.foo.com/movie.mov"
      fileSize="12216320"
      type="video/quicktime"
      medium="video"
      isDefault="true"
      expression="full"
      bitrate="128"
      framerate="25"
      samplingrate="44.1"
      channels="2"
      duration="185"
      height="200"
      width="300"
      lang="en" />
    ...
    source: the new spec
    <media:rating scheme="urn:simple">adult</media:rating>
    <media:rating scheme="urn:icra">r (cz 1 lz 1 nz 1 oz 1 vz 1)</media:rating>
    <media:rating scheme="urn:mpaa">pg</media:rating>
    <media:rating scheme="urn:v-chip">tv-y7-fv</media:rating>
    ...

    <media:title type="plain">The Judy's -- The Moo Song</media:title>
    ...
    <media:description type="plain">This was some really bizarre band I listened to as a young lad.</media:description>
    ...

    <media:keywords>kitty, cat, big dog, yarn, fluffy</media:keywords>
    ...

    <media:thumbnail url="http://www.foo.com/keyframe.jpg" width="75" height="50" time="12:05:01.123" />
    ...

    by Seth in group tagtalking — 2009-12-12 08:49:33, changed 2009-12-12 08:57:47 thought 13013
    no comments
    December 4, 2009 by Seth
    ... its design, programming, development, and/or what is happening there. 

    tagtalking.net

    see also the tagtalking.net tag room here at fastblogit
    by Seth in group tagtalking — 2009-12-04 10:36:25, changed 2009-12-04 10:49:47 thought 12968
    1 comment thread
    Seth 2015-12-10 12:52:57 [item 12968#19359]
    really pushing this weekend to open tagtalkin.net