Project

General

Profile

1
.. raw:: latex
2

    
3
  \newpage
4
  
5

    
6
Semantic Annotation proposal
7
===================================
8

    
9
.. index:: Semantic Annotation
10
.. index:: Open Annotation
11
.. index:: RDF
12
.. index:: OBOE
13

    
14

    
15
Author
16
  Ben Leinfelder
17

    
18
Date
19
  - May, 2014: Initial draft of semantic annotation model and indexing
20

    
21
Goal
22
  Describe the current state of semantic annotation model using OBOE and OA (Open Annotation) concepts
23

    
24
Summary 
25
  Years of semantic work on the semtools project has informed the current annotation model we are prosing for use in Metacat.
26
  The model will initially focus on annotating attribute information for characteristics (e.g., Temperature) and Standard (e.g., Celsius).
27
  The model will be indexed to support fast and simple queries using the existing SOLR index methods used for standard metadata descriptions.
28
  This annotation model uses the `OA ontology <http://www.openannotation.org/spec/core/>`_ to describe
29
  the annotation assertions about metadata resources and fragments. PROV, FOAF, DCTERMS, and OBOE concepts are also utilized.
30
  
31
Overview
32
---------------------------------------
33
The primary goal of this initial semantic annotation model is to support querying on measurement standard and characteristic information. 
34
The model also supports annotations that describe these observations with their entity context, but that will not be utilized in the first stage of deployment.
35

    
36
Ontology and Model
37
------------------
38
The `OA ontology <http://www.openannotation.org/spec/core/>`_ will be used to describe the following relationships:
39
  * Which concepts describe which resources and/or parts of resources 
40
  * Where in the structure of a resource a particular annotation applies
41
  * Who is credited with authoring an annotation.
42

    
43
The `PROV ontology <http://www.w3.org/TR/prov-overview/>`_ will be used to describe the following relationships:
44
  * Who is credited with generating a resource being annotated
45
  * Which resources are newer revisions of other resources
46

    
47
Existing ORE resource map relationships can be augmented in this model to provide more explicit linkage between the data files and the section of metadata that documents them.
48
These structural annotations can assist package consumers (human and machine) when interpreting data objects. Using fragment selectors with XML-based metadata associates
49
data resources with their entity and attribute descriptions in a way that existing DataONE ORE maps do not support.
50

    
51
.. figure:: images/annotation_model.png
52

    
53
   Figure 1. Diagram illustrating the annotation model for a sample data package
54
   
55
In an effort to illustrate as many features of the proposed model, the example makes the following assumptions:
56
  * the EML metadata package describes 1 data table file
57
  * the data table has 3 columns (patient, weight, height)
58
  * the EML package has been updated once with a new revision
59
  * the revised package has a revised annotation
60
  * there are 2 different users annotating the revised package
61

    
62

    
63
Important concepts used in the model:
64
   * `oa:hasBody <http://www.openannotation.org/spec/core/core.html#BodyTarget>`_ : The body contains the semantic concept that describes the target
65
   * `oa:hasTarget <http://www.openannotation.org/spec/core/core.html#BodyTarget>`_ : The target specifies the resource being annotated
66
   * `oa:hasSource <http://www.openannotation.org/spec/core/specific.html#SpecificAnnotations>`_ : Identifies the source of a target to which selectors can be applied.
67
   * `oa:hasSelector <http://www.openannotation.org/spec/core/specific.html#FragmentSelector>`_ : Specifies the part of a resource to which an annotation applies. An XPath FragmentSelector will commonly be used for annotating XML-based metadata resources
68
   * `oa:annotatedBy <http://www.openannotation.org/spec/core/core.html#Provenance>`_ : [subProperty of prov:wasAttributedTo] The object of the relationship is a resource that identifies the agent responsible for creating the Annotation. 
69

    
70
   * `oboe:Measurement <http://www.w3.org/ns/prov#wasInformedBy>`_ : The primary body of semantic annotations on attributes.
