SimplePhotoAnnotation
Contents
- Background
- Model summary
- Properties and classes used
- Conclusions
- RDF Examples
- Definitions
Background
Morten Frederiksen, Greg Williams and Libby Miller did some work at Foaf Galway on how we might simplify our models of photo annotation without making them simplistic and losing information. Our current models are complex and can be slow to query - for example a query: 'find me pictures of Morten at FOAF Galway' takes four clauses on an RDQL-like system to query on our ideal model.
The approach we sketched is simple, being almost Dublin-Core-like in structure, although the properties mostly have resources as objects rather than literals, in contrast to much DC data.
The main modelling idiom we used is to reuse property names where the meaning is sufficiently close. This means that the difference between the two triples
foaf:Image foaf:depicts foaf:Person
foaf:Image foaf:depicts cyc:SpatialThing-Localized
is in the type of the node not in the property name. This is in contrast to the InterpretationProperties modelling approach where the distinction is made in the property name. This decision was made principally for ease of querying - you can get everything depicted using a single query.
Model Summary
Here's the model:
foaf:Image foaf:depicts a wordnet:Something foaf:depicts a foaf:Person [some Inverse functional Property e.g. foaf:homepage, foaf:mbox_sha1sum etc] foaf:depicts a cyc:SpatialThing-Localized geo:lat geo:long foaf:name dcterms:spatial a cyc:SpatialThing-Localized geo:lat geo:long foaf:name dc:coverage a cyc:Event [some IFP e.g. foaf:homepage] dc:date "some date"
For Inverse Functional Properties (IFPs) of events, see notes on events and space.
The model is very flat, almost Dublin Core-like, except for in most cases having resources rather than literals as objects. We think that this (relative) simplicity is vital for developers to create tools using it. (We may want to add to this by using an XML profile later).
Properties and classes used
cyc:Event
Note from Greg: This is more of an Events issue, but I'm still a bit wary of the described use of cyc:Event. It works very nicely for conferences and the like, but I'm not sure practically how it would work for things without such an obvious IFP. Any thoughts on this, or is this just a matter of being the best solution for immediate needs? I get the impression that nobody wants to touch this one (including me), because here be dragons.
note from Morten: (Should we add the other stuff from the event session, to show that e.g. a depicted person is an attendee of the event, or leave that separate, in which case rdf-calendar needn't be on the list?)
cyc:SpacialThing-Localized
SpatialThing-Localized in this context are distinguished from things like foaf:Person and wordnet:Cat in that they that have a mostly stable physical location (the distinction is not particularly precise - as it's with respect to some timeframe, but nevertheless it's fairly obvious to most people, we think).
Morten: Hmm, isn't a person also a SpatialThing-Localized, per the example re Frodo?
dcterms:spatial
The distinction between dcterms:spatial and foaf:depicts SpacialThing-Localized is the distinction we wanted to make between the location where the photo was taken and a location it depicts. These could be close together or very far apart (e.g a picture of a mountain). The former is most useful when people use GPS to detect where the camera was when the photo was taken. spacial things will often be identified only by some textual name or in another vague way such as by nearestAirport.
dc:coverage
dc:coverage seemed like an appropriate term to use for an event at which a photo was taken.
note from Morten: I still have a problem with the dc:coverage part, I think, as dcterms:spatial is a sub property of dc:coverage, meaning that you'd end up with two dc:coverage relations, and an Event can have a location. While this is not wrong, it makes it hard to query (without negation). I'd much prefer another property, which can also be a sub property of dc:coverage, to make it possible to do the "wide" query as well as a more specific one like "find me pictures of <this location> taken at <that event>". I don't have a good suggestion for the property name though... Hmm, me thinks again, not sure it's a problem, location of the event is likely to be separated by at least one node, but still, negation, hmmm...
note from libby: dcterms:temporal perhaps better? or did we discuss this? http://dublincore.org/documents/dcmi-terms/
Issues
We weren't sure about several aspects:
- whether not using interpretation properties is the right way to go
- whether we should have an intermediate node, for example cyc:near between SpatialThing-Localized and lat/long to represent the imprecision of this type of measurement.
- how we distinguish between Person and SpatialThing-Localized
- use of dc:coverage (dcterms:temporal?)
- identifying Events where they have no inverse functional property
Conclusions
We'd appeciate any thoughts about this model. It would be really good to decide on a set of useful properties like these, and we are fairly sure that these would work reasonably well and capture a basic set of (non-exif) data that we'd like to see for informal photo cataloging (there are a much wider set of possibilities and useful things we could add for more sophisticated image annotation - see ImageDescriptionFaq for a list of questions we came up with at Foaf Galway).
Examples
Here's an example piece of XML/RDF
<rdf:RDF xmlns:dc="http://purl.org/dc/elements/1.1" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos" xmlns:cyc="http://www.cyc.com/2004/06/04/cyc#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:wn="http://xmlns.com/wordnet/1.6/" xmlns:contact="http://www.w3.org/2000/10/swap/pim/contact#" > <foaf:Image rdf:about="http://swordfish.rdfweb.org/photos/2004/09/02/2004-09-02-Images/41.jpg"> <foaf:thumbnail rdf:resource="http://swordfish.rdfweb.org/photos/2004/09/02/2004-09-02-Thumbnails/41.jpg"/> <foaf:depicts> <cyc:SpatialThing-Localized> <geo:lat>53.272190094</geo:lat> <geo:long>-9.15348539352</geo:long> <foaf:name>Galway</foaf:name> <contact:nearestAirport rdf:resource="http://www.daml.org/cgi-bin/airport?GWY"/> </cyc:SpatialThing-Localized> </foaf:depicts> <dcterms:spatial> <cyc:SpatialThing-Localized> <geo:lat>53.272190094</geo:lat> <geo:long>-9.05348539352</geo:long> <foaf:name>Galway</foaf:name> <contact:nearestAirport rdf:resource="http://www.daml.org/cgi-bin/airport?GWY"/> </cyc:SpatialThing-Localized> </dcterms:spatial> <dc:coverage> <cyc:Event> <foaf:homepage rdf:resource="http://www.w3.org/2001/sw/Europe/events/foaf-galway/"/> </cyc:Event> </dc:coverage> <foaf:depicts> <foaf:Person> <foaf:name>Morten Frederiksen</foaf:name> <foaf:mbox_sha1sum>461179310021b2185ad7f67f14e5d4deb2107c47</foaf:mbox_sha1sum> </foaf:Person> </foaf:depicts> <foaf:depicts> <foaf:Person> <foaf:name>Greg Williams</foaf:name> <foaf:mbox_sha1sum>f80a0f19d2a0897b89f48647b2fb5ca1f0bc1cb8</foaf:mbox_sha1sum> </foaf:Person> </foaf:depicts> <foaf:depicts> <wn:Beer /> </foaf:depicts> </foaf:Image> </rdf:RDF>
An experimental shorter version for the case where depicts and spatial
are the same:
<rdf:RDF xmlns="http://xmlns.com/foaf/0.1/" xmlns:dc="http://purl.org/dc/elements/1.1" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos" xmlns:cyc="http://www.cyc.com/2004/06/04/cyc#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:wn="http://xmlns.com/wordnet/1.6/" xmlns:contact="http://www.w3.org/2000/10/swap/pim/contact#" > <cyc:SpatialThing-Localized rdf:nodeID="#galway"> <geo:lat>53.272190094</geo:lat> <geo:long>-9.05348539352</geo:long> <foaf:name>Galway</foaf:name > <contact:nearestAirport rdf:resource="http://www.daml.org/cgi-bin/airport?GWY"/> </cyc:SpatialThing-Localized> <Image rdf:about="http://swordfish.rdfweb.org/photos/2004/09/02/2004-09-02-Images/41.jpg"> <thumbnail rdf:resource="http://swordfish.rdfweb.org/photos/2004/09/02/2004-09-02-Thumbnails/41.jpg"/> <depicts rdf:nodeID="galway"/> <dcterms:spatial rdf:nodeID="galway"/> <dc:coverage rdf:parseType="Resource"> <homepage rdf:resource="http://www.w3.org/2001/sw/Europe/events/foaf-galway/"/> </dc:coverage> <depicts> <Person> <name>Morten Frederiksen</name> <mbox_sha1sum>461179310021b2185ad7f67f14e5d4deb2107c47</mbox_sha1sum> </Person> </depicts> <depicts> <Person> <name>Greg Williams</name> <mbox_sha1sum>f80a0f19d2a0897b89f48647b2fb5ca1f0bc1cb8</mbox_sha1sum> </Person> </depicts> <depicts> <wn:Beer /> </depicts> </Image> </rdf:RDF>
Definitions
SpatialThing-Localized
A specialization of both #$SpatialThing and #$TemporalThing; the collection of all spatial things, tangible or intangible, that can be meaningfully said to have location or position in the empirically observable universe of the context in question. This includes all #$PartiallyTangible things, such as pyramids and ships, as well as certain #$Intangible spatial things, like the #$Equator. Also included are all #$Events that can be pinned down to specific places (see #$Event-Localized), and thus all #$PhysicalEvents. But note that many events are non-examples, such as the event of a certain law coming into effect and (presumably) purely mental events as well, at least in most contexts. Also excluded are #$SpatialThings that are _not_ localized, such as purely abstract geometrical figures (e.g. a Platonic sphere). All instances of #$SpatialThing-Localized are temporal things, and thus have finite lifespans (the upper bound of which is the lifespan of the universe itself). Finally, note that imaginary entities like Frodo, Captain Queeg, and #$HAL9000-TheComputer may be localized within the (imaginary) universes attaching to the fictitious contexts in which they are defined, and so would be instances of #$SpatialThing-Localized within those microtheoretic contexts.
cyc:Event
An important specialization of #$Situation and thus also of #$IntangibleIndividual and #$TemporallyExistingThing (qq.v). Each instance of #$Event is a dynamic situation in which the state of the world changes; each instance is something one would say happens . Events are intangible because they are changes per se, not tangible objects that effect and undergo changes. Notable specializations of #$Event include #$Event-Localized, #$PhysicalEvent, #$Action, and #$GeneralizedTransfer. #$Events should not be confused with #$TimeIntervals (q.v.). The temporal bounds of events are delineated by time intervals, but in contrast to many events time intervals have no spatial location or extent.
dc:coverage
Coverage will typically include spatial location (a place name or geographic coordinates), temporal period (a period label, date, or date range) or jurisdiction (such as a named administrative entity). Recommended best practice is to select a value from a controlled vocabulary (for example, the Thesaurus of Geographic Names [TGN]) and that, where appropriate, named places or time periods be used in preference to numeric identifiers such as sets of coordinates or date ranges.
dcterms:spatial
Spatial characteristics of the intellectual content of the resource.
foaf:depicts
The foaf:depicts property is a relationship between a foaf:Image and something that the image depicts.
References
- photo rss?