[Developers] Question about the backend software and data
Shawn Simister
narphorium at gmail.com
Fri Oct 5 23:44:48 UTC 2007
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