[Ocs] [SPAM] Proposal for more flexible category hierarchy.

Frank Karlitschek karlitschek at kde.org
Thu Feb 3 13:24:16 PST 2011


Hi Dion,

I´m very sorry. I totally forget to answer your email.

We definitely have to improve the category system for 2.0 and I think your proposal is good.

But the changes have a quite big impact for the OCS providers. So I suggest to discuss this changes during the OCS 2.0 meeting in person also with the other people who do server implementation.
Do you think this is O.K?

I hope you have time for the ocs 2.0 meeting in the next few month. 
We hopefully can fix a date soon.


Cheers
Frank



On 03.02.2011, at 21:11, Dion Moult wrote:

> On Monday 15 November 2010 14:16:18 Dion Moult wrote:
>> I am currently implementing the OCS API on a site http://wipup.org/ which I
>> hope to integrate later in DEs.
>> 
>> However the current OCS API is quite restrictive in that it only allows a
>> CATEGORY->CONTENT 2-tier hierarchy approach. I came across this issue
>> briefly with Frank and I offer a solution. Here is the current set up for
>> the OCS spec 1.6 (the list below shows the parameters they have):
>> 
>> CATEGORY -> CONTENT
>> -id         -typeid
>> -name       -type
>>            -personid
>>            -etc
>> 
>> Of course, we can list the categories via CONTENT->Categories and the typeid
>> and type parameters show which CATEGORY the CONTENT belongs to.
>> 
>> Before I describe the solution, let me describe my scenario on my current
>> system. On WIPUP users create projects, and create updates (content) which
>> must belong to a project. Thus we have:
>> 
>> USERS -> PROJECTS -> CONTENT
>> 
>> Also, the projects are categorised into subjects such as Art, Music,
>> Programming, etc, thus we also have:
>> 
>> CATEGORY -> PROJECT -> CONTENT
>> 
>> As you see, the difference is that a PROJECT belongs to both a USER as well
>> as a CATEGORY. Another difference is that PROJECTS are dynamically created
>> and do not belong to a fixed set of results (ie, they differ for each user,
>> as well as for each category, and can be edited/removed/added by a user).
>> 
>> The solution (to the above problem, as well as other scenarios) is to
>> provide this new proposed layout:
>> 
>> CATEGORY -> SUBCATEGORY -> CONTENT
>> -personid   -personid      -personid
>> -etc        -categoryid    -categoryid (replaces typeid)
>>            -category      -category (replaces type)
>>            -etc           -subcategoryid
>>                           -subcategory
>> 
>> There are 3 big changes. The first is that we're changing the name to refer
>> directly to categories as "categoryid" and "category" instead of "type",
>> which is slightly confusing.
>> 
>> The second is that every single tier in the hierarchy can also optionally
>> belong to a user via the added "personid" parameter. This of course means
>> that things such as CONTENT->Categories must now allow the URL Argument of
>> "personid" to filter by user. This allows for systems just like User-added
>> projects in my site, or even User-added groups, User-added sections, or
>> whatever else might exist.
>> 
>> The third change is not actually directly visible in the example above, but
>> I propose that "CATEGORY" be made into a "recipe" which implementations can
>> use to fit their specific system. For example, for sites such as the
>> OpenDesktop network, they might only use:
>> 
>> CATEGORY -> CONTENT
>> 
>> Whereas another site might need:
>> 
>> CATEGORY -> SUBCATEGORY -> CONTENT
>> 
>> ... and yet another site might need:
>> 
>> CATEGORY -> SUBCATEGORY -> SUBSUBCATEGORY -> CONTENT
>> 
>> Which, if they wanted to do that, they just need to add the necessary
>> "categoryid", "subcategoryid", "subsubcategoryid" etc parameters to their
>> structure. Obviously the more categories you add, the messier it gets (which
>> suggests you rethink your site!)
>> 
>> So all we have to do is describe a single hierarchy level, and if people
>> want more hierarchies, they just need to prefix another "sub" and add the
>> necessary parameters to show the full parenthood tree.
>> 
>> So using this new system, to use a practical example, I can now solve my
>> WIPUP problem with:
>> 
>> CATEGORY -> SUBCATEGORY (PROJECT) -> CONTENT
>>            -personid (USER)
>> 
>> ... and I can call CONTENT->subcategories with the GET URL attribute of
>> "personid" to show all the projects belonging to a user, or with the GET URL
>> attribute of "categoryid" (not shown above) to show projects belonging to a
>> category. Similarly I can call CONTENT->list with the GET URL attribute of
>> "subcategory" to show all content in a single project.
>> 
>> I hope this is a extremely flexible proposal which should work for most
>> sites out there. Please let me know your comments (or
>> questions/suggestions)!
> 
> Bumpity bump?
> 
> -- 
> Dion Moult_______________________________________________
> Ocs mailing list
> Ocs at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/ocs


--
Frank Karlitschek
karlitschek at kde.org






More information about the Ocs mailing list