[Developers] mediated properties

Augusto Callejas acallejas at appliedminds.com
Thu Jul 19 17:05:37 UTC 2007


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




More information about the Developers mailing list