[Developers] Question about the backend software and data

Kavitha Srinivas ksrinivs at gmail.com
Mon Oct 8 01:52:33 UTC 2007


All an existential restriction says is that a Person has a place of  
birth whose value is Location.  If a person is specified with no  
actual place of birth value (e.g., that slot is not filled in  
Freebase), its fine, because OWL reasoners operate under the open  
world assumption (i.e., every Person has a place of birth, but it may  
or may not be known yet).
Kavitha

On Oct 5, 2007, at 7:44 PM, Shawn Simister wrote:

> Maybe I'm misunderstanding how an OWL reasoner would interpret  
> these assertions but to me there seems to be a significant  
> difference in the way this ontology models the data and the way  
> that it is represented in Freebase. For example, in Freebase a  
> Person object can have one or no place_of_birth properties and that  
> property must be of the type Location. In the ontology that you  
> have proposed I would interpret that same relationship as: a Person  
> can have any number of place_of_birth properties as long as one of  
> them is of type Location. I don't think that these two definitions  
> are compatible.
>
> Shawn
>
> Kavitha Srinivas wrote:
>> Yes it does!
>> Kavitha
>>
>> On Oct 5, 2007, at 11:59 AM, Shawn Simister wrote:
>>
>>> So just to clarify what you are suggesting. Does this refactored  
>>> person ontology illustrate the changes that you have described  
>>> below?
>>>
>>> Kavitha Srinivas wrote:
>>>> Hi Shawn
>>>>    I don't think I was clear about what I was proposing in my  
>>>> previous message.  Here's what I was saying:
>>>>
>>>> 1.  Avoid functional properties and cardinality restrictions  
>>>> (cardinality restrictions are a generalized form of functional  
>>>> properties), unless you want to be able to make the sorts of  
>>>> inferences I described earlier.
>>>> 2.  I was proposing removing the domain/range restrictions  
>>>> because they are global restrictions (precisely for the reasons  
>>>> you describe, that is, many types may share the same property,  
>>>> so domain and range applied globally is inappropriate).   
>>>> Instead, I was suggesting modeling the same link between  
>>>> properties and types as existential restrictions.
>>>>
>>>> Concretely as an example from your people.owl file, we have a  
>>>> type of modeling [A]:
>>>>
>>>>    <owl:ObjectProperty rdf:ID="place_of_birth">
>>>>       <rdfs:domain rdf:resource="#Person"/>
>>>>       <rdfs:range rdf:resource="http://www.freebase.com/owl/ 
>>>> location#Location"/>
>>>>       <rdf:type rdf:resource="&owl;FunctionalProperty"/>
>>>>     </owl:ObjectProperty>
>>>>     <owl:ObjectProperty rdf:ID="nationality">
>>>>       <rdfs:domain rdf:resource="#Person"/>
>>>>       <rdfs:range rdf:resource="http://www.freebase.com/owl/ 
>>>> location#Country"/>
>>>>     </owl:ObjectProperty>
>>>>
>>>> What I am proposing is an alternative type of modeling [B]:
>>>>     Person is a subclass of \exists.place_of_birth{Location} AND  
>>>> \exists.nationality{Country}
>>>>
>>>> Logically, [B] is saying that if you are a person, you must have  
>>>> a place of birth property that has a type of Location and  
>>>> nationality property that has a type of Country (although the  
>>>> specific instance may not actually be specified in the data).   
>>>> Using local constraints like those in [B], one can avoid the  
>>>> problem in [A] of specifying the constraints globally.  As you  
>>>> noted, [A] poses a problem when several types share the same  
>>>> property.  This is why a lot of life sciences OWL models choose  
>>>> [B].  Note, that [B] could be automatically generated from  
>>>> freebase, just the same way you are generating [A].  Your point  
>>>> about automatically generating models from Freebase is well  
>>>> taken.  I agree with that completely.
>>>>
>>>> Kavitha
>>>>
>>>>
>>>> On Oct 5, 2007, at 1:36 AM, Shawn Simister wrote:
>>>>
>>>>> Thanks for the feedback. I can see what you mean about the  
>>>>> functional properties so I'll switch those over to cardinality  
>>>>> restrictions. With respect to placing existential restrictions  
>>>>> on certain properties, I don't think that that will be feasible  
>>>>> for a couple of reasons.
>>>>>
>>>>> First of all, I'm not aware of any such restrictions in the  
>>>>> Freebase type system (although it might be nice to have them),  
>>>>> so if I were to add these sorts of restrictions to ontologies  
>>>>> there would be no guarantee that future RDF dumps of the  
>>>>> Freebase data would actually conform to those ontologies.
>>>>>
>>>>> Secondly, due to the fact that there are no explicit  
>>>>> existential restrictions on any of the Freebase properties I  
>>>>> would have to enter these restrictions by hand which is not  
>>>>> easy given the growing number of types within Freebase. Even if  
>>>>> someone where to model all these restrictions by hand,  
>>>>> maintaining them over time as the types change would be a  
>>>>> challenge.
>>>>>
>>>>> One other issue that I have just noticed is that some domains  
>>>>> have multiple types which have properties with the same names.  
>>>>> For example, In the /measurement_unit domain, both DatedInteger  
>>>>> and CountAsOfDate have a property named number. This causes a  
>>>>> naming collision in some of the OWL ontologies. My first  
>>>>> instinct was to simply merge the two properties into a single  
>>>>> property which shares the domains and ranges of both  
>>>>> properties.  The down side to this is that we would be making a  
>>>>> naive assumption about the similarity of the properties being  
>>>>> merged.
>>>>>
>>>>> An alternate approach would be to model each Freebase type as a  
>>>>> separate OWL file so that each type has a unique URI. I think  
>>>>> that this approach is probably safer in the long run but I'd  
>>>>> appreciate any input on what people think is a better design.
>>>>>
>>>>> Shawn
>>>>>
>>>>> Kavitha Srinivas wrote:
>>>>>> Shawn
>>>>>>   This is really very good.  I had a couple of suggestions:
>>>>>> (a) Avoid usage of functional properties for integrity  
>>>>>> constraints and use them instead for when you'd like to  
>>>>>> discover something.  For instance, let's assume that you  
>>>>>> marriedTo is a functional property, so that if the same person  
>>>>>> A is married to two people B and C then
>>>>>> you want to infer B and C are the same person.
>>>>>> (b) Another pattern you've used is to model domain and ranges  
>>>>>> for all properties of a Person (e.g., Place of Birth, etc).   
>>>>>> This is fine, but I don't know if you want to capture the fact  
>>>>>> that any Person always has a Place of Birth (but we may not  
>>>>>> necessarily know what that place might be).  That is, Person  
>>>>>> can be modeled as an existential restriction  
>>>>>> (exists.PlaceOfBirth{Location}).  This latter form of modeling  
>>>>>> is a commonly adopted pattern in many large life sciences  
>>>>>> ontologies.
>>>>>>
>>>>>> Kavitha
>>>>>>
>>>>>> On Oct 3, 2007, at 5:40 AM, Shawn Simister wrote:
>>>>>>
>>>>>>> I've just put together a first attempt at representing the  
>>>>>>> Freebase type system as OWL ontologies. There's still some  
>>>>>>> work to be done but I figured I'd give you guys an update and  
>>>>>>> hopefully get some feedback on how I'm modeling these domains  
>>>>>>> in OWL.
>>>>>>>
>>>>>>> You can download it at http://www.simister.ca/temp/freebase- 
>>>>>>> owl-03-10-07.zip. The way that it's set up right now is one  
>>>>>>> OWL ontology per file per Freebase domain. Let me know what  
>>>>>>> you think.
>>>>>>>
>>>>>>> Shawn
>>>>>>>
>>>>>>> Kavitha Srinivas wrote:
>>>>>>>> Not really, am in interested in modeling issues rather than  
>>>>>>>> a specific domain.  Thanks!
>>>>>>>> Kavitha
>>>>>>>>
>>>>>>>> On Sep 30, 2007, at 4:24 PM, Shawn Simister wrote:
>>>>>>>>
>>>>>>>>> I'm just putting together a new version of the ontology now  
>>>>>>>>> which I will make available on my website. Is there a  
>>>>>>>>> particular domain that you want to see? Right now I'm just  
>>>>>>>>> focusing on the 67 or so main Freebase domains.
>>>>>>>>>
>>>>>>>>> Shawn
>>>>>>>>>
>>>>>>>>> Kavitha Srinivas wrote:
>>>>>>>>>> Is Shawn's OWL ontology available somewhere?
>>>>>>>>>> Kavitha
>>>>>>>>>>
>>>>>>>>>> On Sep 28, 2007, at 9:52 PM, John Giannandrea wrote:
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>> Kirrily Robert wrote:
>>>>>>>>>>>
>>>>>>>>>>>> To me, RDF sounds like it meets those criteria.
>>>>>>>>>>>>
>>>>>>>>>>> I agree that an RDF dump of the data makes sense.
>>>>>>>>>>> There are important details though, like how to represent
>>>>>>>>>>> the schema.  Shawn Simister previously posted about
>>>>>>>>>>> creating an OWL ontology from the freebase types, rather
>>>>>>>>>>> than using RDF Schema, which seemed sensible.
>>>>>>>>>>>
>>>>>>>>>>> The key point was that Shawn was able to extract the data
>>>>>>>>>>> and turn it into those formats, using HTTP, MQL and JSON.
>>>>>>>>>>>
>>>>>>>>>>> -jg
>>>>>>>>>>>
>>>>>>>>>>> _______________________________________________
>>>>>>>>>>> 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
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>
>>>>
>>>
>>> <?xml version="1.0" encoding="ISO-8859-1"?>
>>> <!DOCTYPE rdf:RDF [
>>>   <!ENTITY owl "http://www.w3.org/2002/07/owl#" >
>>>   <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
>>>   <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
>>>   <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
>>> ]>
>>> <rdf:RDF
>>>     xmlns="http://www.freebase.com/owl/people/person#"
>>>     xmlns:owl="http://www.w3.org/2002/07/owl#"
>>>     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
>>>     xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
>>>     xmlns:xsd="http://www.w3.org/2001/XMLSchema#">
>>>     <owl:Ontology rdf:about="" />
>>>     <owl:Class rdf:ID="Person">
>>>       <rdfs:subClassOf rdf:resource="http://www.freebase.com/owl/ 
>>> common/topic#Topic" />
>>>       <rdfs:subClassOf>
>>>         <owl:Restriction>
>>>           <owl:onProperty rdf:resource="#date_of_birth" />
>>>           <owl:someValuesFrom rdf:resource="&xsd;dateTime" />
>>>         </owl:Restriction>
>>>       </rdfs:subClassOf>
>>>       <rdfs:subClassOf>
>>>         <owl:Restriction>
>>>           <owl:onProperty rdf:resource="#place_of_birth" />
>>>           <owl:someValuesFrom rdf:resource="http:// 
>>> www.freebase.com/owl/location/location#Location" />
>>>         </owl:Restriction>
>>>       </rdfs:subClassOf>
>>>       <rdfs:subClassOf>
>>>         <owl:Restriction>
>>>           <owl:onProperty rdf:resource="#nationality" />
>>>           <owl:someValuesFrom rdf:resource="http:// 
>>> www.freebase.com/owl/location/country#Country" />
>>>         </owl:Restriction>
>>>       </rdfs:subClassOf>
>>>       <rdfs:subClassOf>
>>>         <owl:Restriction>
>>>           <owl:onProperty rdf:resource="#religion" />
>>>           <owl:someValuesFrom rdf:resource="http:// 
>>> www.freebase.com/owl/religion/religion#Religion" />
>>>         </owl:Restriction>
>>>       </rdfs:subClassOf>
>>>       <rdfs:subClassOf>
>>>         <owl:Restriction>
>>>           <owl:onProperty rdf:resource="#gender" />
>>>           <owl:someValuesFrom rdf:resource="http:// 
>>> www.freebase.com/owl/people/gender#Gender" />
>>>         </owl:Restriction>
>>>       </rdfs:subClassOf>
>>>       <rdfs:subClassOf>
>>>         <owl:Restriction>
>>>           <owl:onProperty rdf:resource="#metaweb_user_s" />
>>>           <owl:someValuesFrom rdf:resource="http:// 
>>> www.freebase.com/owl/freebase/user_profile#UserProfile" />
>>>         </owl:Restriction>
>>>       </rdfs:subClassOf>
>>>       <rdfs:subClassOf>
>>>         <owl:Restriction>
>>>           <owl:onProperty rdf:resource="#parents" />
>>>           <owl:someValuesFrom rdf:resource="#Person" />
>>>         </owl:Restriction>
>>>       </rdfs:subClassOf>
>>>       <rdfs:subClassOf>
>>>         <owl:Restriction>
>>>           <owl:onProperty rdf:resource="#children" />
>>>           <owl:someValuesFrom rdf:resource="#Person" />
>>>         </owl:Restriction>
>>>       </rdfs:subClassOf>
>>>       <rdfs:subClassOf>
>>>         <owl:Restriction>
>>>           <owl:onProperty rdf:resource="#employment_history" />
>>>           <owl:someValuesFrom rdf:resource="http:// 
>>> www.freebase.com/owl/business/employment_tenure#EmploymentTenure" />
>>>         </owl:Restriction>
>>>       </rdfs:subClassOf>
>>>       <rdfs:subClassOf>
>>>         <owl:Restriction>
>>>           <owl:onProperty rdf:resource="#signature" />
>>>           <owl:someValuesFrom rdf:resource="http:// 
>>> www.freebase.com/owl/common/image#Image" />
>>>         </owl:Restriction>
>>>       </rdfs:subClassOf>
>>>       <rdfs:subClassOf>
>>>         <owl:Restriction>
>>>           <owl:onProperty rdf:resource="#spouse_s" />
>>>           <owl:someValuesFrom rdf:resource="http:// 
>>> www.freebase.com/owl/people/marriage#Marriage" />
>>>         </owl:Restriction>
>>>       </rdfs:subClassOf>
>>>       <rdfs:subClassOf>
>>>         <owl:Restriction>
>>>           <owl:onProperty rdf:resource="#sibling_s" />
>>>           <owl:someValuesFrom rdf:resource="http:// 
>>> www.freebase.com/owl/people/ 
>>> sibling_relationship#SiblingRelationship" />
>>>         </owl:Restriction>
>>>       </rdfs:subClassOf>
>>>       <rdfs:subClassOf>
>>>         <owl:Restriction>
>>>           <owl:onProperty rdf:resource="#weight_kg" />
>>>           <owl:someValuesFrom rdf:resource="&xsd;float" />
>>>         </owl:Restriction>
>>>       </rdfs:subClassOf>
>>>       <rdfs:subClassOf>
>>>         <owl:Restriction>
>>>           <owl:onProperty rdf:resource="#height_meters" />
>>>           <owl:someValuesFrom rdf:resource="&xsd;float" />
>>>         </owl:Restriction>
>>>       </rdfs:subClassOf>
>>>       <rdfs:subClassOf>
>>>         <owl:Restriction>
>>>           <owl:onProperty rdf:resource="#education" />
>>>           <owl:someValuesFrom rdf:resource="http:// 
>>> www.freebase.com/owl/education/education#Education" />
>>>         </owl:Restriction>
>>>       </rdfs:subClassOf>
>>>       <rdfs:subClassOf>
>>>         <owl:Restriction>
>>>           <owl:onProperty rdf:resource="#profession" />
>>>           <owl:someValuesFrom rdf:resource="http:// 
>>> www.freebase.com/owl/people/profession#Profession" />
>>>         </owl:Restriction>
>>>       </rdfs:subClassOf>
>>>       <rdfs:subClassOf>
>>>         <owl:Restriction>
>>>           <owl:onProperty rdf:resource="#quotations" />
>>>           <owl:someValuesFrom rdf:resource="http:// 
>>> www.freebase.com/owl/media_common#Quotation" />
>>>         </owl:Restriction>
>>>       </rdfs:subClassOf>
>>>       <rdfs:subClassOf>
>>>         <owl:Restriction>
>>>           <owl:onProperty rdf:resource="#places_lived" />
>>>           <owl:someValuesFrom rdf:resource="http:// 
>>> www.freebase.com/owl/people/place_lived#PlaceLived" />
>>>         </owl:Restriction>
>>>       </rdfs:subClassOf>
>>>     </owl:Class>
>>>
>>>     <owl:DatatypeProperty rdf:ID="date_of_birth"/>
>>>     <owl:ObjectProperty rdf:ID="place_of_birth" />
>>>     <owl:ObjectProperty rdf:ID="nationality" />
>>>     <owl:ObjectProperty rdf:ID="religion" />
>>>     <owl:ObjectProperty rdf:ID="gender" />
>>>     <owl:ObjectProperty rdf:ID="metaweb_user_s">
>>>       <owl:inverseOf rdf:resource="http://www.freebase.com/owl/ 
>>> freebase/person#person" />
>>>     </owl:ObjectProperty>
>>>     <owl:ObjectProperty rdf:ID="parents">
>>>       <owl:inverseOf rdf:resource="#children" />
>>>     </owl:ObjectProperty>
>>>     <owl:ObjectProperty rdf:ID="children">
>>>       <owl:inverseOf rdf:resource="#parents" />
>>>     </owl:ObjectProperty>
>>>     <owl:ObjectProperty rdf:ID="employment_history">
>>>       <owl:inverseOf rdf:resource="http://www.freebase.com/owl/ 
>>> business/employment_tenure#person" />
>>>     </owl:ObjectProperty>
>>>     <owl:ObjectProperty rdf:ID="signature" />
>>>     <owl:ObjectProperty rdf:ID="spouse_s">
>>>       <owl:inverseOf rdf:resource="http://www.freebase.com/owl/ 
>>> people/marriag#spouse" />
>>>     </owl:ObjectProperty>
>>>     <owl:ObjectProperty rdf:ID="sibling_s">
>>>       <owl:inverseOf rdf:resource="http://www.freebase.com/owl/ 
>>> people/sibling_relationship#sibling" />
>>>     </owl:ObjectProperty>
>>>     <owl:DatatypeProperty rdf:ID="weight_kg">
>>>       <rdfs:comment><![CDATA[Weight in kilograms]]></rdfs:comment>
>>>     </owl:DatatypeProperty>
>>>     <owl:DatatypeProperty rdf:ID="height_meters">
>>>       <rdfs:comment><![CDATA[Height in meters]]></rdfs:comment>
>>>     </owl:DatatypeProperty>
>>>     <owl:ObjectProperty rdf:ID="education">
>>>       <owl:inverseOf rdf:resource="http://www.freebase.com/owl/ 
>>> education#student" />
>>>     </owl:ObjectProperty>
>>>     <owl:ObjectProperty rdf:ID="profession">
>>>       <owl:inverseOf rdf:resource="http://www.freebase.com/owl/ 
>>> people/profession#people_with_this_profession" />
>>>     </owl:ObjectProperty>
>>>     <owl:ObjectProperty rdf:ID="quotations">
>>>       <owl:inverseOf rdf:resource="http://www.freebase.com/owl/ 
>>> media_common/quotation#author" />
>>>     </owl:ObjectProperty>
>>>     <owl:ObjectProperty rdf:ID="places_lived">
>>>       <owl:inverseOf rdf:resource="/people/place_lived#person" />
>>>     </owl:ObjectProperty>
>>> </rdf:RDF>
>>
>>
>



More information about the Developers mailing list