问题描述
作为我的小应用程序的一部分,我尝试在我的本体和带有 ontop 的 Oracle 数据库之间映射数据。但是我的第一个映射没有被推理者接受,也不清楚为什么。
作为我的第一次尝试,我使用以下目标:
:KIS/P_PVPAT_PATIENT/{PPVPAT_PATNR} a :Patient .
以及以下来源:
select * from P_PVPAT_PATIENT
这里 KIS 是架构,p_pvpat_patient
是表,ppvpat_patnr
是键。
Caused by: it.unibz.inf.ontop.exception.InvalidMappingSourceQueriesException:
Error: Relation IDs mismatch: P_PVPAT_PATIENT v "KIS"."P_PVPAT_PATIENT" P_PVPAT_PATIENT
Problem location: source query of triplesMap
[id: MAP_PATIENT
target atoms: triple(s,p,o) with
s/RDF(http://www.semanticweb.org/grossmann/ontologies/kis-ontology#KIS/P_PVPAT_PATIENT/{}(TmpToVARCHAR2(PPVPAT_PATNR)),IRI),p/<http://www.w3.org/1999/02/22-rdf-Syntax-ns#type>,o/<http://www.semanticweb.org/grossmann/ontologies/kis-ontology#Patient>
source query: select * from P_PVPAT_PATIENT]
解决方法
因为错误说我的源查询是错误的,因为我忘记在我的 sql 中使用架构。
正确的sql是
从 kis.P_PVPAT_PATIENT 中选择 *