- From: Holger Knublauch <holger@knublauch.com>
- Date: Fri, 21 Aug 2009 15:10:20 -0700
- To: Jesse Wang <JesseW@vulcan.com>, Semantic Web <semantic-web@w3.org>
Hi Jesse, I have seen the requirements you describe several times in the last few days, so I decided to write up a solution in my blog: http://composing-the-semantic-web.blogspot.com/2009/08/ontology-mapping-with-spin-templates.html While I do not know of a standard ontology mapping ontology that meets your requirements, I do have suggestions on how to create one. Given the complexity of the mappings you describe (e.g. string concatenation), you should look into SPARQL CONSTRUCT to define the actual transformations. The SPIN framework [1] has a template mechanism that allows anyone to generalize and share SPARQL queries so that they can be reused conveniently and in an executable format. The result is that the end user simply needs to pick a transformation from a list, fill in the blanks for each transformation pattern, and then run the SPIN engine to "infer" the new triples using SPARQL. Please see the blog entry above for details, screenshots and a worked out example. Regards, Holger [1] http://spinrdf.org On Aug 19, 2009, at 2:14 PM, Jesse Wang wrote: > Dear all - > > I am a beginner in ontology world, and I am looking for a good > ontology for general object relationship mapping, i.e., mapping > properties/fields in tables, forms, templates, or objects in > general. By "good" I mean: it is simple (relative to expressive > power), easy to use, easy to understand, and popular (say other > people are using it or at least know something about). I don't want > to invent something of my own:). > > The user scenarios generally involves mapping between template or > form-generated objects. For example: > > Having a "Member" form and we want to define a mapping to translate/ > transform it into a "Person" form. > > The fields in "Member" and "Person" will be different, containing a > "Name" (can be a whole field or separate fields such as First, > Middle, Last names etc.) and phone numbers (such as mobile, work, > home phone numbers etc.) and so on. > > I want to be able to map, say Person.FirstName + <space> + > Person.LastName ==> Member.(Full)Name, and Member.BusinessPhone ==> > Person.DayTimePhone, Member.HomePhone ==>Person.EveningPhone or > "Person.PhoneList[1]", Person.PhoneList[2] as an array. I also want > to specify which fields are optional vs. mandatory; and it'll be > nice to support structure (hierarchy) and meta-data mapping or > conversion, say from a "Date" type to a "DateTime" type conversion > or to a "String" type coercion, and so on. One thing I need or at > least prefer is to support "functions" in converting, mapping the > fields, as in the example above of name, it can also be parsing a > full US address into separate components such as street, city, > state, postal code and so on... so the function is a mapping > predicate in this scenario. > > A more involved scenario will be the capability to specify some > rules or restrictions such as cardinality and/or priority to map > fields, e.g., from all phone numbers (i.e. a list of Person's phone > numbers) to one phone number, with priority fill the first non-empty > number in a the list. But this is only something nicer to have. > > I found http://www.fedora-commons.org/definitions/1/0/fedora-relsext-ontology.rdfs > meets some of my requirements in that it describes the relationship > between objects, but it is more for _describing_ the relationship > than mapping or construction. OWL and RDFS to me only for describing > too, at an even more abstract and theoretic level to be useful. > > If you have any questions on why I need it and what I need do, > please feel free to ask me. > > Any tips or comments are appreciated. > > Jesse Wang > Vulcan Inc. > 505 5th Ave. S, Suite 900 > Seattle, WA 98104 > Direct Phone: (206) 342-2306 > Direct Fax: (206) 342-3306 > Mobile: (206) 295-6316 > > > > >
Received on Friday, 21 August 2009 22:11:08 UTC