71
   * `oboe:ofCharacteristic <http://www.w3.org/ns/prov#used>`_ : Specifies which Characteristic (subclass) is measured
72
   * `oboe:usesStandard <http://www.w3.org/ns/prov#wasInformedBy>`_ : Specifies in which Standard (Unit subclass) the measurement is recorded.
73
   
74

    
75
::
76

    
77
Indexing
78
--------
79
The Metacat Index component has been enhanced to parse semantic models provided as RDF. The general purpose RdfXmlSubprocessor can be used with SparqlFields to extract key concepts from any given model that is added to the document store.
80
The processor assumes that the identifier of the RDF document is the name of the graph being inserted into the triple store.
81
The SPARQL requirements are that the solution[s] return the identifier (pid) of the object being annotated, and the index field being populated with the given value[s].
82
If multiple fields are to be extracted from the model for indexing, a distinct SPARQL query should be used for each field.
83
The query can (and is largely expected to) be constrained to the named graph that contains only that set of annotation triples. While the infrastructure can (and likely will) share the same triple store, 
84
we should not assume other models have been loaded when processing any given graph. This means that any solutions will rely on only the named graph being processed during indexing.
85

    
86
New Index Fields. Currently these are dynamic, multi-valued string fields which allow us to index the new semantic content without changing the SOLR schema. 
87
They are multi-valued because they will store the entire class subsumption hierarchy (up) for any matching concepts
88
and because they will store annotations from the same metadata resources for different attributes.
89
	* ``characteristic_sm``
90
	* ``standard_sm``
91

    
92

    
93

    
94
The SPARQL query used to determine the Characteristics measured in a dataset is shown below. Note that the query includes superclasses in the returned solutions so that 
95
the index returns a match for both general and specific criteria.
96

    
97
::
98

    
99
	PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 
100
	PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#> 
101
	PREFIX owl: <http://www.w3.org/2002/07/owl#> 
102
	PREFIX oboe-core: <http://ecoinformatics.org/oboe/oboe.1.0/oboe-core.owl#> 
103
	PREFIX oa: <http://www.w3.org/ns/oa#>
104
	PREFIX dcterms: <http://purl.org/dc/terms/>
105

    
106
	SELECT ?characteristic_sm ?pid
107
	FROM <$GRAPH_NAME>
108
	WHERE { 
109
			
110
			?measurement rdf:type oboe-core:Measurement .
111
			?measurement rdf:type ?restriction .
112
			?restriction owl:onProperty oboe-core:ofCharacteristic .
113
			?restriction owl:allValuesFrom ?characteristic .
114
			?characteristic rdfs:subClassOf+ ?characteristic_sm .
115
			?characteristic_sm rdfs:subClassOf oboe-core:Characteristic .
116
			
117
			?annotation oa:hasBody ?measurement .												
118
			?annotation oa:hasTarget ?target .
119
			?target oa:hasSource ?metadata .
120
			?metadata dcterms:identifier ?pid . 
121
			
122
	 	}
123
	
124
::
125
	
