Project

General

Profile

Actions

Feature #2961

closed

Accept Selector

Added by Tai-Lin Chu over 9 years ago. Updated almost 7 years ago.

Status:
Abandoned
Priority:
Normal
Assignee:
-
Start date:
Due date:
% Done:

0%

Estimated time:

Description

Introduction

There are two parts in this proposal:

  1. Remove maxSuffixComponent, minSuffixComponent, and exclude
  2. Add "accept"

Accept

Accept deals with suffixes, which are names.

To make sure that we are on the same page, I give one example:

data name: /a/b/c
interest name: /a
suffix: /b/c (a name with 2 components)

Now I define "accept":

Accept ::= ACCEPT-TYPE TLV-LENGTH (Interval)+
Interval ::= INTERVAL-TYPE TLV-LENGTH (Name? Name?) // (Name .. Name)

Note:

  1. These intervals are open.
  2. None of them should overlap, so the form is canonical.
  3. An omitted left open interval is the smallest suffix; an omitted right open interval is the largest suffix. In a interval, the endpoints cannot both be omitted.
  4. Accept deals with the suffix space (not full name).

Accept offers "deep" cuts in the suffix space tree (each interval contains names instead of components). Moreover, it directly specifies the target X instead of excluding NOT X.

Actions #1

Updated by Junxiao Shi over 9 years ago

  • Tracker changed from Task to Feature
  • Subject changed from New selectors to Accept Selector
  • Start date deleted (06/24/2015)

Accpet Selector violates a fundamental principle: the question is in the Name, and Selectors are only used for Name discovery.

Actions #2

Updated by Tai-Lin Chu over 9 years ago

This is because a suffix contains multiple components. I don't think that it violates anything.

Actions #3

Updated by Alex Afanasyev over 9 years ago

Before talking about any implementation details, you should show a use case for the proposal, what are major benefits, and what are the trade offs. Two parts of the proposal are completely orthogonal and require individual motivation and reasoning.

Actions #4

Updated by Tai-Lin Chu over 9 years ago

Accept example

/dataset/{start_timestamp}/{end_timestamp}

With this selector, we can also select on end timestamp. Accept is basically the negation of the exclude selector with more power (more than 1 component) to refine queries.

Reason to remove maxSuffixComponent, minSuffixComponent, and exclude

  1. Accept, which is a generalization of exclude, can replace exclude.
  2. min/maxSuffixComponent can select on "depth" in a suffix space tree. If one thinks that "accept" selects vertically, then these two selectors select horizontally. Therefore, accept + min/maxSuffixComponent gives an area in the suffix space tree; childselector then specifies the order preference within the area (mustbefresh and publisherkeylocator are not related to name tree exploration, and these are all the selectors that we have now). On one hand, min/maxSuffixComponent completes selectors; on the other hand, it does not select much semantically on its own.
Actions #5

Updated by Junxiao Shi over 9 years ago

/dataset/{start_timestamp}/{end_timestamp}

With this selector, we can also select on end timestamp.

This implies the consumer is asking a question in a Selector rather than in the Name, which violates the principle stated in note-1.

Although, I also wonder how a two-variable query can be done in NDN Name.

A different example is /map/{latitude}/{longitude}.

Actions #6

Updated by Tai-Lin Chu over 9 years ago

I may be wrong, but I don't think that it is possible.

A name tree is first explored statically with a name. Then you get a suffix tree, which can only be explored dynamically with selectors.

Actions #7

Updated by Tai-Lin Chu over 9 years ago

  • Description updated (diff)
Actions #8

Updated by Alex Afanasyev almost 7 years ago

  • Status changed from New to Abandoned
Actions

Also available in: Atom PDF