- From: Richard Cyganiak <richard@cyganiak.de>
- Date: Tue, 27 Jul 2010 21:05:02 +0100
- To: Juan Sequeda <juanfederico@gmail.com>
- Cc: Alex Miller <alexdmiller@yahoo.com>, public-rdb2rdf-wg@w3.org
On 27 Jul 2010, at 13:01, Juan Sequeda wrote: > In Revelytix there is the following : > > :StudentCM a map:ClassMap > map:source db:Student; > map:subjectString “http://.../student#Student<s_id>"; > map:class ex:Student > > note that the ClassMap StudentCM has a source which is db:Student. > The way I > understand this is that the relation db:Student is a class No, the relation db:Student is a relation, nothing else. > and we then get > RDF triples such as > > http://.../student#Student<s_id> rdf:type ex:Student > > which means that these are all instances of the ontological class > ex:Student. Yes. > This to me means that ClassMap acts as a predicate that maps a > relation to an ontological class. No. A ClassMap maps the *tuples* in a relation to *individuals* of a class. It does not say anything whatsoever about the class. Most of all it does not *define* the class. For example, there could be another mapping file elsewhere that maps a completely different relation to more individuals of the same class. And yet another mapping file could provide additional properties for the same individuals. Think course DB and library DB of the same school, which both contain data about the same set of ex:Student individuals. Cases like this are common in data integration. Summary: A relation has a fixed set of tuples and a fixed set of attributes. A ClassMap does *not* assert that the target class has only a fixed set of individuals or a fixed set of properties. Hence it does not map the schema, and shouldn't, for the reasons stated above. >> Note that in the case of a mapping to shared vocabularies such as >> FOAF, >> your "instance-plus-schema" approach would generate statements about >> foaf:Person that contradict the FOAF spec, which is highly >> undesirable. > > This is something to discuss then. I haven't thought about this yet. > Could > you give an example. In my DB, I might have ex:Researchers that write ex:Articles. I want to use dc:creator to relate the articles and researchers in my mapping. Now how does your approach deal with such customization, where I want to existing shared vocabularies? Would it state that dc:creator is an owl:ObjectProperty with domain ex:Article and range ex:Researcher? Now that would be false statements. The dc:creator property is not constrained in domain or range, and is simply an rdf:Property. Reflecting the constraints of my *local DB schema* onto the *shared* vocabulary is rarely desirable. I believe that no one ever wants to work with an uncustomized default mapping. The default mapping can be handy as a starting point, and in the case of large schemas, only parts of the schema may ever be hand- mapped to shared vocabularies. But *some* customization, at least of URI generation rules but typically more than that, is always wanted. Best, Richard > >> >> >> For example, Triplify outputs triples without defining that something >>> is a class or something else is a property in the mapping language >>> (SQL). >>> >> >> This is not true, see above. The triples generated by Triplify >> imply that >> certain URIs are classes and properties, thanks to RDF Semantics. >> > > See above :) > > >> >> Best, >> Richard >> >> [1] http://www.w3.org/TR/rdf-mt/ >> >> >> >> >>> However, a class and property definition does appear in >>> the database-instance-and-schema mapping. >>> >>> >>> >>>> >>>> There is no way to formally prove this because both >>>> >>>>> languages don't have existing defined semantics (right?) >>>>> >>>>> >>>> The semantics of the D2RQ language is defined by the >>>> implementation, and >>>> documented in the manual ;-) >>>> >>>> If you talk about *formally* defined semantics, you're right it >>>> doesn't >>>> have it. >>>> >>> >>> >>> Yes, I meant, that the semantics aren't formally defined. >>> >>> >>>> >>>> - Revelytix language has different ways of saying the same thing >>>> for sake >>>> >>>>> of >>>>> query optimization ( right?). (I personally believe this is >>>>> something we >>>>> should avoid. Language and implementation details should be >>>>> separate... >>>>> just >>>>> look at SQL) >>>>> >>>>> >>>> In D2RQ there are a number of instances where one can say the >>>> same thing >>>> in >>>> different ways. This is mostly for author convenience -- >>>> syntactic sugar. >>>> >>>> >>> Yes, we definitely need to have syntactic sugar, but I think (IMO) >>> that >>> different syntaxes shouldn't imply issues in implementation >>> >>> >>>> Best, >>>> Richard >>>> >>>> >>>> >>>> >>>> >>>> Looking forward to Alex's presentation tomorrow! >>>>> >>>>> >>>>> [1] >>>>> >>>>> >>>>> http://www.w3.org/2001/sw/rdb2rdf/wiki/Database-Instance-Only_and_Database-Instances-and-Schema_Mapping >>>>> >>>>> Juan Sequeda >>>>> +1-575-SEQ-UEDA >>>>> www.juansequeda.com >>>>> >>>>> >>>> >>>> >>
Received on Tuesday, 27 July 2010 20:05:39 UTC