1 | %\documentclass{article} |
---|
2 | \documentclass{llncs} |
---|
3 | \usepackage{llncsdoc} |
---|
4 | \usepackage{color} |
---|
5 | \usepackage{graphicx} |
---|
6 | \usepackage{amsmath} |
---|
7 | \usepackage{framed} |
---|
8 | |
---|
9 | \usepackage{verbatim} % adds environment for commenting out blocks of text & for better verbatim |
---|
10 | |
---|
11 | %\newcommand{\comment}[1]{} |
---|
12 | \newcommand{\commentx}[1]{\textcolor{red}{#1}} |
---|
13 | |
---|
14 | %%% PAGE DIMENSIONS |
---|
15 | \usepackage{geometry} % to change the page dimensions |
---|
16 | \geometry{a4paper} % or letterpaper (US) or a5paper or.... |
---|
17 | \geometry{margin=2.5cm} % for example, change the margins to 2 inches all round |
---|
18 | %\topmargin=-0.6in |
---|
19 | \textheight=700pt |
---|
20 | % \geometry{landscape} % set up the page for landscape |
---|
21 | % read geometry.pdf for detailed page layout information |
---|
22 | |
---|
23 | \newcommand{\code}[1]{\texttt{#1}} |
---|
24 | \newcommand{\xne}[1]{\textsf{#1}} % named entity |
---|
25 | \newcommand{\furl}[1]{\footnote{\url{#1}}} |
---|
26 | \newcommand{\var}[1]{\textrm{\textit{#1}}} % variable, definition |
---|
27 | |
---|
28 | %@{\hspace{-2mm}} |
---|
29 | \newenvironment{example2} |
---|
30 | { \footnotesize |
---|
31 | \begin{ttfamily} \begin{shaded*} \noindent |
---|
32 | \begin{tabular}{p{0.4\textwidth} p{0.6\textwidth} } } |
---|
33 | {\end{tabular} \end{shaded*} \end{ttfamily} } |
---|
34 | |
---|
35 | \newenvironment{example3} |
---|
36 | { \footnotesize |
---|
37 | \begin{ttfamily} \begin{shaded*} \noindent |
---|
38 | \begin{tabular}{@{\hspace{-1mm}} p{0.25\textwidth} p{0.25\textwidth} p{0.45\textwidth}} |
---|
39 | } |
---|
40 | { \end{tabular} \end{shaded*} \end{ttfamily} } |
---|
41 | |
---|
42 | \definecolor{shadecolor}{rgb}{0.95,0.95,1.0} |
---|
43 | |
---|
44 | % xml syntax highlighting |
---|
45 | % source http://snipt.org/vngf3 |
---|
46 | \usepackage{listings} |
---|
47 | |
---|
48 | \definecolor{grey}{rgb}{0.4,0.4,0.4} |
---|
49 | \definecolor{darkblue}{rgb}{0.0,0.0,0.6} |
---|
50 | \definecolor{cyan}{rgb}{0.0,0.6,0.6} |
---|
51 | |
---|
52 | |
---|
53 | \newenvironment{notex} |
---|
54 | {\footnotesize \color{grey} \begin{textit}} |
---|
55 | { \end{textit} \normalsize} |
---|
56 | |
---|
57 | |
---|
58 | % |
---|
59 | \begin{document} |
---|
60 | |
---|
61 | \title{Component Metadata to Linked Open Data} |
---|
62 | |
---|
63 | \author{Matej Durco\inst{1} \and Menzo Windhouwer\inst{2}} |
---|
64 | |
---|
65 | \institute{\email{matej.durco@assoc.oeaw.ac.at}\newline |
---|
66 | Institute for Corpus Linguistics and Text Technology (ICLTT), Vienna, Austria |
---|
67 | \and |
---|
68 | \email{menzo.windhouwer@dans.knaw.nl}\newline |
---|
69 | The Language Archive - DANS, The Hague, The Netherlands} |
---|
70 | |
---|
71 | \maketitle |
---|
72 | % |
---|
73 | \begin{abstract} |
---|
74 | The hype/trend to Web of Data... |
---|
75 | |
---|
76 | Although semantic interoperability has been one of the main motivation for CLARIN Component Metadata Infrastructure, until now there has been no work on the obvious -- bringing CMDI to Semantic Web. We believe that providing the whole of CMD data as Linked Open Data linked with external semantic resources, will allow to fully exploit the power of semantic technologies and opens a new level of processing and exploring of CMD data. In this paper, we propose an expression of the whole of the CMD data domain (from meta model to individual metadata records) in RDF. |
---|
77 | |
---|
78 | \commentx{Menzo: I don't think we can express CMD data automatically as an ontology. For that too many semantics are still hidden in CMDI. We are building blocks (e.g., RR/CLAVAS) that might enable us to do so in the future, but I think its better now to go for CMD as LOD linked into the LOD cloud ...} |
---|
79 | |
---|
80 | \end{abstract} |
---|
81 | % |
---|
82 | \begin{keywords} |
---|
83 | Linked Open Data, RDF, metadata |
---|
84 | %metamodel, research infrastructure |
---|
85 | \end{keywords} |
---|
86 | % |
---|
87 | \section{Introduction} |
---|
88 | % |
---|
89 | \commentx{Not sure how much of the introduction, CMD explain + Status of the data domain we want, may and need to reuse between the two papers...} |
---|
90 | |
---|
91 | |
---|
92 | The hype/trend to Web of Data... |
---|
93 | |
---|
94 | In this paper, we lay out how individual parts of the CMD framework can be expressed in RDF interlinked with existing external semantic resources (ontologies, knowledge bases, vocabularies). This conversion lays a foundation / is groundwork for providing the original dataset as a \emph{Linked Open Data} nucleus within the \emph{Web of Data}\cite{TimBL2006} as well as for real semantic (ontology-driven) search and exploration of the data. |
---|
95 | |
---|
96 | % |
---|
97 | \section{The Component Metadata Infrastructure}\label{CMDI} |
---|
98 | % |
---|
99 | ? |
---|
100 | |
---|
101 | % |
---|
102 | \subsection{Current status of the joint CMD Domain} |
---|
103 | % |
---|
104 | To provide a frame of reference for the proportions of the undertaking in the following section, a few numbers about the data in the CMD domain, both on the schema level, i.e. with regard to the defined profiles and data categories used, as well as on the instance level, the actual CMD records. |
---|
105 | |
---|
106 | \subsubsection{CMD Profiles } |
---|
107 | In the CR 133\footnote{All numbers are as of 2013-09 if not stated otherwise} public Profiles and 696 Components are defined. Table \ref{table:dev} shows the development of the CR and DCR population over time. |
---|
108 | |
---|
109 | Next to the `native' CMD profiles a number of profiles have been created that implement existing metadata formats, like OLAC/DCMI-terms, TEI Header or the META-SHARE schema. The resulting profiles proof the flexibility/expressi\-vi\-ty of the CMD metamodel. The individual profiles differ also very much in their structure -- next to flat profiles with just one level of components or elements with 5 to 20 fields (\textit{dublincore}, \textit{collection}, the set of \textit{Bamdes}-profiles) there are complex profiles with up to 10 levels (\textit{ExperimentProfile}, profiles for describing Web Services) and a few hundred elements. The biggest single profile is currently the remodelled maximum schema from the META-SHARE project \cite{Gavrilidou2012meta} for describing corpora, with 117 components and 337 elements. |
---|
110 | |
---|
111 | \subsubsection{Instance Data} |
---|
112 | |
---|
113 | The main CLARIN OAI-PMH harvester\footnote{\url{http://catalog.clarin.eu/oai-harvester/}} |
---|
114 | collects records from 69 providers on daily basis. The complete dataset amounts to over half a million records. |
---|
115 | 16 of the providers offer CMDI records, the other 53 provide OLAC/DC records\label{info:olac-records}, that are being converted into the corresponding CMD profile after harvesting. Next to these 81.226 original OLAC records, there a few providers offering their OLAC or DCMI-terms records already converted into CMDI, thus all in all OLAC, DCMI-terms records amount to 139.152. |
---|
116 | On the other hand, some of the comparatively few providers of `native' CMD records expose multiple profiles (e.g. Meertens Institute uses 12 different profiles.) So we encounter both situations: one profile being used by many providers and one provider using many profiles. |
---|
117 | |
---|
118 | |
---|
119 | % |
---|
120 | \section{LOD -- Linked Open Data} |
---|
121 | % |
---|
122 | Linked Data\cite{TimBL2006}, RDF\cite{RDF2004} |
---|
123 | |
---|
124 | dbpedia, Yago - huge compiled knowledgebases to link to... |
---|
125 | |
---|
126 | Ontology for Language Technology: LT-World \cite{Joerg2010} |
---|
127 | |
---|
128 | LOD cloud Cyganiak and Jentzsch\cite{Cyganiak2010}. |
---|
129 | |
---|
130 | |
---|
131 | \section{CMD to RDF} |
---|
132 | \label{sec:cmd2rdf} |
---|
133 | In this section, RDF encoding is proposed for all levels of the CMD data domain: |
---|
134 | |
---|
135 | \begin{itemize} |
---|
136 | \item CMD meta model |
---|
137 | \item profile definitions |
---|
138 | \item the administrative and structural information of CMD records |
---|
139 | \item individual values in the fields of the CMD records |
---|
140 | \end{itemize} |
---|
141 | |
---|
142 | \subsection{CMD specification} |
---|
143 | |
---|
144 | The main entity of the meta model is the CMD component modelled as \code{rdfs:Class}. CMD profile is basically a CMD component with some extra features, implying a specialization relation. It may seem natural to translate a CMD element to a RDF property (as it holds the literal value), but given its complexity (e.g. attributes, relation to the containing component) it too has to be a \code{rdfs:Class}. The actual literal value is a property of given element of type \code{cmdm:ElementValue}. For values that can be mapped to entities defined in external vocabularies/ semantic resources, the references to these entities are expressed in parallel properties of type \code{cmdm:ElementEntity}. The attributes are modelled analogously with \code{cmdm:Attribute, cmdm:AttributeValue, cmdm:AttributeEntity}. |
---|
145 | |
---|
146 | The containment relation between components and elements is expressed with a dedicated property \code{cmdm:contains}, again analogously for attributes of individual components and elements \code{cmdm:containsAttribute}. |
---|
147 | |
---|
148 | \label{table:rdf-spec} |
---|
149 | \begin{example3} |
---|
150 | @prefix cmdm: \textless http://www.clarin.eu/cmd/general.rdf\#\textgreater . \\ |
---|
151 | \\ |
---|
152 | cmdm:Component & a & rdfs:Class . \\ |
---|
153 | cmdm:Profile & rdfs:subClassOf & cmdm:Component . \\ |
---|
154 | cmdm:Element & a & rdfs:Class . \\ |
---|
155 | cmdm:Attribute & a & rdfs:Class . \\ |
---|
156 | \\ |
---|
157 | cmdm:contains & a & rdf:Property ; \\ |
---|
158 | & rdfs:domain & cmdm:Component ; \\ |
---|
159 | & rdfs:range & :Component , :Element . \\ |
---|
160 | |
---|
161 | %cmdm:containsAttribute & a &rdf:Property; |
---|
162 | % & rdfs:domain & :Component, :Element; |
---|
163 | % & rdfs:range & :Attribute. |
---|
164 | |
---|
165 | cmdm:Value & a & rdfs:Literal . \\ |
---|
166 | cmdm:Entity & a & rdfs:Class . \\ |
---|
167 | \\ |
---|
168 | cmdm:hasElementValue & a & rdf:Property ; \\ |
---|
169 | & rdfs:domain & cmdm:Element ; \\ |
---|
170 | & rdfs:range & cmdm:Value . \\ |
---|
171 | \\ |
---|
172 | \multicolumn{3}{l}{\# add a parallel separate property for the resolved entities} \\ |
---|
173 | cmdm:hasElementEntity & a & rdf:Property ; \\ |
---|
174 | & rdfs:domain & :Element ; \\ |
---|
175 | & rdfs:range & :Entity . \\ |
---|
176 | \\ |
---|
177 | cmdm:hasAttributeValue & a & rdf:Property ; \\ |
---|
178 | & rdfs:domain & cmdm:Attribute ; \\ |
---|
179 | & rdfs:range & rdfs:Literal . \\ |
---|
180 | |
---|
181 | cmdm:hasAttributeEntity & a & rdf:Property ; \\ |
---|
182 | & rdfs:domain & :Attribute ; \\ |
---|
183 | & rdfs:range & :Entity . \\ |
---|
184 | \end{example3} |
---|
185 | |
---|
186 | \noindent |
---|
187 | This entities are used for modelling the actual profiles, components and elements as they are defined in the Component Registry. |
---|
188 | For stand-alone/top components, the IDs as issued by Component Registry can be used as entity IRIs. For ``inner'' components (that are defined as part of another component) and elements the identifier is a concatenation of the parent top component and dot-path to given component/element (Actor: \code{cr:clarin.eu:cr1:c\_1271859438197\#Actor\_Languages.Actor\_Language}). |
---|
189 | |
---|
190 | \commentx{Matej: shouldn't we add the name of the component in the IRI for human-readability? |
---|
191 | similar to how it is generated in profile XSDs: \textless xs:simpleType name="simpletype-MimeType-clarin.eu.cr1.c\_1290431694511"\textgreater } |
---|
192 | |
---|
193 | |
---|
194 | \label{table:rdf-cmd} |
---|
195 | \begin{example3} |
---|
196 | cmd:collection & a & cmds:Profile; \\ |
---|
197 | & rdfs:label & "collection"; \\ |
---|
198 | & dcterms:identifier & cr:clarin.eu:cr1:p\_1345561703620. \\ |
---|
199 | cr:clarin.eu:cr1:c\_1271859438197\#Actor \\ |
---|
200 | & a &cmdm:Component. \\ |
---|
201 | \end{example3} |
---|
202 | |
---|
203 | \commentx{Menzo: we need more context for inner components. In the example LanguageName looks well defined, but take a Component/Element like Title. Is it the title of a book or the title of a person. Only when the semantics are clear, e.g., with a dcr:datcat, one can ignore the context and collapse all Components/Elements to a single RDF class/property.} |
---|
204 | \commentx{Matej: wouldn't that be remedied by cmdm:contains? or is it too much inferencing?} |
---|
205 | |
---|
206 | \begin{notex} |
---|
207 | Menzo: inner components don't have IDs so I propose a path build from the context up to a shareable component (we need some nice term for that, in the TDS I called it a top notion so maybe a top component. The cmd prefix also needs to be bound to a component specific URI. This URI contains the top component ID, e.g., \furl{http://catalog.clarin.eu/ds/ComponentRegistry/rest/registry/components/clarin.eu:cr1:c\_1271859438125/rdf}. |
---|
208 | \end{notex} |
---|
209 | |
---|
210 | \subsection{Data Categories} |
---|
211 | Windhouwer \cite{Windhouwer2012_LDL} proposes to use the data categories as annotation properties |
---|
212 | so as to avoid too strong semantic implications. |
---|
213 | |
---|
214 | \begin{example3} |
---|
215 | dcr:datcat & a & owl:AnnotationProperty ; \\ |
---|
216 | & rdfs:label & "data category"@en ; \\ |
---|
217 | & rdfs:comment & "This resource is equivalent to this data category."@en ; \\ |
---|
218 | & skos:note & "The data category should be identified by its PID."@en ; \\ |
---|
219 | \end{example3} |
---|
220 | |
---|
221 | That implies that the \code{@ConceptLink} attribute on CMD elements and components as used in the CMD profiles to reference the data category would be modelled as: |
---|
222 | |
---|
223 | \begin{example3} |
---|
224 | cmd:LanguageName & dcr:datcat & isocat:DC-2484. \\ |
---|
225 | \end{example3} |
---|
226 | |
---|
227 | \begin{comment} |
---|
228 | Encoding data categories as annotation properties is in contrast to the common approach seen with dublincore terms |
---|
229 | used usually directly as data properties: |
---|
230 | |
---|
231 | \begin{example3} |
---|
232 | <lr1> & dc:title & "Language Resource 1" |
---|
233 | \end{example3} |
---|
234 | |
---|
235 | However, e argue against direct mapping of complex data categories to data properties and in favour of modelling data categories as annotation properties, |
---|
236 | In a specific (OWL 2) application the relation with the data categories can be expressed as \code{owl:equivalentClass} for classes, \code{owl:equivalentProperty} for properties or \code{owl:sameAs} for individuals: |
---|
237 | |
---|
238 | \begin{example3} |
---|
239 | \#myPOS & owl:equivalentClass & isocat:DC-1345. \\ |
---|
240 | \#myPOS & owl:equivalentProperty & isocat:DC-1345. \\ |
---|
241 | \#myNoun & owl:sameAs & isocat:DC-1333. \\ |
---|
242 | \end{example3} |
---|
243 | |
---|
244 | \end{comment} |
---|
245 | |
---|
246 | \subsection{RELcat - Ontological relations} |
---|
247 | As described in \ref{CMDI}, relations between data categories are not stored directly in the \xne{ISOcat} DCR, but rather in a dedicated module the Relation Registry \xne{RELcat}. The relations here are grouped into relation sets and stored as RDF triples\cite{SchuurmanWindhouwer2011}. A sample relation from the \xne{CMDI} relation set expressing a number of equivalences between \xne{ISOcat} data categories and \xne{dublincore} terms: |
---|
248 | |
---|
249 | \begin{example3} |
---|
250 | isocat:DC-2538 & rel:sameAs & dct:date |
---|
251 | \end{example3} |
---|
252 | |
---|
253 | \noindent |
---|
254 | By design, the relations in Relation Registry are not expressed with predicates from known vocabularies like \xne{SKOS} or \xne{OWL}, again with the aim to avoid too strong semantic implications. This leaves leeway for further specialization of the relations in specific applications. The \code{rel:*} properties can be undrestood as an upper layer of a taxonony of relation types, implying a subtyping: |
---|
255 | |
---|
256 | \begin{example3} |
---|
257 | rel:sameAs & rdfs:subPropertyOf & owl:sameAs |
---|
258 | \end{example3} |
---|
259 | |
---|
260 | \commentx{Menzo: I would use owl:sameAs rdfs:subPropertyOf rel:sameAs. I see the rel:* properties as an upper layer of a taxonony of relation types. The RELcat types are loose and the OWL ones specific, hence the subtyping. In RELcat you might also query multiple graphs with multiple vocabularies various 'same-as' properties then still need to be distinguishable but the general rel:sameAs need to be created.} |
---|
261 | |
---|
262 | \commentx{Matej: strip this stipulations - rest of the subsection or just short referrer to SPIN rules ?} |
---|
263 | \begin{comment} |
---|
264 | Is this correct: |
---|
265 | ?? That means, that to be able to infer that a value in a CMD element also pertains to a given data category, e.g.: |
---|
266 | |
---|
267 | \begin{example2} |
---|
268 | cmd:PublicationYear = 2012 $\rightarrow$ & dc:created = 2012 |
---|
269 | \end{example2} |
---|
270 | |
---|
271 | \commentx{Menzo: yes. I do have some of the SPIN rules somewhere to generate those. My idea is that one takes a dcr:datcat annotated graph. This can be using OWL or SKOS or any other RDF vocabulary. This base graph should have been expanded depending on the reasoning one uses, i.e., all entailments are in place. The dcr:datcat can then be translated into rel:sameAs and all equivalences get expanded, so one can also query using ISOcat DCs.} |
---|
272 | |
---|
273 | \noindent |
---|
274 | following facts need to be present in the ontology : |
---|
275 | |
---|
276 | \begin{example3} |
---|
277 | <lr1> & cmd:PublicationYear & 2012\^{}\^{}xs:year \\ |
---|
278 | cmd:PublicationYear & owl:equivalentProperty & isocat:DC-2538 \\ |
---|
279 | isocat:DC-2538 & rel:sameAs & dc:created \\ |
---|
280 | owl:sameAs & rdfs:subPropertyOf & rel:sameAs \\ |
---|
281 | $\rightarrow$ \\ |
---|
282 | <lr1> & dc:created & 2012\^{}\^{}xs:year \\ |
---|
283 | \end{example3} |
---|
284 | \end{comment} |
---|
285 | |
---|
286 | |
---|
287 | %%%%%%%%%%%%%%%%%%%%% |
---|
288 | \subsection{CMD instances} |
---|
289 | In the next step, we want to express the individual CMD instances, the metadata records. |
---|
290 | |
---|
291 | \subsubsection {Resource Identifier} |
---|
292 | |
---|
293 | \commentx{Matej: I still yearn for something like cmdm:Resource and cmdm:MDRecord} |
---|
294 | \begin{example3} |
---|
295 | <lr1> & a & cmdm:Resource; \\ |
---|
296 | <lr1.cmd> & a & cmdm:MDRecord; |
---|
297 | \end{example3} |
---|
298 | |
---|
299 | It seems natural to use the PID of a Language Resource ( \code{<lr1>} ) as the resource identifier for the subject in the RDF representation. While this seems semantically sound, not every resource has to have a PID. (This is especially the case for ``virtual'' resources like collections, that are solely defined by their constituents and don't have any data on their own.) As a fall-back the PID of the MD record ( \code{<lr1.cmd>} from \code{cmd:MdSelfLink} element) could be used as the resource identifier. |
---|
300 | If identifiers are present for both resource and metadata, the relationship between the resource and the metadata record can be expressed as an annotation using the \xne{OpenAnnotation} vocabulary\furl{http://openannotation.org/spec/core/core.html\#Motivations}. |
---|
301 | (Note also, that one MD record can describe multiple resources, this can be also easily accommodated in OpenAnnotation: |
---|
302 | |
---|
303 | \commentx{Menzo: also there can be multiple resource proxies. Maybe we can use an RDF list?} |
---|
304 | |
---|
305 | \begin{example3} |
---|
306 | \_:anno1 & a & oa:Annotation ; \\ |
---|
307 | & oa:hasTarget & <lr1a>, <lr1b> ; \\ |
---|
308 | & oa:hasBody & <lr1.cmd> ; \\ |
---|
309 | & oa:motivatedBy & oa:describing . \\ |
---|
310 | \end{example3} |
---|
311 | |
---|
312 | \subsubsection{Provenance} |
---|
313 | |
---|
314 | The information from \code{cmd:Header} represents the provenance information about the modelled data: |
---|
315 | |
---|
316 | \begin{example3} |
---|
317 | <lr1.cmd> & dcterms:identifier & <lr1.cmd> ; \\ |
---|
318 | & dcterms:creator & \var{\{cmd:MdCreator\}} ; \\ |
---|
319 | & dcterms:publisher & <http://clarin.eu> ; \\ |
---|
320 | & dcterms:created & \var{\{cmd:MdCreated\}} . \\ |
---|
321 | \end{example3} |
---|
322 | |
---|
323 | \subsubsection{Hierarchy ( Resource Proxy â IsPartOf)} |
---|
324 | In CMD, the \code{cmd:ResourceProxyList} structure is used to express both collection hierarchy and point to resource(s) described by the MD record. This can be modelled as \xne{OAI-ORE Aggregation}\furl{http://www.openarchives.org/ore/1.0/primer\#Foundations} |
---|
325 | : |
---|
326 | |
---|
327 | \begin{example3} |
---|
328 | <lr0.cmd> & a & ore:ResourceMap . \\ |
---|
329 | <lr0.cmd> & ore:describes & <lr0.agg> . \\ |
---|
330 | <lr0.agg> & a & ore:Aggregation ; \\ |
---|
331 | & ore:aggregates & <lr1.cmd>, <lr2.cmd> . \\ |
---|
332 | \end{example3} |
---|
333 | |
---|
334 | \commentx{Matej: Should both collection hierarchy and resource-pointers (collection and resource MD records) be encoded as ore:Aggregation?} |
---|
335 | |
---|
336 | \begin{comment} |
---|
337 | This is rather complicated: skip this?: |
---|
338 | Additionally the flat header field \code{cmd:MdCollectionDisplayName} has been introduced to indicate by simple means the collection, of which given resource is part. |
---|
339 | This information can be used to generate a separate one-level grouping of the resources, in which the value from the \code{cmd:MdCollectionDisplayName} element would be used as the label of an otherwise undefined \code{ore:ResourceMap}. |
---|
340 | Even the identifier/ URI for this collections is not clear. Although this collections should match with the ResourceProxy hierarchy, there is no guarantee for this, thus a 1:1 mapping cannot be expected. |
---|
341 | |
---|
342 | \begin{example3} |
---|
343 | \_:mdcoll & a & ore:ResourceMap; \\ |
---|
344 | & rdfs:label & "Collection 1"; \\ |
---|
345 | \_:mdcoll\#aggreg & a & ore:Aggregation \\ |
---|
346 | & ore:aggregates & <lr1.cmd>, <lr2.cmd>; \\ |
---|
347 | \end{example3} |
---|
348 | \end{comment} |
---|
349 | |
---|
350 | \subsubsection{Components â nested structures} |
---|
351 | For expressing the tree structure of the CMD records, i.e. the containment relation between the components a dedicated property \code{cmd:contains} is used: |
---|
352 | |
---|
353 | \begin{example3} |
---|
354 | \_:actor1 & a & cmd:Actor . \\ |
---|
355 | ?? <lr1> ? & cmd:contains & \_:actor1 . \\ |
---|
356 | ?? <lr1.cmd> ? & cmd:contains & \_:actor1 . \\ |
---|
357 | \end{example3} |
---|
358 | |
---|
359 | \subsection{Elements, Fields, Values} |
---|
360 | Finally, we want to integrate also the actual field values in the CMD records into the ontology. |
---|
361 | As explained before, CMD elements have to be typed as \code{rdfs:Class}, the actual value expressed as \code{cmds:ElementValue} property and the corresponding data category expressed as annotation property. |
---|
362 | |
---|
363 | While generating triples with literal values seems straightforward, the more challenging but also more valuable aspect is to generate object property triples with the literal values mapped to semantic entities. Following example show the whole chain of statements from metamodel to literal value. The mapping process is detailed in \ref{sec:values2entities}. |
---|
364 | |
---|
365 | \begin{example3} |
---|
366 | cmd:Person & a & cmdm:Component . \\ |
---|
367 | cmd:Organisation & a & cmdm:Element . \\ |
---|
368 | cmd:hasOrganisationElementValue \\ |
---|
369 | & rdfs:subProperyOf & cmdm:hasElementValue ; \\ |
---|
370 | & rdfs:domain & cmd:Organisation ; \\ |
---|
371 | & rdfs:range & xs:string . \\ |
---|
372 | cmd:hasOrganisationElementEntity \\ |
---|
373 | & rdfs:subProperyOf & cmdm:hasElementEntity ; \\ |
---|
374 | & rdfs:domain & cmd:Organisation ; \\ |
---|
375 | & rdfs:range & cmd:OrganisationElementEnity .\\ |
---|
376 | \\ |
---|
377 | \multicolumn{3}{l}{\# person (mentioned in a MD record) has an affiliation (cmd:Person/cmd:Organisation) } \\ |
---|
378 | \_:pers & a & cmd:Person ; \\ |
---|
379 | & cmdm:contains & \_:org . \\ |
---|
380 | \_:org & a & cmd:Organisation ; \\ |
---|
381 | & \multicolumn{2}{l}{cmd:hasOrganisationElementValue \quad 'MPI'\^{}\^{}xs:string ;} \\ |
---|
382 | & \multicolumn{2}{l}{ cmd:hasOrganisationElementEntity \quad <http://mpi.nl> . }\\ |
---|
383 | |
---|
384 | <http://mpi.nl> & a & cmd:OrganisationElementEnity . |
---|
385 | \end{example3} |
---|
386 | |
---|
387 | \begin{comment} |
---|
388 | \begin{example3} |
---|
389 | cmd:timeCoverage & a & cmds:Element \\ |
---|
390 | cmd:timeCoverageValue & a & cmds:ElementValue \\ |
---|
391 | cmd:timeCoverage & dcr:datcat & isocat:DC-2502 \\ |
---|
392 | <lr1> & cmd:contains & \_:timeCoverage1 \\ |
---|
393 | \_:timeCoverage1 & a & cmd:timeCoverage \\ |
---|
394 | \_:timeCoverage1 & cmd:timeCoverageValue & "19th century" \\ |
---|
395 | \end{example3} |
---|
396 | |
---|
397 | \commentx{Menzo: no need to repeat dcr:datcat in the instance.} |
---|
398 | |
---|
399 | \begin{example3} |
---|
400 | \var{cmds:Element} & \var{cmds:ElementValue\_?} & \var{xsd:anyURI}\\ |
---|
401 | \_:organisation1 & cmd:OrganisationValue\_? & <org1> \\ |
---|
402 | \end{example3} |
---|
403 | |
---|
404 | \begin{notex} |
---|
405 | Don't we need a separate property (predicate) for the triples with object properties pointing to entities, |
---|
406 | i.e. \code{cmd:Organisation\_} additionally to \code{cmd:Organisation} |
---|
407 | \end{notex} |
---|
408 | \end{comment} |
---|
409 | |
---|
410 | |
---|
411 | %%%%%%%%%%%%%%%%% |
---|
412 | \section{Mapping field values to semantic entities} |
---|
413 | \label{sec:values2entities} |
---|
414 | |
---|
415 | \commentx{this is probably definitely too much for one abstract - so we could just anounce the need for this mapping process.} |
---|
416 | |
---|
417 | This task is a prerequisite to be able to express also the CMD instance data in RDF. The main idea is to find entities in selected reference datasets (controlled vocabularies, ontologies) matching the literal values in the metadata records. The obtained entity identifiers are further used to generate new RDF triples. It involves following steps: |
---|
418 | |
---|
419 | \begin{enumerate} |
---|
420 | \item identify appropriate controlled vocabulares for individual metadata fields or data categories (manual task) |
---|
421 | \item extract \emph{distinct data category, value pairs} from the metadata records |
---|
422 | \item actual \textbf{lookup} of the individual literal values in given reference data (as indicated by the data category) to retrieve candidate entities, concepts |
---|
423 | \item assess the reliability of the match |
---|
424 | \item generate new RDF triples with entity identifiers as object properties |
---|
425 | \end{enumerate} |
---|
426 | |
---|
427 | This task is basically an application of ontology mapping method, trying to find for our ``anonymous'' concepts semantically equivalent concepts from other semantic resources / vocabularies. |
---|
428 | % This is almost equivalent to the definition of ontology mapping function as given by \cite{EhrigSure2004, amrouch2012survey}: ``for each concept (node) in ontology A [tries to] find a corresponding concept (node), which has the same or similar semantics, in ontology B and vice verse''. |
---|
429 | |
---|
430 | The transformation of the data has been partly described in previous section. It can be trivially automatically converted into RDF triples as : |
---|
431 | |
---|
432 | \begin{example3} |
---|
433 | \_:organisation1 & \multicolumn{2}{l}{cmd:hasOrganisationElementValue \quad 'MPI'\^{}\^{}xs:string ;} \\ |
---|
434 | \end{example3} |
---|
435 | |
---|
436 | However for the needs of the mapping task we propose to reduce and rewrite to retrieve distinct concept-value pairs: |
---|
437 | |
---|
438 | \begin{example3} |
---|
439 | \_:1 & a & cmd:OrganisationElementEnity . \\ |
---|
440 | & skos:altLabel & "MPI"; |
---|
441 | \end{example3} |
---|
442 | |
---|
443 | \subsubsection{Identify vocabularies} |
---|
444 | |
---|
445 | One generic way to indicate vocabularies for given metadata fields or data categories being discussed in the CMD community is to use dedicated annotation property in the schema or data category definition (tentatively labeled \code{@clavas:vocabulary}, cf: \emph{CMD 1.2}). |
---|
446 | |
---|
447 | The primary provider of relevant vocabularies is \xne{ISOcat} and \xne{CLAVAS} â a service for managing and providing vocabularies in SKOS format. However, in general we have to assume/consider a number of different sources. |
---|
448 | |
---|
449 | \subsubsection{Lookup} |
---|
450 | |
---|
451 | In abstract term, the lookup function takes as input the identifier of data category (or CMD element) and a literal string value and returns a list of potentially matching entities. Before actual lookup, there may have to be some string-normalizing preprocessing. |
---|
452 | |
---|
453 | %\begin{definition}[{signature of the lookup function}] |
---|
454 | \begin{equation} |
---|
455 | lookup \ ( \ DataCategory \ , \ Literal \ ) \quad \mapsto \quad ( \ Concept \ | \ Entity \ )* |
---|
456 | \end{equation} |
---|
457 | %\end{definition} |
---|
458 | |
---|
459 | In the implementation, there needs to be additional initial configuration input, identifying datasets for given data categories, |
---|
460 | which will be the result of the previous step \ |
---|
461 | |
---|
462 | |
---|
463 | %\begin{definition}{Required configuration data indicating data category to available } |
---|
464 | \begin{equation} |
---|
465 | DataCategory \quad \mapsto \quad SemanticResource+ |
---|
466 | \end{equation} |
---|
467 | %\end{definition} |
---|
468 | |
---|
469 | |
---|
470 | As for the implementation, in the initial setup the system could resort to the \code{find}-interface provided by \xne{OpenSKOS}. |
---|
471 | However, in the long term a more general solution is required, a kind of hybrid \emph{vocabulary proxy service} that allows to search in a number of datasets, many of them distributed and available via different interfaces. |
---|
472 | |
---|
473 | \subsubsection{Candidate evaluation} |
---|
474 | The lookup is the most sensitive step in the process, being the gate between ``strings'' and semantic entities. In general, the resulting candidates cannot be seen as reliable matches and should undergo further scrutiny to ensure that the match is semantically correct. In some situation this ambiguities can be resolved algorithmically, but in the end in many cases it will require human curation of the generated data. |
---|
475 | |
---|
476 | %One example: A lookup with the pair \code{<organization, "Academy of sciences">} would probably return a list of organizations, as there is a national Academy of Sciences, in a number of countries. It would require further heuristics, e.g. checking the corresponding department, contact or -- less reliably -- the language of the described resource, to determine which specific Academy of Sciences is meant in given resource description. |
---|
477 | |
---|
478 | \section{Implementation} |
---|
479 | |
---|
480 | The transformation of profiles and instances into RDF/XML is accomplished by a set of XSL-stylesheets. |
---|
481 | Once the data is available it has to be stored and published in a RDF triple store. The most promising solution seems to be \xne{Virtuoso}, a integrated feature-rich hybrid data store, able to deal with different types of data (``Universal Data Store''). \cite{Haslhofer2011europeana} |
---|
482 | |
---|
483 | % Although the distributed nature of the data is one of the defining features of LOD and theoretically one should be able to follow the data by dereferencable URIs, in practice it is mostly necessary to pool into one data store linked datasets from different sources that shall be queried together due to performance reasons. This implies that the data to be kept by the data store will be decisively larger, than ``just'' the original dataset. |
---|
484 | |
---|
485 | |
---|
486 | \section{Conclusions and Future Work} |
---|
487 | In this paper, we proposed an encoding of the whole of the CMD data domain in RDF, with special focus on the core model the general component schema. Additionally, some technical considerations were discussed regarding exposing this dataset as Linked Open Data and the implications for real semantic ontology-based data exploration. |
---|
488 | In the near future, a test with the whole CMD dataset will be performed. |
---|
489 | And work on mapping values to entities. |
---|
490 | |
---|
491 | With this new enhanced dataset, the groundwork is laid for the full-blown semantic search as proposed in the original goals, i.e. the possibility of exploring the dataset using external semantic resources. |
---|
492 | The user can access the data indirectly by browsing external vocabularies/taxonomies, with which the data will be linked like vocabularies of organizations or taxonomies of resource types. |
---|
493 | |
---|
494 | |
---|
495 | |
---|
496 | \bibliographystyle{splncs} |
---|
497 | \bibliography{CMD2RDF} |
---|
498 | |
---|
499 | \end{document} |
---|