funginstitute / disambiguator

Other
28 stars 17 forks source link

Blocking on non-name attributes #5

Open markhuberty opened 11 years ago

markhuberty commented 11 years ago

The default implementation appears to have disabled blocking on set objects like coauthor or class (in attribute.h, about line 932 or so):

/**
 * Attribute_Set_Intermediary:
 * Third layer of the attribute hierarchy. Specifically
 * designed to handle the data storage issue.
 */
template < typename AttribType >
class Attribute_Set_Intermediary : public Attribute_Intermediary<AttribType> {

private:

   /**
    * Private:
    * static vector < const string * > temporary_storage:
    * static member temporarily used for data loading.
    */
    static vector < const string * > temporary_storage;

protected:

   /**
    * vector < const string * > & get_data_modifiable():
    * still used for data loading only.
    */
    vector < const string * > & get_data_modifiable() {
      return temporary_storage;
    }

public:

   /**
    * const vector < const string * > & get_data() const:
    * override the base function and throw an error,
    * indicating that this function should be forbidden
    * for this class and its child classes.
    */
    const vector < const string * > & get_data() const {
      throw cException_Invalid_Function("Function Disabled");
    }
};

This is problematic for blocking on anything other than a pure string value (e.g., block on patents that share at least 2 IPC codes, 2 coauthors, etc).

Is re-implementing this feature possible/wise?

doolin commented 11 years ago

possible, almost surely; wise, not clear yet.

The underlying issue is conflating attributes of records with features of similarity vectors. From an implementation pov, these need to be different.

I'll have time this weekend to dig deeper, let me know.

Sent from my iPhone

On Mar 7, 2013, at 7:04 AM, Mark Huberty notifications@github.com wrote:

The default implementation appears to have disabled blocking on set objects like coauthor or class (in attribute.h, about line 932 or so):

/**

  • Attribute_Set_Intermediary:
  • Third layer of the attribute hierarchy. Specifically
  • designed to handle the data storage issue. */ template < typename AttribType > class Attribute_Set_Intermediary : public Attribute_Intermediary {

private:

/* * Private: * static vector < const string * > temporary_storage: * static member temporarily used for data loading. / static vector < const string * > temporary_storage;

protected:

/* * vector < const string * > & get_data_modifiable(): * still used for data loading only. / vector < const string * > & get_data_modifiable() { return temporary_storage; }

public:

/* * const vector < const string * > & get_data() const: * override the base function and throw an error, * indicating that this function should be forbidden * for this class and its child classes. / const vector < const string * > & get_data() const { throw cException_Invalid_Function("Function Disabled"); } }; This is problematic for blocking on anything other than a pure string value (e.g., block on patents that share at least 2 IPC codes, 2 coauthors, etc).

Is re-implementing this feature possible/wise?

— Reply to this email directly or view it on GitHub.