diff --git a/docs/src/paradox/02-knora-ontologies/knora-base.md b/docs/src/paradox/02-knora-ontologies/knora-base.md
index 0d2e46d805..f13bcb51f3 100644
--- a/docs/src/paradox/02-knora-ontologies/knora-base.md
+++ b/docs/src/paradox/02-knora-ontologies/knora-base.md
@@ -428,6 +428,17 @@ regardless of the calendar in which they were entered. Properties:
: The precision of the end of the period.
+##### TimeValue
+
+A Knora time value represents a precise moment in time in the Gregorian
+calendar. Since nanosecond precision can be included, it is suitable
+for use as a timestamp. Properties:
+
+`valueHasTimeStamp` (1)
+
+: An `xsd:dateTimeStamp`, stored as an `xsd:dateTime` (because SPARQL
+ does not support `xsd:dateTimeStamp`).
+
##### IntValue
Represents an integer. Property:
@@ -933,6 +944,8 @@ Standoff data type tags are subclasses of `ValueBase` classes.
is stored in the same form that is used for `kb:IntervalValue`. See @ref:[IntervalValue](#intervalvalue).
* `StandoffBooleanTag` Indicates that a substring represents a Boolean, which is stored
in the same form that is used for `kb:BooleanValue`. See @ref:[BooleanValue](#booleanvalue).
+* `StandoffTimeTag` Indicates that a substring represents a timestamp, which is stored
+ in the same form that is used for `kb:TimeValue`. See @ref:[TimeValue](#timevalue).
##### StandoffLinkTag
diff --git a/docs/src/paradox/03-apis/api-v1/xml-to-standoff-mapping.md b/docs/src/paradox/03-apis/api-v1/xml-to-standoff-mapping.md
index 0f4c904d85..264c69e071 100644
--- a/docs/src/paradox/03-apis/api-v1/xml-to-standoff-mapping.md
+++ b/docs/src/paradox/03-apis/api-v1/xml-to-standoff-mapping.md
@@ -280,6 +280,8 @@ Knora allows the use of all its value types as standoff data types
type attribute, e.g. `1.1,2.2`).
- `knora-base:StandoffBooleanTag`: Represents a Boolean value (`true`
or `false` must be submitted in the data type attribute).
+- `knora-base:StandoffTimeTag`: Represents a timestamp value (an `xsd:dateTimeStamp`
+ must be submitted in the data type attribute).
The basic idea is that parts of a text can be marked up in a way that
allows using Knora's built-in data types. In order to do so, the typed
diff --git a/docs/src/paradox/05-internals/development/updating-repositories.md b/docs/src/paradox/05-internals/development/updating-repositories.md
index aa3d04f73d..d9a0d59a25 100644
--- a/docs/src/paradox/05-internals/development/updating-repositories.md
+++ b/docs/src/paradox/05-internals/development/updating-repositories.md
@@ -37,6 +37,9 @@ with existing data, the following must happen:
existing repositories so that they are compatible with the code changes
introduced in the pull request.
+The order of version numbers must correspond to the order in which the pull requests
+are merged.
+
## Adding an Upgrade Plugin
An upgrade plugin is a Scala class that extends `UpgradePlugin`. The name of the plugin
diff --git a/knora-ontologies/knora-base.ttl b/knora-ontologies/knora-base.ttl
index fd0847c0c7..d5f19ef41c 100644
--- a/knora-ontologies/knora-base.ttl
+++ b/knora-ontologies/knora-base.ttl
@@ -33,7 +33,7 @@
:attachedToProject knora-admin:SystemProject ;
- :ontologyVersion "knora-base v6" .
+ :ontologyVersion "knora-base v7" .
@@ -1535,6 +1535,18 @@
+### http://www.knora.org/ontology/knora-base#valueHasTimeStamp
+
+:valueHasTimeStamp rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf :valueHas ;
+
+ :subjectClassConstraint :TimeBase ;
+
+ :objectDatatypeConstraint xsd:dateTime .
+
+
+
### http://www.knora.org/ontology/knora-base#valueHasListNode
:valueHasListNode rdf:type owl:ObjectProperty ;
@@ -1546,7 +1558,6 @@
:objectClassConstraint :ListNode .
-
### http://www.knora.org/ontology/knora-base#valueHasOrder
:valueHasOrder rdf:type owl:DatatypeProperty ;
@@ -2008,6 +2019,24 @@
rdfs:comment "Represents a time interval, e.g. in an audio recording"@en .
+:TimeBase rdf:type owl:Class ;
+
+ rdfs:subClassOf :ValueBase ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :valueHasTimeStamp ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] .
+
+
+### http://www.knora.org/ontology/knora-base#IntervalValue
+
+:TimeValue rdf:type owl:Class ;
+
+ rdfs:subClassOf :Value ,
+ :TimeBase ;
+
+ rdfs:comment "Represents a timestamp"@en .
+
### http://www.knora.org/ontology/knora-base#LinkObj
@@ -2431,6 +2460,16 @@
rdfs:comment "Represents an interval in a TextValue"@en .
+### http://www.knora.org/ontology/knora-base#StandoffTimeTag
+
+:StandoffTimeTag rdf:type owl:Class ;
+
+ rdfs:subClassOf :StandoffDataTypeTag,
+ :TimeBase ;
+
+ rdfs:comment "Represents a timestamp in a TextValue"@en .
+
+
### http://www.knora.org/ontology/knora-base#StandoffBooleanTag
:StandoffBooleanTag rdf:type owl:Class ;
diff --git a/knora-ontologies/salsah-gui.ttl b/knora-ontologies/salsah-gui.ttl
index 6c183c0f51..8e5bde0478 100644
--- a/knora-ontologies/salsah-gui.ttl
+++ b/knora-ontologies/salsah-gui.ttl
@@ -141,6 +141,13 @@
+### http://www.knora.org/ontology/salsah-gui#TimeStamp
+
+:TimeStamp rdf:type :Guielement ,
+ owl:NamedIndividual .
+
+
+
### http://www.knora.org/ontology/salsah-gui#List
:List rdf:type :Guielement ,
diff --git a/salsah1/src/public/js/00_init_javascript.js b/salsah1/src/public/js/00_init_javascript.js
index d90d93f465..2980d51c60 100644
--- a/salsah1/src/public/js/00_init_javascript.js
+++ b/salsah1/src/public/js/00_init_javascript.js
@@ -70,7 +70,6 @@ var VALTYPE_FLOAT = "http://www.knora.org/ontology/knora-base#DecimalValue";
var VALTYPE_DATE = "http://www.knora.org/ontology/knora-base#DateValue";
var VALTYPE_PERIOD = 5;
var VALTYPE_RESPTR = "http://www.knora.org/ontology/knora-base#LinkValue";
-var VALTYPE_TIME = "http://www.knora.org/ontology/knora-base#TimeValue";
var VALTYPE_INTERVAL = "http://www.knora.org/ontology/knora-base#IntervalValue";
var VALTYPE_GEOMETRY = "http://www.knora.org/ontology/knora-base#GeomValue";
var VALTYPE_COLOR = "http://www.knora.org/ontology/knora-base#ColorValue";
@@ -81,6 +80,7 @@ var VALTYPE_RICHTEXT = "http://www.knora.org/ontology/knora-base#TextValue";
var VALTYPE_GEONAME = 15;
var VALTYPE_URI = "http://www.knora.org/ontology/knora-base#UriValue";
var VALTYPE_BOOLEAN = "http://www.knora.org/ontology/knora-base#BooleanValue";
+var VALTYPE_TIME = "http://www.knora.org/ontology/knora-base#TimeValue";
var RESOURCE_TYPE_REGION = "http://www.knora.org/ontology/knora-base#Region";
diff --git a/salsah1/src/public/js/03_showval.js b/salsah1/src/public/js/03_showval.js
index cf40c6a386..b654ce383c 100644
--- a/salsah1/src/public/js/03_showval.js
+++ b/salsah1/src/public/js/03_showval.js
@@ -20,7 +20,7 @@
SALSAH.showval = function(value_container, prop, value_index, options)
{
- //console.log("in showval: valtype is " + prop.valuetype_id);
+ // console.log("in showval: valtype is " + prop.valuetype_id);
switch (prop.valuetype_id) {
// this value type is mot used anymore: every text is a richtext now
/*case VALTYPE_TEXT: {
@@ -41,6 +41,10 @@ SALSAH.showval = function(value_container, prop, value_index, options)
value_container.append(prop.values[value_index]);
break;
}
+ case VALTYPE_TIME: {
+ value_container.append(prop.values[value_index]);
+ break;
+ }
case VALTYPE_BOOLEAN: {
var checkbox = $(' ', {
type: "checkbox"
@@ -166,11 +170,6 @@ SALSAH.showval = function(value_container, prop, value_index, options)
}
break;
}
- case VALTYPE_TIME: {
- value_container.timeobj('init', prop.values[value_index]);
- //value_container.append(prop.values[value_index]);
- break;
- }
case VALTYPE_INTERVAL: {
//value_container.append(prop.values[value_index]);
value_container.timeobj('init', prop.values[value_index]);
diff --git a/salsah1/src/public/js/jquery.editvalue.js b/salsah1/src/public/js/jquery.editvalue.js
index 1cf29c3d2a..457273a3ab 100644
--- a/salsah1/src/public/js/jquery.editvalue.js
+++ b/salsah1/src/public/js/jquery.editvalue.js
@@ -101,6 +101,10 @@
ele.append(settings.property.values[value_index]);
break;
}
+ case VALTYPE_TIME: {
+ ele.append(settings.property.values[value_index]);
+ break;
+ }
case VALTYPE_DATE: {
ele.dateobj('init', settings.property.values[value_index]);
break;
@@ -189,11 +193,6 @@
}
break;
}
- case VALTYPE_TIME: {
- ele.timeobj('init', settings.property.values[value_index]);
- //ele.append(settings.property.values[value_index]);
- break;
- }
case VALTYPE_INTERVAL: {
//ele.append(settings.property.values[value_index]);
ele.append('VALTYPE_INTERVAL: NOT YET IMPLEMENTED!');
@@ -510,6 +509,7 @@
postdata[VALTYPE_INTEGER] = postdata[VALTYPE_TEXT];
postdata[VALTYPE_FLOAT] = postdata[VALTYPE_TEXT];
+ postdata[VALTYPE_TIME] = postdata[VALTYPE_TEXT];
postdata[VALTYPE_RICHTEXT] = function(value, is_new_value) {
var data = {};
diff --git a/salsah1/src/public/js/jquery.extsearch.js b/salsah1/src/public/js/jquery.extsearch.js
index 709965db1e..6cb0edfab5 100644
--- a/salsah1/src/public/js/jquery.extsearch.js
+++ b/salsah1/src/public/js/jquery.extsearch.js
@@ -268,6 +268,17 @@
valfield.append($(' ', {'type': 'text', name: 'searchval', size: 16, maxlength: 32}).addClass('propval').data('gui_element', 'text'));
break;
}
+ case VALTYPE_TIME: { // we use gui_element = "text"
+ compop.append($('', {'value': 'EQ', 'title': 'equal'}).append('='));
+ compop.append($(' ', {'value': 'GT', 'title': 'greater than'}).append('>'));
+ compop.append($(' ', {'value': 'GT_EQ', 'title': 'greater equal than'}).append('≥'));
+ compop.append($(' ', {'value': 'LT', 'title': 'less than'}).append('<'));
+ compop.append($(' ', {'value': 'LT_EQ', 'title': 'less equal than'}).append('≤'));
+ compop.append($(' ', {'value': '!EQ', 'title': 'not equal'}).append('≠'));
+ compop.append($(' ', {'value': 'EXISTS', 'title': 'exists'}).append('∃'));
+ valfield.append($(' ', {'type': 'text', name: 'searchval', size: 16, maxlength: 32}).addClass('propval').data('gui_element', 'text'));
+ break;
+ }
case VALTYPE_DATE: { // we use gui_element = "date"
compop.append($(' ', {'value': 'EQ', 'title': 'equal'}).append('='));
compop.append($(' ', {'value': 'GT', 'title': 'greater than'}).append('>'));
@@ -370,17 +381,6 @@
.appendTo(valfield);
break;
}*/
- case VALTYPE_TIME: { // we use gui_element = "text"
- compop.append($(' ', {'value': 'EQ'}).append('='));
- compop.append($(' ', {'value': 'GT', 'title': 'greater than'}).append('>'));
- compop.append($(' ', {'value': 'GT_EQ', 'title': 'greater equal than'}).append('≥'));
- compop.append($(' ', {'value': 'LT', 'title': 'less than'}).append('<'));
- compop.append($(' ', {'value': 'LT_EQ', 'title': 'less equal than'}).append('≤'));
- compop.append($(' ', {'value': 'IN'}).append('in'));
- compop.append($(' ', {'value': 'EXISTS', 'title': 'Exists'}).append('∃'));
- valfield.append($(' ', {'type': 'text', name: 'searchval'}).addClass('propval').data('gui_element', 'text'));
- break;
- }
case VALTYPE_INTERVAL: {
compop.append($(' ', {'value': 'EXISTS', 'title': 'exists'}).append('∃'));
compop.append('NOT YET IMPLEMENTED!');
diff --git a/salsah1/src/public/js/jquery.propedit.js b/salsah1/src/public/js/jquery.propedit.js
index 1d708ed4f9..fb751e1b59 100644
--- a/salsah1/src/public/js/jquery.propedit.js
+++ b/salsah1/src/public/js/jquery.propedit.js
@@ -529,6 +529,67 @@
}
};
+ postdata[VALTYPE_TIME] = function(value_container, prop, value_index, value, is_new_value) {
+ var data = {};
+ if (is_new_value) {
+ data.time_value = value;
+ data.res_id = res_id;
+ data.prop = prop;
+ data.project_id = project_id;
+ SALSAH.ApiPost('values', data, function(data) {
+ if (data.status == ApiErrors.OK) {
+
+ init_value_structure();
+
+ propinfo[active.prop].values[active.value_index] = data.value;
+ propinfo[active.prop].value_ids[active.value_index] = data.id;
+ propinfo[active.prop].value_rights[active.value_index] = data.rights;
+ propinfo[active.prop].value_iconsrcs[active.value_index] = null;
+ propinfo[active.prop].value_firstprops[active.value_index] = null;
+ propinfo[active.prop].value_restype[active.value_index] = null;
+
+ active.value_container.empty();
+ reset_value(active.value_container, active.prop, active.value_index);
+ if (active.is_new_value) {
+ var prop_container = active.value_container.parent();
+ make_add_button(prop_container, active.prop);
+ }
+ }
+ else {
+ alert(status.errormsg);
+ }
+ active = undefined;
+ }).fail(function(){
+ cancel_edit(value_container);
+ });
+ } else {
+ data.time_value = value;
+ data.project_id = project_id;
+ SALSAH.ApiPut('values/' + encodeURIComponent(propinfo[prop].value_ids[value_index]), data, function(data) {
+ if (data.status == ApiErrors.OK) {
+ propinfo[active.prop].values[active.value_index] = data.value;
+ // set new value Iri
+ propinfo[active.prop].value_ids[active.value_index] = data.id;
+
+ active.value_container.empty();
+ reset_value(active.value_container, active.prop, active.value_index);
+ if (active.is_new_value) {
+ var prop_container = active.value_container.parent();
+ make_add_button(prop_container, active.prop);
+ }
+
+
+ }
+ else {
+ alert(status.errormsg);
+ }
+ active = undefined;
+ }).fail(function(){
+ cancel_edit(value_container);
+ });
+ }
+ };
+
postdata[VALTYPE_URI] = function(value_container, prop, value_index, value, is_new_value) {
var data = {};
if (is_new_value) {
@@ -878,77 +939,6 @@
}
};
-
- // TIMETIMETIMETIMETIME !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- postdata[VALTYPE_TIME] = function(value_container, prop, value_index, value, is_new_value) {
- var data = {};
- if (is_new_value) {
- data.value = value;
- data.res_id = res_id;
- data.prop = prop;
- SALSAH.ApiPost('values', data, function(data) {
- if (data.status == ApiErrors.OK) {
- var tmpobj = {};
- tmpobj.timeval1 = data.value.timeval1;
- tmpobj.timeval2 = data.value.timeval2;
-
- if (!propinfo[active.prop].values) propinfo[active.prop].values = Array();
- if (!propinfo[active.prop].value_ids) propinfo[active.prop].value_ids = Array();
- if (!propinfo[active.prop].value_rights) propinfo[active.prop].value_rights = Array();
- if (!propinfo[prop].value_iconsrcs) propinfo[prop].value_iconsrcs = Array();
- if (!propinfo[prop].value_firstprops) propinfo[prop].value_firstprops = Array();
- if (!propinfo[prop].value_restype) propinfo[prop].value_restype = Array();
- propinfo[active.prop].values[active.value_index] = tmpobj;
- propinfo[active.prop].value_ids[active.value_index] = data.id;
- propinfo[active.prop].value_rights[active.value_index] = data.rights;
- propinfo[active.prop].value_iconsrcs[active.value_index] = null;
- propinfo[active.prop].value_firstprops[active.value_index] = null;
- propinfo[active.prop].value_restype[active.value_index] = null;
-
- active.value_container.empty();
- reset_value(active.value_container, active.prop, active.value_index);
-
- var prop_container = value_container.parent();
- make_add_button(prop_container, active.prop);
- }
- else {
- alert(status.errormsg);
- cancel_edit(value_container);
- }
- active = undefined;
- }).fail(function(){
- cancel_edit(value_container);
- });
- }
- else {
- data.value = value;
- SALSAH.ApiPut('values/' + propinfo[prop].value_ids[value_index], data, function(data) {
- if (data.status == ApiErrors.OK) {
- var tmpobj = {};
- tmpobj.timeval1 = data.value.timeval1;
- tmpobj.timeval2 = data.value.timeval2;
-
- propinfo[active.prop].values[active.value_index] = tmpobj; // HIER IST DER FEHLER!!!!!!!!!
-
- active.value_container.empty();
- reset_value(active.value_container, active.prop, active.value_index);
- if (active.is_new_value) {
- var prop_container = value_container.parent();
- make_add_button(prop_container, active.prop);
- }
- }
- else {
- alert(status.errormsg);
- cancel_edit(value_container);
- }
- active = undefined;
- }).fail(function(){
- cancel_edit(value_container);
- });
- }
- };
- // TIMETIMETIMETIMETIME !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
postdata[VALTYPE_INTERVAL] = function(value_container, prop, value_index, value, is_new_value) {
var data = {};
if (is_new_value) {
@@ -1461,11 +1451,13 @@
}
}
switch (propinfo[prop].guielement) {
- case 'text': {
+ case 'text':
+ case 'timestamp':
+ {
attributes.type = 'text';
if (!is_new_value) {
- if (propinfo[prop].valuetype_id == VALTYPE_FLOAT || propinfo[prop].valuetype_id == VALTYPE_URI) {
+ if (propinfo[prop].valuetype_id == VALTYPE_FLOAT || propinfo[prop].valuetype_id == VALTYPE_URI || propinfo[prop].valuetype_id == VALTYPE_TIME) {
attributes.value = propinfo[prop].values[value_index];
} else if (propinfo[prop].valuetype_id == 'LABEL') {
attributes.value = propinfo[prop].values[value_index];
@@ -1484,7 +1476,7 @@
tmpele.focus();
value_container.append($(' ', {src: save_icon.src, title: strings._save, 'class': 'propedit'}).click(function(event) {
- if (propinfo[prop].valuetype_id == VALTYPE_FLOAT || propinfo[prop].valuetype_id == VALTYPE_URI) {
+ if (propinfo[prop].valuetype_id == VALTYPE_FLOAT || propinfo[prop].valuetype_id == VALTYPE_URI || propinfo[prop].valuetype_id == VALTYPE_TIME) {
postdata[propinfo[prop].valuetype_id](value_container, prop, value_index, value_container.find('input').val(), is_new_value);
} else {
diff --git a/salsah1/src/public/js/jquery.resadd.js b/salsah1/src/public/js/jquery.resadd.js
index 5b51671614..3763bf3413 100644
--- a/salsah1/src/public/js/jquery.resadd.js
+++ b/salsah1/src/public/js/jquery.resadd.js
@@ -592,19 +592,21 @@
prop_status[propname].attributes = attributes; // save attributes for later use
break;
}
- case 'time':
- {
- create_entry(propname, pinfo, function(ele, attr, pinfo) {
- var timebox = $('', attr).insertBefore(ele.find('.entrySep'));
- timebox.timeobj('edit');
- if ((localdata.settings.defaultvalues !== undefined) && (localdata.settings.defaultvalues[propname])) {
- timebox.timeobj('setStart', localdata.settings.defaultvalues[propname]);
- }
- return timebox;
- });
- prop_status[propname].attributes = attributes; // save attributes for later use
- break;
- }
+ case 'timestamp':
+ {
+ attributes.type = 'text';
+ create_entry(propname, pinfo, function(ele, attr, pinfo) {
+ var timestamp_box = $(' ', attr).css({
+ width: '85%'
+ }).insertBefore(ele.find('.entrySep'));
+ if ((localdata.settings.defaultvalues !== undefined) && (localdata.settings.defaultvalues[propname])) {
+ timestamp_box.val(localdata.settings.defaultvalues[propname]);
+ }
+ return timestamp_box;
+ });
+ prop_status[propname].attributes = attributes; // save attributes for later use
+ break;
+ }
case 'interval':
{
create_entry(propname, pinfo, function(ele, attr, pinfo) {
@@ -737,6 +739,7 @@
switch (rtinfo.properties[pinfo].gui_name) {
case 'text':
case 'textarea':
+ case 'timestamp':
{
ele = form.find('[name="' + propname + '"]');
@@ -753,6 +756,8 @@
propvals[propname] = [{decimal_value: parseFloat(ele.val())}];
} else if (rtinfo.properties[pinfo].valuetype_id == VALTYPE_URI) {
propvals[propname] = [{uri_value: ele.val()}];
+ } else if (rtinfo.properties[pinfo].valuetype_id == VALTYPE_TIME) {
+ propvals[propname] = [{time_value: ele.val()}];
} else {
// it is a text
var richtext_value = {};
@@ -777,6 +782,10 @@
vv = {
uri_value: $(this).val()
};
+ } else if (rtinfo.properties[pinfo].valuetype_id == VALTYPE_TIME) {
+ vv = {
+ time_value: $(this).val()
+ };
} else {
// it is a text
var richtext_value = {};
diff --git a/salsah1/src/public/js/jquery.searchext.js b/salsah1/src/public/js/jquery.searchext.js
index 24b0bd04af..3eee4229ec 100644
--- a/salsah1/src/public/js/jquery.searchext.js
+++ b/salsah1/src/public/js/jquery.searchext.js
@@ -173,6 +173,17 @@
valfield.append($(' ').attr({'type': 'text', name: 'searchval', size: 16, maxlength: 32}).addClass('form-control propval').data('gui_element', 'text'));
break;
}
+ case VALTYPE_TIME: { // we use gui_element = "text"
+ compop.append($('').attr({'value': 'EQ', 'title': 'equal'}).append('='));
+ compop.append($(' ').attr({'value': 'GT', 'title': 'greater than'}).append('>'));
+ compop.append($(' ').attr({'value': 'GT_EQ', 'title': 'greater equal than'}).append('≥'));
+ compop.append($(' ').attr({'value': 'LT', 'title': 'less than'}).append('<'));
+ compop.append($(' ').attr({'value': 'LT_EQ', 'title': 'less equal than'}).append('≤'));
+ compop.append($(' ').attr({'value': '!EQ', 'title': 'not equal'}).append('≠'));
+ compop.append($(' ').attr({'value': 'EXISTS', 'title': 'exists'}).append('∃'));
+ valfield.append($(' ').attr({'type': 'text', name: 'searchval', size: 16, maxlength: 32}).addClass('form-control propval').data('gui_element', 'text'));
+ break;
+ }
case VALTYPE_DATE: { // we use gui_element = "date"
compop.append($(' ').attr({'value': 'EQ', 'title': 'equal'}).append('='));
compop.append($(' ').attr({'value': 'GT', 'title': 'greater than'}).append('>'));
@@ -270,17 +281,6 @@
.appendTo(valfield);
break;
}
- case VALTYPE_TIME: { // we use gui_element = "text"
- compop.append($(' ').attr({'value': 'EQ'}).append('='));
- compop.append($(' ').attr({'value': 'GT', 'title': 'greater than'}).append('>'));
- compop.append($(' ').attr({'value': 'GT_EQ', 'title': 'greater equal than'}).append('≥'));
- compop.append($(' ').attr({'value': 'LT', 'title': 'less than'}).append('<'));
- compop.append($(' ').attr({'value': 'LT_EQ', 'title': 'less equal than'}).append('≤'));
- compop.append($(' ').attr({'value': 'IN'}).append('in'));
- compop.append($(' ').attr({'value': 'EXISTS', 'title': 'Exists'}).append('∃'));
- valfield.append($(' ').attr({'type': 'text', name: 'searchval'}).addClass('form-control propval').data('gui_element', 'text'));
- break;
- }
case VALTYPE_INTERVAL: {
compop.append($(' ').attr({'value': 'EXISTS', 'title': 'exists'}).append('∃'));
compop.append('NOT YET IMPLEMENTED!');
diff --git a/salsah1/src/typescript_interfaces/basicMessageComponents.ts b/salsah1/src/typescript_interfaces/basicMessageComponents.ts
index 4a48642d4f..564d8c22a4 100644
--- a/salsah1/src/typescript_interfaces/basicMessageComponents.ts
+++ b/salsah1/src/typescript_interfaces/basicMessageComponents.ts
@@ -204,14 +204,24 @@ export module basicMessageComponents {
/**
* Begin of the interval in seconds
*/
- timeval1: integer;
+ timeval1: number;
/**
* End ofg the interval in seconds
*/
- timeval2: integer;
+ timeval2: number;
}
+
+ /**
+ * Repesents a timestamp.
+ */
+ interface time {
+ /**
+ * An xsd:dateTimeStamp.
+ */
+ timestamp: string;
+ }
/**
* String must be a hexadecimal RGB color code, e.g. "#4169E1"
@@ -369,7 +379,17 @@ export module basicMessageComponents {
/**
* An interval value consisting of two time values
*/
- interval_value: Array;
+ interval_value: Array;
+
+ }
+
+
+ export interface timeValue extends valueBase {
+
+ /**
+ * A timestamp
+ */
+ time_value: time;
}
diff --git a/salsah1/src/typescript_interfaces/changeValueFormats.ts b/salsah1/src/typescript_interfaces/changeValueFormats.ts
index df2983a996..419c2471a6 100644
--- a/salsah1/src/typescript_interfaces/changeValueFormats.ts
+++ b/salsah1/src/typescript_interfaces/changeValueFormats.ts
@@ -126,6 +126,15 @@ export module changeValueFormats {
export interface changeIntervalValueRequest extends changeValueRequestBase, basicMessageComponents.intervalValue {}
+ /**
+ * Represents a request to change a value of type time.
+ *
+ * HTTP PUT to http://host/v1/values/valueIRI
+ *
+ */
+ export interface changeTimeValueRequest extends changeValueRequestBase, basicMessageComponents.timeValue {}
+
+
/**
* Represents a request to change a value of type geoname.
*
diff --git a/salsah1/src/typescript_interfaces/createResourceFormats.ts b/salsah1/src/typescript_interfaces/createResourceFormats.ts
index 79c2917267..1e7f4e5944 100644
--- a/salsah1/src/typescript_interfaces/createResourceFormats.ts
+++ b/salsah1/src/typescript_interfaces/createResourceFormats.ts
@@ -170,7 +170,7 @@ export module createResourceFormats {
[index:string]:Array|Array|Array
|Array|Array|Array
|Array|Array|Array
- |Array|Array|Array;
+ |Array|Array|Array|Array;
}
/**
diff --git a/upgrade/plugins/pr1403/knora-ontologies/knora-admin.ttl b/upgrade/plugins/pr1403/knora-ontologies/knora-admin.ttl
new file mode 100644
index 0000000000..3bf3c8988d
--- /dev/null
+++ b/upgrade/plugins/pr1403/knora-ontologies/knora-admin.ttl
@@ -0,0 +1,781 @@
+# Copyright © 2015-2019 the contributors (see Contributors.md).
+#
+# This file is part of Knora.
+#
+# Knora is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published
+# by the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Knora is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public
+# License along with Knora. If not, see .
+
+@prefix : .
+@prefix knora-base: .
+@prefix owl: .
+@prefix rdf: .
+@prefix rdfs: .
+@prefix xml: .
+@prefix xsd: .
+@prefix foaf: .
+@prefix dcterms: .
+@base .
+
+ rdf:type owl:Ontology ;
+
+ rdfs:label "The Knora admin ontology"@en ;
+
+ knora-base:attachedToProject :SystemProject .
+
+
+#################################################################
+#
+# Object Properties
+#
+#################################################################
+
+
+
+### http://www.knora.org/ontology/knora-admin#belongsToInstitution
+
+:belongsToInstitution rdf:type owl:ObjectProperty ;
+
+ rdfs:subPropertyOf knora-base:objectCannotBeMarkedAsDeleted ;
+
+ rdfs:comment "Indicates which Institution a project belongs to."@en ;
+
+ knora-base:subjectClassConstraint :knoraProject ;
+
+ knora-base:objectClassConstraint :Institution .
+
+
+
+### http://www.knora.org/ontology/knora-admin#belongsToProject
+
+:belongsToProject rdf:type owl:ObjectProperty ;
+
+ rdfs:subPropertyOf knora-base:objectCannotBeMarkedAsDeleted ;
+
+ rdfs:comment "Indicates which project a group belongs to."@en ;
+
+ knora-base:subjectClassConstraint :UserGroup ;
+
+ knora-base:objectClassConstraint :knoraProject .
+
+
+
+### http://www.knora.org/ontology/knora-admin#currentproject
+
+:currentproject rdf:type owl:ObjectProperty ;
+
+ rdfs:subPropertyOf knora-base:objectCannotBeMarkedAsDeleted ;
+
+ rdfs:comment "This property indicates, which is the \"current project\" of a given user. A user can be part of any number of projects, but only one can be the active project."@en ;
+
+ knora-base:subjectClassConstraint :User ;
+
+ knora-base:objectClassConstraint :knoraProject .
+
+
+
+### http://www.knora.org/ontology/knora-admin#isInGroup
+
+:isInGroup rdf:type owl:ObjectProperty ;
+
+ rdfs:subPropertyOf knora-base:objectCannotBeMarkedAsDeleted ;
+
+ rdfs:comment "The given user is part of the given group."@en ;
+
+ rdfs:subPropertyOf ;
+
+ knora-base:subjectClassConstraint :User ;
+
+ knora-base:objectClassConstraint :UserGroup .
+
+
+
+### http://www.knora.org/ontology/knora-admin#isInProject
+
+:isInProject rdf:type owl:ObjectProperty ;
+
+ rdfs:subPropertyOf knora-base:objectCannotBeMarkedAsDeleted ;
+
+ rdfs:comment "The given user is part of the given project."@en ;
+
+ rdfs:subPropertyOf ;
+
+ knora-base:subjectClassConstraint :User ;
+
+ knora-base:objectClassConstraint :knoraProject .
+
+
+
+### http://www.knora.org/ontology/knora-admin#isAdminForProject
+
+:isInProjectAdminGroup rdf:type owl:ObjectProperty ;
+
+ rdfs:subPropertyOf knora-base:objectCannotBeMarkedAsDeleted ;
+
+ rdfs:comment "The given user is part of the given project's ProjectAdmin group."@en ;
+
+ rdfs:subPropertyOf ;
+
+ knora-base:subjectClassConstraint :User ;
+
+ knora-base:objectClassConstraint :knoraProject .
+
+
+
+#################################################################
+#
+# Datatype properties
+#
+#################################################################
+
+
+### http://www.knora.org/ontology/knora-admin#address
+
+:address rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf knora-base:objectCannotBeMarkedAsDeleted ;
+
+ knora-base:objectDatatypeConstraint xsd:string ;
+
+ rdfs:comment "The address of a person or an institution"@en .
+
+
+### http://www.knora.org/ontology/knora-admin#groupName
+
+:groupName rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf knora-base:objectCannotBeMarkedAsDeleted ;
+
+ rdfs:comment "The group's name."@en ;
+
+ knora-base:subjectClassConstraint :UserGroup ;
+
+ knora-base:objectDatatypeConstraint xsd:string ;
+
+ rdfs:subPropertyOf .
+
+
+
+### http://www.knora.org/ontology/knora-admin#groupDescription
+
+:groupDescription rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf knora-base:objectCannotBeMarkedAsDeleted ;
+
+ rdfs:comment "A description of a user group"@en ;
+
+ knora-base:subjectClassConstraint :UserGroup ;
+
+ knora-base:objectDatatypeConstraint xsd:string .
+
+
+
+### http://www.knora.org/ontology/knora-admin#hasSelfJoinEnabled
+
+:hasSelfJoinEnabled rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf knora-base:objectCannotBeMarkedAsDeleted ;
+
+ rdfs:comment "Exists and is true if users can add themselves to the project or group."@en ;
+
+ # No knora-base:subjectClassConstraint, because this can be used with :knoraProject or :UserGroup.
+
+ knora-base:objectDatatypeConstraint xsd:boolean .
+
+
+
+### http://www.knora.org/ontology/knora-admin#institutionName
+
+:institutionName rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf knora-base:objectCannotBeMarkedAsDeleted ;
+
+ rdfs:comment "The institutions's name."@en ;
+
+ rdfs:subPropertyOf ;
+
+ knora-base:subjectClassConstraint :Institution ;
+
+ knora-base:objectDatatypeConstraint xsd:string .
+
+
+
+### http://www.knora.org/ontology/knora-admin#institutionDescription
+
+:institutionDescription rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf knora-base:objectCannotBeMarkedAsDeleted ;
+
+ rdfs:comment "A description of an institution."@en ;
+
+ knora-base:subjectClassConstraint :Institution ;
+
+ knora-base:objectDatatypeConstraint xsd:string .
+
+
+
+### http://www.knora.org/ontology/knora-admin#institutionWebsite
+
+:institutionWebsite rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf knora-base:objectCannotBeMarkedAsDeleted ;
+
+ rdfs:comment "The URL of a web site."@en ;
+
+ knora-base:subjectClassConstraint :Institution ;
+
+ knora-base:objectDatatypeConstraint xsd:anyURI .
+
+
+
+### http://www.knora.org/ontology/knora-admin#isActiveUser
+
+:isInSystemAdminGroup rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf knora-base:objectCannotBeMarkedAsDeleted ;
+
+ rdfs:comment "Exists and is true if the user is a member of the SystemAdmin group."@en ;
+
+ knora-base:subjectClassConstraint :User ;
+
+ knora-base:objectDatatypeConstraint xsd:boolean .
+
+
+
+### http://www.knora.org/ontology/knora-admin#givenName
+
+:givenName rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf foaf:givenName, :objectCannotBeMarkedAsDeleted ;
+
+ rdfs:comment "The user's given name."@en ;
+
+ knora-base:objectDatatypeConstraint xsd:string .
+
+
+
+### http://www.knora.org/ontology/knora-admin#familyName
+
+:familyName rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf foaf:familyName, :objectCannotBeMarkedAsDeleted ;
+
+ rdfs:comment "The user's family name."@en ;
+
+ knora-base:objectDatatypeConstraint xsd:string .
+
+
+
+### http://www.knora.org/ontology/knora-admin#password
+
+:password rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf knora-base:objectCannotBeMarkedAsDeleted ;
+
+ rdfs:comment "An encrypted credential for access"@en ;
+
+ knora-base:subjectClassConstraint :User ;
+
+ knora-base:objectDatatypeConstraint xsd:string .
+
+
+
+### http://www.knora.org/ontology/knora-admin#phone
+
+:phone rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf knora-base:objectCannotBeMarkedAsDeleted ;
+
+ rdfs:comment "The phone number of a person, institution, etc."@en ;
+
+ knora-base:objectDatatypeConstraint xsd:string .
+
+
+
+### http://www.knora.org/ontology/knora-admin#preferredLanguage
+
+:preferredLanguage rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf knora-base:objectCannotBeMarkedAsDeleted ;
+
+ rdfs:comment "The ISO 639-1 code of the user's preferred language."@en ;
+
+ knora-base:objectDatatypeConstraint xsd:string .
+
+
+
+### http://www.knora.org/ontology/knora-admin#projectDescription
+
+:projectDescription rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf knora-base:objectCannotBeMarkedAsDeleted ;
+
+ rdfs:comment "A description of a Knora project."@en ;
+
+ knora-base:subjectClassConstraint :knoraProject ;
+
+ knora-base:objectDatatypeConstraint xsd:string .
+
+
+
+### http://www.knora.org/ontology/knora-admin#projectKeyword
+
+:projectKeyword rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf knora-base:objectCannotBeMarkedAsDeleted ;
+
+ rdfs:comment "A keyword describing a project."@en ;
+
+ knora-base:subjectClassConstraint :knoraProject ;
+
+ knora-base:objectDatatypeConstraint xsd:string .
+
+
+
+### http://www.knora.org/ontology/knora-admin#projectLongname
+
+:projectLongname rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf knora-base:objectCannotBeMarkedAsDeleted ;
+
+ rdfs:comment "The longname of a Knora project."@en ;
+
+ rdfs:subPropertyOf ;
+
+ knora-base:subjectClassConstraint :knoraProject ;
+
+ knora-base:objectDatatypeConstraint xsd:string .
+
+
+
+### http://www.knora.org/ontology/knora-admin#projectLogo
+
+:projectLogo rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf knora-base:objectCannotBeMarkedAsDeleted ;
+
+ rdfs:comment "The path to the projects's logo."@en ;
+
+ knora-base:subjectClassConstraint :knoraProject ;
+
+ knora-base:objectDatatypeConstraint xsd:string .
+
+
+### http://www.knora.org/ontology/knora-admin#projectRestrictedViewSize
+
+:projectRestrictedViewSize rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf knora-base:objectCannotBeMarkedAsDeleted ;
+
+ rdfs:comment "The size of the image (as defined by IIIF) returned for restricted view."@en ;
+
+ knora-base:subjectClassConstraint :knoraProject ;
+
+ knora-base:objectDatatypeConstraint xsd:string .
+
+
+### http://www.knora.org/ontology/knora-admin#projectRestrictedViewWatermark
+
+:projectRestrictedViewWatermark rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf knora-base:objectCannotBeMarkedAsDeleted ;
+
+ rdfs:comment "The path to the restricted view watermark."@en ;
+
+ knora-base:subjectClassConstraint :knoraProject ;
+
+ knora-base:objectDatatypeConstraint xsd:string .
+
+
+### http://www.knora.org/ontology/knora-admin#projectShortname
+
+:projectShortname rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf knora-base:objectCannotBeMarkedAsDeleted ;
+
+ rdfs:comment "The unique shortname of a Knora project."@en ;
+
+ rdfs:subPropertyOf ;
+
+ knora-base:subjectClassConstraint :knoraProject ;
+
+ knora-base:objectDatatypeConstraint xsd:string .
+
+
+
+### http://www.knora.org/ontology/knora-admin#projectShortcode
+
+:projectShortcode rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf knora-base:objectCannotBeMarkedAsDeleted ;
+
+ rdfs:comment "The unique short code of a Knora project."@en ;
+
+ rdfs:subPropertyOf ;
+
+ knora-base:subjectClassConstraint :knoraProject ;
+
+ knora-base:objectDatatypeConstraint xsd:string .
+
+
+
+### http://www.knora.org/ontology/knora-admin#username
+
+:username rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf knora-base:objectCannotBeMarkedAsDeleted ;
+
+ rdfs:comment "The username and login name of a user."@en ;
+
+ knora-base:subjectClassConstraint :User ;
+
+ knora-base:objectDatatypeConstraint xsd:string .
+
+
+
+### http://www.knora.org/ontology/knora-admin#email
+
+:email rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf knora-base:objectCannotBeMarkedAsDeleted ;
+
+ rdfs:comment "The email address and login name of a user."@en ;
+
+ knora-base:objectDatatypeConstraint xsd:string .
+
+
+
+### http://www.knora.org/ontology/knora-admin#status
+
+:status rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf knora-base:objectCannotBeMarkedAsDeleted ;
+
+ rdfs:comment "The status of the user / group / project. It is false if the entity has been deactivated (deleted)."@en ;
+
+ knora-base:objectDatatypeConstraint xsd:boolean .
+
+
+
+#################################################################
+#
+# Classes
+#
+#################################################################
+
+
+
+### http://www.knora.org/ontology/knora-admin#Institution
+
+:Institution rdf:type owl:Class ;
+
+ rdfs:subClassOf foaf:Organization ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :institutionName ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :institutionDescription ;
+ owl:maxCardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :institutionWebsite ;
+ owl:minCardinality "0"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :phone ;
+ owl:minCardinality "0"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :address ;
+ owl:minCardinality "0"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :email ;
+ owl:minCardinality "0"^^xsd:nonNegativeInteger
+ ] ;
+
+ rdfs:comment "An institution that has data in Knora."@en .
+
+
+
+### http://www.knora.org/ontology/knora-admin#User
+
+:User rdf:type owl:Class ;
+
+ rdfs:subClassOf foaf:Person ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :username ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :email ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :familyName ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :givenName ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :password ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :preferredLanguage ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :status ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :isInProject ;
+ owl:minCardinality "0"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :isInGroup ;
+ owl:minCardinality "0"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :isInSystemAdminGroup ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ;
+
+ rdfs:comment "Represents a Knora user."@en .
+
+
+
+### http://www.knora.org/ontology/knora-admin#UserGroup
+
+:UserGroup rdf:type owl:Class ;
+
+ rdfs:subClassOf foaf:Group ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :groupName ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :groupDescription ;
+ owl:maxCardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :status ;
+ owl:maxCardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :belongsToProject ;
+ owl:maxCardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :hasSelfJoinEnabled ;
+ owl:maxCardinality "1"^^xsd:nonNegativeInteger
+ ] ;
+
+ rdfs:comment "A group of Knora users."@en .
+
+
+
+
+### http://www.knora.org/ontology/knora-admin#knoraProject
+
+:knoraProject rdf:type owl:Class ;
+
+ rdfs:subClassOf foaf:Project ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :projectShortname ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :projectShortcode ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :projectLongname ;
+ owl:maxCardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :projectDescription ;
+ owl:minCardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :projectKeyword ;
+ owl:minCardinality "0"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :projectLogo ;
+ owl:maxCardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :projectRestrictedViewSize ;
+ owl:maxCardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :projectRestrictedViewWatermark ;
+ owl:maxCardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :belongsToInstitution ;
+ owl:maxCardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :status ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :hasSelfJoinEnabled ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ;
+
+ rdfs:comment "Represents a project that uses Knora."@en .
+
+
+
+
+#################################################################
+#
+# Individuals
+#
+#################################################################
+
+### http://www.knora.org/ontology/knora-admin#UnknownUser
+:UnknownUser rdf:type :UserGroup ;
+ :groupName "UnknownUser" ;
+ :status "true"^^xsd:boolean .
+
+### http://www.knora.org/ontology/knora-admin#KnownUser
+:KnownUser rdf:type :UserGroup ;
+ :groupName "KnownUser" ;
+ :status "true"^^xsd:boolean .
+
+### http://www.knora.org/ontology/knora-admin#Creator
+:Creator rdf:type :UserGroup ;
+ :groupName "Creator" ;
+ :status "true"^^xsd:boolean .
+
+### http://www.knora.org/ontology/knora-admin#ProjectMember
+:ProjectMember rdf:type :UserGroup ;
+ :groupName "ProjectMember" ;
+ :status "true"^^xsd:boolean .
+
+### http://www.knora.org/ontology/knora-admin#ProjectAdmin
+:ProjectAdmin rdf:type :UserGroup ;
+ :groupName "ProjectAdmin" ;
+ :status "true"^^xsd:boolean .
+
+### http://www.knora.org/ontology/knora-admin#SystemAdmin
+:SystemAdmin rdf:type :UserGroup ;
+ :groupName "SystemAdmin" ;
+ :belongsToProject :SystemProject ;
+ :status "true"^^xsd:boolean ;
+ :hasSelfJoinEnabled "false"^^xsd:boolean .
+
+### http://www.knora.org/ontology/knora-admin#SystemUser
+:SystemUser rdf:type :User ;
+ rdfs:comment "A built-in system user."@en ;
+ :username "system";
+ :email "system@localhost" ;
+ :givenName "Knora" ;
+ :familyName "System" ;
+ :password "-" ;
+ :status "true"^^xsd:boolean ;
+ :preferredLanguage "en" ;
+ :isInSystemAdminGroup "false"^^xsd:boolean .
+
+### http://www.knora.org/ontology/knora-admin#AnonymousUser
+:AnonymousUser rdf:type :User ;
+ rdfs:comment "A built-in anonymous user."@en ;
+ :username "anonymous" ;
+ :email "anonymous@localhost" ;
+ :givenName "Knora" ;
+ :familyName "Anonymous" ;
+ :password "-" ;
+ :status "true"^^xsd:boolean ;
+ :preferredLanguage "en" ;
+ :isInSystemAdminGroup "false"^^xsd:boolean .
+
+### http://www.knora.org/ontology/knora-admin#SystemProject
+:SystemProject rdf:type :knoraProject ;
+ rdfs:comment "A built-in project representing the Knora System."@en ;
+ :projectShortname "SystemProject" ;
+ :projectShortcode "FFFF" ;
+ :projectLongname "Knora System Project" ;
+ :projectDescription "Knora System Project"@en ;
+ :status "true"^^xsd:boolean ;
+ :hasSelfJoinEnabled "false"^^xsd:boolean .
+
+
+### http://www.knora.org/ontology/knora-admin#SharedOntologiesProject
+:DefaultSharedOntologiesProject rdf:type :knoraProject ;
+ rdfs:comment "The default project for shared ontologies."@en ;
+ :projectShortname "DefaultSharedOntologiesProject" ;
+ :projectShortcode "0000" ;
+ :projectLongname "Knora Default Shared Ontologies Project" ;
+ :projectDescription "Knora Shared Ontologies Project"@en ;
+ :status "true"^^xsd:boolean ;
+ :hasSelfJoinEnabled "false"^^xsd:boolean .
+
+#
+##
+### Permission Class Properties
+##
+#
+### http://www.knora.org/ontology/knora-admin#forProject
+
+:forProject rdf:type rdf:Property ;
+ rdfs:subPropertyOf knora-base:objectCannotBeMarkedAsDeleted ;
+ rdfs:comment "Permission property pointing to a knoraProject."@en ;
+ knora-base:subjectClassConstraint :Permission ;
+ knora-base:objectClassConstraint :knoraProject .
+
+### http://www.knora.org/ontology/knora-admin#forGroup
+:forGroup rdf:type rdf:Property ;
+ rdfs:subPropertyOf knora-base:objectCannotBeMarkedAsDeleted ;
+ rdfs:comment "Permission property pointing to a UserGroup."@en ;
+ knora-base:subjectClassConstraint :Permission ;
+ knora-base:objectClassConstraint :UserGroup .
+
+### http://www.knora.org/ontology/knora-admin#forResourceClass
+:forResourceClass rdf:type rdf:Property ;
+ rdfs:subPropertyOf knora-base:objectCannotBeMarkedAsDeleted ;
+ rdfs:comment "Permission property pointing to a resource class."@en ;
+ knora-base:subjectClassConstraint :Permission .
+
+### http://www.knora.org/ontology/knora-admin#forProperty
+:forProperty rdf:type rdf:Property ;
+ rdfs:subPropertyOf knora-base:objectCannotBeMarkedAsDeleted ;
+ rdfs:comment "Permission property pointing to a resource property."@en ;
+ knora-base:subjectClassConstraint :Permission .
+
+
+#
+##
+### Permission Class and Sub-Classes
+##
+#
+### http://www.knora.org/ontology/knora-admin#Permission
+:Permission rdf:type owl:Class ;
+ rdfs:comment "Base Permission class."@en.
+
+
+### http://www.knora.org/ontology/knora-admin#AdministrativePermission
+:AdministrativePermission rdf:type owl:Class ;
+ rdfs:comment "Administrative Permission class used to create instances for storing administrative permissions on groups."@en ;
+ rdfs:subClassOf :Permission .
+
+### http://www.knora.org/ontology/knora-admin#DefaultObjectAccessPermission
+:DefaultObjectAccessPermission rdf:type owl:Class ;
+ rdfs:comment "Default Object Access Permission class used to create instances for storing default object access permission for a project and either groups, resource classes, or properties."@en ;
+ rdfs:subClassOf :Permission .
diff --git a/upgrade/plugins/pr1403/knora-ontologies/knora-base.ttl b/upgrade/plugins/pr1403/knora-ontologies/knora-base.ttl
new file mode 100644
index 0000000000..e34e69858c
--- /dev/null
+++ b/upgrade/plugins/pr1403/knora-ontologies/knora-base.ttl
@@ -0,0 +1,2760 @@
+# Copyright © 2015-2019 the contributors (see Contributors.md).
+#
+# This file is part of Knora.
+#
+# Knora is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published
+# by the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Knora is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public
+# License along with Knora. If not, see .
+
+@prefix : .
+@prefix owl: .
+@prefix rdf: .
+@prefix rdfs: .
+@prefix xml: .
+@prefix xsd: .
+@prefix foaf: .
+@prefix dcterms: .
+@prefix salsah-gui: .
+@prefix knora-admin: .
+@base .
+
+ rdf:type owl:Ontology ;
+
+ rdfs:label "The Knora base ontology"@en ;
+
+ :attachedToProject knora-admin:SystemProject ;
+
+ :ontologyVersion "PR XXXX" .
+
+
+
+#################################################################
+#
+# Properties
+#
+#################################################################
+
+
+
+### http://www.knora.org/ontology/knora-base#ontologyVersion
+
+:ontologyVersion rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf :objectCannotBeMarkedAsDeleted ;
+
+ rdfs:comment "Indicates the version of the Knora built-in ontologies in a repository."@en ;
+
+ :subjectClassConstraint owl:Ontology ;
+
+ :objectDatatypeConstraint xsd:string .
+
+
+
+### http://www.knora.org/ontology/knora-base#isMainResource
+
+# This property is generated by a SPARQL CONSTRUCT query, it is not used in the triplestore and not used in the API
+
+:isMainResource rdf:type owl:DatatypeProperty ;
+
+ rdfs:comment "Indicates if the given resource is the main resource of a request or a resource referred to by a link property."@en;
+
+ :subjectClassConstraint :Resource ;
+
+ :objectDatatypeConstraint xsd:boolean .
+
+
+### http://www.knora.org/ontology/knora-base#objectCannotBeMarkedAsDeleted
+
+:objectCannotBeMarkedAsDeleted rdf:type rdf:Property ;
+
+ rdfs:comment "The base property of properties whose objects can't be marked as deleted"@en .
+
+
+
+### http://www.knora.org/ontology/knora-base#objectDatatypeConstraint
+
+:objectDatatypeConstraint rdf:type owl:DatatypeProperty ;
+
+ rdfs:comment "Specifies the type required as the object of a datatype property"@en .
+
+
+
+### http://www.knora.org/ontology/knora-base#resourceIcon
+
+:resourceIcon rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf :objectCannotBeMarkedAsDeleted ;
+
+ :subjectClassConstraint owl:Class ;
+
+ :objectDatatypeConstraint xsd:string .
+
+
+
+### http://www.knora.org/ontology/knora-base#resourceProperty
+
+:resourceProperty rdf:type owl:ObjectProperty ;
+
+ rdfs:comment "The base property of properties that point from Knora resources to Knora resources or values. These properties are required to have cardinalities in the resource classes in which they are used."@en ;
+
+ :subjectClassConstraint :Resource .
+
+
+
+### http://www.knora.org/ontology/knora-base#subjectClassConstraint
+
+:subjectClassConstraint rdf:type owl:ObjectProperty ;
+
+ rdfs:comment "Specifies the OWL class that the subject of a property must belong to"@en .
+
+
+
+### http://www.knora.org/ontology/knora-base#objectClassConstraint
+
+:objectClassConstraint rdf:type owl:ObjectProperty ;
+
+ rdfs:comment "Specifies the OWL class that the object of a property must belong to"@en .
+
+
+
+### http://www.knora.org/ontology/knora-base#isEditable
+
+:isEditable rdf:type owl:AnnotationProperty ;
+
+ :objectDatatypeConstraint xsd:boolean ;
+
+ rdfs:label "is editable"@en ;
+
+ rdfs:comment "Indicates whether a property's values can be updated via the Knora API."@en .
+
+
+
+### http://www.knora.org/ontology/knora-base#canBeInstantiated
+
+:canBeInstantiated rdf:type owl:AnnotationProperty ;
+
+ :subjectClassConstraint owl:Class ;
+
+ :objectDatatypeConstraint xsd:boolean ;
+
+ rdfs:label "can be instantiated"@en ;
+
+ rdfs:comment "Indicates whether a resource class can be instantiated via the Knora API."@en .
+
+
+
+### http://www.knora.org/ontology/knora-base#attachedToProject
+
+:attachedToProject rdf:type owl:ObjectProperty ;
+
+ rdfs:subPropertyOf :objectCannotBeMarkedAsDeleted ;
+
+ rdfs:label "attached to project"@en ;
+
+ rdfs:comment "Connects something to a project"@en ;
+
+ :objectClassConstraint knora-admin:knoraProject .
+
+
+
+### http://www.knora.org/ontology/knora-base#attachedToUser
+
+:attachedToUser rdf:type owl:ObjectProperty ;
+
+ rdfs:subPropertyOf :objectCannotBeMarkedAsDeleted ;
+
+ rdfs:label "attached to user"@en ;
+
+ rdfs:comment "Connects something to a user"@en ;
+
+ :objectClassConstraint knora-admin:User .
+
+
+### http://www.knora.org/ontology/knora-base#hasColor
+
+:hasColor rdf:type owl:ObjectProperty ;
+
+ rdfs:label "Farbe"@de ,
+ "Color"@en ,
+ "Couleur"@fr ,
+ "Colore"@it ;
+
+ rdfs:comment """Specifies the color of a region."""@en ;
+
+ salsah-gui:guiAttribute "ncolors=8"^^xsd:string ;
+
+ :objectClassConstraint :ColorValue ;
+
+ :subjectClassConstraint :Region ;
+
+ rdfs:subPropertyOf :hasValue ;
+
+ :isEditable true ;
+
+ salsah-gui:guiElement salsah-gui:Colorpicker .
+
+
+
+### http://www.knora.org/ontology/knora-base#hasComment
+
+:hasComment rdf:type owl:ObjectProperty ;
+
+ rdfs:label "Kommentar"@de ,
+ "Comment"@en ,
+ "Commentaire"@fr ,
+ "Commento"@it ;
+
+ rdfs:comment """Represents a comment on a resource as a knora-base:TextValue"""@de ;
+
+ :subjectClassConstraint :Resource ;
+
+ :objectClassConstraint :TextValue ;
+
+ :isEditable true ;
+
+ salsah-gui:guiElement salsah-gui:Richtext ;
+
+ rdfs:subPropertyOf :hasValue .
+
+
+
+### http://www.knora.org/ontology/knora-base#hasExtResValue
+
+:hasExtResValue rdf:type owl:ObjectProperty ;
+
+ rdfs:label "hat externen Wert"@de ,
+ "has external Value"@en ,
+ "a valeur externe"@fr ,
+ "ha valore esterno"@it ;
+
+ :objectClassConstraint :ExternalResValue ;
+
+ :subjectClassConstraint :ExternalResource ;
+
+ rdfs:subPropertyOf :hasValue .
+
+
+### http://www.knora.org/ontology/knora-base#hasFileValue
+
+:hasFileValue rdf:type owl:ObjectProperty ;
+
+ :objectClassConstraint :FileValue ;
+
+ rdfs:label "hat Datei"@de ,
+ "has file"@en ,
+ "a fichier"@fr ,
+ "ha file"@it ;
+
+ rdfs:comment "Connects a Representation to a file"@en ;
+
+ salsah-gui:guiElement salsah-gui:Fileupload ;
+
+ :subjectClassConstraint :Representation ;
+
+ rdfs:subPropertyOf :hasValue .
+
+
+
+### http://www.knora.org/ontology/knora-base#hasStillImageFileValue
+
+:hasStillImageFileValue rdf:type owl:ObjectProperty ;
+
+ rdfs:label "hat Bilddatei"@de ,
+ "has image file"@en ,
+ "a fichier d'image"@fr ,
+ "ha file imagine"@it ;
+
+ rdfs:comment "Connects a Representation to an image file"@en ;
+
+ :objectClassConstraint :StillImageFileValue ;
+
+ :subjectClassConstraint :StillImageRepresentation ;
+
+ :isEditable true ;
+
+ salsah-gui:guiElement salsah-gui:Fileupload ;
+
+ rdfs:subPropertyOf :hasFileValue .
+
+
+
+### http://www.knora.org/ontology/knora-base#hasMovingImageFileValue
+
+:hasMovingImageFileValue rdf:type owl:ObjectProperty ;
+
+ rdfs:label "hat Filmdatei"@de ,
+ "has movie file"@en ,
+ "a fichier de film"@fr ,
+ "ha file film"@it ;
+
+ rdfs:comment "Connects a Representation to a movie file"@en ;
+
+ :objectClassConstraint :MovingImageFileValue ;
+
+ :subjectClassConstraint :MovingImageRepresentation ;
+
+ :isEditable true ;
+
+ salsah-gui:guiElement salsah-gui:Fileupload ;
+
+ rdfs:subPropertyOf :hasFileValue .
+
+
+
+### http://www.knora.org/ontology/knora-base#hasAudioFileValue
+
+:hasAudioFileValue rdf:type owl:ObjectProperty ;
+
+ rdfs:label "hat Audiodatei"@de ,
+ "has audio file"@en ,
+ "a fichier d'audio"@fr ,
+ "ha file audio"@it ;
+
+ rdfs:comment "Connects a Representation to an audio file"@en ;
+
+ :objectClassConstraint :AudioFileValue ;
+
+ :subjectClassConstraint :AudioRepresentation ;
+
+ :isEditable true ;
+
+ salsah-gui:guiElement salsah-gui:Fileupload ;
+
+ rdfs:subPropertyOf :hasFileValue .
+
+
+
+### http://www.knora.org/ontology/knora-base#hasDDDFileValue
+
+:hasDDDFileValue rdf:type owl:ObjectProperty ;
+
+ rdfs:label "hat 3D-Datei"@de ,
+ "has 3D-file"@en ,
+ "a ficher de 3D"@fr ,
+ "ha file 3D"@it ;
+
+ rdfs:comment "Connects a Representation to a 3D-file"@en ;
+
+ :objectClassConstraint :DDDFileValue ;
+
+ :subjectClassConstraint :DDDRepresentation ;
+
+ :isEditable true ;
+
+ salsah-gui:guiElement salsah-gui:Fileupload ;
+
+ rdfs:subPropertyOf :hasFileValue .
+
+
+
+### http://www.knora.org/ontology/knora-base#hasTextFileValue
+
+:hasTextFileValue rdf:type owl:ObjectProperty ;
+
+ rdfs:label "hat Textdatei"@de ,
+ "has text file"@en ,
+ "a fichier de texte"@fr ,
+ "ha file testo"@it ;
+
+ rdfs:comment "Connects a Representation to a text file"@en ;
+
+ :objectClassConstraint :TextFileValue ;
+
+ :subjectClassConstraint :TextRepresentation ;
+
+ :isEditable true ;
+
+ salsah-gui:guiElement salsah-gui:Fileupload ;
+
+ rdfs:subPropertyOf :hasFileValue .
+
+
+
+### http://www.knora.org/ontology/knora-base#hasDocumentFileValue
+
+:hasDocumentFileValue rdf:type owl:ObjectProperty ;
+
+ rdfs:label "hat Dokument"@de ,
+ "has document"@en ,
+ "a document"@fr ,
+ "ha documento"@it ;
+
+ rdfs:comment "Connects a Representation to a document"@en ;
+
+ :objectClassConstraint :DocumentFileValue ;
+
+ :subjectClassConstraint :DocumentRepresentation ;
+
+ :isEditable true ;
+
+ salsah-gui:guiElement salsah-gui:Fileupload ;
+
+ rdfs:subPropertyOf :hasFileValue .
+
+
+
+### http://www.knora.org/ontology/knora-base#hasGeometry
+
+:hasGeometry rdf:type owl:ObjectProperty ;
+
+ rdfs:label "Geometrie"@de ,
+ "Geometry"@en ,
+ "Géometrie"@fr ,
+ "Geometria"@it ;
+
+ rdfs:comment """Represents a geometrical shape."""@en ;
+
+ rdfs:subPropertyOf :hasValue ;
+
+ salsah-gui:guiElement salsah-gui:Geometry ;
+
+ :isEditable true ;
+
+ :objectClassConstraint :GeomValue ;
+
+ :subjectClassConstraint :Region .
+
+
+
+### http://www.knora.org/ontology/knora-base#hasLinkTo
+
+:hasLinkTo rdf:type owl:ObjectProperty ;
+
+ rdfs:subPropertyOf :resourceProperty ;
+
+ rdfs:label "hat Link zu"@de ,
+ "has Link to"@en ,
+ "a lien vers"@fr ,
+ "ha Link verso"@it ;
+
+ rdfs:comment "Represents a direct connection between two resources"@en ;
+
+ :isEditable true ;
+
+ :objectClassConstraint :Resource ;
+
+ :subjectClassConstraint :Resource .
+
+
+
+### http://www.knora.org/ontology/knora-base#hasLinkToValue
+
+:hasLinkToValue rdf:type owl:ObjectProperty ;
+
+ rdfs:comment "Points to a LinkValue reification describing a link between two resources"@en ;
+
+ rdfs:label "hat Link zu"@de ,
+ "has Link to"@en ,
+ "a lien vers"@fr ,
+ "ha Link verso"@it ;
+
+ rdfs:comment "Represents a direct connection between two resources"@en ;
+
+ :isEditable true ;
+
+ :objectClassConstraint :LinkValue ;
+
+ :subjectClassConstraint :Resource ;
+
+ rdfs:subPropertyOf :hasValue .
+
+
+
+### http://www.knora.org/ontology/knora-base#hasRepresentation
+
+:hasRepresentation rdf:type owl:ObjectProperty ;
+
+ rdfs:label "hat Repräsentation"@de ,
+ "has Representation"@en ,
+ "a Répresentation"@fr ,
+ "ha Rappresentazione"@it ;
+
+ rdfs:comment "References an instance of a Representation. A Representation contains the metadata of a digital object (= file) which represents some physical entity such as an image, a sound, an encoded text etc."@en ;
+
+ :objectClassConstraint :Representation ;
+
+ :subjectClassConstraint :Resource ;
+
+ :isEditable true ;
+
+ rdfs:subPropertyOf :hasLinkTo .
+
+
+
+### http://www.knora.org/ontology/knora-base#hasRepresentationValue
+
+:hasRepresentationValue rdf:type owl:ObjectProperty ;
+
+ :objectClassConstraint :LinkValue ;
+
+ :subjectClassConstraint :Resource ;
+
+ :isEditable true ;
+
+ rdfs:subPropertyOf :hasLinkToValue .
+
+
+
+
+### http://www.knora.org/ontology/knora-base#hasStandoffLinkTo
+
+:hasStandoffLinkTo rdf:type owl:ObjectProperty ;
+
+ rdfs:label "hat Standoff Link zu"@de ,
+ "has Standoff Link to"@en ,
+ "a standoff lien vers"@fr ,
+ "ha standoff link verso"@it ;
+
+ rdfs:comment "Repräsentiert einen Link im Standoff Markup von einer Ressource zu einer anderen"@de ,
+ "Represents a link in standoff markup from one resource to another."@en ;
+
+ :objectClassConstraint :Resource ;
+
+ :subjectClassConstraint :Resource ;
+
+ rdfs:subPropertyOf :hasLinkTo .
+
+
+
+### http://www.knora.org/ontology/knora-base#hasStandoffLinkToValue
+
+:hasStandoffLinkToValue rdf:type owl:ObjectProperty ;
+
+ rdfs:label "hat Standoff Link zu"@de ,
+ "has Standoff Link to"@en ,
+ "a standoff lien vers"@fr ,
+ "ha standoff link verso"@it ;
+
+ rdfs:comment "Repräsentiert einen Link im Standoff Markup von einer Ressource zu einer anderen"@de ,
+ "Represents a link in standoff markup from one resource to another."@en ;
+
+ :objectClassConstraint :LinkValue ;
+
+ :subjectClassConstraint :Resource ;
+
+ rdfs:subPropertyOf :hasLinkToValue .
+
+
+
+### http://www.knora.org/ontology/knora-base#standoffTagHasLink
+
+:standoffTagHasLink rdf:type owl:ObjectProperty ;
+
+ rdfs:subPropertyOf :objectCannotBeMarkedAsDeleted ;
+
+ :objectClassConstraint :Resource ;
+
+ :subjectClassConstraint :StandoffLinkTag .
+
+
+### http://www.knora.org/ontology/knora-base#standoffTagHasInternalReference
+
+:standoffTagHasInternalReference rdf:type owl:ObjectProperty ;
+
+ rdfs:subPropertyOf :objectCannotBeMarkedAsDeleted ;
+
+ :objectClassConstraint :StandoffTag ;
+
+ :subjectClassConstraint :StandoffInternalReferenceTag .
+
+
+### http://www.knora.org/ontology/knora-base#standoffTagHasStart
+
+:standoffTagHasStart rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf :objectCannotBeMarkedAsDeleted ;
+
+ :subjectClassConstraint :StandoffTag ;
+
+ :objectDatatypeConstraint xsd:integer .
+
+
+### http://www.knora.org/ontology/knora-base#standoffTagHasEnd
+
+:standoffTagHasEnd rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf :objectCannotBeMarkedAsDeleted ;
+
+ :subjectClassConstraint :StandoffTag ;
+
+ :objectDatatypeConstraint xsd:integer .
+
+
+### http://www.knora.org/ontology/knora-base#standoffTagHasStartIndex
+
+:standoffTagHasStartIndex rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf :objectCannotBeMarkedAsDeleted ;
+
+ :subjectClassConstraint :StandoffTag ;
+
+ :objectDatatypeConstraint xsd:integer .
+
+
+### http://www.knora.org/ontology/knora-base#standoffTagHasEndIndex
+
+:standoffTagHasEndIndex rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf :objectCannotBeMarkedAsDeleted ;
+
+ :subjectClassConstraint :StandoffTag ;
+
+ :objectDatatypeConstraint xsd:integer .
+
+
+
+### http://www.knora.org/ontology/knora-base#standoffTagHasStartAncestor
+
+:standoffTagHasStartAncestor rdf:type owl:ObjectProperty, owl:TransitiveProperty ;
+
+ rdfs:subPropertyOf :objectCannotBeMarkedAsDeleted ;
+
+ :subjectClassConstraint :StandoffTag ;
+
+ :objectClassConstraint :StandoffTag .
+
+
+### http://www.knora.org/ontology/knora-base#standoffTagHasStartParent
+
+:standoffTagHasStartParent rdf:type owl:ObjectProperty ;
+
+ rdfs:subPropertyOf :objectCannotBeMarkedAsDeleted, :standoffTagHasStartAncestor ;
+
+ :subjectClassConstraint :StandoffTag ;
+
+ :objectClassConstraint :StandoffTag .
+
+
+### http://www.knora.org/ontology/knora-base#standoffTagHasEndParent
+
+:standoffTagHasEndParent rdf:type owl:ObjectProperty ;
+
+ rdfs:subPropertyOf :objectCannotBeMarkedAsDeleted ;
+
+ :subjectClassConstraint :StandoffTag ;
+
+ :objectClassConstraint :StandoffTag .
+
+
+### http://www.knora.org/ontology/knora-base#standoffTagHasUUID
+
+:standoffTagHasUUID rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf :objectCannotBeMarkedAsDeleted ;
+
+ :subjectClassConstraint :StandoffTag ;
+
+ :objectDatatypeConstraint xsd:string .
+
+
+:valueHasMaxStandoffStartIndex rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf :valueHas ;
+
+ :subjectClassConstraint :Value ;
+
+ :objectDatatypeConstraint xsd:integer .
+
+
+### http://www.knora.org/ontology/knora-base#hasSubListNode
+
+:hasSubListNode rdf:type owl:ObjectProperty ;
+
+ rdfs:comment "A hierarchical list is formed using the \"hasSubListNode\"-property"@en ;
+
+ rdfs:subPropertyOf :objectCannotBeMarkedAsDeleted ;
+
+ :objectClassConstraint :ListNode ;
+
+ :subjectClassConstraint :ListNode .
+
+
+### http://www.knora.org/ontology/knora-base#hasValue
+
+:hasValue rdf:type owl:ObjectProperty ;
+
+ rdfs:subPropertyOf :resourceProperty ;
+
+ :subjectClassConstraint :Resource ;
+
+ :objectClassConstraint :Value .
+
+
+### http://www.knora.org/ontology/knora-base#isAnnotationOf
+
+:isAnnotationOf rdf:type owl:ObjectProperty ;
+
+ rdfs:label "ist Annotation von"@de ,
+ "is Annotation of"@en ,
+ "est Annotation de"@fr ,
+ "è Annotation di"@it ;
+
+ :subjectClassConstraint :Annotation ;
+
+ :objectClassConstraint :Resource ;
+
+ :isEditable true ;
+
+ rdfs:subPropertyOf :hasLinkTo .
+
+
+
+### http://www.knora.org/ontology/knora-base#isAnnotationOfValue
+
+:isAnnotationOfValue rdf:type owl:ObjectProperty ;
+
+ :objectClassConstraint :LinkValue ;
+
+ :subjectClassConstraint :Annotation ;
+
+ :isEditable true ;
+
+ rdfs:subPropertyOf :hasLinkToValue .
+
+
+
+### http://www.knora.org/ontology/knora-base#isPartOf
+
+:isPartOf rdf:type owl:ObjectProperty ;
+
+ rdfs:label "ist Teil von"@de ,
+ "is part of"@en ,
+ "fait partie de"@fr ,
+ "fa parte di"@it ;
+
+ rdfs:comment "Indicates that this resource is part of another resource"@en ;
+
+ :subjectClassConstraint :Resource ;
+
+ :objectClassConstraint :Resource ;
+
+ rdfs:subPropertyOf :hasLinkTo .
+
+
+
+### http://www.knora.org/ontology/knora-base#isPartOfValue
+
+:isPartOfValue rdf:type owl:ObjectProperty ;
+
+ :objectClassConstraint :LinkValue ;
+
+ :subjectClassConstraint :Resource ;
+
+ rdfs:subPropertyOf :hasLinkToValue .
+
+
+
+### http://www.knora.org/ontology/knora-base#isRegionOf
+
+:isRegionOf rdf:type owl:ObjectProperty ;
+
+ rdfs:comment "Region of interest within a digital object (e.g. an image)"@en ;
+
+ rdfs:label "is Region von"@de ,
+ "is region of"@en ,
+ "est région de"@fr ,
+ "è regione di"@it ;
+
+ :subjectClassConstraint :Region ;
+
+ :objectClassConstraint :Representation ;
+
+ :isEditable true ;
+
+ rdfs:subPropertyOf :hasLinkTo .
+
+
+
+### http://www.knora.org/ontology/knora-base#isRegionOfValue
+
+:isRegionOfValue rdf:type owl:ObjectProperty ;
+
+ rdfs:comment "Region of interest within a digital object (e.g. an image)"@en ;
+
+ rdfs:label "is Region von"@de ,
+ "is region of"@en ,
+ "est région de"@fr ,
+ "è regione di"@it ;
+
+ :objectClassConstraint :LinkValue ;
+
+ :subjectClassConstraint :Region ;
+
+ :isEditable true ;
+
+ rdfs:subPropertyOf :hasLinkToValue .
+
+
+
+### http://www.knora.org/ontology/knora-base#previousValue
+
+:previousValue rdf:type owl:ObjectProperty ;
+
+ rdfs:subPropertyOf :valueHas ;
+
+ rdfs:comment "Points to the previous verson of a value"@en ;
+
+ :subjectClassConstraint :Value ;
+
+ :objectClassConstraint :Value .
+
+
+
+### http://www.knora.org/ontology/knora-base#seqnum
+
+:seqnum rdf:type owl:ObjectProperty ;
+
+ :objectClassConstraint :IntValue ;
+
+ rdfs:subPropertyOf :hasValue ;
+
+ rdfs:label "Sequenznummer"@de ,
+ "Sequence number"@en ,
+ "Numéro de séquence"@fr ,
+ "Numero di sequenza"@it ;
+
+ rdfs:comment "Indicates the position of a resource within a sequence"@en .
+
+
+### http://www.knora.org/ontology/knora-base#standoffTagHasOriginalXMLID
+
+:standoffTagHasOriginalXMLID rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf :objectCannotBeMarkedAsDeleted ;
+
+ :objectDatatypeConstraint xsd:string ;
+
+ :subjectClassConstraint :StandoffTag .
+
+
+### http://www.knora.org/ontology/knora-base#targetHasOriginalXMLID
+
+# This property is generated by a SPARQL CONSTRUCT query, it is not used in the triplestore and not used in the API
+
+:targetHasOriginalXMLID rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf :objectCannotBeMarkedAsDeleted ;
+
+ :objectDatatypeConstraint xsd:string ;
+
+ :subjectClassConstraint :StandoffTag .
+
+
+### http://www.knora.org/ontology/knora-base#valueHasStandoff
+
+:valueHasStandoff rdf:type owl:ObjectProperty ;
+
+ rdfs:subPropertyOf :valueHas ;
+
+ :objectClassConstraint :StandoffTag ;
+
+ :subjectClassConstraint :TextValue .
+
+
+### http://www.knora.org/ontology/knora-base#valueHasLanguage
+
+:valueHasLanguage rdf:type owl:DatatypeProperty ;
+
+ :objectDatatypeConstraint xsd:string ;
+
+ :subjectClassConstraint :TextValue .
+
+
+### http://www.knora.org/ontology/knora-base#valueHasMapping
+
+:valueHasMapping rdf:type owl:ObjectProperty ;
+
+ rdfs:subPropertyOf :valueHas ;
+
+ :objectClassConstraint :XMLToStandoffMapping ;
+
+ :subjectClassConstraint :TextValue .
+
+
+### http://www.knora.org/ontology/knora-base#hasMappingElement
+
+:hasMappingElement rdf:type owl:ObjectProperty ;
+
+ rdfs:subPropertyOf :objectCannotBeMarkedAsDeleted ;
+
+ rdfs:label "mapping element"@en ;
+
+ rdfs:comment """Represents an element in a mapping"""@en ;
+
+ :subjectClassConstraint :XMLToStandoffMapping ;
+
+ :objectClassConstraint :MappingElement .
+
+
+### http://www.knora.org/ontology/knora-base#mappingHasXMLTagname
+
+:mappingHasXMLTagname rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf :objectCannotBeMarkedAsDeleted ;
+
+ rdfs:label "name of the XML tag"@en ;
+
+ rdfs:comment """name of the XML tag"""@en ;
+
+ :subjectClassConstraint :MappingElement ;
+
+ :objectDatatypeConstraint xsd:string .
+
+
+### http://www.knora.org/ontology/knora-base#mappingHasXMLNamespace
+
+:mappingHasXMLNamespace rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf :objectCannotBeMarkedAsDeleted ;
+
+ rdfs:label "namespace of the XML tag"@en ;
+
+ rdfs:comment """namespace of the XML tag"""@en ;
+
+ :subjectClassConstraint :MappingComponent ;
+
+ :objectDatatypeConstraint xsd:string .
+
+
+### http://www.knora.org/ontology/knora-base#mappingHasXMLClass
+
+:mappingHasXMLClass rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf :objectCannotBeMarkedAsDeleted ;
+
+ rdfs:label "class of the XML tag"@en ;
+
+ rdfs:comment """class of the XML tag"""@en ;
+
+ :subjectClassConstraint :MappingElement ;
+
+ :objectDatatypeConstraint xsd:string .
+
+
+### http://www.knora.org/ontology/knora-base#mappingHasStandoffClass
+
+:mappingHasStandoffClass rdf:type owl:ObjectProperty ;
+
+ rdfs:subPropertyOf :objectCannotBeMarkedAsDeleted ;
+
+ rdfs:label "IRI of the standoff class"@en ;
+
+ rdfs:comment """IRI of the standoff class"""@en ;
+
+ :subjectClassConstraint :MappingComponent ;
+
+ :objectClassConstraint owl:Class .
+
+
+### http://www.knora.org/ontology/knora-base#mappingHasXMLAttribute
+
+:mappingHasXMLAttribute rdf:type owl:ObjectProperty ;
+
+ rdfs:subPropertyOf :objectCannotBeMarkedAsDeleted ;
+
+ rdfs:label "name of the XML attribute"@en ;
+
+ rdfs:comment """name of the XML attribute"""@en ;
+
+ :subjectClassConstraint :MappingElement ;
+
+ :objectClassConstraint :MappingXMLAttribute .
+
+
+### http://www.knora.org/ontology/knora-base#mappingHasXMLAttributename
+
+:mappingHasXMLAttributename rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf :objectCannotBeMarkedAsDeleted ;
+
+ rdfs:label "name of the XML attribute"@en ;
+
+ rdfs:comment """name of the XML attribute"""@en ;
+
+ :subjectClassConstraint :MappingComponent ;
+
+ :objectDatatypeConstraint xsd:string .
+
+
+
+### http://www.knora.org/ontology/knora-base#mappingHasStandoffProperty
+
+:mappingHasStandoffProperty rdf:type owl:ObjectProperty ;
+
+ rdfs:subPropertyOf :objectCannotBeMarkedAsDeleted ;
+
+ rdfs:label "IRI of the standoff property"@en ;
+
+ rdfs:comment """IRI of the standoff property"""@en ;
+
+ :subjectClassConstraint :MappingXMLAttribute .
+
+
+### http://www.knora.org/ontology/knora-base#mappingHasStandoffDataTypeClass
+
+:mappingHasStandoffDataTypeClass rdf:type owl:ObjectProperty ;
+
+ rdfs:subPropertyOf :objectCannotBeMarkedAsDeleted ;
+
+ rdfs:label "datatype of the XML tag"@en ;
+
+ rdfs:comment """datatype of the XML tag"""@en ;
+
+ :subjectClassConstraint :MappingElement ;
+
+ :objectClassConstraint :MappingStandoffDataTypeClass .
+
+
+### http://www.knora.org/ontology/knora-base#mappingElementRequiresSeparator
+
+:mappingElementRequiresSeparator rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf :objectCannotBeMarkedAsDeleted ;
+
+ rdfs:label "indicates if the element requires a separator in the text"@en ;
+
+ rdfs:comment """indicates if the element requires a separator in the text"""@en ;
+
+ :subjectClassConstraint :MappingElement ;
+
+ :objectDatatypeConstraint xsd:boolean .
+
+
+### http://www.knora.org/ontology/knora-base#mappingHasDefaultXSLTransformation
+
+:mappingHasDefaultXSLTransformation rdf:type owl:ObjectProperty ;
+
+ rdfs:subPropertyOf :objectCannotBeMarkedAsDeleted ;
+
+ rdfs:label "default XSL Transformation"@en ;
+
+ rdfs:comment """default XSL Transformation for this mapping"""@en ;
+
+ :subjectClassConstraint :XMLToStandoffMapping ;
+
+ :objectClassConstraint :XSLTransformation .
+
+
+### http://www.knora.org/ontology/knora-base#deletedBy
+
+:deletedBy rdf:type owl:ObjectProperty ;
+
+ rdfs:subPropertyOf :objectCannotBeMarkedAsDeleted ;
+
+ rdfs:comment "Indicates who deleted a resource or value"@en ;
+
+ # No :subjectClassConstraint, because this can be used with :Resource or :Value.
+
+ :objectClassConstraint knora-admin:User .
+
+
+#################################################################
+#
+# Datatype properties
+#
+#################################################################
+
+
+### http://www.knora.org/ontology/knora-base#creationDate
+
+:creationDate rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf :objectCannotBeMarkedAsDeleted ;
+
+ rdfs:comment "Indicates when a resource was created"@en ;
+
+ :subjectClassConstraint :Resource ;
+
+ :objectDatatypeConstraint xsd:dateTime .
+
+
+
+### http://www.knora.org/ontology/knora-base#deleteDate
+
+:deleteDate rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf :objectCannotBeMarkedAsDeleted ;
+
+ rdfs:comment "Indicates when a resource or value was deleted"@en ;
+
+ # No :subjectClassConstraint, because this can be used with :Resource or :Value.
+
+ :objectDatatypeConstraint xsd:dateTime .
+
+
+### http://www.knora.org/ontology/knora-base#dimX
+
+:dimX rdf:type owl:DatatypeProperty ;
+
+ :subjectClassConstraint :FileValue ;
+
+ rdfs:subPropertyOf :valueHas ;
+
+ :objectDatatypeConstraint xsd:integer .
+
+
+
+### http://www.knora.org/ontology/knora-base#dimY
+
+:dimY rdf:type owl:DatatypeProperty ;
+
+ :subjectClassConstraint :FileValue ;
+
+ rdfs:subPropertyOf :valueHas ;
+
+ :objectDatatypeConstraint xsd:integer .
+
+
+
+### http://www.knora.org/ontology/knora-base#duration
+
+:duration rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf :valueHas ;
+
+ :subjectClassConstraint :FileValue ;
+
+ :objectDatatypeConstraint xsd:decimal .
+
+
+
+### http://www.knora.org/ontology/knora-base#extResAccessInfo
+
+:extResAccessInfo rdf:type owl:DatatypeProperty ;
+
+ rdfs:comment "Information (URL etc.) for accessing an external resource"@en ;
+
+ rdfs:subPropertyOf :valueHas ;
+
+ :subjectClassConstraint :ExternalResValue ;
+
+ :objectDatatypeConstraint xsd:string .
+
+
+
+### http://www.knora.org/ontology/knora-base#extResId
+
+:extResId rdf:type owl:DatatypeProperty ;
+
+ rdfs:comment "The ID of the external resource. The form of the ID is dependent on the provider."@en ;
+
+ rdfs:subPropertyOf :valueHas ;
+
+ :subjectClassConstraint :ExternalResValue ;
+
+ :objectDatatypeConstraint xsd:string .
+
+
+
+### http://www.knora.org/ontology/knora-base#extResProvider
+
+:extResProvider rdf:type owl:DatatypeProperty ;
+
+ rdfs:comment "The name of the external provider of the resource"@en ;
+
+ rdfs:subPropertyOf :valueHas ;
+
+ :subjectClassConstraint :ExternalResValue ;
+
+ :objectDatatypeConstraint xsd:string .
+
+
+
+
+### http://www.knora.org/ontology/knora-base#fps
+
+:fps rdf:type owl:DatatypeProperty ;
+
+ rdfs:label "Frames per second"@en ;
+
+ rdfs:subPropertyOf :valueHas ;
+
+ :subjectClassConstraint :MovingImageFileValue ;
+
+ :objectDatatypeConstraint xsd:decimal .
+
+
+
+### http://www.knora.org/ontology/knora-base#internalFilename
+
+:internalFilename rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf :valueHas ;
+
+ :subjectClassConstraint :FileValue ;
+
+ :objectDatatypeConstraint xsd:string .
+
+
+
+### http://www.knora.org/ontology/knora-base#internalMimeType
+
+:internalMimeType rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf :valueHas ;
+
+ :subjectClassConstraint :FileValue ;
+
+ :objectDatatypeConstraint xsd:string .
+
+
+
+### http://www.knora.org/ontology/knora-base#isDeleted
+
+:isDeleted rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf :objectCannotBeMarkedAsDeleted ;
+
+ rdfs:comment "Exists and is true if the resource has been deleted"@en ;
+
+ # No :subjectClassConstraint, because this can be used with :Resource or :Value.
+
+ :objectDatatypeConstraint xsd:boolean .
+
+
+
+### http://www.knora.org/ontology/knora-base#isRootNode
+
+:isRootNode rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf :objectCannotBeMarkedAsDeleted ;
+
+ :subjectClassConstraint :ListNode ;
+
+ :objectDatatypeConstraint xsd:boolean .
+
+
+
+### http://www.knora.org/ontology/knora-base#hasRootNode
+
+:hasRootNode rdf:type owl:ObjectProperty ;
+
+ rdfs:subPropertyOf :objectCannotBeMarkedAsDeleted ;
+
+ :subjectClassConstraint :ListNode ;
+
+ :objectDatatypeConstraint :ListNode .
+
+
+
+
+### http://www.knora.org/ontology/knora-base#lastModificationDate
+
+:lastModificationDate rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf :objectCannotBeMarkedAsDeleted ;
+
+ :objectDatatypeConstraint xsd:dateTime .
+
+
+
+### http://www.knora.org/ontology/knora-base#listNodePosition
+
+:listNodePosition rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf :objectCannotBeMarkedAsDeleted ;
+
+ :subjectClassConstraint :ListNode ;
+
+ :objectDatatypeConstraint xsd:integer .
+
+
+
+### http://www.knora.org/ontology/knora-base#listNodeName
+
+:listNodeName rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf :objectCannotBeMarkedAsDeleted ;
+
+ :subjectClassConstraint :ListNode ;
+
+ :objectDatatypeConstraint xsd:string .
+
+
+
+### http://www.knora.org/ontology/knora-base#originalFilename
+
+:originalFilename rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf :valueHas ;
+
+ :subjectClassConstraint :FileValue ;
+
+ :objectDatatypeConstraint xsd:string .
+
+
+
+### http://www.knora.org/ontology/knora-base#originalMimeType
+
+:originalMimeType rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf :valueHas ;
+
+ :subjectClassConstraint :FileValue ;
+
+ :objectDatatypeConstraint xsd:string .
+
+
+
+### http://www.knora.org/ontology/knora-base#valueHasComment
+
+:valueHasComment rdf:type owl:DatatypeProperty ;
+
+ rdfs:comment "A comment on a value"@en ;
+
+ rdfs:subPropertyOf :valueHas ;
+
+ :subjectClassConstraint :Value ;
+
+ :objectDatatypeConstraint xsd:string .
+
+
+
+### http://www.knora.org/ontology/knora-base#deleteComment
+
+:deleteComment rdf:type owl:DatatypeProperty ;
+
+ rdfs:comment "A comment explaining why a resource or value was marked as deleted"@en ;
+
+ rdfs:subPropertyOf :objectCannotBeMarkedAsDeleted ;
+
+ # No :subjectClassConstraint, because this can be used with :Resource or :Value.
+
+ :objectDatatypeConstraint xsd:string .
+
+
+
+### http://www.knora.org/ontology/knora-base#valueCreationDate
+
+:valueCreationDate rdf:type owl:DatatypeProperty ;
+
+ :subjectClassConstraint :Value ;
+
+ rdfs:subPropertyOf :valueHas ;
+
+ :objectDatatypeConstraint xsd:dateTime .
+
+
+
+### http://www.knora.org/ontology/knora-base#valueHas
+
+:valueHas rdf:type rdf:Property ;
+
+ :subjectClassConstraint :ValueBase ;
+
+ rdfs:subPropertyOf :objectCannotBeMarkedAsDeleted .
+
+
+
+### http://www.knora.org/ontology/knora-base#valueHasUUID
+
+:valueHasUUID rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf :valueHas ;
+
+ rdfs:comment "The UUID of a value"@en ;
+
+ :subjectClassConstraint :Value ;
+
+ :objectDatatypeConstraint xsd:string .
+
+
+
+### http://www.knora.org/ontology/knora-base#valueHasCalendar
+
+:valueHasCalendar rdf:type owl:DatatypeProperty ;
+
+ rdfs:comment "Name of the calendar to be used, such as \"GREGORIAN\" or \"JULIAN\"."@en ;
+
+ rdfs:subPropertyOf :valueHas ;
+
+ :subjectClassConstraint :DateBase ;
+
+ :objectDatatypeConstraint xsd:string .
+
+
+
+### http://www.knora.org/ontology/knora-base#valueHasColor
+
+:valueHasColor rdf:type owl:DatatypeProperty ;
+
+ rdfs:comment "Color in the form of #rrggbb (as defining web colors)"@en ;
+
+ rdfs:subPropertyOf :valueHas ;
+
+ :subjectClassConstraint :ColorBase ;
+
+ :objectDatatypeConstraint xsd:string .
+
+
+
+### http://www.knora.org/ontology/knora-base#valueHasEndJDN
+
+:valueHasEndJDN rdf:type owl:DatatypeProperty ;
+
+ rdfs:comment "Contains the end of a date as a Julian Day Number (JDN)"@en ;
+
+ rdfs:subPropertyOf :valueHas ;
+
+ :subjectClassConstraint :DateBase ;
+
+ :objectDatatypeConstraint xsd:integer .
+
+
+
+### http://www.knora.org/ontology/knora-base#valueHasEndPrecision
+
+:valueHasEndPrecision rdf:type owl:DatatypeProperty ;
+
+ rdfs:comment "Precision of knowledge about the end of the date. Allowed are \"DAY\", \"MONTH\" or \"YEAR\"."@en ;
+
+ rdfs:subPropertyOf :valueHas ;
+
+ :subjectClassConstraint :DateBase ;
+
+ :objectDatatypeConstraint xsd:string .
+
+
+
+### http://www.knora.org/ontology/knora-base#valueHasDecimal
+
+:valueHasDecimal rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf :valueHas ;
+
+ :subjectClassConstraint :DecimalBase ;
+
+ :objectDatatypeConstraint xsd:decimal .
+
+
+
+### http://www.knora.org/ontology/knora-base#valueHasGeometry
+
+:valueHasGeometry rdf:type owl:DatatypeProperty ;
+
+ rdfs:comment "JSON string describing a geometry (e.g. a region). Currently geometries are limited to 2D unions of primitive objects like circles, squares and polygons."@en ;
+
+ rdfs:subPropertyOf :valueHas ;
+
+ :subjectClassConstraint :GeomValue ;
+
+ :objectDatatypeConstraint xsd:string .
+
+
+
+### http://www.knora.org/ontology/knora-base#valueHasGeonameCode
+
+:valueHasGeonameCode rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf :valueHas ;
+
+ :subjectClassConstraint :GeonameValue ;
+
+ :objectDatatypeConstraint xsd:string .
+
+
+
+### http://www.knora.org/ontology/knora-base#valueHasInteger
+
+:valueHasInteger rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf :valueHas ;
+
+ :subjectClassConstraint :IntBase ;
+
+ :objectDatatypeConstraint xsd:integer .
+
+
+
+### http://www.knora.org/ontology/knora-base#valueHasBoolean
+
+:valueHasBoolean rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf :valueHas ;
+
+ :subjectClassConstraint :BooleanBase ;
+
+ :objectDatatypeConstraint xsd:boolean .
+
+
+
+### http://www.knora.org/ontology/knora-base#valueHasUri
+
+:valueHasUri rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf :valueHas ;
+
+ :subjectClassConstraint :UriBase ;
+
+ :objectDatatypeConstraint xsd:anyURI .
+
+
+
+### http://www.knora.org/ontology/knora-base#valueHasIntervalEnd
+
+:valueHasIntervalEnd rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf :valueHas ;
+
+ :subjectClassConstraint :IntervalBase ;
+
+ :objectDatatypeConstraint xsd:decimal .
+
+
+
+### http://www.knora.org/ontology/knora-base#valueHasIntervalStart
+
+:valueHasIntervalStart rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf :valueHas ;
+
+ :subjectClassConstraint :IntervalBase ;
+
+ :objectDatatypeConstraint xsd:decimal .
+
+
+
+### http://www.knora.org/ontology/knora-base#valueHasIntervalStart
+
+:valueHasTimeStamp rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf :valueHas ;
+
+ :subjectClassConstraint :TimeBase ;
+
+ :objectDatatypeConstraint xsd:dateTime .
+
+
+
+### http://www.knora.org/ontology/knora-base#valueHasListNode
+
+:valueHasListNode rdf:type owl:ObjectProperty ;
+
+ rdfs:subPropertyOf :valueHas ;
+
+ :subjectClassConstraint :ListValue ;
+
+ :objectClassConstraint :ListNode .
+
+
+### http://www.knora.org/ontology/knora-base#valueHasOrder
+
+:valueHasOrder rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf :valueHas ;
+
+ :subjectClassConstraint :Value ;
+
+ :objectDatatypeConstraint xsd:integer .
+
+
+### http://www.knora.org/ontology/knora-base#valueHasRefCount
+
+:valueHasRefCount rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf :valueHas ;
+
+ :subjectClassConstraint :LinkValue ;
+
+ :objectDatatypeConstraint xsd:integer .
+
+
+
+### http://www.knora.org/ontology/knora-base#valueHasStartJDN
+
+:valueHasStartJDN rdf:type owl:DatatypeProperty ;
+
+ rdfs:comment "Contains the start of a date as a Julian Day Number (JDN)"@en ;
+
+ rdfs:subPropertyOf :valueHas ;
+
+ :subjectClassConstraint :DateBase ;
+
+ :objectDatatypeConstraint xsd:integer .
+
+
+
+### http://www.knora.org/ontology/knora-base#valueHasStartPrecision
+
+:valueHasStartPrecision rdf:type owl:DatatypeProperty ;
+
+ rdfs:comment "The precision the start of a date. Allowed values are \"DAY\", \"MONTH\", or \"YEAR\"."@en ;
+
+ rdfs:subPropertyOf :valueHas ;
+
+ :subjectClassConstraint :DateBase ;
+
+ :objectDatatypeConstraint xsd:string .
+
+
+
+### http://www.knora.org/ontology/knora-base#valueHasString
+
+:valueHasString rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf :valueHas ;
+
+ rdfs:comment "A string representation of a value, required for full-text searches and search results."@en ;
+
+ :subjectClassConstraint :Value ;
+
+ :objectDatatypeConstraint xsd:string .
+
+
+
+### http://www.knora.org/ontology/knora-base#hasPermissions
+
+:hasPermissions rdf:type owl:DatatypeProperty ;
+
+ rdfs:subPropertyOf :objectCannotBeMarkedAsDeleted ;
+
+ :objectDatatypeConstraint xsd:string .
+
+
+
+#################################################################
+#
+# Classes
+#
+#################################################################
+
+
+### http://www.knora.org/ontology/knora-base#Annotation
+
+:Annotation rdf:type owl:Class ;
+
+ rdfs:subClassOf :Resource ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :hasComment ;
+ owl:minCardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :isAnnotationOf ;
+ owl:minCardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :isAnnotationOfValue ;
+ owl:minCardinality "1"^^xsd:nonNegativeInteger
+ ] ;
+
+ rdfs:label "Annotation"@de ,
+ "Annotation"@en ,
+ "Annotation"@fr ,
+ "Annotation"@it ;
+
+ :canBeInstantiated true ;
+
+ rdfs:comment "A generic class for representing annotations"@en .
+
+
+
+### http://www.knora.org/ontology/knora-base#AudioFileValue
+
+:AudioFileValue rdf:type owl:Class ;
+
+ rdfs:subClassOf :FileValue ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :duration ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ;
+
+ rdfs:comment "Represents an audio file"@en .
+
+
+
+### http://www.knora.org/ontology/knora-base#AudioRepresentation
+
+:AudioRepresentation rdf:type owl:Class ;
+
+ rdfs:subClassOf :Representation ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :hasAudioFileValue ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ;
+
+ rdfs:label "Repräsentation (Audio)"@de ,
+ "Representation (Audio)"@en ,
+ "Répresentation (Audio)"@fr ,
+ "Rappresentazione (Audio)"@it ;
+
+ rdfs:comment "Represents a file containing audio data"@en .
+
+
+### http://www.knora.org/ontology/knora-base#ColorBase
+
+:ColorBase rdf:type owl:Class ;
+
+ rdfs:subClassOf :ValueBase ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :valueHasColor ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] .
+
+
+### http://www.knora.org/ontology/knora-base#ColorValue
+
+:ColorValue rdf:type owl:Class ;
+
+ rdfs:subClassOf :Value, :ColorBase ;
+
+ rdfs:comment "Represents a color in HTML format, e.g. \"#33eeff\""@en .
+
+
+
+### http://www.knora.org/ontology/knora-base#DDDFileValue
+
+:DDDFileValue rdf:type owl:Class ;
+
+ rdfs:subClassOf :FileValue ;
+
+ rdfs:comment "This represents some 3D-object with mesh data, point cloud, etc."@en .
+
+
+
+### http://www.knora.org/ontology/knora-base#DDDRepresentation
+
+:DDDRepresentation rdf:type owl:Class ;
+
+ rdfs:subClassOf :Representation ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :hasDDDFileValue ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ;
+
+ rdfs:label "Repräsentation (3D)"@de ,
+ "Representation (3D)"@en ,
+ "Répresentation (3D)"@fr ,
+ "Rappresentazione (3D)"@it ;
+
+ rdfs:comment "Represents a file containg 3D data"@en .
+
+
+### http://www.knora.org/ontology/knora-base#DateBase
+
+:DateBase rdf:type owl:Class ;
+
+ rdfs:subClassOf :ValueBase ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :valueHasCalendar ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :valueHasEndPrecision ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :valueHasEndJDN ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :valueHasStartPrecision ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :valueHasStartJDN ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] .
+
+
+### http://www.knora.org/ontology/knora-base#DateValue
+
+:DateValue rdf:type owl:Class ;
+
+ rdfs:subClassOf :Value, :DateBase ;
+
+ rdfs:comment "Represents a Knora date value"@en .
+
+
+
+### http://www.knora.org/ontology/knora-base#DocumentFileValue
+
+:DocumentFileValue rdf:type owl:Class ;
+
+ rdfs:subClassOf :FileValue .
+
+
+
+### http://www.knora.org/ontology/knora-base#DocumentRepresentation
+
+:DocumentRepresentation rdf:type owl:Class ;
+
+ rdfs:label "Repräsentation (Dokument)"@de ,
+ "Representation (Document)"@en ,
+ "Répresentation (Document)"@fr ,
+ "Rappresentazione (Documento)"@it ;
+
+ rdfs:subClassOf :Representation ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :hasDocumentFileValue ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] .
+
+
+
+### http://www.knora.org/ontology/knora-base#ExternalResValue
+
+:ExternalResValue rdf:type owl:Class ;
+
+ rdfs:subClassOf :Value ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :extResId ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :extResProvider ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :extResAccessInfo ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] .
+
+
+
+### http://www.knora.org/ontology/knora-base#ExternalResource
+
+:ExternalResource rdf:type owl:Class ;
+
+ rdfs:subClassOf :Resource ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :hasExtResValue ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ;
+
+ rdfs:label "Externe Ressource"@de ,
+ "External Resource"@en ,
+ "Ressource Externe"@fr ,
+ "Risorsa esterna"@it ;
+
+ rdfs:comment "Represents a proxy for an object stored by an external provider"@en .
+
+
+
+### http://www.knora.org/ontology/knora-base#FileValue
+
+:FileValue rdf:type owl:Class ;
+
+ rdfs:subClassOf :Value ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :originalMimeType ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :internalFilename ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :internalMimeType ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :originalFilename ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] .
+
+
+### http://www.knora.org/ontology/knora-base#DecimalBase
+
+:DecimalBase rdf:type owl:Class ;
+
+ rdfs:subClassOf :ValueBase ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :valueHasDecimal ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] .
+
+
+
+### http://www.knora.org/ontology/knora-base#DecimalValue
+
+:DecimalValue rdf:type owl:Class ;
+
+ rdfs:subClassOf :Value, :DecimalBase ;
+
+ rdfs:comment "Represents an arbitrary-precision decimal value"@en .
+
+
+
+### http://www.knora.org/ontology/knora-base#GeomValue
+
+:GeomValue rdf:type owl:Class ;
+
+ rdfs:subClassOf :Value ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :valueHasGeometry ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ;
+
+ rdfs:comment "Represents a geometrical objects as JSON string"@en .
+
+
+
+### http://www.knora.org/ontology/knora-base#GeonameValue
+
+:GeonameValue rdf:type owl:Class ;
+
+ rdfs:subClassOf :Value ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :valueHasGeonameCode ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] .
+
+
+
+### http://www.knora.org/ontology/knora-base#IntBase
+
+:IntBase rdf:type owl:Class ;
+
+ rdfs:subClassOf :ValueBase ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :valueHasInteger ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] .
+
+
+
+### http://www.knora.org/ontology/knora-base#IntValue
+
+:IntValue rdf:type owl:Class ;
+
+ rdfs:subClassOf :Value, :IntBase ;
+
+ rdfs:comment "Represents an integer value"@en .
+
+### http://www.knora.org/ontology/knora-base#BooleanBase
+
+:BooleanBase rdf:type owl:Class ;
+
+ rdfs:subClassOf :ValueBase ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :valueHasBoolean ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] .
+
+
+### http://www.knora.org/ontology/knora-base#BooleanValue
+
+:BooleanValue rdf:type owl:Class ;
+
+ rdfs:subClassOf :Value ,
+ :BooleanBase ;
+
+ rdfs:comment "Represents a boolean value"@en .
+
+
+
+### http://www.knora.org/ontology/knora-base#UriBase
+
+:UriBase rdf:type owl:Class ;
+
+ rdfs:subClassOf :ValueBase ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :valueHasUri ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] .
+
+### http://www.knora.org/ontology/knora-base#UriValue
+
+:UriValue rdf:type owl:Class ;
+
+ rdfs:subClassOf :Value ,
+ :UriBase ;
+
+ rdfs:comment "Represents a URI"@en .
+
+### http://www.knora.org/ontology/knora-base#IntervalBase
+
+:IntervalBase rdf:type owl:Class ;
+
+ rdfs:subClassOf :ValueBase ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :valueHasIntervalEnd ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :valueHasIntervalStart ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] .
+
+
+### http://www.knora.org/ontology/knora-base#IntervalValue
+
+:IntervalValue rdf:type owl:Class ;
+
+ rdfs:subClassOf :Value ,
+ :IntervalBase ;
+
+ rdfs:comment "Represents a time interval, e.g. in an audio recording"@en .
+
+
+:TimeBase rdf:type owl:Class ;
+
+ rdfs:subClassOf :ValueBase ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :valueHasTimeStamp ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] .
+
+
+### http://www.knora.org/ontology/knora-base#IntervalValue
+
+:TimeValue rdf:type owl:Class ;
+
+ rdfs:subClassOf :Value ,
+ :TimeBase ;
+
+ rdfs:comment "Represents a timestamp"@en .
+
+
+### http://www.knora.org/ontology/knora-base#LinkObj
+
+:LinkObj rdf:type owl:Class ;
+
+ rdfs:label "Verknüpfungsobjekt"@de ,
+ "Link Object"@en ,
+ "Objet de lien"@fr ,
+ "Oggetto di connessione"@it ;
+
+ rdfs:subClassOf :Resource ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :hasComment ;
+ owl:minCardinality "0"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :hasLinkTo ;
+ owl:minCardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :hasLinkToValue ;
+ owl:minCardinality "1"^^xsd:nonNegativeInteger
+ ] ;
+
+ :resourceIcon "link.gif"^^xsd:string ;
+
+ :canBeInstantiated true ;
+
+ rdfs:comment "Verknüpfung mehrerer Resourcen"@de ,
+ "Represents a generic link object"@en .
+
+
+
+### http://www.knora.org/ontology/knora-base#LinkValue
+
+:LinkValue rdf:type owl:Class ;
+
+ rdfs:subClassOf :Value ,
+ rdf:Statement ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :valueHasRefCount ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty rdf:subject ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty rdf:predicate ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty rdf:object ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ;
+
+ rdfs:comment "A reification node that describes direct links between resources"@en .
+
+
+
+### http://www.knora.org/ontology/knora-base#ListNode
+
+:ListNode rdf:type owl:Class ;
+
+ rdfs:subClassOf [ rdf:type owl:Restriction ;
+ owl:onProperty :hasSubListNode ;
+ owl:minCardinality "0"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :listNodePosition ;
+ owl:maxCardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :listNodeName ;
+ owl:maxCardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :isRootNode ;
+ owl:maxCardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :hasRootNode ;
+ owl:maxCardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :attachedToProject ;
+ owl:maxCardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty rdfs:label ;
+ owl:minCardinality "1"^^xsd:nonNegativeInteger
+ ];
+
+ rdfs:comment "Represents a flat or hierarchical list"@en .
+
+
+
+### http://www.knora.org/ontology/knora-base#ListValue
+
+:ListValue rdf:type owl:Class ;
+
+ rdfs:subClassOf :Value ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :valueHasListNode ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] .
+
+
+
+### http://www.knora.org/ontology/knora-base#MovingImageFileValue
+
+:MovingImageFileValue rdf:type owl:Class ;
+
+ rdfs:subClassOf :FileValue ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :dimX ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :dimY ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :fps ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :duration ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ;
+
+ rdfs:comment "Represents a moving image file"@en .
+
+
+
+### http://www.knora.org/ontology/knora-base#MovingImageRepresentation
+
+:MovingImageRepresentation rdf:type owl:Class ;
+
+ rdfs:subClassOf :Representation ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :hasMovingImageFileValue ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ;
+
+ rdfs:label "Repräsentation (Video)"@de ,
+ "Representation (Movie)"@en ,
+ "Répresentation (Film)"@fr ,
+ "Rappresentazione (Film)"@it ;
+
+ rdfs:comment "A resource containing moving image data"@en .
+
+
+
+### http://www.knora.org/ontology/knora-base#Region
+
+:Region rdf:type owl:Class ;
+
+ rdfs:label "Region"@de ,
+ "Region"@en ,
+ "Région"@fr ,
+ "Regione"@it ;
+
+ rdfs:subClassOf :Resource ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :hasColor ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :isRegionOf ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :hasGeometry ;
+ owl:minCardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :isRegionOfValue ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :hasComment ;
+ owl:minCardinality "1"^^xsd:nonNegativeInteger
+ ] ;
+
+ :resourceIcon "region.gif"^^xsd:string ;
+
+ :canBeInstantiated true ;
+
+ rdfs:comment "Represents a geometric region of a resource. The geometry is represented currently as JSON string."@en .
+
+
+
+### http://www.knora.org/ontology/knora-base#Representation
+
+:Representation rdf:type owl:Class ;
+
+ rdfs:subClassOf :Resource ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :hasFileValue ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ;
+
+ rdfs:label "Repräsentation"@de ,
+ "Representation"@en ,
+ "Répresentation"@fr ,
+ "Rappresentazione"@it ;
+
+ rdfs:comment "A resource that can store a file"@en .
+
+
+
+### http://www.knora.org/ontology/knora-base#Resource
+
+:Resource rdf:type owl:Class ;
+
+ rdfs:subClassOf [ rdf:type owl:Restriction ;
+ owl:onProperty rdfs:label ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :isDeleted ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :hasStandoffLinkTo ;
+ owl:minCardinality "0"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :hasStandoffLinkToValue ;
+ owl:minCardinality "0"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :attachedToUser ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :attachedToProject ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :hasPermissions ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :creationDate ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :lastModificationDate ;
+ owl:maxCardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :deleteDate ;
+ owl:maxCardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :deletedBy ;
+ owl:maxCardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :deleteComment ;
+ owl:maxCardinality "1"^^xsd:nonNegativeInteger
+ ] ;
+
+ rdfs:label "Ressource"@de ,
+ "Resource"@en ,
+ "Ressource"@fr ,
+ "Risorsa"@it ;
+
+ rdfs:comment "Represents something in the world, or an abstract thing"@en .
+
+
+#################################################################
+#
+# Generic Standoff Tag
+#
+#################################################################
+
+
+:standoffParentClassConstraint rdf:type owl:ObjectProperty .
+
+
+### http://www.knora.org/ontology/knora-base#StandoffTag
+
+:StandoffTag rdf:type owl:Class ;
+
+ rdfs:subClassOf [ rdf:type owl:Restriction ;
+ owl:onProperty :standoffTagHasStart ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :standoffTagHasEnd ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :standoffTagHasUUID ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ],
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :standoffTagHasOriginalXMLID ;
+ owl:maxCardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :standoffTagHasStartIndex ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ],
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :standoffTagHasEndIndex ;
+ owl:maxCardinality "1"^^xsd:nonNegativeInteger
+ ],
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :standoffTagHasStartParent ;
+ owl:maxCardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :standoffTagHasEndParent ;
+ owl:maxCardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :standoffParentClassConstraint;
+ owl:maxCardinality "1"^^xsd:nonNegativeInteger
+ ] ;
+
+ rdfs:comment "Represents a standoff markup tag"@en .
+
+
+
+#################################################################
+#
+# Abstract Standoff Data Type Tag
+#
+#################################################################
+
+### http://www.knora.org/ontology/knora-base#StandoffDataTypeTag
+
+:StandoffDataTypeTag rdf:type owl:Class ;
+
+ rdfs:subClassOf :StandoffTag ;
+
+ rdfs:comment "Represents a knora-base value type in a TextValue"@en .
+
+
+#################################################################
+#
+# Standoff Data Type Tags that can be instantiated
+#
+#################################################################
+
+
+### http://www.knora.org/ontology/knora-base#StandoffLinkTag
+
+:StandoffLinkTag rdf:type owl:Class ;
+
+ rdfs:subClassOf :StandoffTag ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :standoffTagHasLink ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ;
+
+ rdfs:comment "Represents a reference to a Knora resource in a TextValue"@en .
+
+
+### http://www.knora.org/ontology/knora-base#StandoffUriTag
+
+:StandoffUriTag rdf:type owl:Class ;
+
+ rdfs:subClassOf :StandoffDataTypeTag ,
+ :UriBase ;
+
+ rdfs:comment "Represents an arbitrary URI in a TextValue"@en .
+
+
+### http://www.knora.org/ontology/knora-base#StandoffDateTag
+
+:StandoffDateTag rdf:type owl:Class ;
+
+ rdfs:subClassOf :StandoffDataTypeTag,
+ :DateBase ;
+
+ rdfs:comment "Represents a date in a TextValue"@en .
+
+
+### http://www.knora.org/ontology/knora-base#StandoffColorTag
+
+:StandoffColorTag rdf:type owl:Class ;
+
+ rdfs:subClassOf :StandoffDataTypeTag,
+ :ColorBase ;
+
+ rdfs:comment "Represents a color in a TextValue"@en .
+
+
+### http://www.knora.org/ontology/knora-base#StandoffIntegerTag
+
+:StandoffIntegerTag rdf:type owl:Class ;
+
+ rdfs:subClassOf :StandoffDataTypeTag,
+ :IntBase ;
+
+ rdfs:comment "Represents an integer value in a TextValue"@en .
+
+
+### http://www.knora.org/ontology/knora-base#StandoffDecimalTag
+
+:StandoffDecimalTag rdf:type owl:Class ;
+
+ rdfs:subClassOf :StandoffDataTypeTag,
+ :DecimalBase ;
+
+ rdfs:comment "Represents a decimal (floating point) value in a TextValue"@en .
+
+
+### http://www.knora.org/ontology/knora-base#StandoffIntervalTag
+
+:StandoffIntervalTag rdf:type owl:Class ;
+
+ rdfs:subClassOf :StandoffDataTypeTag,
+ :IntervalBase ;
+
+ rdfs:comment "Represents an interval in a TextValue"@en .
+
+
+### http://www.knora.org/ontology/knora-base#StandoffTimeTag
+
+:StandoffTimeTag rdf:type owl:Class ;
+
+ rdfs:subClassOf :StandoffDataTypeTag,
+ :TimeBase ;
+
+ rdfs:comment "Represents a timestamp in a TextValue"@en .
+
+
+### http://www.knora.org/ontology/knora-base#StandoffBooleanTag
+
+:StandoffBooleanTag rdf:type owl:Class ;
+
+ rdfs:subClassOf :StandoffDataTypeTag,
+ :BooleanBase ;
+
+ rdfs:comment "Represents a boolean in a TextValue"@en .
+
+
+### http://www.knora.org/ontology/knora-base#StandoffInternalReferenceTag
+
+:StandoffInternalReferenceTag rdf:type owl:Class ;
+
+ rdfs:subClassOf :StandoffDataTypeTag,
+ :ValueBase,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :standoffTagHasInternalReference ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ;
+
+ rdfs:comment "Represents an internal reference in a TextValue"@en .
+
+
+
+### http://www.knora.org/ontology/knora-base#StillImageFileValue
+
+:StillImageFileValue rdf:type owl:Class ;
+
+ rdfs:subClassOf :FileValue ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :dimY ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :dimX ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ;
+
+ rdfs:comment "A file containing a two-dimensional still image"@en .
+
+
+
+### http://www.knora.org/ontology/knora-base#StillImageRepresentation
+
+:StillImageRepresentation rdf:type owl:Class ;
+
+ rdfs:subClassOf :Representation ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :hasStillImageFileValue ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ;
+
+ rdfs:label "Repräsentation (Bild)"@de ,
+ "Representation (Image)"@en ,
+ "Répresentation (Image)"@fr ,
+ "Rappresentazione (Imagine)"@it ;
+
+ rdfs:comment "A resource that can contain a two-dimensional still image file"@en .
+
+
+
+### http://www.knora.org/ontology/knora-base#TextFileValue
+
+:TextFileValue rdf:type owl:Class ;
+
+ rdfs:subClassOf :FileValue ;
+
+ rdfs:comment "A text file such as plain Unicode text, LaTeX, TEI/XML, etc."@en .
+
+
+
+### http://www.knora.org/ontology/knora-base#TextRepresentation
+
+:TextRepresentation rdf:type owl:Class ;
+
+ rdfs:subClassOf :Representation ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :hasTextFileValue ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ;
+
+ rdfs:label "Repräsentation (Text)"@de ,
+ "Representation (Text)"@en ,
+ "Répresentation (Texte)"@fr ,
+ "Rappresentazione (testo)"@it ;
+
+ rdfs:comment "A resource containing a text file"@en .
+
+
+### http://www.knora.org/ontology/knora-base#ForbiddenResource
+
+:ForbiddenResource rdf:type owl:Class ;
+
+ rdfs:subClassOf :Resource ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :hasComment ;
+ owl:minCardinality "0"^^xsd:nonNegativeInteger
+ ];
+
+ rdfs:label """A ForbiddenResource is a proxy for a resource that the client has insufficient permissions to see."""@en ;
+
+ rdfs:comment """A ForbiddenResource is a proxy for a resource that the client has insufficient permissions to see."""@en .
+
+### http://www.knora.org/ontology/knora-base#XSLTransformation
+
+:XSLTransformation rdf:type owl:Class ;
+
+ rdfs:subClassOf :TextRepresentation ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :hasTextFileValue ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ;
+
+ rdfs:label "a TextRepresentation representing an XSL transformation that can be applied to an XML created from standoff. The transformation's result is ecptected to be HTML."@en ;
+
+ rdfs:comment "a TextRepresentation representing an XSL transformation that can be applied to an XML created from standoff. The transformation's result is ecptected to be HTML."@en .
+
+
+### http://www.knora.org/ontology/knora-base#MappingComponent
+
+:MappingComponent rdf:type owl:Class ;
+
+ rdfs:label "Component of a mapping"@en ;
+
+ rdfs:comment "Component of a mapping" .
+
+
+### http://www.knora.org/ontology/knora-base#MappingStandoffDataTypeClass
+
+:MappingStandoffDataTypeClass rdf:type owl:Class ;
+
+ rdfs:subClassOf :MappingComponent ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :mappingHasXMLAttributename ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ],
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :mappingHasStandoffClass ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ];
+
+ rdfs:label "Mapping from XML attributes to standoff properties"@en ;
+
+ rdfs:comment "Mapping from XML attributes to standoff properties" .
+
+
+### http://www.knora.org/ontology/knora-base#MappingXMLAttribute
+
+:MappingXMLAttribute rdf:type owl:Class ;
+
+ rdfs:subClassOf :MappingComponent ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :mappingHasXMLAttributename ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ],
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :mappingHasXMLNamespace ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ],
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :mappingHasStandoffProperty ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ];
+
+ rdfs:label "Mapping from XML attributes to standoff properties"@en ;
+
+ rdfs:comment "Mapping from XML attributes to standoff properties" .
+
+
+### http://www.knora.org/ontology/knora-base#MappingElement
+
+:MappingElement rdf:type owl:Class ;
+
+ rdfs:subClassOf :MappingComponent ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :mappingHasXMLTagname ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ],
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :mappingHasXMLNamespace ;
+ owl:maxCardinality "1"^^xsd:nonNegativeInteger
+ ],
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :mappingHasXMLClass ;
+ owl:maxCardinality "1"^^xsd:nonNegativeInteger
+ ],
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :mappingHasStandoffClass ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ],
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :mappingHasXMLAttribute ;
+ owl:minCardinality "0"^^xsd:nonNegativeInteger
+ ],
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :mappingHasStandoffDataTypeClass ;
+ owl:maxCardinality "1"^^xsd:nonNegativeInteger
+ ],
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :mappingElementRequiresSeparator ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ];
+
+ rdfs:label "Mapping from XML to standoff entities"@en ;
+
+ rdfs:comment "Mapping from XML to standoff entities" .
+
+### http://www.knora.org/ontology/knora-base#XMLToStandoffMapping
+
+:XMLToStandoffMapping rdf:type owl:Class ;
+
+ rdfs:subClassOf
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :hasMappingElement ;
+ owl:minCardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :mappingHasDefaultXSLTransformation ;
+ owl:maxCardinality "1"^^xsd:nonNegativeInteger
+ ] ;
+
+ rdfs:label "Mapping from XML to standoff entities"@en ;
+
+ rdfs:comment "Mapping from XML to standoff entities" .
+
+### http://www.knora.org/ontology/knora-base#TextValue
+
+:TextValue rdf:type owl:Class ;
+
+ rdfs:subClassOf :Value ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :valueHasStandoff ;
+ owl:minCardinality "0"^^xsd:nonNegativeInteger
+ ],
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :valueHasMaxStandoffStartIndex ;
+ owl:maxCardinality "1"^^xsd:nonNegativeInteger
+ ],
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :valueHasLanguage ;
+ owl:maxCardinality "1"^^xsd:nonNegativeInteger
+ ],
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :valueHasMapping ;
+ owl:maxCardinality "1"^^xsd:nonNegativeInteger
+ ] .
+
+
+
+### http://www.knora.org/ontology/knora-base#ValueBase
+
+:ValueBase rdf:type owl:Class .
+
+
+### http://www.knora.org/ontology/knora-base#Value
+
+:Value rdf:type owl:Class ;
+
+ rdfs:subClassOf :ValueBase,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :valueCreationDate ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :attachedToUser ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :hasPermissions ;
+ owl:maxCardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :valueHasOrder ;
+ owl:maxCardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :valueHasComment ;
+ owl:maxCardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :isDeleted ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :deleteDate ;
+ owl:maxCardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :deletedBy ;
+ owl:maxCardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :deleteComment ;
+ owl:maxCardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :previousValue ;
+ owl:maxCardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :valueHasString ;
+ owl:cardinality "1"^^xsd:nonNegativeInteger
+ ] ,
+ [ rdf:type owl:Restriction ;
+ owl:onProperty :valueHasUUID ;
+ owl:maxCardinality "1"^^xsd:nonNegativeInteger
+ ] ;
+
+
+ rdfs:comment "The base class of classes representing Knora values"@en .
diff --git a/upgrade/plugins/pr1403/knora-ontologies/salsah-gui.ttl b/upgrade/plugins/pr1403/knora-ontologies/salsah-gui.ttl
new file mode 100644
index 0000000000..8e5bde0478
--- /dev/null
+++ b/upgrade/plugins/pr1403/knora-ontologies/salsah-gui.ttl
@@ -0,0 +1,244 @@
+# Copyright © 2015-2019 the contributors (see Contributors.md).
+#
+# This file is part of Knora.
+#
+# Knora is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published
+# by the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Knora is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public
+# License along with Knora. If not, see .
+
+@prefix : .
+@prefix owl: .
+@prefix rdf: .
+@prefix xml: .
+@prefix xsd: .
+@prefix rdfs: .
+@prefix knora-base: .
+@prefix knora-admin: .
+@base .
+
+ rdf:type owl:Ontology ;
+
+ rdfs:label "The salsah-gui ontology"@en ;
+
+ knora-base:attachedToProject knora-admin:SystemProject .
+
+
+#################################################################
+#
+# Properties
+#
+#################################################################
+
+
+### http://www.knora.org/ontology/salsah-gui#guiOrder
+
+:guiOrder rdf:type owl:DatatypeProperty ;
+
+ knora-base:subjectClassConstraint owl:Restriction ;
+
+ knora-base:objectDatatypeConstraint xsd:nonNegativeInteger .
+
+
+
+### http://www.knora.org/ontology/salsah-gui#guiElement
+
+:guiElement rdf:type owl:ObjectProperty .
+
+
+
+### http://www.knora.org/ontology/salsah-gui#guiAttribute
+
+:guiAttribute rdf:type owl:DatatypeProperty ;
+
+ knora-base:objectDatatypeConstraint xsd:string .
+
+
+
+### http://www.knora.org/ontology/salsah-gui#guiAttributeDefinition
+
+:guiAttributeDefinition rdf:type owl:DatatypeProperty ;
+
+ knora-base:subjectClassConstraint :Guielement ;
+
+ knora-base:objectDatatypeConstraint xsd:string .
+
+
+
+
+
+#################################################################
+#
+# Classes
+#
+#################################################################
+
+
+### http://www.knora.org/ontology/salsah-gui#Guielement
+
+:Guielement rdf:type owl:Class .
+
+
+
+
+
+#################################################################
+#
+# Individuals
+#
+#################################################################
+
+
+### http://www.knora.org/ontology/salsah-gui#Colorpicker
+
+:Colorpicker rdf:type :Guielement ,
+ owl:NamedIndividual ;
+
+ :guiAttributeDefinition "ncolors:integer" .
+
+
+
+### http://www.knora.org/ontology/salsah-gui#Date
+
+:Date rdf:type :Guielement ,
+ owl:NamedIndividual .
+
+
+
+### http://www.knora.org/ontology/salsah-gui#Geometry
+
+:Geometry rdf:type :Guielement ,
+ owl:NamedIndividual .
+
+
+
+### http://www.knora.org/ontology/salsah-gui#Geonames
+
+:Geonames rdf:type :Guielement ,
+ owl:NamedIndividual .
+
+
+
+### http://www.knora.org/ontology/salsah-gui#Iconclass
+
+# :Iconclass rdf:type :Guielement ,
+# owl:NamedIndividual .
+
+
+
+### http://www.knora.org/ontology/salsah-gui#Interval
+
+:Interval rdf:type :Guielement ,
+ owl:NamedIndividual .
+
+
+
+### http://www.knora.org/ontology/salsah-gui#TimeStamp
+
+:TimeStamp rdf:type :Guielement ,
+ owl:NamedIndividual .
+
+
+
+### http://www.knora.org/ontology/salsah-gui#List
+
+:List rdf:type :Guielement ,
+ owl:NamedIndividual ;
+
+ :guiAttributeDefinition "hlist(required):iri" .
+
+
+
+### http://www.knora.org/ontology/salsah-gui#Pulldown
+
+:Pulldown rdf:type :Guielement ,
+ owl:NamedIndividual ;
+
+ :guiAttributeDefinition "hlist(required):iri" .
+
+
+
+### http://www.knora.org/ontology/salsah-gui#Radio
+
+:Radio rdf:type :Guielement ,
+ owl:NamedIndividual ;
+
+ :guiAttributeDefinition "hlist(required):iri" .
+
+
+
+### http://www.knora.org/ontology/salsah-gui#Richtext
+
+:Richtext rdf:type :Guielement ,
+ owl:NamedIndividual .
+
+
+
+### http://www.knora.org/ontology/salsah-gui#Searchbox
+
+:Searchbox rdf:type :Guielement ,
+ owl:NamedIndividual ;
+
+ :guiAttributeDefinition "numprops:integer" .
+
+
+
+### http://www.knora.org/ontology/salsah-gui#SimpleText
+
+:SimpleText rdf:type :Guielement ,
+ owl:NamedIndividual ;
+
+ :guiAttributeDefinition "size:integer" ,
+ "maxlength:integer" .
+
+
+
+### http://www.knora.org/ontology/salsah-gui#Slider
+
+:Slider rdf:type :Guielement ,
+ owl:NamedIndividual ;
+
+ :guiAttributeDefinition "max(required):decimal" ,
+ "min(required):decimal" .
+
+
+
+### http://www.knora.org/ontology/salsah-gui#Spinbox
+
+:Spinbox rdf:type :Guielement ,
+ owl:NamedIndividual ;
+
+ :guiAttributeDefinition "max:decimal" ,
+ "min:decimal" .
+
+
+
+### http://www.knora.org/ontology/salsah-gui#Textarea
+
+:Textarea rdf:type :Guielement ,
+ owl:NamedIndividual ;
+
+ :guiAttributeDefinition "cols:integer" ,
+ "rows:integer" ,
+ "width:percent" ,
+ "wrap:string(soft|hard)" .
+
+
+### http://www.knora.org/ontology/salsah-gui#Checkbox
+
+:Checkbox rdf:type :Guielement ,
+ owl:NamedIndividual .
+
+
+### http://www.knora.org/ontology/salsah-gui#Fileupload
+
+:Fileupload rdf:type :Guielement ,
+ owl:NamedIndividual .
diff --git a/upgrade/plugins/pr1403/knora-ontologies/standoff-data.ttl b/upgrade/plugins/pr1403/knora-ontologies/standoff-data.ttl
new file mode 100644
index 0000000000..b449590294
--- /dev/null
+++ b/upgrade/plugins/pr1403/knora-ontologies/standoff-data.ttl
@@ -0,0 +1,631 @@
+# Copyright © 2015-2019 the contributors (see Contributors.md).
+#
+# This file is part of Knora.
+#
+# Knora is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published
+# by the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Knora is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public
+# License along with Knora. If not, see .
+
+@prefix xml: .
+@prefix xsd: .
+@prefix rdf: .
+@prefix rdfs: .
+@prefix owl: .
+@prefix foaf: .
+@prefix knora-base: .
+@prefix salsah-gui: .
+@prefix standoff: .
+
+ a knora-base:XMLToStandoffMapping ;
+ rdfs:label "mapping for HTML"@en ;
+ knora-base:hasMappingElement
+ ,
+ ,
+ ,
+ ,
+ ,
+ ,
+ ,
+ ,
+ ,
+ ,
+ ,
+
+ #### additional elements
+
+ ,
+ ,
+ ,
+ ,
+ ,
+ ,
+ ,
+ ,
+ ,
+ ,
+ ,
+ ,
+ ,
+ ,
+ ,
+ ,
+ ,
+ ,
+ .
+
+
+ a knora-base:MappingElement ;
+ knora-base:mappingHasStandoffClass standoff:StandoffRootTag ;
+ knora-base:mappingHasXMLClass "noClass"^^xsd:string ;
+ knora-base:mappingHasXMLNamespace "noNamespace"^^xsd:string ;
+ knora-base:mappingHasXMLTagname "text"^^xsd:string ;
+ knora-base:mappingElementRequiresSeparator false ;
+ knora-base:mappingHasXMLAttribute .
+
+
+ a knora-base:MappingXMLAttribute ;
+ knora-base:mappingHasStandoffProperty standoff:standoffRootTagHasDocumentType ;
+ knora-base:mappingHasXMLAttributename "documentType"^^xsd:string ;
+ knora-base:mappingHasXMLNamespace "noNamespace"^^xsd:string .
+
+
+ a knora-base:MappingElement ;
+ knora-base:mappingHasStandoffClass standoff:StandoffParagraphTag ;
+ knora-base:mappingHasXMLClass "noClass"^^xsd:string ;
+ knora-base:mappingHasXMLNamespace "noNamespace"^^xsd:string ;
+ knora-base:mappingElementRequiresSeparator true ;
+ knora-base:mappingHasXMLTagname "p"^^xsd:string .
+
+
+ a knora-base:MappingElement ;
+ knora-base:mappingHasStandoffClass standoff:StandoffItalicTag ;
+ knora-base:mappingHasXMLClass "noClass"^^xsd:string ;
+ knora-base:mappingHasXMLNamespace "noNamespace"^^xsd:string ;
+ knora-base:mappingElementRequiresSeparator false ;
+ knora-base:mappingHasXMLTagname "em"^^xsd:string .
+
+
+ a knora-base:MappingElement ;
+ knora-base:mappingHasStandoffClass standoff:StandoffBoldTag ;
+ knora-base:mappingHasXMLClass "noClass"^^xsd:string ;
+ knora-base:mappingHasXMLNamespace "noNamespace"^^xsd:string ;
+ knora-base:mappingElementRequiresSeparator false ;
+ knora-base:mappingHasXMLTagname "strong"^^xsd:string .
+
+
+ a knora-base:MappingElement ;
+ knora-base:mappingHasStandoffClass standoff:StandoffUnderlineTag ;
+ knora-base:mappingHasXMLClass "noClass"^^xsd:string ;
+ knora-base:mappingHasXMLNamespace "noNamespace"^^xsd:string ;
+ knora-base:mappingElementRequiresSeparator false ;
+ knora-base:mappingHasXMLTagname "u"^^xsd:string .
+
+
+ a knora-base:MappingElement ;
+ knora-base:mappingHasStandoffClass standoff:StandoffSubscriptTag ;
+ knora-base:mappingHasXMLClass "noClass"^^xsd:string ;
+ knora-base:mappingHasXMLNamespace "noNamespace"^^xsd:string ;
+ knora-base:mappingElementRequiresSeparator false ;
+ knora-base:mappingHasXMLTagname "sub"^^xsd:string .
+
+
+ a knora-base:MappingElement ;
+ knora-base:mappingHasStandoffClass standoff:StandoffSuperscriptTag ;
+ knora-base:mappingHasXMLClass "noClass"^^xsd:string ;
+ knora-base:mappingHasXMLNamespace "noNamespace"^^xsd:string ;
+ knora-base:mappingElementRequiresSeparator false ;
+ knora-base:mappingHasXMLTagname "sup"^^xsd:string .
+
+
+ a knora-base:MappingElement ;
+ knora-base:mappingHasStandoffClass standoff:StandoffStrikethroughTag ;
+ knora-base:mappingHasXMLClass "noClass"^^xsd:string ;
+ knora-base:mappingHasXMLNamespace "noNamespace"^^xsd:string ;
+ knora-base:mappingElementRequiresSeparator false ;
+ knora-base:mappingHasXMLTagname "strike"^^xsd:string .
+
+
+ a knora-base:MappingElement ;
+ knora-base:mappingHasStandoffClass knora-base:StandoffUriTag ;
+ knora-base:mappingHasXMLClass "noClass"^^xsd:string ;
+ knora-base:mappingHasXMLNamespace "noNamespace"^^xsd:string ;
+ knora-base:mappingElementRequiresSeparator false ;
+ knora-base:mappingHasXMLTagname "a"^^xsd:string ;
+ knora-base:mappingHasStandoffDataTypeClass .
+
+
+ a knora-base:MappingStandoffDataTypeClass ;
+ knora-base:mappingHasStandoffClass knora-base:StandoffUriTag ;
+ knora-base:mappingHasXMLAttributename "href"^^xsd:string .
+
+
+ a knora-base:MappingElement ;
+ knora-base:mappingHasStandoffClass knora-base:StandoffLinkTag ;
+ knora-base:mappingHasXMLClass "salsah-link" ;
+ knora-base:mappingHasXMLNamespace "noNamespace"^^xsd:string ;
+ knora-base:mappingElementRequiresSeparator false ;
+ knora-base:mappingHasXMLTagname "a"^^xsd:string ;
+ knora-base:mappingHasStandoffDataTypeClass .
+
+
+ a knora-base:MappingStandoffDataTypeClass ;
+ knora-base:mappingHasStandoffClass knora-base:StandoffLinkTag ;
+ knora-base:mappingHasXMLAttributename "href"^^xsd:string .
+
+
+ a knora-base:MappingElement ;
+ knora-base:mappingHasStandoffClass knora-base:StandoffInternalReferenceTag ;
+ knora-base:mappingHasXMLClass "internal-link" ;
+ knora-base:mappingHasXMLNamespace "noNamespace" ;
+ knora-base:mappingElementRequiresSeparator false ;
+ knora-base:mappingHasXMLTagname "a" ;
+ knora-base:mappingHasStandoffDataTypeClass .
+
+
+ a knora-base:MappingStandoffDataTypeClass ;
+ knora-base:mappingHasStandoffClass knora-base:StandoffInternalReferenceTag ;
+ knora-base:mappingHasXMLAttributename "href" .
+
+
+###################### additional elements
+
+
+ a knora-base:MappingElement ;
+ knora-base:mappingHasStandoffClass standoff:StandoffHeader1Tag ;
+ knora-base:mappingHasXMLClass "noClass"^^xsd:string ;
+ knora-base:mappingHasXMLNamespace "noNamespace"^^xsd:string ;
+ knora-base:mappingElementRequiresSeparator true ;
+ knora-base:mappingHasXMLTagname "h1"^^xsd:string .
+
+
+ a knora-base:MappingElement ;
+ knora-base:mappingHasStandoffClass standoff:StandoffHeader2Tag ;
+ knora-base:mappingHasXMLClass "noClass"^^xsd:string ;
+ knora-base:mappingHasXMLNamespace "noNamespace"^^xsd:string ;
+ knora-base:mappingElementRequiresSeparator true ;
+ knora-base:mappingHasXMLTagname "h2"^^xsd:string .
+
+
+ a knora-base:MappingElement ;
+ knora-base:mappingElementRequiresSeparator true ;
+ knora-base:mappingHasStandoffClass standoff:StandoffHeader3Tag ;
+ knora-base:mappingHasXMLClass "noClass"^^xsd:string ;
+ knora-base:mappingHasXMLNamespace "noNamespace"^^xsd:string ;
+ knora-base:mappingHasXMLTagname "h3"^^xsd:string .
+
+
+ a knora-base:MappingElement ;
+ knora-base:mappingHasStandoffClass standoff:StandoffHeader4Tag ;
+ knora-base:mappingHasXMLClass "noClass"^^xsd:string ;
+ knora-base:mappingHasXMLNamespace "noNamespace"^^xsd:string ;
+ knora-base:mappingElementRequiresSeparator true ;
+ knora-base:mappingHasXMLTagname "h4"^^xsd:string .
+
+
+ a knora-base:MappingElement ;
+ knora-base:mappingHasStandoffClass standoff:StandoffHeader5Tag ;
+ knora-base:mappingHasXMLClass "noClass"^^xsd:string ;
+ knora-base:mappingHasXMLNamespace "noNamespace"^^xsd:string ;
+ knora-base:mappingElementRequiresSeparator true ;
+ knora-base:mappingHasXMLTagname "h5"^^xsd:string .
+
+
+ a knora-base:MappingElement ;
+ knora-base:mappingHasStandoffClass standoff:StandoffHeader6Tag ;
+ knora-base:mappingHasXMLClass "noClass"^^xsd:string ;
+ knora-base:mappingHasXMLNamespace "noNamespace"^^xsd:string ;
+ knora-base:mappingElementRequiresSeparator true ;
+ knora-base:mappingHasXMLTagname "h6"^^xsd:string .
+
+
+ a knora-base:MappingElement ;
+ knora-base:mappingHasStandoffClass standoff:StandoffOrderedListTag ;
+ knora-base:mappingHasXMLClass "noClass"^^xsd:string ;
+ knora-base:mappingHasXMLNamespace "noNamespace"^^xsd:string ;
+ knora-base:mappingElementRequiresSeparator true ;
+ knora-base:mappingHasXMLTagname "ol"^^xsd:string .
+
+
+ a knora-base:MappingElement ;
+ knora-base:mappingHasStandoffClass standoff:StandoffUnorderedListTag ;
+ knora-base:mappingHasXMLClass "noClass"^^xsd:string ;
+ knora-base:mappingHasXMLNamespace "noNamespace"^^xsd:string ;
+ knora-base:mappingElementRequiresSeparator true ;
+ knora-base:mappingHasXMLTagname "ul"^^xsd:string .
+
+
+ a knora-base:MappingElement ;
+ knora-base:mappingHasStandoffClass standoff:StandoffListElementTag ;
+ knora-base:mappingHasXMLClass "noClass"^^xsd:string ;
+ knora-base:mappingHasXMLNamespace "noNamespace"^^xsd:string ;
+ knora-base:mappingElementRequiresSeparator true ;
+ knora-base:mappingHasXMLTagname "li"^^xsd:string .
+
+
+ a knora-base:MappingElement ;
+ knora-base:mappingHasStandoffClass standoff:StandoffTableTag ;
+ knora-base:mappingHasXMLClass "noClass"^^xsd:string ;
+ knora-base:mappingHasXMLNamespace "noNamespace"^^xsd:string ;
+ knora-base:mappingElementRequiresSeparator true ;
+ knora-base:mappingHasXMLTagname "table"^^xsd:string .
+
+
+ a knora-base:MappingElement ;
+ knora-base:mappingHasStandoffClass standoff:StandoffTableBodyTag ;
+ knora-base:mappingHasXMLClass "noClass"^^xsd:string ;
+ knora-base:mappingHasXMLNamespace "noNamespace"^^xsd:string ;
+ knora-base:mappingElementRequiresSeparator true ;
+ knora-base:mappingHasXMLTagname "tbody"^^xsd:string .
+
+
+ a knora-base:MappingElement ;
+ knora-base:mappingHasStandoffClass standoff:StandoffTableRowTag ;
+ knora-base:mappingHasXMLClass "noClass"^^xsd:string ;
+ knora-base:mappingHasXMLNamespace "noNamespace"^^xsd:string ;
+ knora-base:mappingElementRequiresSeparator true ;
+ knora-base:mappingHasXMLTagname "tr"^^xsd:string .
+
+
+ a knora-base:MappingElement ;
+ knora-base:mappingHasStandoffClass standoff:StandoffTableCellTag ;
+ knora-base:mappingHasXMLClass "noClass"^^xsd:string ;
+ knora-base:mappingHasXMLNamespace "noNamespace"^^xsd:string ;
+ knora-base:mappingElementRequiresSeparator true ;
+ knora-base:mappingHasXMLTagname "td"^^xsd:string .
+
+
+ a knora-base:MappingElement ;
+ knora-base:mappingHasStandoffClass standoff:StandoffBrTag ;
+ knora-base:mappingHasXMLClass "noClass"^^xsd:string ;
+ knora-base:mappingHasXMLNamespace "noNamespace"^^xsd:string ;
+ knora-base:mappingElementRequiresSeparator true ;
+ knora-base:mappingHasXMLTagname "br"^^xsd:string .
+
+
+ a knora-base:MappingElement ;
+ knora-base:mappingHasStandoffClass standoff:StandoffLineTag ;
+ knora-base:mappingHasXMLClass "noClass"^^xsd:string ;
+ knora-base:mappingHasXMLNamespace "noNamespace"^^xsd:string ;
+ knora-base:mappingHasXMLTagname "hr"^^xsd:string ;
+ knora-base:mappingElementRequiresSeparator true .
+
+
+ a knora-base:MappingElement ;
+ knora-base:mappingHasStandoffClass standoff:StandoffPreTag ;
+ knora-base:mappingHasXMLClass "noClass"^^xsd:string ;
+ knora-base:mappingHasXMLNamespace "noNamespace"^^xsd:string ;
+ knora-base:mappingHasXMLTagname "pre"^^xsd:string ;
+ knora-base:mappingElementRequiresSeparator true .
+
+
+ a knora-base:MappingElement ;
+ knora-base:mappingHasStandoffClass standoff:StandoffCiteTag ;
+ knora-base:mappingHasXMLClass "noClass"^^xsd:string ;
+ knora-base:mappingHasXMLNamespace "noNamespace"^^xsd:string ;
+ knora-base:mappingHasXMLTagname "cite"^^xsd:string ;
+ knora-base:mappingElementRequiresSeparator true .
+
+
+ a knora-base:MappingElement ;
+ knora-base:mappingHasStandoffClass standoff:StandoffBlockquoteTag ;
+ knora-base:mappingHasXMLClass "noClass"^^xsd:string ;
+ knora-base:mappingHasXMLNamespace "noNamespace"^^xsd:string ;
+ knora-base:mappingElementRequiresSeparator true ;
+ knora-base:mappingHasXMLTagname "blockquote"^^xsd:string .
+
+
+ a knora-base:MappingElement ;
+ knora-base:mappingHasStandoffClass standoff:StandoffCodeTag ;
+ knora-base:mappingHasXMLClass "noClass"^^xsd:string ;
+ knora-base:mappingHasXMLNamespace "noNamespace"^^xsd:string ;
+ knora-base:mappingElementRequiresSeparator true ;
+ knora-base:mappingHasXMLTagname "code"^^xsd:string .
+
+### TEI Mapping for standard standoff tags
+
+ a knora-base:XMLToStandoffMapping ;
+ rdfs:label "mapping for TEI"@en .
+
+ .
+
+ a ;
+ "text" ;
+ "noNamespace" ;
+ "noClass" ;
+ ;
+ .
+
+ a ;
+ "noNamespace" ;
+ "documentType" ;
+ .
+
+ "false"^^xsd:boolean .
+
+ .
+
+ a ;
+ "entity" ;
+ "noNamespace" ;
+ "noClass" ;
+ ;
+ .
+
+ a ;
+ ;
+ "ref" .
+
+ "false"^^xsd:boolean .
+
+ .
+
+ a ;
+ "a" ;
+ "noNamespace" ;
+ "noClass" ;
+ ;
+ .
+
+ a ;
+ ;
+ "href" .
+
+ "false"^^xsd:boolean .
+
+ .
+
+ a ;
+ "ref" ;
+ "noNamespace" ;
+ "noClass" ;
+ ;
+ .
+
+ a ;
+ ;
+ "target" .
+
+ "false"^^xsd:boolean .
+
+ .
+
+ a ;
+ "quote" ;
+ "noNamespace" ;
+ "noClass" ;
+ ;
+ "false"^^xsd:boolean .
+
+ .
+
+ a ;
+ "code" ;
+ "noNamespace" ;
+ "noClass" ;
+ ;
+ "false"^^xsd:boolean .
+
+ .
+
+ a ;
+ "p" ;
+ "noNamespace" ;
+ "noClass" ;
+ ;
+ "true"^^xsd:boolean .
+
+ .
+
+ a ;
+ "header1" ;
+ "noNamespace" ;
+ "noClass" ;
+