[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