Hello
I removed the translation tables references and the problem still happens,
in the same way. I'm reporting the bug.
That being said: Having two d2rq:Databases in a single mapping file isn't
> really supported by the D2RQ SPARQL-to-SQL engine. It may or may not work,
> depending on rather random factors. But still, the choice of expansion for
> the "map:" prefix shouldn't affect the generated query.
>
Well, is there any plans to officially support this? It is really useful for
us that do data integration. When I read this [1] paper I thought they were
doing exactly that.
What would a better for mapping two databases on the same RDF classes and
properties? Having one d2r-server for each database, then joining all
results together?
thanks.
[1] http://portal.acm.org/citation.cfm?id=1645619
>
> Best,
> Richard
>
>
>
>
> On 26 Nov 2010, at 16:45, Diogo FC Patrao wrote:
>
> Hello
>>
>> Well, I just ran into a rather strange behavior. I'm using the
>> translationClass to populate the class vocab:Paciente by two different
>> databases. However, depending on the @prefix, it will have different
>> behavior to this query:
>>
>> SELECT DISTINCT * WHERE {
>> ?s a vocab:Paciente.
>> ?s vocab:temMicrofilme ?micro.
>>
>> }
>> LIMIT 10
>>
>>
>> 1) if @prefix map: points to "a.n3", it will try to solve one query that
>> join two different databases:
>>
>> 14:28:06 INFO ResponseHttp :: Error: URI = sparql : Table
>> 'DBAMV.PACIENTE' doesn't exist: SELECT DISTINCT `T2_prontuario`.`id`,
>> `T2_prontuario`.`microfilmado` FROM `DBAMV`.`PACIENTE` AS
>> `T1_DBAMV_PACIENTE`, `prontuario` AS `T2_prontuario` WHERE
>> `T1_DBAMV_PACIENTE`.`CD_PACIENTE` = `T2_prontuario`.`id` (E0)
>>
>> 2) if @prefix map: points to "b.n3", or any file that don't exists, it
>> will
>> work perfectly:
>>
>> 14:37:39 DEBUG QueryExecutionIterator :: SELECT DISTINCT
>> `T2_prontuario`.`id`, `T2_prontuario`.`microfilmado` FROM `prontuario` AS
>> `T1_prontuario`, `prontuario` AS `T2_prontuario` WHERE
>> `T1_prontuario`.`id`
>> = `T2_prontuario`.`id`
>>
>>
>> I tried to create a b.n3, which only difference from the file below is the
>> mentioned @prefix.
>>
>> I'll appreciate any help, I'm clueless!
>>
>>
>> Below is my /opt/d2r-server-0.7/a.n3 file.
>>
>> @prefix map: <file:/opt/d2r-server-0.7/a.n3#> .
>> @prefix db: <> .
>> @prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
>> @prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
>> @prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
>> @prefix d2rq: <http://www.wiwiss.fu-berlin.de/suhl/bizer/D2RQ/0.1#> .
>> @prefix jdbc: <http://d2rq.org/terms/jdbc/> .
>> @prefix vocab: <http://localhost:2020/vocab/resource/> .
>>
>> map:database_s1 a d2rq:Database;
>> d2rq:jdbcDriver "oracle.jdbc.OracleDriver";
>> d2rq:jdbcDSN "jdbc:oracle:thin:@xxxxxxx/xxxx";
>> d2rq:username "xxxxxx";
>> d2rq:password "xxxxxx";
>> .
>>
>> map:minha_translation_table a d2rq:TranslationTable;
>> d2rq:javaClass "meuteste.teste2".
>>
>> map:minha_translation_table_2 a d2rq:TranslationTable;
>> d2rq:javaClass "meuteste.teste3".
>>
>>
>> map:Paciente a d2rq:ClassMap;
>> d2rq:dataStorage map:database_s1;
>> d2rq:uriPattern "PACIENTE/@@XXXXX.PACIENTE.CD_PACIENTE@@";
>> d2rq:class vocab:Paciente;
>> d2rq:classDefinitionLabel "Paciente";
>> d2rq:translateWith map:minha_translation_table;
>> .
>>
>>
>> map:paciente_rgh a d2rq:PropertyBridge;
>> d2rq:belongsToClassMap map:Paciente;
>> d2rq:property vocab:temRghEstiloMv;
>> d2rq:column "XXXX.PACIENTE.CD_PACIENTE";
>> d2rq:datatype xsd:int;
>> .
>>
>> map:database_same2 a d2rq:Database;
>> d2rq:jdbcDriver "com.mysql.jdbc.Driver";
>> d2rq:jdbcDSN "jdbc:mysql://XXXX:3306/XXXX";
>> d2rq:username "xxxx";
>> d2rq:password "xxxx";
>> .
>>
>>
>> map:PacienteSame2 a d2rq:ClassMap;
>> d2rq:dataStorage map:database_same2;
>> d2rq:uriPattern "PACIENTE/@@prontuario.id@@";
>> d2rq:class vocab:Paciente;
>> d2rq:classDefinitionLabel "Paciente";
>> d2rq:translateWith map:minha_translation_table_2;
>> .
>>
>> map:paciente_tem_microfilme a d2rq:PropertyBridge;
>> d2rq:belongsToClassMap map:PacienteSame2;
>> d2rq:property vocab:temMicrofilme;
>> d2rq:propertyDefinitionLabel "microfilmado?";
>> d2rq:column "prontuario.microfilmado";
>> .
>>
>>
>>
>>
>> Diogo F.C. Patrão
>> Manager of Medical Informatics
>> Biotechnology Laboratory
>> Hospital A.C. Camargo
>> http://www.accamargo.org.br/
>>
>>
>> On Fri, Nov 26, 2010 at 9:06 AM, Richard Cyganiak <[email protected]
>> >wrote:
>>
>> On 25 Nov 2010, at 20:32, Diogo FC Patrao wrote:
>>>
>>> Murphy's law #1: just after you bother someone, the answer pops up!
>>>>
>>>> map:minha_translation_table a d2rq:TranslationTable;
>>>> d2rq:javaClass "meuteste.teste2".
>>>>
>>>> it worked !
>>>>
>>>>
>>> Great to hear that!
>>>
>>> Best,
>>> Richard
>>>
>>>
>>>
>>>
>>>
>>>>
>>>> Diogo F.C. Patrão
>>>> Manager of Medical Informatics
>>>> Biotechnology Laboratory
>>>> Hospital A.C. Camargo
>>>> http://www.accamargo.org.br/
>>>>
>>>>
>>>> On Thu, Nov 25, 2010 at 5:53 PM, Diogo FC Patrao <[email protected]
>>>>
>>>>> wrote:
>>>>>
>>>>
>>>> Hello all
>>>>
>>>>>
>>>>> I'm building a data integration system for three patient databases: one
>>>>> in
>>>>> Oracle, other in Interbase, other in MySQL.
>>>>>
>>>>> Each one identifies the same patient by a somewhat different ID, so we
>>>>> wrote a Java function that maps all IDs to a new, unified, code (let's
>>>>> call
>>>>> it the unified id, and the others the local ids).
>>>>>
>>>>> The perfect situation would be to get the unified id directly from the
>>>>> database, so I would unify all patient data with it. However
>>>>>
>>>>> - The function is pretty extensive and I would like to avoid to
>>>>> reimplement
>>>>> it on the different dialects of SQL above;
>>>>>
>>>>> - I don't control 2 of the 3 databases, so I can't easily add some
>>>>> library
>>>>> that allows the database to access the Java function (and I don't even
>>>>> know
>>>>> if there is such thing! for mysql, afaik*, is no picnic);
>>>>>
>>>>>
>>>>> Alternative 1) So, is there a way I can refer to this function in the
>>>>> mapping file, like:
>>>>>
>>>>> map_xunfa:Conversor a d2rq:ClassMap;
>>>>> d2rq:dataStorage map_xunfa:database;
>>>>> d2rq:uriPattern "Patient/@@br.accamargo.my_function(
>>>>> PACIENTE.LOCAL_ID )@@";
>>>>> d2rq:class vocab:Patient;
>>>>> .
>>>>>
>>>>>
>>>>> Alternative 2) I would map the results of the function into a class.
>>>>> Imagine that I produce a table with static contents produced by the
>>>>> function:
>>>>>
>>>>> Unique_id local_id_1 local_id_2 local_id_3
>>>>> 99999999 9 2828123 42341235
>>>>> ...
>>>>>
>>>>> when in fact my_function_1(local_id_1 ) = my_function_2(local_id_2 ) =
>>>>> my_function_3(local_id_3 ) = unique_id.
>>>>>
>>>>> Then I could map each patient to the same class *Patient*, but would
>>>>> rely
>>>>> on SPARQL to integrate information, like
>>>>>
>>>>> SELECT * WHERE
>>>>> {
>>>>> ?patient a vocab:Patient.
>>>>> ?unique_id vocab:mapsToLocalId ?local_id.
>>>>> FILTER (
>>>>> ?unique_id = 9999999
>>>>> )
>>>>>
>>>>> }
>>>>>
>>>>> Or something.
>>>>>
>>>>> I could create a table with all possible values, but then I would have
>>>>> to
>>>>> keep it up-to-date, as the databases are live. So it's possible to
>>>>> perform
>>>>> such a mapping from a function, instead of a database table?
>>>>>
>>>>>
>>>>> Thanks!
>>>>>
>>>>> dfcp
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> *http://planet.mysql.com/entry/?id=13420
>>>>>
>>>>> Diogo F.C. Patrão
>>>>> Manager of Medical Informatics
>>>>> Biotechnology Laboratory
>>>>> Hospital A.C. Camargo
>>>>> http://www.accamargo.org.br/
>>>>>
>>>>>
>>>>> ------------------------------------------------------------------------------
>>>>>
>>>> Increase Visibility of Your 3D Game App & Earn a Chance To Win $500!
>>>> Tap into the largest installed PC base & get more eyes on your game by
>>>> optimizing for Intel(R) Graphics Technology. Get started today with the
>>>> Intel(R) Software Partner Program. Five $500 cash prizes are up for
>>>> grabs.
>>>>
>>>>
>>>> http://p.sf.net/sfu/intelisp-dev2dev_______________________________________________
>>>> d2rq-map-devel mailing list
>>>> [email protected]
>>>> https://lists.sourceforge.net/lists/listinfo/d2rq-map-devel
>>>>
>>>>
>>>
>>>
>
------------------------------------------------------------------------------
Increase Visibility of Your 3D Game App & Earn a Chance To Win $500!
Tap into the largest installed PC base & get more eyes on your game by
optimizing for Intel(R) Graphics Technology. Get started today with the
Intel(R) Software Partner Program. Five $500 cash prizes are up for grabs.
http://p.sf.net/sfu/intelisp-dev2dev
_______________________________________________
d2rq-map-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/d2rq-map-devel