[Developers] mediated properties

Augusto Callejas acallejas at appliedminds.com
Thu Jul 19 22:16:56 UTC 2007


robert-

thanks that does clear it up. going by the definition of the meditator
pattern, does this type qualify as a mediator:

  http://www.freebase.com/view/schema?id=/measurement_unit/rect_size

i wouldn't think so since it only has two properties that are of value
types.

another way to state the question is: are all compound value types mediators
(e.g. opposed to all mediators being compund value types)?

thanks,
augusto.



On 7/19/07 2:59 PM, "Robert Cook" <robert at metaweb.com> wrote:

> Augusto --
> 
> You are asking a very good question.  A "mediator" is a data pattern
> that is represented as a Compound Value Type in Metaweb.  In other
> words, mediators are CVTs that act like an "annotated relationship"
> between two types.  One example is "Marriage", which joins two people
> together that also stores add start and end dates as metadata.
> 
> Currently, we don't have a way to annotate which of the two
> properties represent the "relationship" between two types.  That is,
> a mediator is more of a data idiom that makes sense to the modeler,
> but has no formal representation in the data store.
> 
> We've received feedback similar to yours in the past, and we're
> currently working on a way of making that distinction (while
> simultaneously solving a few other problems.)  We don't yet have an
> ETA, but know that it's a real priority for us.
> 
> Robert
> 
> On Jul 19, 2007, at 2:37 PM, Augusto Callejas wrote:
> 
>> hi-
>> 
>> i ran that query but all properties have value "true"
>> for the "disambiguator" property hint.
>> 
>> from the type documentation:
>> 
>>   Musical Group Membership is a compound value type which defines the
>>   relationship between a Musical Artist (a band or collaboration)
>> and its
>>   Musical Group Members (musicians).
>> 
>> is there a difference when you say it mediates for all of the
>> properties
>> versus when the documentation says it defines relationships between
>> musical artist and group member?  i'm looking for how that
>> relationship
>> is captured in the type information.  since the disambigurator
>> property
>> hint is the same for all properties, it doesn't define the
>> relationship
>> i'm looking for.
>> 
>> thanks,
>> augusto.
>> 
>> 
>> On 7/19/07 10:52 AM, "Darin Wilson" <darin at metaweb.com> wrote:
>> 
>>> Hi Augusto-
>>> 
>>> A mediating type, or complex value type (CVT), actually mediates for
>>> all of the properties that the type contains; however, the type
>>> designer can choose which of those properties should be displayed
>>> when an instance of the type linked from another topic. If you look
>>> at the type definition of /music/group_membership, you'll see that
>>> each of the properties has the "Display as disambiguator" box
>>> checked. This means that the property will be displayed, if the data
>>> is available.
>>> 
>>> If you look at the instance list for /music/group_membership, you'll
>>> see that some of the instances have years and other don't. That's
>>> because the "Period (start)" and/or "Period (end)" properties haven't
>>> been filled out yet. If the data were available, it would be
>>> displayed.
>>> 
>>> http://www.freebase.com/view/filter?id=%2Fmusic%2Fgroup_membership
>>> 
>>> To see this programmatically, you can use the following query. The /
>>> freebase/type_hints/mediator property on the type will tell you if
>>> it's a CVT or not. The /freebase/property_hints/disambiguator on the
>>> properties will tell you if the value of the property should be
>>> displayed.
>>> 
>>> {
>>>    "query":[{
>>>      "id":"/music/group_membership",
>>>      "type":"/type/type",
>>>      "/freebase/type_hints/mediator":null,
>>>      "properties":[{
>>>        "id":null,
>>>        "/freebase/property_hints/disambiguator":null
>>>      }]
>>>    }]
>>> }
>>> 
>>> HTH,
>>> Darin
>>> 
>>> 
>>> On Jul 19, 2007, at 10:05 AM, Augusto Callejas wrote:
>>> 
>>>> hi-
>>>> 
>>>> regarding mediating types, how do i determine what two other types
>>>> it is mediating for?  for instance, there is the complex type:
>>>> 
>>>>   http://freebase.com/view/filter?id=/music/group_membership
>>>> 
>>>> reading the type description reveals that it relates these two
>>>> types:
>>>> 
>>>>   /music/group_member (via property /music/group_membership/member)
>>>>   /music/musical_group (via property /music/group_membership/group)
>>>> 
>>>> how do i determine this programmatically?  at first, i was going to
>>>> use that fact that these two properties have "unique":true, but
>>>> so is the case for two other properties:
>>>> 
>>>>   /music/group_membership/start
>>>>   /music/group_membership/end
>>>> 
>>>> how can i make the distinction?
>>>> 
>>>> thanks,
>>>> augusto.
>>>> 
>>>> 
>>>> On 6/28/07 3:46 PM, "Dae Park" <daepark at metaweb.com> wrote:
>>>> 
>>>>> We perform a "schema query" for each type a topic is an instance
>>>>> which includes a query for each property and their
>>>>> expected_type. If
>>>>> the expected_type is marked as a mediator then we go another ply
>>>>> out
>>>>> and ask for the property's expected_type's disambiguating
>>>>> properties.
>>>>> 
>>>>> {
>>>>>    id: #topic_id
>>>>>    type: [{
>>>>>      id: null,
>>>>>      properties: [{
>>>>>        id: null,
>>>>>        master_property: null,
>>>>>        reverse_property: null,
>>>>>        unique: null,
>>>>>        expected_type: {
>>>>>          id: null,
>>>>>          "/freebase/type_hints/mediator": null,
>>>>>          properties: [{
>>>>>            master_property: null,
>>>>>            reverse_property: null,
>>>>>            id: null,
>>>>>            unique: null,
>>>>>            "/freebase/type_hints/disambiguator": true
>>>>>          }}
>>>>>        }
>>>>>      }]
>>>>>    }]
>>>>> }
>>>>> 
>>>>> When displaying these mediator properties (sub_properties) from a
>>>>> topic's property:
>>>>> 
>>>>> if the topic_property and sub_property are reciprocal of one
>>>>> another:
>>>>> if sub_property is unique:
>>>>> skip
>>>>> else:
>>>>> foreach value in sub-property:
>>>>> if value == topic we're viewing:
>>>>> continue:
>>>>> display value
>>>>> 
>>>>> 
>>>>> Two properties (prop1, prop2) are reciprocal's of one another if:
>>>>> 
>>>>> prop1.reverse_property == prop2
>>>>> or
>>>>> prop2.master_property == prop1
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> On Jun 28, 2007, at 1:15 PM, Steve Sak wrote:
>>>>> 
>>>>>> 
>>>>>> How does the freebase.com "person" web pages "know" to display the
>>>>>> name
>>>>>> of the spouse/sibling or the name of the organization a person
>>>>>> worked
>>>>>> for under "employment history"? Hard-coded?
>>>>>> 
>>>>>> Nick Thompson wrote:
>>>>>>> in general, i don't think your question has a well-defined
>>>>>>> answer -
>>>>>>> there's no reason for the system to believe that
>>>>>>> /business/employment_tenure/company is more relevant than
>>>>>>> /business/employment_tenure/title, for example.  you could be
>>>>>>> looking
>>>>>>> for a list of people at a particular company, in which case
>>>>>>> the job
>>>>>>> title would more interesting.
>>>>>>> 
>>>>>>> so, you might rule out /business/employment_tenure/person from
>>>>>>> context
>>>>>>> as chris described, but that doesn't determine a unique "other
>>>>>>> side".
>>>>>>> that's the nature of compound value types - if a relationship
>>>>>>> only
>>>>>>> had two sides, it would probably be modeled as a single link
>>>>>>> instead
>>>>>>> of being mediated by a compound value object.
>>>>>>> 
>>>>>>>     nick
>>>>>>> 
>>>>>>> Steve Sak wrote:
>>>>>>>> So, if I'm looking at /people/person/employment_history how
>>>>>>>> would I
>>>>>>>> determine that the relevant property is
>>>>>>>> /business/employment_tenure/company?
>>>>>>>> 
>>>>>>>> 
>>>>>>>> Alec Flett wrote:
>>>>>>>>> I want to add that checking by is only valid if you know you're
>>>>>>>>> coming
>>>>>>>>> in and out on the same property (as is the case with marriage)
>>>>>>>>> - if
>>>>>>>>> the properties are different, you need to look at master/
>>>>>>>>> reverse
>>>>>>>>> properties because you can imagine a director who also
>>>>>>>>> produced a
>>>>>>>>> movie - if you were just going by ids, looking at the
>>>>>>>>> relationship of
>>>>>>>>> 
>>>>>>>>> "Who is the /director/ of this movie /produced by/ Martin
>>>>>>>>> Scorsese?" -
>>>>>>>>> you might get Martin Scorsese back, but that doesn't mean that
>>>>>>>>> "director" is the reverse of "produced by".
>>>>>>>>> 
>>>>>>>>> Alec
>>>>>>>>> 
>>>>>>>>> Christopher R. Maden wrote:
>>>>>>>>>> Steve Sak wrote:
>>>>>>>>>> 
>>>>>>>>>>> To restate the question: given a mediator object how do I
>>>>>>>>>>> determine
>>>>>>>>>>> which property is the one it's mediating?  For example,
>>>>>>>>>>> type A
>>>>>>>>>>> has a
>>>>>>>>>>> mediator M that has a bunch of properties mediates between A
>>>>>>>>>>> and
>>>>>>>>>>> another
>>>>>>>>>>> object.  How do I determine which property of M is the one
>>>>>>>>>>> that
>>>>>>>>>>> points
>>>>>>>>>>> to the other object being mediated?
>>>>>>>>>>> 
>>>>>>>>>> Mediators, or compound value types, are not especially
>>>>>>>>>> different
>>>>>>>>>> from any other type; the UI treats them a little differently,
>>>>>>>>>> but
>>>>>>>>>> that¹s it.
>>>>>>>>>> 
>>>>>>>>>> But I think you are asking about instances rather than types,
>>>>>>>>>> correct? In other words, Arnold Schwarzenegger connects to a
>>>>>>>>>> marriage, and that marriage connects to two people, both
>>>>>>>>>> Arnold
>>>>>>>>>> Schwarzenegger and Maria Shriver.  How can you tell which
>>>>>>>>>> of the
>>>>>>>>>> spouses is the one you started from?
>>>>>>>>>> 
>>>>>>>>>> The only way to do that, really, is by looking at the IDs.
>>>>>>>>>> 
>>>>>>>>>> {
>>>>>>>>>>    "query": {
>>>>>>>>>>      "id": null,
>>>>>>>>>>      "name": "Arnold Schwarzenegger",
>>>>>>>>>>      "spouse_s": [
>>>>>>>>>>        {
>>>>>>>>>>          "spouse": [
>>>>>>>>>>            {
>>>>>>>>>>              "id":null,
>>>>>>>>>>              "name":null
>>>>>>>>>>            }
>>>>>>>>>>          ],
>>>>>>>>>>          "type":"/people/marriage"
>>>>>>>>>>        }
>>>>>>>>>>      ],
>>>>>>>>>>      "type":"/people/person"
>>>>>>>>>>    }
>>>>>>>>>> }
>>>>>>>>>> 
>>>>>>>>>> {
>>>>>>>>>>    "result": {
>>>>>>>>>>      "spouse_s": [
>>>>>>>>>>        {
>>>>>>>>>>          "spouse": [
>>>>>>>>>>            {
>>>>>>>>>>              "id": "#9202a8c04000641f80000000001da07e",
>>>>>>>>>>              "name": "Maria Shriver"
>>>>>>>>>>            },
>>>>>>>>>>            {
>>>>>>>>>>              "id": "#9202a8c04000641f8000000000006567",
>>>>>>>>>>              "name": "Arnold Schwarzenegger"
>>>>>>>>>>            }
>>>>>>>>>>          ],
>>>>>>>>>>          "type": "/people/marriage"
>>>>>>>>>>        }
>>>>>>>>>>      ],
>>>>>>>>>>      "type": "/people/person",
>>>>>>>>>>      "id": "#9202a8c04000641f8000000000006567",
>>>>>>>>>>      "name": "Arnold Schwarzenegger"
>>>>>>>>>>    }
>>>>>>>>>> }
>>>>>>>>>> 
>>>>>>>>>> You can see that one of the spouses in the marriage has the
>>>>>>>>>> same ID
>>>>>>>>>> as the person with whom you started, and that the other is
>>>>>>>>>> different.
>>>>>>>>>> 
>>>>>>>>>> Unfortunately, there¹s not really an automatic way to say
>>>>>>>>>> ³get all
>>>>>>>>>> of the values of these properties except the ones that point
>>>>>>>>>> back
>>>>>>>>>> to the parent within the scope of this query.²
>>>>>>>>>> 
>>>>>>>>>> HTH,
>>>>>>>>>> Chris
>>>>>>>>>> 
>>>>>>>> 
>>>>>> 
>>>>>> -- 
>>>>>> Steven G Sak
>>>>>> Applied Minds, Inc.
>>>>>> 11718 Bowman Green Drive
>>>>>> Reston, Virginia 20190
>>>>>> o: (703) 483-2207
>>>>>> c: (703) 626-2557
>>>>>> 
>>>>>> _______________________________________________
>>>>>> Developers mailing list
>>>>>> Developers at freebase.com
>>>>>> http://lists.freebase.com/mailman/listinfo/developers
>>>>> 
>>>>> _______________________________________________
>>>>> Developers mailing list
>>>>> Developers at freebase.com
>>>>> http://lists.freebase.com/mailman/listinfo/developers
>>>> 
>>>> 
>>>> _______________________________________________
>>>> Developers mailing list
>>>> Developers at freebase.com
>>>> http://lists.freebase.com/mailman/listinfo/developers
>>> 
>>> _______________________________________________
>>> Developers mailing list
>>> Developers at freebase.com
>>> http://lists.freebase.com/mailman/listinfo/developers
>> 
>> 
>> _______________________________________________
>> Developers mailing list
>> Developers at freebase.com
>> http://lists.freebase.com/mailman/listinfo/developers
> 




More information about the Developers mailing list