126
Example
127
_______
128

    
129
Continuing with example model, these concepts would be indexed for the data attributes.
130

    
131
+---------------------------+-------------------+---------------------+-------------------------------------------------------------------------------------+
132
| Object                    |  Field Name       | Field Type          |                                                Value                                |
133
+===========================+===================+=====================+=====================================================================================+
134
| eml.1.1   			    | characteristic_sm | string, multivalued | http://ecoinformatics.org/oboe/oboe.1.0/oboe-core.owl#Characteristic                |
135
+---------------------------+-------------------+---------------------+-------------------------------------------------------------------------------------+
136
| eml.1.1   			    | characteristic_sm | string, multivalued | http://ecoinformatics.org/oboe/oboe.1.0/oboe-core.owl#PhysicalCharacteristic        |
137
+---------------------------+-------------------+---------------------+-------------------------------------------------------------------------------------+
138
| eml.1.1   			    | characteristic_sm | string, multivalued | http://ecoinformatics.org/oboe/oboe.1.0/oboe-characteristics.owl#Mass               |
139
+---------------------------+-------------------+---------------------+-------------------------------------------------------------------------------------+
140
| eml.1.1 				    | characteristic_sm | string, multivalued | http://ecoinformatics.org/oboe/oboe.1.0/oboe-characteristics.owl#Length             |
141
+---------------------------+-------------------+---------------------+-------------------------------------------------------------------------------------+
142
| eml.1.1   			    | characteristic_sm | string, multivalued | http://ecoinformatics.org/oboe/oboe.1.0/oboe-core.owl#Name					        |
143
+---------------------------+-------------------+---------------------+-------------------------------------------------------------------------------------+
144
| eml.1.1   			    | standard_sm		| string, multivalued | http://ecoinformatics.org/oboe/oboe.1.0/oboe-core.owl#Standard 		                |
145
+---------------------------+-------------------+---------------------+-------------------------------------------------------------------------------------+
146
| eml.1.1   			    | standard_sm		| string, multivalued | http://ecoinformatics.org/oboe/oboe.1.0/oboe-core.owl#Unit			                |
147
+---------------------------+-------------------+---------------------+-------------------------------------------------------------------------------------+
148
| eml.1.1   			    | standard_sm		| string, multivalued | http://ecoinformatics.org/oboe/oboe.1.0/oboe-core.owl#BaseUnit		                |
149
+---------------------------+-------------------+---------------------+-------------------------------------------------------------------------------------+
150
| eml.1.1   			    | standard_sm		| string, multivalued | http://ecoinformatics.org/oboe/oboe.1.0/oboe-standards.owl#Gram 	                |
151
+---------------------------+-------------------+---------------------+-------------------------------------------------------------------------------------+
152
| eml.1.1   			    | standard_sm		| string, multivalued | http://ecoinformatics.org/oboe/oboe.1.0/oboe-standards.owl#Meter 	                |
153
+---------------------------+-------------------+---------------------+-------------------------------------------------------------------------------------+
154

    
155
Queries
156
_______-
157
These indexed fields will be used primarily by MetacatUI to enhance discovery - both in terms of recall (concept hierarchies are exploited) and precision (concepts like Mass, do not result in false-positives for "Massachusetts"). 
158
As more aspects of the annotation model (e.g., observation Entity) are included in the index, the queries can incorporate them for greater query precision. Unfortunately, the flat nature of the SOLR index will prevent us from 
159
constructing queries that take full advantage of the underlying semantic annotation. We can filter results so that only those that measured Length Characteristics and Tree Entities, 
160
but not that we measured the Length of the Tree (it may be that we actually measured the Length of the bird in the tree).
161

    
162

    
163
Sample annotation using OWL
164
----------------------------
165
Serialization of the example model. Authored in and exported from Protege.
166

    
167
::
168

    
169
	<?xml version="1.0"?>
170
	
171
	<!DOCTYPE rdf:RDF [
172
	    <!ENTITY oa "http://www.w3.org/ns/oa#" >
173
	    <!ENTITY terms "http://purl.org/dc/terms/" >
174
	    <!ENTITY foaf "http://xmlns.com/foaf/0.1/" >
175
	    <!ENTITY prov "http://www.w3.org/ns/prov#" >
176
	    <!ENTITY cito "http://purl.org/spar/cito/" >
177
	    <!ENTITY owl "http://www.w3.org/2002/07/owl#" >
178
	    <!ENTITY xsd "http://www.w3.org/2001/XMLSchema#" >
179
	    <!ENTITY rdfs "http://www.w3.org/2000/01/rdf-schema#" >
180
	    <!ENTITY rdf "http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
181
	]>
182
	
183
	
184
	<rdf:RDF xmlns="file:///Users/leinfelder/ontologies/brl/oa_sample.owl#"
