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