[Data-modeling] CVTs: relations as first-class object

John Giannandrea jg at metaweb.com
Sun Feb 24 00:39:57 UTC 2008


Jeff Thompson wrote:
> The CVT is a true unappreciated star of Freebase.  A CVT is usually  
> introduced
> reluctantly to solve a problem, as if it is somehow a failure of the
> original type design that, "Oh, well, I guess we now have to use a  
> CVT."

Hi Jeff,
CVTs are like any indirection, they add a lot of power and incur a  
significant cost.

> But since "Employment Tenure" is a first-class relation, you can  
> center the
> query on the relation:
> {
>  "query" : [
>    {
>      "company" : null,
>      "person" : "Robert Cook",
>      "title" : null,
>      "title~=" : "Director",
>      "type" : "/business/employment_tenure"
>    }
>  ]
> }

This works fine, but when you want to constrain further by education  
or birth date, its easier to understand if you start at the person.

> Likewise, for the topic-centered query, if I ask for a property like  
> this:
> {
>  "query" : [
>    {
>      "name" : "Robert Cook",
>      "type" : "/people/person",
>      "weight_kg" : null
>    }
>  ]
> }
> then MQL should think of the property as a "virtual" relation CVT as  
> if I had written:

This is a good idea, and we have been contemplating a feature where  
any property could expand to be a subclause.  The implementation  
details though are quite complex.

Id be happy to talk to you more about these ideas in person.

-jg




More information about the Data-modeling mailing list