185
	     xml:base="file:///Users/leinfelder/ontologies/brl/oa_sample.owl"
186
	     xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
187
	     xmlns:prov="http://www.w3.org/ns/prov#"
188
	     xmlns:foaf="http://xmlns.com/foaf/0.1/"
189
	     xmlns:oa="http://www.w3.org/ns/oa#"
190
	     xmlns:cito="http://purl.org/spar/cito/"
191
	     xmlns:terms="http://purl.org/dc/terms/"
192
	     xmlns:owl="http://www.w3.org/2002/07/owl#"
193
	     xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
194
	     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
195
	    <owl:Ontology rdf:about="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl">
196
	        <owl:imports rdf:resource="http://ecoinformatics.org/oboe/oboe.1.0/oboe.owl"/>
197
	        <owl:imports rdf:resource="http://purl.org/NET/dc_owl2dl/terms_od"/>
198
	        <owl:imports rdf:resource="http://purl.org/spar/cito/"/>
199
	        <owl:imports rdf:resource="http://www.w3.org/ns/oa#"/>
200
	        <owl:imports rdf:resource="http://www.w3.org/ns/prov#"/>
201
	        <owl:imports rdf:resource="http://xmlns.com/foaf/0.1/"/>
202
	    </owl:Ontology>
203
	    
204
	
205
	    <!-- 
206
	    ///////////////////////////////////////////////////////////////////////////////////////
207
	    //
208
	    // Individuals
209
	    //
210
	    ///////////////////////////////////////////////////////////////////////////////////////
211
	     -->
212
	
213
	    <!-- https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#BenLeinfelder -->
214
	    <owl:NamedIndividual rdf:about="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#BenLeinfelder">
215
	        <rdf:type rdf:resource="&prov;Person"/>
216
	        <foaf:name rdf:datatype="&xsd;string">Benjamin River Leinfelder</foaf:name>
217
	    </owl:NamedIndividual>
218
	    
219
	    <!-- https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#MattJones -->
220
	    <owl:NamedIndividual rdf:about="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#MattJones">
221
	        <rdf:type rdf:resource="&prov;Person"/>
222
	        <foaf:name rdf:datatype="&xsd;string">Matthew Bently Jones</foaf:name>
223
	    </owl:NamedIndividual>
224
	    
225
	    <!-- https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#ann.1.1 -->
226
	    <owl:NamedIndividual rdf:about="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#ann.1.1">
227
	        <rdf:type rdf:resource="&oa;Annotation"/>
228
	        <oa:hasBody rdf:resource="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#urn:b1"/>
229
	        <oa:hasTarget rdf:resource="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#urn:t1"/>
230
	    </owl:NamedIndividual>
231
	
232
	    <!-- https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#ann.2.1 -->
233
	    <owl:NamedIndividual rdf:about="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#ann.2.1">
234
	        <rdf:type rdf:resource="&oa;Annotation"/>
235
	        <oa:hasBody rdf:resource="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#urn:b1"/>
236
	        <oa:hasTarget rdf:resource="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#urn:t2"/>
237
	    </owl:NamedIndividual>
238
	
239
	    <!-- https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#ann.3.1 -->
240
	    <owl:NamedIndividual rdf:about="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#ann.3.1">
241
	        <rdf:type rdf:resource="&oa;Annotation"/>
242
	        <oa:annotatedBy rdf:resource="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#BenLeinfelder"/>
243
	        <oa:hasBody rdf:resource="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#patient"/>
244
	        <oa:hasTarget rdf:resource="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#urn:t3"/>
245
	    </owl:NamedIndividual>
246
	  
247
	    <!-- https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#ann.4.1 -->
248
	    <owl:NamedIndividual rdf:about="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#ann.4.1">
249
	        <rdf:type rdf:resource="&oa;Annotation"/>
250
	        <oa:annotatedBy rdf:resource="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#BenLeinfelder"/>
