Re: FYI: Updated Index draft

2005-09-21 Thread James M Snell


This could all get rather complicated very quickly. My primary objective 
is to address known use cases for ordered feeds (my netflix queue 
feed[1] for example), most of which are structured as complete datasets 
that are non-incremental in nature. I'm not convinced that I necessarily 
want to try to solve all of the potential problem cases that could arise 
with ordered feeds that span multiple a collection of historical feeds, 
etc. Also, I am not wishing to duplicate what Microsoft has done with 
their simple list extensions. So with that in mind, I still wish to try 
and address the issues that have been raised so here's what I have so far:


[1] http://rss.netflix.com/QueueRSS?id=P5365369447081104293883231608616881


{domain}

{nonNegativeInteger}



I drop the feed level i:ranking element and introduce a new i:domain 
element that identifies a "ranking domain" that this feed is a part of.


The i:rank element is used to specify the nonNegativeInteger rank for 
the given {scheme} for the containing element. The {domain} attribute is 
used to scope the i:rank to a specific ranking domain -- for instance, 
the priority ranking is only relevant if the entry is contained in a 
feed with a corresponding i:domain element.


The lack of a i:domain element indicates the "default ranking domain". 
Any i:rank elements that do not specify a domain attribute are 
considered to be part of the default ranking domain.


For instance, in the following example, only the first i:rank is 
relevant within the given feed. Neither of the urn:bar i:rank elements 
are relevant within this particular feed example.


tag:example.com,2005:/feed
urn:foo

tag:example.com,2005:/feed/1
1
2


tag:example.com,2005:/feed/2
2
1



Domain urn:foo ranking: tag:example.com,2005:/feed/1 then 
tag:example.com,2005:/feed/2
Domain urn:bar ranking: rag:example.com,2005:/feed/2 then 
tag:example.com,2005:/feed/1


The domain element serves multiple purposes.

1. It helps us to scope the relevance of an i:rank element within an 
entry. For instance, if an entry with an i:rank in the urn:foo domain is 
aggregated into a synthetic feed that either a) does not specify a 
ranking domain or b) specifies a different ranking domain, consumers can 
safely ignore the urn:foo i:rank.


2. It helps us to correlate ranks that span multiple feed documents. For 
instance, two separate feed documents may specify the same ranking domain.


No-Rank Entries: no-rank entries are marked by the absence of an i:rank 
element corresponding to a given scheme. For instance, in the following 
example, entry "C" is a No-Rank Entry in the Index scheme, but is ranked 
in the Priority Scheme.




A
1
10


B
2
50


C
20



Re: Eric's Question: "How does this help (eg) bbc.co.uk order their news 
items in some sensible manner?"


By the description given, it sounds as if the BBC ranking is more a 
ranking of relative importance than a ranking of natural order. That is, 
Top Story A has a higher importance that Top Story B, etc. If that is 
the case, a "priority" or "importance" ranking scheme can be used in 
conjunction with the atom:updated element.




top-story-A
2005-12-12T12:00:00Z
90


top-story-B
2005-12-12T12:00:00Z
80


top-story-C
2005-12-11T12:00:00Z
90


top-story-D
2005-12-11T12:00:00Z
80



In this example, top-story-A is ranked as the highest priority entry on 
Dec, 12, 2005 while top-story-C is ranked as the highest priority entry 
on Dec, 11, 2005.


Re: Eric's Question: "What happens when entries "fall off the bottom" 
... do their rankings expire?"


It will be entirely dependent on the scheme. In a priority ranking 
scheme (measuring the relative importance of an entry), having an entry 
"fall off the bottom" would have no effect on the overall 
ordering/ranking of the feed. In a natural order ranking scheme (indexed 
position), having an entry "fall off the bottom" would likely mean that 
the entry is no longer a part of the ordered list or is no longer 
relevant to the rankings.


Re: Thomas Broyer's suggestions:

>1. get rid of your i:rank, users will use any extension element 
instead (no more
> registry and you can still define "standard" priority and index 
extensions)


I considered this but a single extensible rank element fits most of the 
simple use cases for this rather well. That said, allowing for specific 
ranking elements would be helpful, so how about a bit of a compromise?


rankingCommonAttributes =
attribute i:scheme { IRI },
attribute i:domain { IRI }?

rankingConstruct =
rankingCommonAttributes

integerRank = element i:rank {
rankingConstruct (nonNegativeInteger)
}

With this approach, i:rank is defined as the standard nonNegativeInteger 
ranking element. If I so desired, I could easily define new 
rankingConstructs however, for instance:


importanceRank = element x:importance {
rankingConstruct ('critical' | 'high' | 'medium' | 'low' | 'info'|)
}

high


>2. get rid of your @order attribute: users should be able to choose in 
which

Re: FYI: Updated Index draft

2005-09-21 Thread James Holderness


I had considered something along those lines, but it seemed to me to be a 
bit vague. I suspect it would produce adequate results in the majority of 
cases, but I'd prefer something that gave the content provider finer 
control. I like the idea of being able to say exactly where in a feed an 
item should be positioned. Then again I'm not a content provider so maybe 
that's not the sort of thing they're looking for.


