Database Reference
In-Depth Information
located
(x,z) ∧
Address
(z) ∧
hasContact
(x,t) ∧
Contact
(t)…
Furthermore, we take into account classes that
have specializations in
O
. When specializations
correspond to central concepts, we build one view
per specialization. For example,
Museum
is a
specialization of
CulturalPlace
which is a central
concept. We build a new view for
Museum
: S
12
(x,y,z,t) →
Museum
(x) ∧
name
(x,y) ∧
located
(x,z)
∧
Address
(z) ∧
hasContact
(x,t) ∧
Contact
(t)…
When subordinated concepts have specializa-
tions in
O
, our treatment depends on the cardi-
nality of the relation establishing a link with the
subordinated concept. If the cardinality is multiple
(non functional property) as the cardinality of the
relation
hasContact
in the example just before,
we will introduce all the classes that are special-
izations in the same view. That way, the source
S
1
providing instances of
Museum
as it is shown
in Figure 4 will be described by a unique view
grouping the class
Museum
, its properties and the
classes
Address
,
Contact
,
Tel
,
Fax
linked by the
relations
located
and
hasContact
: S
12
(x,y,z,t, t
1
,
t
2
) →
Museum
(x) ∧
name
(x,y) ∧
located
(x,z)∧
Address
(z) ∧
hasContact
(x,t) ∧
Contact
(t) ∧
hasContact
(x,t
1
) ∧
Tel
(t
1
) ∧
hasContact
(x, t
2
) ∧
Fax
(t
2
).
On the opposite, if the relation is a functional
property, we build one view per specialization,
as it is done for central concepts with specializa-
tions.
wrappers follows the construction process of
views. We build one query per view. Queries are
built in an incremental way, performing at first
the concept, followed by its properties. For each
central concept named
conceptC
in
O
, we look
for the instances of its corresponding element (or
attribute)
mapC
in
D
(
FOR
part). For each instance
we generate a unique identifier (
generate-Id
). The
name of the concept in
O
is used as a tag in the
Return
part. Thus the initial form of the query is
the following:
for $x in doc(“source.xml”)//mapC
let $idcpt:= gi:generate-Id($x1)
return
<p3:conceptC rdf:nodeID=”{$idcpt}”>
$x
is associated to
mapC
and contains all the
elements belonging to the tree rooted in
mapC
in the XML source. The objective of the query
that we want to generate is to extract from
$x
all the elements which are properties in
O
. For
this, we need mappings of these elements. The
extraction of attributes in XQuery is made by
indicating the path defined in the mapping and by
using the primitive
Text()
to obtain the element
without tags. The extraction of the relations needs
a new identifier for the subordinated concept. A
new XML fragment will be added to describe
the subordinated concept and its properties. If
the considered mappings are conditional, we
introduce a Where part in the query in order to
specify the condition.An example of a query lead-
ing to extract data from
S
1
according to the view
S
12
(x,y,z,t) described above is given in Figure 5
(left side) and the extracted data in Figure 5 (right
side). S
12
(x,y,z,t) →
Museum
(x) ∧
name
(x,y) ∧
located
(x,z)∧
Address
(z) ∧
Town
(z,t).
Data Extraction and Transformation
For each view, we then generate a wrapper
which will query the XML source in regard to
its language and its vocabulary and transform
returned instances into RDF facts conformed to
the RDFS+ ontology. Wrappers are associated to
queries expressed in XQuery (Boag et al., 2007).
The
FLWO
part of a XQuery statement performs
the extraction task while the
R
part performs the
transformation task from XML to RDF using
the terms of the ontology. The construction of
Data Integration
Let
S
1
and
S
2
be two data sources which conform
to the same RDFS+ schema. Let
I
1
and
I
2
be the
two reference sets that correspond respectively
Search WWH ::
Custom Search