251
	        <oa:hasTarget rdf:resource="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#urn:t4"/>
252
	        <oa:hasBody rdf:resource="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#weight"/>
253
	    </owl:NamedIndividual>
254
	
255
	    <!-- https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#ann.5.1 -->
256
	    <owl:NamedIndividual rdf:about="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#ann.5.1">
257
	        <rdf:type rdf:resource="&oa;Annotation"/>
258
	        <oa:annotatedBy rdf:resource="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#BenLeinfelder"/>
259
	        <oa:hasBody rdf:resource="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#height"/>
260
	        <oa:hasTarget rdf:resource="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#urn:t4"/>
261
	    </owl:NamedIndividual>
262
	    
263
	    <!-- https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#ann.6.1 -->
264
	    <owl:NamedIndividual rdf:about="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#ann.6.1">
265
	        <rdf:type rdf:resource="&oa;Annotation"/>
266
	        <oa:annotatedBy rdf:resource="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#BenLeinfelder"/>
267
	        <oa:hasBody rdf:resource="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#urn:rev"/>
268
	        <oa:hasTarget rdf:resource="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#urn:t6"/>
269
	    </owl:NamedIndividual>
270
	
271
	    <!-- https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#ann.7.1 -->
272
	    <owl:NamedIndividual rdf:about="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#ann.7.1">
273
	        <rdf:type rdf:resource="&oa;Annotation"/>
274
	        <oa:annotatedBy rdf:resource="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#MattJones"/>
275
	        <oa:hasBody rdf:resource="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#urn:alt"/>
276
	        <oa:hasTarget rdf:resource="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#urn:t7"/>
277
	    </owl:NamedIndividual>
278
	    
279
	    <!-- https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#data.1.1 -->
280
	    <owl:NamedIndividual rdf:about="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#data.1.1">
281
	        <rdf:type rdf:resource="&prov;Entity"/>
282
	        <terms:identifier rdf:datatype="&xsd;string">doi:10.1234/data.1.1</terms:identifier>
283
	    </owl:NamedIndividual>
284
	    
285
	    <!-- https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#eml.1.1 -->
286
	    <owl:NamedIndividual rdf:about="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#eml.1.1">
287
	        <rdf:type rdf:resource="&prov;Entity"/>
288
	        <terms:identifier rdf:datatype="&xsd;string">doi:10.12345/eml.1.1</terms:identifier>
289
	        <prov:wasAttributedTo rdf:resource="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#BenLeinfelder"/>
290
	    </owl:NamedIndividual>
291
	
292
	    <!-- https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#eml.2.1 -->
293
	    <owl:NamedIndividual rdf:about="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#eml.2.1">
294
	        <rdf:type rdf:resource="&prov;Entity"/>
295
	        <terms:identifier rdf:datatype="&xsd;string">doi:10.12345/eml.2.1</terms:identifier>
296
	        <prov:wasRevisionOf rdf:resource="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#eml.1.1"/>
297
	    </owl:NamedIndividual>
298
	 
299
	    <!-- https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#height -->
300
	    <owl:NamedIndividual rdf:about="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#height">
301
	        <rdf:type rdf:resource="http://ecoinformatics.org/oboe/oboe.1.0/oboe-core.owl#Measurement"/>
302
	        <rdf:type>
303
	            <owl:Restriction>
304
	                <owl:onProperty rdf:resource="http://ecoinformatics.org/oboe/oboe.1.0/oboe-core.owl#usesStandard"/>
305
	                <owl:allValuesFrom rdf:resource="http://ecoinformatics.org/oboe/oboe.1.0/oboe-standards.owl#Meter"/>
306
	            </owl:Restriction>
307
	        </rdf:type>
308
	        <rdf:type>
309
	            <owl:Restriction>
310
	                <owl:onProperty rdf:resource="http://ecoinformatics.org/oboe/oboe.1.0/oboe-core.owl#ofCharacteristic"/>