Eric Scheid wrote:

thinking more ... I think the way to handle this is that the client
application could weight the ranking with the age of the item, and thus a
rank#1 item would appear near the top of the list, and then slowly drop
away.

You also get to know what the original ranking for an item is.




Re: Structured Publishing -- Joe Reger shows the way...

2005-09-21 Thread Danny Ayers

On 9/12/05, Bob Wyman <[EMAIL PROTECTED]> wrote:

> I believe it doesn't make sense for us to add data-carrying elements
> to Atom other than atom:content or atom:summary. Atom provides a definition
> of a collection of entries and it provides the entry format. Frankly, it
> should stop there. The data payload should be carried in the content
> element.

I believe the ability to include data outside the content is likely to
be useful, and may even be essential in some republishing scenarios
where additional metadata about the payload is required. But that's
not to say the transport-only view of Atom doesn't offer big
advantages in the Structured Blogging kind of scenario where the data
can be neatly packaged, relatively opaquely to the rest of the entry
data. (Atom as SOAP lite?)

One aspect I am curious about - are you intending to use the Atom
entry ID as an identifier within the content at all? Any issues there?

Cheers,
Danny.



--

http://dannyayers.com



Re: FYI: Updated Index draft

2005-09-21 Thread Eric Scheid

On 21/9/05 9:35 PM, "James Holderness" <[EMAIL PROTECTED]> wrote:

> Marking entries as having no rank sounds like a nice idea, but I don't think
> it's feasible in the long run.

thinking more ... I think the way to handle this is that the client
application could weight the ranking with the age of the item, and thus a
rank#1 item would appear near the top of the list, and then slowly drop
away.

You also get to know what the original ranking for an item is.

e.



Re: FYI: Updated Index draft

2005-09-21 Thread James Holderness


Marking entries as having no rank sounds like a nice idea, but I don't think 
it's feasible in the long run. In order to erase ranking effectively from 
previous entries, the content provider needs to double their feed size 
potentially. And if a user misses out on a "rank update" they could end up 
with news items from the distant past sitting at the top of their ranking 
forever. Admittedly you already have the problem of losing items that have 
fallen off the bottom of a feed, but at least the feed remains readable. 
With a corrupted ranking system, the ranking effectively becomes useless.


One possible solution may be the use of a rank-offset tag. Let's say you 
have three items A, B and C with A being the most important (rank 1) and C 
being the least important (rank 3). You start with a rank-offset of 0 and 
your feed looks like this:


A:1 B:2 C:3 (rank-offset = 0)

Now say you want to add a new item D that falls between A and B, but you 
still only want to include 4 items in your feed. You increment the 
rank-offset to 1 and reconstruct the feed with new ranks which now look like 
this:


A:1 D:2 B:3 (rank-offset = 1)

When the client receives that feed, it automatically subtracts the 
rank-offset from each item's rank value before adding them to its database. 
So internally its list of items now look like this:


A:0 D:1 B:2 C:3

A's rank has been updated. D has been inserted. B and C remain unchanged.

From the client's point of view the ranking numbers will start going 
negative almost immediately, but as long as you treat the lowest (signed) 
value as having the highest priority it shouldn't be a problem. And the 
rankings that actually appear in the feed are always nice small positive 
integers. The rank-offset will get large over time (and I don't see how it 
can be reset), but that's just one tag.


Eric Scheid wrote:
The only way out of this conundrum is that bbc.co.uk will have to update 
the

original #1 and #2 stories and re-rank them as much lower. If they re-rank
them as #46 and #47 then they will need to re-rank any previous entry at
those ranks to lower positions, and similarly for any other entries with
ranks which get pushed down. Eventually the entire history of the feed 
needs

to be re-ranked.

Unless entries can be marked as having no rank. Can they?




Re: FYI: Updated Index draft

2005-09-21 Thread Eric Scheid

On 21/9/05 1:05 PM, "James M Snell" <[EMAIL PROTECTED]> wrote:

> The ranking is part of the entry metadata.  If an entry falls off the
> feed, there is no effect on the ranking metadata.  With partial feed
> retrieval, ordering could be performed over the entire set of entries.

How does this help (eg) bbc.co.uk order their news items in some sensible
manner?

Today, they have a couple of important stories, they indicate those entries
are rank #1, #2. Tomorrow, they have more news, but not more important than
yesterday's big news. The day after they have a new big story, it should be
rank #1. The #1 and #2 stories from two days ago have fallen off the bottom
of the feed. 

The only way out of this conundrum is that bbc.co.uk will have to update the
original #1 and #2 stories and re-rank them as much lower. If they re-rank
them as #46 and #47 then they will need to re-rank any previous entry at
those ranks to lower positions, and similarly for any other entries with
ranks which get pushed down. Eventually the entire history of the feed needs
to be re-ranked.

Unless entries can be marked as having no rank. Can they?

e.