[Developers] Question about the backend software and data
Shawn Simister
narphorium at gmail.com
Mon Oct 8 06:18:56 UTC 2007
To me, that doesn't sound restrictive enough. It doesn't restrict a
property like place_of_birth from having a JobTitle value applied to it,
nor does it prevent someone from assigning multiple, conflicting
Location values to it. Neither of those errors would be possible in the
Freebase type system. I would prefer that we use universal restrictions
(owl:allValuesFrom) instead of existential restrictions as well as
cardinality restrictions where necessary.
I'm not trying to argue this to death, I just don't yet understand why
anyone would need the ontology to be so loosely defined.
Kavitha Srinivas wrote:
> 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