311
	                <owl:allValuesFrom rdf:resource="http://ecoinformatics.org/oboe/oboe.1.0/oboe-characteristics.owl#Length"/>
312
	            </owl:Restriction>
313
	        </rdf:type>
314
	    </owl:NamedIndividual>
315
	
316
	    <!-- https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#patient -->
317
	    <owl:NamedIndividual rdf:about="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#patient">
318
	        <rdf:type rdf:resource="http://ecoinformatics.org/oboe/oboe.1.0/oboe-core.owl#Measurement"/>
319
	        <rdf:type>
320
	            <owl:Restriction>
321
	                <owl:onProperty rdf:resource="http://ecoinformatics.org/oboe/oboe.1.0/oboe-core.owl#ofCharacteristic"/>
322
	                <owl:allValuesFrom rdf:resource="http://ecoinformatics.org/oboe/oboe.1.0/oboe-core.owl#Name"/>
323
	            </owl:Restriction>
324
	        </rdf:type>
325
	    </owl:NamedIndividual>
326
	
327
	    <!-- https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#urn:alt -->
328
	    <owl:NamedIndividual rdf:about="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#urn:alt">
329
	        <rdf:type rdf:resource="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#Body"/>
330
	    </owl:NamedIndividual>
331
	
332
	    <!-- https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#urn:b1 -->
333
	    <owl:NamedIndividual rdf:about="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#urn:b1">
334
	        <rdf:type rdf:resource="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#Body"/>
335
	        <cito:documents rdf:resource="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#data.1.1"/>
336
	    </owl:NamedIndividual>
337
	   
338
	    <!-- https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#urn:rev -->
339
	    <owl:NamedIndividual rdf:about="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#urn:rev">
340
	        <rdf:type rdf:resource="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#Body"/>
341
	    </owl:NamedIndividual>
342
	
343
	    <!-- https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#urn:t1 -->
344
	    <owl:NamedIndividual rdf:about="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#urn:t1">
345
	        <rdf:type rdf:resource="&oa;SpecificResource"/>
346
	        <oa:hasSource rdf:resource="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#eml.1.1"/>
347
	        <oa:hasSelector rdf:resource="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#xpointer(/eml/dataSet/1)"/>
348
	    </owl:NamedIndividual>
349
	   
350
	    <!-- https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#urn:t2 -->
351
	    <owl:NamedIndividual rdf:about="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#urn:t2">
352
	        <rdf:type rdf:resource="&oa;SpecificResource"/>
353
	        <oa:hasSource rdf:resource="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#eml.2.1"/>
354
	        <oa:hasSelector rdf:resource="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#xpointer(/eml/dataSet/1)"/>
355
	    </owl:NamedIndividual>
356
	    
357
	    <!-- https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#urn:t3 -->
358
	    <owl:NamedIndividual rdf:about="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#urn:t3">
359
	        <rdf:type rdf:resource="&oa;SpecificResource"/>
360
	        <oa:hasSource rdf:resource="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#eml.1.1"/>
361
	        <oa:hasSelector rdf:resource="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#xpointer(/eml/dataSet/1/attributeList/1)"/>
362
	    </owl:NamedIndividual>
363
	
364
	    <!-- https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#urn:t4 -->
365
	    <owl:NamedIndividual rdf:about="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#urn:t4">
366
	        <rdf:type rdf:resource="&oa;SpecificResource"/>
367
	        <oa:hasSource rdf:resource="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#eml.1.1"/>
368
	        <oa:hasSelector rdf:resource="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#xpointer(/eml/dataSet/1/attributeList/2)"/>
369
	    </owl:NamedIndividual>
370
	
371
	    <!-- https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#urn:t5 -->
372
	    <owl:NamedIndividual rdf:about="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#urn:t5">
373
	        <rdf:type rdf:resource="&oa;SpecificResource"/>
374
	        <oa:hasSource rdf:resource="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#eml.1.1"/>
375
	        <oa:hasSelector rdf:resource="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#xpointer(/eml/dataSet/1/attributeList/3)"/>
376
	    </owl:NamedIndividual>
377
	
378
	    <!-- https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#urn:t6 -->
379
	    <owl:NamedIndividual rdf:about="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#urn:t6">
380
	        <rdf:type rdf:resource="&oa;SpecificResource"/>
381
	        <oa:hasSource rdf:resource="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#eml.2.1"/>
382
	        <oa:hasSelector rdf:resource="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#xpointer(/eml/dataSet/1/attributeList/1)"/>
383
	    </owl:NamedIndividual>
384
	
385
	    <!-- https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#urn:t7 -->
386
	    <owl:NamedIndividual rdf:about="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#urn:t7">
387
	        <rdf:type rdf:resource="&oa;SpecificResource"/>
388
	        <oa:hasSource rdf:resource="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#eml.2.1"/>
389
	        <oa:hasSelector rdf:resource="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#xpointer(/eml/dataSet/1/attributeList/1)"/>
390
	    </owl:NamedIndividual>
391
	   
392
	    <!-- https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#weight -->
393
	    <owl:NamedIndividual rdf:about="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#weight">
394
	        <rdf:type rdf:resource="http://ecoinformatics.org/oboe/oboe.1.0/oboe-core.owl#Measurement"/>
395
	        <rdf:type>
396
	            <owl:Restriction>
397
	                <owl:onProperty rdf:resource="http://ecoinformatics.org/oboe/oboe.1.0/oboe-core.owl#ofCharacteristic"/>
398
	                <owl:allValuesFrom rdf:resource="http://ecoinformatics.org/oboe/oboe.1.0/oboe-characteristics.owl#Mass"/>
399
	            </owl:Restriction>
400
	        </rdf:type>
401
	        <rdf:type>
402
	            <owl:Restriction>
403
	                <owl:onProperty rdf:resource="http://ecoinformatics.org/oboe/oboe.1.0/oboe-core.owl#usesStandard"/>
404
	                <owl:allValuesFrom rdf:resource="http://ecoinformatics.org/oboe/oboe.1.0/oboe-standards.owl#Gram"/>
405
	            </owl:Restriction>
406
	        </rdf:type>
407
	    </owl:NamedIndividual>
408
	
409
	    <!-- https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#xpointer(/eml/dataSet/1) -->
410
	    <owl:NamedIndividual rdf:about="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#xpointer(/eml/dataSet/1)">
411
	        <rdf:type rdf:resource="&oa;FragmentSelector"/>
412
	    </owl:NamedIndividual>
413
	    
414
	    <!-- https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#xpointer(/eml/dataSet/1/attributeList/1) -->
415
	    <owl:NamedIndividual rdf:about="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#xpointer(/eml/dataSet/1/attributeList/1)">
416
	        <rdf:type rdf:resource="&oa;FragmentSelector"/>
417
	    </owl:NamedIndividual>
418
	
419
	    <!-- https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#xpointer(/eml/dataSet/1/attributeList/2) -->
420
	    <owl:NamedIndividual rdf:about="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#xpointer(/eml/dataSet/1/attributeList/2)">
421
	        <rdf:type rdf:resource="&oa;FragmentSelector"/>
422
	    </owl:NamedIndividual>
423
	
424
	    <!-- https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#xpointer(/eml/dataSet/1/attributeList/3) -->
425
	    <owl:NamedIndividual rdf:about="https://code.ecoinformatics.org/code/semtools/trunk/docs/design/dataone/oa_sample.owl#xpointer(/eml/dataSet/1/attributeList/3)">
426
	        <rdf:type rdf:resource="&oa;FragmentSelector"/>
427
	    </owl:NamedIndividual>
428
	</rdf:RDF>
429
	
430
	<!-- Generated by the OWL API (version 3.4.2) http://owlapi.sourceforge.net -->
431
	
432
  
433

    
(22-22/26)