From 52312e8ecb3aa91a8d8bb7a04f5c2d2e0744d2b2 Mon Sep 17 00:00:00 2001 From: antoine37120 Date: Fri, 19 Apr 2024 18:01:54 +0200 Subject: [PATCH 01/55] #351 beta version tree selection class --- dev-page/configs/nakala-shapes.ttl | 141 ++++++++ dev-page/index.html | 4 +- .../components/all-components.scss | 4 +- .../hierarchicalclassselectbuilder.scss | 138 +++++++ .../startendclassgroup/ClassTypeId.ts | 7 +- .../HierarchicalClassSelectBuilder.ts | 336 ++++++++++++++++++ .../spec-providers/ISpecificationEntity.ts | 1 + .../jsonld/JsonLdSpecificationEntity.ts | 7 +- .../owl/OWLSpecificationEntity.ts | 4 + .../owl/OWLSpecificationProvider.ts | 1 + .../shacl/SHACLSpecificationEntity.ts | 10 + .../shacl/SHACLSpecificationProvider.ts | 2 + 12 files changed, 647 insertions(+), 8 deletions(-) create mode 100644 src/assets/stylesheets/components/citeriagroup/startendclassgroup/hierarchicalclassselectbuilder.scss create mode 100644 src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts diff --git a/dev-page/configs/nakala-shapes.ttl b/dev-page/configs/nakala-shapes.ttl index 40e29db4..dacdbe6e 100644 --- a/dev-page/configs/nakala-shapes.ttl +++ b/dev-page/configs/nakala-shapes.ttl @@ -2451,3 +2451,144 @@ _:b15 rdf:first shape:Collection_isReferencedBy_datatype_0 ; rdf:rest ( shape:Co _:b16 rdf:first shape:ProvidedCHO_mediator_datatype_0 ; rdf:rest ( shape:ProvidedCHO_mediator_datatype_1 ) . _:b17 rdf:first "fr" ; rdf:rest () . + + +shape:SubAgent1_1 rdf:type sh:NodeShape ; + rdfs:comment "533 instances" ; + rdfs:label "SubAgent1_1"@en ; + sh:property shape:Agent_altLabel , shape:Agent_prefLabel ; + sh:parent shape:SubAgent1 ; + sh:targetClass skos:Agent . + +shape:SubAgent1_2 rdf:type sh:NodeShape ; + rdfs:comment "533 instances" ; + rdfs:label "SubAgent1_2"@en ; + sh:property shape:Agent_altLabel , shape:Agent_prefLabel ; + sh:parent shape:SubAgent1 ; + sh:targetClass skos:Agent . + +shape:SubAgent3_1 rdf:type sh:NodeShape ; + rdfs:comment "533 instances" ; + rdfs:label "SubAgent3_1"@en ; + sh:property shape:Agent_altLabel , shape:Agent_prefLabel ; + sh:parent shape:SubAgent3 ; + sh:targetClass skos:Agent . + +shape:SubAgent3_2 rdf:type sh:NodeShape ; + rdfs:comment "533 instances" ; + rdfs:label "SubAgent3_2"@en ; + sh:property shape:Agent_altLabel , shape:Agent_prefLabel ; + sh:parent shape:SubAgent3 ; + sh:targetClass skos:Agent . + +shape:SubConcept1 rdf:type sh:NodeShape ; + rdfs:comment "533 instances" ; + rdfs:label "SubConcept1"@en ; + sh:property shape:Concept_altLabel , shape:Concept_prefLabel ; + sh:parent shape:Concept ; + sh:targetClass skos:Concept . + +shape:SubConcept2 rdf:type sh:NodeShape ; + rdfs:comment "533 instances" ; + rdfs:label "SubConcept2"@en ; + sh:property shape:Concept_altLabel , shape:Concept_prefLabel ; + sh:parent shape:Concept ; + sh:targetClass skos:Concept . + +shape:SubConcept3 rdf:type sh:NodeShape ; + rdfs:comment "533 instances" ; + rdfs:label "SubConcept3"@en ; + sh:property shape:Concept_altLabel , shape:Concept_prefLabel ; + sh:parent shape:Concept ; + sh:targetClass skos:Concept . + +shape:SubConcept4 rdf:type sh:NodeShape ; + rdfs:comment "533 instances" ; + rdfs:label "SubConcept4"@en ; + sh:property shape:Concept_altLabel , shape:Concept_prefLabel ; + sh:parent shape:Concept ; + sh:targetClass skos:Concept . + +shape:SubConcept3_1 rdf:type sh:NodeShape ; + rdfs:comment "533 instances" ; + rdfs:label "SubConcept3_1"@en ; + sh:property shape:Concept_altLabel , shape:Concept_prefLabel ; + sh:parent shape:SubConcept3 ; + sh:targetClass skos:Concept . + +shape:SubConcept3_2 rdf:type sh:NodeShape ; + rdfs:comment "533 instances" ; + rdfs:label "SubConcept3_2"@en ; + sh:property shape:Concept_altLabel , shape:Concept_prefLabel ; + sh:parent shape:SubConcept3 ; + sh:targetClass skos:Concept . + +shape:SubConcept3_3 rdf:type sh:NodeShape ; + rdfs:comment "533 instances" ; + rdfs:label "SubConcept3_3"@en ; + sh:property shape:Concept_altLabel , shape:Concept_prefLabel ; + sh:parent shape:SubConcept3 ; + sh:targetClass skos:Concept . + +shape:SubConcept3_4 rdf:type sh:NodeShape ; + rdfs:comment "533 instances" ; + rdfs:label "SubConcept3_4"@en ; + sh:property shape:Concept_altLabel , shape:Concept_prefLabel ; + sh:parent shape:SubConcept3 ; + sh:targetClass skos:Concept . + +shape:SubConcept1_1 rdf:type sh:NodeShape ; + rdfs:comment "533 instances" ; + rdfs:label "SubConcept1_1"@en ; + sh:property shape:Concept_altLabel , shape:Concept_prefLabel ; + sh:parent shape:SubConcept1 ; + sh:targetClass skos:Concept . + +shape:SubConcept1_2 rdf:type sh:NodeShape ; + rdfs:comment "533 instances" ; + rdfs:label "SubConcept1_2"@en ; + sh:property shape:Concept_altLabel , shape:Concept_prefLabel ; + sh:parent shape:SubConcept1 ; + sh:targetClass skos:Concept . + +shape:SubConcept1_3 rdf:type sh:NodeShape ; + rdfs:comment "533 instances" ; + rdfs:label "SubConcept1_3"@en ; + sh:property shape:Concept_altLabel , shape:Concept_prefLabel ; + sh:parent shape:SubConcept1 ; + sh:targetClass skos:Concept . + +shape:SubConcept1_4 rdf:type sh:NodeShape ; + rdfs:comment "533 instances" ; + rdfs:label "SubConcept1_4"@en ; + sh:property shape:Concept_altLabel , shape:Concept_prefLabel ; + sh:parent shape:SubConcept1 ; + sh:targetClass skos:Concept . + +shape:SubAgent1 rdf:type sh:NodeShape ; + rdfs:comment "533 instances" ; + rdfs:label "SubAgent1"@en ; + sh:property shape:Agent_altLabel , shape:Agent_prefLabel ; + sh:parent shape:Agent ; + sh:targetClass skos:Agent . + +shape:SubAgent2 rdf:type sh:NodeShape ; + rdfs:comment "533 instances" ; + rdfs:label "SubAgent2"@en ; + sh:property shape:Agent_altLabel , shape:Agent_prefLabel ; + sh:parent shape:Agent ; + sh:targetClass skos:Agent . + +shape:SubAgent3 rdf:type sh:NodeShape ; + rdfs:comment "533 instances" ; + rdfs:label "SubAgent3"@en ; + sh:property shape:Agent_altLabel , shape:Agent_prefLabel ; + sh:parent shape:Agent ; + sh:targetClass skos:Agent . + +shape:SubAgent4 rdf:type sh:NodeShape ; + rdfs:comment "533 instances" ; + rdfs:label "SubAgent4"@en ; + sh:property shape:Agent_altLabel , shape:Agent_prefLabel ; + sh:parent shape:Agent ; + sh:targetClass skos:Agent . \ No newline at end of file diff --git a/dev-page/index.html b/dev-page/index.html index 4894b094..27e82e1e 100644 --- a/dev-page/index.html +++ b/dev-page/index.html @@ -9,7 +9,7 @@ - + @@ -55,7 +55,7 @@ div { + display: inline-block; + cursor: pointer; + } + } + .htmlSelectUiUxLists { + overflow-x: hidden; + } + + ul { + width: 200px; + padding:0; + margin: 0; + list-style: none; + background: #fff; + max-height: 35vh; + overflow-y: auto; + display: none; + white-space: normal; + vertical-align: top; + border-right: 1px solid #e8e8e8; + + &.active-pane { + display: inline-block; + margin-left: 0; + transition-property: margin-left; + transition-duration: 0.5s; + transition-delay: 0; + } + + &.active-pane-hide-left { + margin-left: -200px; + } + + + li { + span.item-sel { + display: inline-block; + width: 100%; + padding: 5px 10px; + height: 40px; + } + span.item-traverse { + display: none; + width: 20%; + text-align: center; + padding: 5px 5px; + border-left: 1px solid #e8e8e8; + height: 40px; + } + &.have-childs { + span.item-sel { + width: 80%; + } + span.item-traverse { + display: inline-block; + } + } + cursor: pointer; + border-bottom: solid 1px #e8e8e8; + height: 40px; + img { + height : 40px; + &.highlited { + display: none; + } + } + &.selected, + &.focus, + &>span:hover { + background-color: var(--primary-color-main) ; + color: #fff; + img { + display: none; + &.highlited { + display: inline; + } + } + } + } + } + +} + +/* Scroll bar */ +.htmlSelectUiUx { + .htmlSelectUiUxLists, + ul { + /* Works on Chrome, Edge, and Safari */ + &::-webkit-scrollbar { + width: 3px; + height: 3px; + background-color: #e8e8e8; + } + + &::-webkit-scrollbar-track { + /*-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);*/ + border-radius: 3px; + background-color: #e8e8e8; + } + + &::-webkit-scrollbar-thumb { + border-radius: 3px; + /*-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3);*/ + background-color: var(--primary-color-main); + } + & { + -moz-width: thin; + } + } +} + +@-moz-document url-prefix() { + .htmlSelectUiUx ul { + scrollbar-color: var(--primary-color-main) #e8e8e8; + } +} \ No newline at end of file diff --git a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/ClassTypeId.ts b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/ClassTypeId.ts index c53d0e8a..513f7344 100644 --- a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/ClassTypeId.ts +++ b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/ClassTypeId.ts @@ -1,6 +1,7 @@ import ISparnaturalSpecification from "../../../../../spec-providers/ISparnaturalSpecification"; import StartClassGroup from "./StartClassGroup"; import EndClassGroup from "./EndClassGroup"; +import HierarchicalClassSelectBuilder from "./HierarchicalClassSelectBuilder"; import ArrowComponent from "../../../../buttons/ArrowComponent"; import UiuxConfig from "../../../../IconsConstants"; import UnselectBtn from "../../../../buttons/UnselectBtn"; @@ -24,7 +25,7 @@ class ClassTypeId extends HTMLComponent { UiuxConfig.COMPONENT_ARROW_BACK ); - selectBuilder: ClassSelectBuilder; + selectBuilder: HierarchicalClassSelectBuilder; startClassVal: SelectedVal = { variable: null, type: null, @@ -39,7 +40,7 @@ class ClassTypeId extends HTMLComponent { startClassVal?: any ) { super("ClassTypeId", ParentComponent, null); - this.selectBuilder = new ClassSelectBuilder(this, specProvider); + this.selectBuilder = new HierarchicalClassSelectBuilder(this, specProvider); this.startClassVal = startClassVal; this.specProvider = specProvider; } @@ -75,7 +76,7 @@ class ClassTypeId extends HTMLComponent { // convert to niceSelect: https://jqueryniceselect.hernansartorio.com/ // needs to happen after html.append(). it uses rendered stuff on page to create a new select... should move away from that this.oldWidget = this.widgetHtml; - this.widgetHtml = this.widgetHtml.niceSelect(); + //this.widgetHtml = this.widgetHtml.niceSelect(); // nice-select is not a proper select tag and that's why can't listen for change events... move away from nice-select! this.#addOnChangeListener(this.oldWidget); this.frontArrow.render(); diff --git a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts new file mode 100644 index 00000000..358be3e4 --- /dev/null +++ b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts @@ -0,0 +1,336 @@ +import { getSettings } from "../../../../../settings/defaultSettings"; +import { Config } from "../../../../../ontologies/SparnaturalConfig"; +import { SelectedVal } from "../../../../SelectedVal"; +import HTMLComponent from "../../../../HtmlComponent"; +import ISparnaturalSpecification from "../../../../../spec-providers/ISparnaturalSpecification"; +import StartClassGroup from "./StartClassGroup"; +import EndClassGroup from "./EndClassGroup"; +import { WidgetValue } from "../../../../widgets/AbstractWidget"; +import { I18n } from "../../../../../settings/I18n"; + + + +/** + * Builds a selector for a class based on provided domainId, by reading the + * configuration. If the given domainId is null, this means we populate the first + * class selection (starting point) so reads all classes that are domains of any property. + * + **/ +class HierarchicalClassSelectBuilder extends HTMLComponent { + specProvider: ISparnaturalSpecification; + html: JQuery; + htmlCoreSelect: JQuery; + htmlSelectUiUx: JQuery; + htmlSelectUiUxBreadCrum: JQuery; + htmlSelectUiUxLists: JQuery; + breadcrumItems: Array = []; + constructor(ParentComponent: HTMLComponent, specProvider: ISparnaturalSpecification) { + super("HierarchicalClassSelectBuilder", ParentComponent, null); + this.specProvider = specProvider; + } + + render(): this { + super.render(); + return this; + } + + parentIsAfter( parent:any, child:any ) { + var all = this.htmlSelectUiUx[0].querySelectorAll('ul') ; + + for( var i = 0; i < all.length; ++i ) { + if( all[i] === parent ) + return false; + else if( all[i] === child ) + return true; + } + } + + getParentsClass(idClass: string, parents: Array = []): Array { + let parent_class = this.htmlSelectUiUx[0].querySelector('li[value="'+idClass+'"]'); + let parent_id = parent_class.parentElement.getAttribute('parent') ; + if (parent_id != '') { + parents.push(parent_id); + return this.getParentsClass(parent_id, parents); + } + return parents ; + } + + addBreadcrumItem(idClass: string, label: string) { + console.log('addBreadcrumItem start') ; + console.log(idClass) ; + let li_elements = this.htmlSelectUiUx[0].querySelectorAll('li'); + let ul_elements = this.htmlSelectUiUx[0].querySelectorAll('ul.active-pane'); + let parent_class = this.htmlSelectUiUx[0].querySelector('li[value="'+idClass+'"]'); + let parent_id = parent_class.parentElement.getAttribute('parent') ; + console.log(this.breadcrumItems.indexOf(parent_id)); + console.log(ul_elements); + console.log(this.breadcrumItems); + console.log(parent_id); + if ((this.breadcrumItems.length > 0) && (this.breadcrumItems.indexOf(parent_id) != this.breadcrumItems.length-1 )) { + for (var i = 0; i < ul_elements.length; i++){ + if (i > this.breadcrumItems.indexOf(parent_id)+1) { + ul_elements[i].classList.remove('active-pane'); + /*let index_remove = this.breadcrumItems.indexOf(ul_elements[i].getAttribute('parent')); + this.breadcrumItems.splice(index_remove, 1);*/ + } + } + this.htmlSelectUiUx[0].querySelector('ul[parent="'+idClass+'"]').classList.add("active-pane"); + } + if ((this.breadcrumItems.length > 0) && (this.breadcrumItems.indexOf(parent_id) == -1 )) { + console.log('no parents selected') ; + //no parent on selected breadcreaItems + this.breadcrumItems = [] ; + let parents = this.getParentsClass(idClass).reverse() ; + this.breadcrumItems = parents ; + this.htmlSelectUiUxBreadCrum[0].innerHTML = ''; + for (var i = 0; i < ul_elements.length; i++){ + if (i > 0) { // dont remove active pane on root + ul_elements[i].classList.remove('active-pane'); + + let index_remove = this.breadcrumItems.indexOf(ul_elements[i].getAttribute('parent')); + this.breadcrumItems.splice(index_remove, 1); + + } + + } + //Reinit pane and breadcrum intems + for (var element of parents) { + let parent_element = this.htmlSelectUiUx[0].querySelector('li[value="'+element+'"]'); + let new_item = $(`
${parent_element.innerHTML}
`) + + this.htmlSelectUiUxBreadCrum[0].append(new_item[0]) ; + let parent_list = parent_element.parentElement.classList.add('active-pane'); + + new_item[0].addEventListener( + "click", + (e: CustomEvent) => { + + console.log('click start') ; + console.log(e.currentTarget ) ; + let class_target = (e.currentTarget as any).getAttribute('data-value') ; + //this.htmlSelectUiUx[0].querySelector('ul[parent="'+class_target+'"]').classList.add("active-pane"); + this.addBreadcrumItem(class_target, (e.currentTarget as any).innerHTML ) ; + } + ); + + } + this.htmlSelectUiUx[0].querySelector('ul[parent="'+idClass+'"]').classList.add("active-pane"); + } + + + this.breadcrumItems.push(idClass) ; + let new_item = $(`
${label}
`) ; + this.htmlSelectUiUxBreadCrum[0].append(new_item[0]) ; + new_item[0].addEventListener( + "click", + (e: CustomEvent) => { + console.log('click start') ; + console.log(e.currentTarget ) ; + let class_target = (e.currentTarget as any).getAttribute('data-value') ; + //this.htmlSelectUiUx[0].querySelector('ul[parent="'+class_target+'"]').classList.add("active-pane"); + this.addBreadcrumItem(class_target, (e.currentTarget as any).innerHTML ) ; + } + ); + + let Scroll_y = 0 ; + console.log(this.breadcrumItems.length); + if(this.breadcrumItems.length > 1) { + Scroll_y = ((this.breadcrumItems.length * 200) - 200) ; + } + + //Refesh actives panes list + ul_elements = this.htmlSelectUiUx[0].querySelectorAll('ul.active-pane'); + for( var arrayItem of this.breadcrumItems) { + if (!this.htmlSelectUiUx[0].querySelector('ul[parent="'+arrayItem+'"]').classList.contains('active-pane')) { + this.breadcrumItems.splice(this.breadcrumItems.indexOf(arrayItem), 1) ; + } + + } + + // Update breadcrum items list + for (var breadcrumItem of this.htmlSelectUiUx[0].querySelectorAll('div.breadcrumItem')) { + console.log(breadcrumItem.getAttribute('data-value')) ; + console.log(this.breadcrumItems) ; + if(this.breadcrumItems.indexOf(breadcrumItem.getAttribute('data-value') ) == -1) { + breadcrumItem.remove() ; + } + } + + //Display needed class List on main view + let hide_befor = ul_elements.length - 2 ; + let iter_to_hide = 0 ; + for (var element_to_hide of ul_elements) { + console.log(iter_to_hide +'<'+ hide_befor) ; + if (iter_to_hide < hide_befor) { + element_to_hide.classList.add("active-pane-hide-left") + } else { + element_to_hide.classList.remove("active-pane-hide-left") + } + iter_to_hide++ ; + } + + console.log(Scroll_y); + //this.htmlSelectUiUxLists[0].scrollLeft = Scroll_y ; + } + + initClassSelector() { + console.log('initClassSelector') ; + console.log(this.html) ; + console.log(this.htmlCoreSelect) ; + /*Search class with childs*/ + let li_elements = this.htmlSelectUiUx[0].querySelectorAll('li'); + let ul_elements = this.htmlSelectUiUx[0].querySelectorAll('ul') ; + for (var element of li_elements) { + let class_id = element.getAttribute('value') ; + //Search in all ul if have parent attr with this class_id + let hasChild = this.htmlSelectUiUx[0].querySelector('ul[parent="'+class_id+'"]'); + if (hasChild !== null) { + element.classList.add("have-childs"); + // if parent is after in dom move before + if(this.parentIsAfter( element.parentElement, hasChild ) ) { + element.parentElement.before(hasChild); + } + element.querySelector('span.item-traverse'); + element.querySelector('span.item-traverse').addEventListener( + "click", + (e: CustomEvent) => { + let class_target = (e.target as any).parentElement.getAttribute('value') ; + this.htmlSelectUiUx[0].querySelector('ul[parent="'+class_target+'"]').classList.add("active-pane"); + this.addBreadcrumItem(class_target, (e.target as any).parentElement.innerHTML ) ; + } + ); + + } + + } + } + + buildSelect_FirstStartClassGroup() { + return this.buildClassSelectFromItems( + this.specProvider.getEntitiesInDomainOfAnyProperty(), + null + ); + } + + buildSelect_EndClassGroup(domainId: string) { + return this.buildClassSelectFromItems( + this.specProvider.getEntity(domainId).getConnectedEntities(), + null + ); + } + + /** + * Return it with a single selected class inside + */ + buildSelect_StartClassGroupInWhere(selectedClass:string) { + return this.buildClassSelectFromItems( + [selectedClass], + null + ); + } + + buildClassSelectFromItems(items:any[], default_value: string) { + let list: Array = []; + this.htmlSelectUiUx = $(`
`) ; + this.htmlSelectUiUxLists = $(`
`) ; + this.htmlSelectUiUxBreadCrum = $(`
`) ; + let rootUl = $(`
    `) ; + let childs: Array = []; + let childsItems: Array = []; + for (var key in items) { + console.log(items[key]); + var val = items[key]; + var label = this.specProvider.getEntity(val).getLabel(); + var icon = this.specProvider.getEntity(val).getIcon(); + var highlightedIcon = this.specProvider.getEntity(val).getHighlightedIcon(); + var color = this.specProvider.getEntity(val).getColor(); + var parent = this.specProvider.getEntity(val).getParentClass() as string; + + // highlighted icon defaults to icon + if (!highlightedIcon || 0 === highlightedIcon.length) { + highlightedIcon = icon; + } + let parent_class ='' ; + + let image = icon != null ? `data-icon="${icon}" data-iconh="${highlightedIcon}"` :"" + //var selected = (default_value == val)?'selected="selected"':''; + var desc = this.specProvider.getEntity(val).getTooltip(); + var selected = default_value == val ? ' selected="selected"' : ""; + var description_attr = ""; + if (desc) { + description_attr = ' data-desc="' + desc + '"'; + } + var bgColor = color ? `style='background: ${color};'`:""; + + if (parent != undefined) { + parent_class = ' data-parent="' + parent + '"'; + let parent_index = childs.indexOf(parent) ; + console.log(childs.indexOf(parent)) ; + if (! (parent_index >= 0)) { + childs.push(parent) ; + parent_index = childs.indexOf(parent); + childsItems[parent_index] = [] ; + } + childsItems[parent_index].push(`
  • ${label} >
  • `) ; + + + } else { + // Add root level items + rootUl[0].append($(`
  • ${label} >
  • `)[0]) ; + } + list.push(`` ); + } + + this.htmlSelectUiUxLists.append(rootUl) ; + //add childs level items + console.log(childs) ; + console.log(childsItems) ; + for (var value of childs) { + let blockChildItems = $(`
      `) ; + let parent_index = childs.indexOf(value) ; + console.log(parent_index) ; + for (var child of childsItems[parent_index]) { + blockChildItems[0].append($(child)[0]) ; + } + + this.htmlSelectUiUxLists[0].append($(blockChildItems)[0]) ; + } + + + + this.htmlCoreSelect = $("", { + // open triggers the niceselect to be open + class: "my-new-list input-val open", + html: selectOptionList.join(""), + }); + this.html = $('
      '); + this.html.append(this.htmlCoreSelect) ; + this.htmlSelectUiUx.append(this.htmlSelectUiUxBreadCrum) ; + this.htmlSelectUiUx.append(this.htmlSelectUiUxLists) ; + this.html.append(this.htmlSelectUiUx) ; + this.initClassSelector() ; + return this.html.children(); + } + + /*parentIsAfter( parent:any, child:any ) { var all = this.htmlSelectUiUx[0].querySelectorAll('ul') ; for( var i = 0; i < all.length; ++i ) { @@ -43,9 +185,9 @@ class HierarchicalClassSelectBuilder extends HTMLComponent { else if( all[i] === child ) return true; } - } + }*/ - getParentsClass(idClass: string, parents: Array = []): Array { + /*getParentsClass(idClass: string, parents: Array = []): Array { let parent_class = this.htmlSelectUiUx[0].querySelector('li[value="'+idClass+'"]'); let parent_id = parent_class.parentElement.getAttribute('parent') ; if (parent_id != '') { @@ -53,9 +195,9 @@ class HierarchicalClassSelectBuilder extends HTMLComponent { return this.getParentsClass(parent_id, parents); } return parents ; - } + }*/ - addBreadcrumItem(idClass: string, label: string) { + /*addBreadcrumItem(idClass: string, label: string) { console.log('addBreadcrumItem start') ; console.log(idClass) ; let li_elements = this.htmlSelectUiUx[0].querySelectorAll('li'); @@ -70,8 +212,8 @@ class HierarchicalClassSelectBuilder extends HTMLComponent { for (var i = 0; i < ul_elements.length; i++){ if (i > this.breadcrumItems.indexOf(parent_id)+1) { ul_elements[i].classList.remove('active-pane'); - /*let index_remove = this.breadcrumItems.indexOf(ul_elements[i].getAttribute('parent')); - this.breadcrumItems.splice(index_remove, 1);*/ + //let index_remove = this.breadcrumItems.indexOf(ul_elements[i].getAttribute('parent')); + //this.breadcrumItems.splice(index_remove, 1); } } this.htmlSelectUiUx[0].querySelector('ul[parent="'+idClass+'"]').classList.add("active-pane"); @@ -171,65 +313,50 @@ class HierarchicalClassSelectBuilder extends HTMLComponent { console.log(Scroll_y); //this.htmlSelectUiUxLists[0].scrollLeft = Scroll_y ; - } - - initClassSelector() { - console.log('initClassSelector') ; - console.log(this.html) ; - console.log(this.htmlCoreSelect) ; - /*Search class with childs*/ - let li_elements = this.htmlSelectUiUx[0].querySelectorAll('li'); - let ul_elements = this.htmlSelectUiUx[0].querySelectorAll('ul') ; - for (var element of li_elements) { - let class_id = element.getAttribute('value') ; - //Search in all ul if have parent attr with this class_id - let hasChild = this.htmlSelectUiUx[0].querySelector('ul[parent="'+class_id+'"]'); - if (hasChild !== null) { - element.classList.add("have-childs"); - // if parent is after in dom move before - if(this.parentIsAfter( element.parentElement, hasChild ) ) { - element.parentElement.before(hasChild); - } - element.querySelector('span.item-traverse'); - element.querySelector('span.item-traverse').addEventListener( - "click", - (e: CustomEvent) => { - let class_target = (e.target as any).parentElement.getAttribute('value') ; - this.htmlSelectUiUx[0].querySelector('ul[parent="'+class_target+'"]').classList.add("active-pane"); - this.addBreadcrumItem(class_target, (e.target as any).parentElement.innerHTML ) ; - } - ); - - } - - } - } + }*/ - buildSelect_FirstStartClassGroup() { + + /*buildSelect_FirstStartClassGroup() { + console.log('------------- test dag context buildSelect_FirstStartClassGroup -----------------') return this.buildClassSelectFromItems( - this.specProvider.getEntitiesInDomainOfAnyProperty(), + this.specProvider.getEntitiesTreeInDomainOfAnyProperty(), null ); - } + }*/ - buildSelect_EndClassGroup(domainId: string) { + /*buildSelect_EndClassGroup(domainId: string) { + // testing hierarchy + // console.log(this.specProvider.getEntity(domainId).getConnectedEntitiesTree().toDebugString()) return this.buildClassSelectFromItems( - this.specProvider.getEntity(domainId).getConnectedEntities(), + this.specProvider.getEntity(domainId).getConnectedEntitiesTree(), null ); - } + }*/ /** * Return it with a single selected class inside */ - buildSelect_StartClassGroupInWhere(selectedClass:string) { + /*buildSelect_StartClassGroupInWhere(selectedClass:string) { + return this.buildClassSelectFromItems( [selectedClass], null ); - } + }*/ + + /*buildFlatClassList(elements:any[], list: any[]) { + + elements.forEach(element => { + list.push(element); + if (element.children.length > 0) { + list = this.buildFlatClassList(element.children, list) ; + } + }); + + return list ; + }*/ - buildClassSelectFromItems(items:any[], default_value: string) { + /*buildClassSelectFromItems(items:DagIfc, default_value: string) { let list: Array = []; this.htmlSelectUiUx = $(`
      `) ; this.htmlSelectUiUxLists = $(`
      `) ; @@ -237,13 +364,19 @@ class HierarchicalClassSelectBuilder extends HTMLComponent { let rootUl = $(`
        `) ; let childs: Array = []; let childsItems: Array = []; - for (var key in items) { - console.log(items[key]); - var val = items[key]; - var label = this.specProvider.getEntity(val).getLabel(); - var icon = this.specProvider.getEntity(val).getIcon(); - var highlightedIcon = this.specProvider.getEntity(val).getHighlightedIcon(); - var color = this.specProvider.getEntity(val).getColor(); + + console.log('----------------------test--------------') ; + console.log(items) ; + let flatList = this.buildFlatClassList(items.roots, list) ; + + + for (var key in flatList) { + console.log(flatList[key]); + var val = flatList[key]; + var label = this.specProvider.getEntity(val.id).getLabel(); + var icon = this.specProvider.getEntity(val.id).getIcon(); + var highlightedIcon = this.specProvider.getEntity(val.id).getHighlightedIcon(); + var color = this.specProvider.getEntity(val.id).getColor(); // var parent = this.specProvider.getEntity(val).getParents() as string; var parent = null; @@ -255,8 +388,8 @@ class HierarchicalClassSelectBuilder extends HTMLComponent { let image = icon != null ? `data-icon="${icon}" data-iconh="${highlightedIcon}"` :"" //var selected = (default_value == val)?'selected="selected"':''; - var desc = this.specProvider.getEntity(val).getTooltip(); - var selected = default_value == val ? ' selected="selected"' : ""; + var desc = this.specProvider.getEntity(val.id).getTooltip(); + var selected = default_value == val.id ? ' selected="selected"' : ""; var description_attr = ""; if (desc) { description_attr = ' data-desc="' + desc + '"'; @@ -272,14 +405,14 @@ class HierarchicalClassSelectBuilder extends HTMLComponent { parent_index = childs.indexOf(parent); childsItems[parent_index] = [] ; } - childsItems[parent_index].push(`
      • ${label} >
      • `) ; + childsItems[parent_index].push(`
      • ${label} >
      • `) ; } else { // Add root level items - rootUl[0].append($(`
      • ${label} >
      • `)[0]) ; + rootUl[0].append($(`
      • ${label} >
      • `)[0]) ; } - list.push(`` ); + list.push(`` ); } this.htmlSelectUiUxLists.append(rootUl) ; @@ -311,10 +444,10 @@ class HierarchicalClassSelectBuilder extends HTMLComponent { this.html.append(this.htmlSelectUiUx) ; this.initClassSelector() ; return this.html.children(); - } + }*/ } - + /* function isStartClassGroup( ParentComponent: HTMLComponent ): ParentComponent is StartClassGroup { @@ -333,5 +466,5 @@ class HierarchicalClassSelectBuilder extends HTMLComponent { "EndClassGroup" ); } // https://www.typescriptlang.org/docs/handbook/advanced-types.html#user-defined-type-guards - + */ export default HierarchicalClassSelectBuilder; From 46b26432f416805c35e851df1837104d210a153e Mon Sep 17 00:00:00 2001 From: antoine37120 Date: Wed, 28 Aug 2024 10:28:35 +0200 Subject: [PATCH 13/55] animate navigation --- .../hierarchicalclassselectbuilder.scss | 75 ++++++++++++++----- .../HierarchicalClassSelectBuilder.ts | 61 +++++++++++++-- 2 files changed, 114 insertions(+), 22 deletions(-) diff --git a/src/assets/stylesheets/components/citeriagroup/startendclassgroup/hierarchicalclassselectbuilder.scss b/src/assets/stylesheets/components/citeriagroup/startendclassgroup/hierarchicalclassselectbuilder.scss index 9e285db7..8ad9c78f 100644 --- a/src/assets/stylesheets/components/citeriagroup/startendclassgroup/hierarchicalclassselectbuilder.scss +++ b/src/assets/stylesheets/components/citeriagroup/startendclassgroup/hierarchicalclassselectbuilder.scss @@ -26,9 +26,21 @@ } .htmlSelectUiUxLists { overflow-x: hidden; + /*overflow-y: auto;*/ + position: absolute; + width: 100%; + height: 400px; + + + transition-property: height; + transition-duration: 0.1s; + transition-delay: 0; } ul { + position: absolute; + top:0; + left: 0; width: 345px; padding:0; margin: 0; @@ -37,22 +49,25 @@ background: #fff; max-height: 35vh; overflow-y: auto; - display: none; + overflow-x: hidden; + display: inline-block; white-space: normal; vertical-align: top; border-right: 1px solid #e8e8e8; + + max-height: 400px; transition-property: margin-left; - transition-duration: 1s; + transition-duration: 0.5s; transition-delay: 0; &.active-pane { display: inline-block; margin-left: 0; - transition-property: margin-left; + /*transition-property: margin-left; transition-duration: 1s; - transition-delay: 0; + transition-delay: 0;*/ } &.active-pane-hide-left { @@ -61,20 +76,28 @@ li { + cursor: pointer; + border-bottom: solid 1px #e8e8e8; + height: 40px; + display: flex; + span.item-sel { display: inline-block; width: 100%; - padding: 5px 10px; - height: 38px; + padding: 9px 9px; + height: 40px; font-size: 16px; font-weight: 400; line-height: 21.79px; text-align: left; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; } span.item-traverse { display: none; - width: 31px; + width: 30px; text-align: center; padding: 5px 5px; border-left: 1px solid #e8e8e8; @@ -88,9 +111,6 @@ display: inline-block; } } - cursor: pointer; - border-bottom: solid 1px #e8e8e8; - height: 40px; img { height : 40px; &.highlited { @@ -129,15 +149,16 @@ border-right: 1px solid #D9D9D9; display: table; span { - - display: table-cell; - vertical-align: middle; + display: table-cell; + vertical-align: middle; text-align: center; } } .parents-items { display: block; - padding: 9px; + padding: 8px; + + line-height: 13.62px; .parentLabel { display: inline-block; font-size: 10px; @@ -169,28 +190,48 @@ &::-webkit-scrollbar { width: 3px; height: 3px; - background-color: #e8e8e8; + background-color: transparent; } &::-webkit-scrollbar-track { /*-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);*/ border-radius: 3px; - background-color: #e8e8e8; + background-color: transparent; } &::-webkit-scrollbar-thumb { border-radius: 3px; /*-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3);*/ - background-color: var(--primary-color-main); + background-color: transparent; } & { -moz-width: thin; } } + ul.active-pane { + /* Works on Chrome, Edge, and Safari */ + &::-webkit-scrollbar { + background-color: #e8e8e8; + } + + &::-webkit-scrollbar-track { + /*-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,0.3);*/ + background-color: #e8e8e8; + } + + &::-webkit-scrollbar-thumb { + /*-webkit-box-shadow: inset 0 0 6px rgba(0,0,0,.3);*/ + background-color: var(--primary-color-main); + } + } } @-moz-document url-prefix() { + .htmlSelectUiUxLists, .htmlSelectUiUx ul { + scrollbar-color: transparent transparent; + } + .htmlSelectUiUx ul.active-pane { scrollbar-color: var(--primary-color-main) #e8e8e8; } } \ No newline at end of file diff --git a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts index 794964ab..37829103 100644 --- a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts +++ b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts @@ -62,6 +62,38 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { return this; } + moveHasAncestor(el:any) { + el.classList.remove('active-pane') ; + el.classList.add('active-pane-hide-left'); + } + moveHasChild(el:any) { + el.classList.add('active-pane') ; + } + moveHasLeaveChild(el:any) { + el.classList.remove('active-pane') ; + } + moveHasEnterAncestor(el:any) { + el.classList.remove('active-pane-hide-left'); + el.classList.add('active-pane') ; + } + initSelectUiUxListsHeight() { + let listToDisplay = this.htmlSelectUiUx[0].querySelector('ul[parent].active-pane') ; + let allLists = this.htmlSelectUiUx[0].querySelectorAll('ul[parent]') ; + let listToDisplayLiCount = this.htmlSelectUiUx[0].querySelectorAll('ul[parent].active-pane li').length ; + let breadcrumHeight = 15; + if (listToDisplay.classList.contains('root')) { + breadcrumHeight = 0 ; + } + let newHeight = 40 * listToDisplayLiCount + breadcrumHeight ; + if (newHeight > 400) { + newHeight = 400 ; + } + this.htmlSelectUiUxLists[0].style.height = newHeight+'px' ; + + this.htmlSelectUiUx[0].querySelectorAll('ul[parent]').forEach((el:HTMLElement) => el.style.height = newHeight+'px' ); + } + + initClassSelector() { console.log('initClassSelector') ; console.log(this.html) ; @@ -80,14 +112,16 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { /*if(this.parentIsAfter( element.parentElement, hasChild ) ) { element.parentElement.before(hasChild); }*/ - element.querySelector('span.item-traverse'); + //element.querySelector('span.item-traverse'); element.querySelector('span.item-traverse').addEventListener( "click", (e: CustomEvent) => { let class_target = (e.target as any).closest('li').getAttribute('list-child-id') ; console.log(e.target) ; console.log(class_target) ; - this.htmlSelectUiUx[0].querySelector('ul[parent="'+class_target+'"]').classList.add("active-pane"); + this.htmlSelectUiUx[0].querySelectorAll('ul[parent].active-pane').forEach(el => this. moveHasAncestor(el)); + this.moveHasChild(this.htmlSelectUiUx[0].querySelector('ul[parent="'+class_target+'"]')); + this.initSelectUiUxListsHeight() ; //this.addBreadcrumItem(class_target, (e.target as any).parentElement.innerHTML ) ; } ); @@ -100,8 +134,11 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { "click", (e: CustomEvent) => { let class_target = (e.target as any).closest('.returnBtn').getAttribute('return-target') ; - this.htmlSelectUiUx[0].querySelectorAll('ul[parent]').forEach(el => el.classList.remove('active-pane')); - this.htmlSelectUiUx[0].querySelector('ul[parent="'+class_target+'"]').classList.add("active-pane"); + this.htmlSelectUiUx[0].querySelectorAll('ul[parent].active-pane').forEach(el => this.moveHasLeaveChild(el)); + //this.htmlSelectUiUx[0].querySelector('ul[parent="'+class_target+'"]').classList.add("active-pane"); + + this.moveHasEnterAncestor(this.htmlSelectUiUx[0].querySelector('ul[parent="'+class_target+'"]')); + this.initSelectUiUxListsHeight() ; //this.addBreadcrumItem(class_target, (e.target as any).parentElement.innerHTML ) ; } ); @@ -123,11 +160,12 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { $(htmlBreadCrum[0].querySelector('div.wrapper')).append(breadcrumParentsList) ; Ul.append(htmlBreadCrum) ; } - + let i = 0 ; arrayNode.forEach(element => { let htmlItem = this.buildClassSelectItem(element, path) ; let child_path = path+'$'+element.id ; Ul.append(htmlItem) ; + i++ ; if (element.childs.length > 0) { console.log(breadCrumData); let element_breadCrumData = null ; @@ -138,6 +176,16 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { htmlItem.attr('list-child-id', path+'$'+element.id) ; } }); + let breadcrumHeight = 55; + if (Ul[0].classList.contains('root')) { + breadcrumHeight = 0 ; + this.htmlSelectUiUxLists[0].style.height = (40*i)+'px' ; + } + if (i > 10) { + Ul[0].style.height = 400+'px' ; + } else { + Ul[0].style.height = (40*i + breadcrumHeight)+'px' ; + } this.htmlSelectUiUxLists.append(Ul); } } @@ -162,6 +210,8 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { } this.buildClassSelectList(this.hierarchyData, 'root active-pane', '', initBreadcrumData) ; + + this.htmlCoreSelect = $("`) ; + this.htmlInputValuePath = $(``) ; + this.htmlCurentValue = $('Chercher des ressources') ; let initBreadcrumData: BreadCrumData = { parentsLabels: ['Tout'], returnPath: '', @@ -212,17 +268,36 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { this.buildClassSelectList(this.hierarchyData, 'root active-pane', '', initBreadcrumData) ; - this.htmlCoreSelect = $("", { // open triggers the niceselect to be open class: "my-new-list input-val open", html: selectOptionList.join(""), - }); + });*/ this.html = $('
        '); - this.html.append(this.htmlCoreSelect) ; - this.htmlSelectUiUx.append(this.htmlSelectUiUxBreadCrum) ; + //this.html.append(this.htmlCoreSelect) ; + let currentWrapper = $('
        ') ; + currentWrapper.append(this.htmlCurentValue) ; + this.htmlSelectUiUx.append(currentWrapper) ; + //this.htmlSelectUiUx.append(this.htmlSelectUiUxBreadCrum) ; this.htmlSelectUiUx.append(this.htmlSelectUiUxLists) ; + this.htmlSelectUiUx.append(this.htmlInputValueClass) ; + this.htmlSelectUiUx.append(this.htmlInputValuePath) ; this.html.append(this.htmlSelectUiUx) ; this.initClassSelector() ; + this.displayClassSelector() ; + + this.htmlInputValueClass.on("change", () => { + let selectedValue: any = this.htmlInputValueClass.val(); + this.value = selectedValue ; + this.valuePath = this.htmlInputValuePath.val() as string; + this.html[0].dispatchEvent( + new CustomEvent("change", { + bubbles: true, + detail: {value: this.value, valuePath: this.valuePath}, + }) + ); + this.hideClassSelector() ; + }); return this.html.children(); } diff --git a/src/sparnatural/components/builder-section/groupwrapper/groupwrapperevents/events/AddAndComponent.ts b/src/sparnatural/components/builder-section/groupwrapper/groupwrapperevents/events/AddAndComponent.ts index 6b6ad7cd..283f5386 100644 --- a/src/sparnatural/components/builder-section/groupwrapper/groupwrapperevents/events/AddAndComponent.ts +++ b/src/sparnatural/components/builder-section/groupwrapper/groupwrapperevents/events/AddAndComponent.ts @@ -17,7 +17,8 @@ export function addAndComponent( //set state to startClassValSelected and trigger change let inputSelector = grpWrapper.andSibling.CriteriaGroup.StartClassGroup.inputSelector; - inputSelector.oldWidget.val(startClassVal.type).niceSelect("update"); + //inputSelector.oldWidget.val(startClassVal.type); + inputSelector.submitSelected() ; // nice-select is 2nd place in childrenslist. move away from nice-select... inputSelector.html[0].children[1].classList.add("disabled"); diff --git a/src/sparnatural/components/builder-section/groupwrapper/groupwrapperevents/events/AddWhereComponent.ts b/src/sparnatural/components/builder-section/groupwrapper/groupwrapperevents/events/AddWhereComponent.ts index 8d7f1afd..8968a6d7 100644 --- a/src/sparnatural/components/builder-section/groupwrapper/groupwrapperevents/events/AddWhereComponent.ts +++ b/src/sparnatural/components/builder-section/groupwrapper/groupwrapperevents/events/AddWhereComponent.ts @@ -28,7 +28,8 @@ export function addWhereComponent( let inputSelector = grpWrapper.whereChild.CriteriaGroup.StartClassGroup.inputSelector; - inputSelector.oldWidget.val(endClassVal.type).niceSelect("update"); + //inputSelector.oldWidget.val(endClassVal.type).niceSelect("update"); + inputSelector.submitSelected() ; // nice-select is 2nd place in childrenslist. move away from nice-select... inputSelector.html[0].children[1].classList.add("disabled"); // render the link where From a3dc44b9ef0109d8392a9bbe2bfa929d9ca66136 Mon Sep 17 00:00:00 2001 From: antoine37120 Date: Thu, 29 Aug 2024 15:40:18 +0200 Subject: [PATCH 17/55] add support disabled item --- .../hierarchicalclassselectbuilder.scss | 9 +++++++++ .../criteriagroup/startendclassgroup/ClassTypeId.ts | 10 +++++++++- .../HierarchicalClassSelectBuilder.ts | 8 ++++++-- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/assets/stylesheets/components/citeriagroup/startendclassgroup/hierarchicalclassselectbuilder.scss b/src/assets/stylesheets/components/citeriagroup/startendclassgroup/hierarchicalclassselectbuilder.scss index dfc42003..13ac6e48 100644 --- a/src/assets/stylesheets/components/citeriagroup/startendclassgroup/hierarchicalclassselectbuilder.scss +++ b/src/assets/stylesheets/components/citeriagroup/startendclassgroup/hierarchicalclassselectbuilder.scss @@ -152,6 +152,11 @@ white-space: nowrap; overflow: hidden; + } + &.disabled span.item-sel { + opacity: 0.7; + cursor: default; + } span.item-traverse { display: none; @@ -187,6 +192,10 @@ } } } + + &.disabled>span.item-sel:hover { + background-color: initial ; + } } li.SubBreadcrum { diff --git a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/ClassTypeId.ts b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/ClassTypeId.ts index 188879e1..31f42dd8 100644 --- a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/ClassTypeId.ts +++ b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/ClassTypeId.ts @@ -248,6 +248,10 @@ class ClassSelectBuilder extends HTMLComponent { arrayToJson = this.getRecursiveDagElements(rootNodes) ; + + console.log('arrayToJson'); + console.log(arrayToJson); + return JSON.parse(JSON.stringify(arrayToJson)); } @@ -255,6 +259,10 @@ class ClassSelectBuilder extends HTMLComponent { getRecursiveDagElements(elements: Array) { let arrayToJson: Array = []; elements.forEach(element => { + let disabled = false ; + if (element.disabled === true) { + disabled = true ; + } let rowToJson = { label: element.payload.getLabel(), id: element.payload.getId(), @@ -263,7 +271,7 @@ class ClassSelectBuilder extends HTMLComponent { icon: element.payload.getIcon(), highlightedIcon: element.payload.getHighlightedIcon(), count: 50, - disabled: element.disabled, + disabled: disabled, childs: Array() } if (element.children.length > 0) { diff --git a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts index a3fef8b3..46c5910d 100644 --- a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts +++ b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts @@ -20,6 +20,7 @@ export interface JsonDagRow { icon: string, highlightedIcon:string, count: number, + disabled: boolean, childs: Array, } export interface DagWidgetDefaultValue { @@ -158,7 +159,8 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { ); } - let li_elements_sel = this.htmlSelectUiUx[0].querySelectorAll('li .item-sel'); + // Listen click for selectable class + let li_elements_sel = this.htmlSelectUiUx[0].querySelectorAll('li.enabled .item-sel'); li_elements_sel.forEach(element => { element.addEventListener( "click", @@ -221,8 +223,10 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { buildClassSelectItem(element: JsonDagRow, parent:string) { let image = element.icon != null ? `data-icon="${element.icon}" data-iconh="${element.highlightedIcon}"` :"" ; + //let selectable = element.disabled == true ? `data-selectable="false"` : `data-selectable="true"` ; + let enabledClass = element.disabled == true ? ` disabled` : `enabled` ; var selected = this.defaultValue.value == element.id ? ' selected="selected"' : ""; - let item = $(`
      • ${element.label}${UiuxConfig.ICON_DAG_ARROW_RIGHT}
      • `) ; + let item = $(`
      • ${element.label}${UiuxConfig.ICON_DAG_ARROW_RIGHT}
      • `) ; return item ; } From 4f0876aa57e56cf090ba3f4a692a784242eeb922 Mon Sep 17 00:00:00 2001 From: antoine37120 Date: Thu, 29 Aug 2024 15:47:01 +0200 Subject: [PATCH 18/55] fix remove endClass --- .../groupwrapperevents/events/AddAndComponent.ts | 2 +- .../groupwrapperevents/events/AddWhereComponent.ts | 2 +- .../groupwrapper/groupwrapperevents/events/RemoveEndClass.ts | 5 +++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/sparnatural/components/builder-section/groupwrapper/groupwrapperevents/events/AddAndComponent.ts b/src/sparnatural/components/builder-section/groupwrapper/groupwrapperevents/events/AddAndComponent.ts index 283f5386..92b57259 100644 --- a/src/sparnatural/components/builder-section/groupwrapper/groupwrapperevents/events/AddAndComponent.ts +++ b/src/sparnatural/components/builder-section/groupwrapper/groupwrapperevents/events/AddAndComponent.ts @@ -20,7 +20,7 @@ export function addAndComponent( //inputSelector.oldWidget.val(startClassVal.type); inputSelector.submitSelected() ; // nice-select is 2nd place in childrenslist. move away from nice-select... - inputSelector.html[0].children[1].classList.add("disabled"); + //inputSelector.html[0].children[1].classList.add("disabled"); // draw the AND link grpWrapper.linkAndBottom = new LinkAndBottom(grpWrapper).render(); diff --git a/src/sparnatural/components/builder-section/groupwrapper/groupwrapperevents/events/AddWhereComponent.ts b/src/sparnatural/components/builder-section/groupwrapper/groupwrapperevents/events/AddWhereComponent.ts index 8968a6d7..338d2b36 100644 --- a/src/sparnatural/components/builder-section/groupwrapper/groupwrapperevents/events/AddWhereComponent.ts +++ b/src/sparnatural/components/builder-section/groupwrapper/groupwrapperevents/events/AddWhereComponent.ts @@ -31,7 +31,7 @@ export function addWhereComponent( //inputSelector.oldWidget.val(endClassVal.type).niceSelect("update"); inputSelector.submitSelected() ; // nice-select is 2nd place in childrenslist. move away from nice-select... - inputSelector.html[0].children[1].classList.add("disabled"); + //inputSelector.html[0].children[1].classList.add("disabled"); // render the link where grpWrapper.linkWhereBottom = new LinkWhereBottom(grpWrapper).render(); grpWrapper.html[0].dispatchEvent( diff --git a/src/sparnatural/components/builder-section/groupwrapper/groupwrapperevents/events/RemoveEndClass.ts b/src/sparnatural/components/builder-section/groupwrapper/groupwrapperevents/events/RemoveEndClass.ts index 16181cf2..24e067f9 100644 --- a/src/sparnatural/components/builder-section/groupwrapper/groupwrapperevents/events/RemoveEndClass.ts +++ b/src/sparnatural/components/builder-section/groupwrapper/groupwrapperevents/events/RemoveEndClass.ts @@ -27,9 +27,10 @@ export function removeEndClass(grpWrapper: GroupWrapper) { // set StartClassVal back to its original value grpWrapper.CriteriaGroup.StartClassGroup.startClassVal = startVal; let inputSelector = grpWrapper.CriteriaGroup.StartClassGroup.inputSelector; - inputSelector.oldWidget.val(startVal.type).niceSelect("update"); + //inputSelector.oldWidget.val(startVal.type).niceSelect("update"); + inputSelector.submitSelected() ; // nice-select is 2nd place in childrenslist. move away from nice-select... - inputSelector.html[0].children[1].classList.add("disabled"); + //inputSelector.html[0].children[1].classList.add("disabled"); // decrease the SPARQL var counter by 2 : one for the previous EndClassGroup, one for the new StartClassGroup // that gets its original value back From 0fa57ee183fc92a97e8ec1b1ec63d5491d6d732c Mon Sep 17 00:00:00 2001 From: antoine37120 Date: Thu, 29 Aug 2024 17:30:08 +0200 Subject: [PATCH 19/55] display icons --- .../hierarchicalclassselectbuilder.scss | 11 ++++++++-- .../startendclassgroup/ClassTypeId.ts | 22 +++++++++---------- .../HierarchicalClassSelectBuilder.ts | 2 +- 3 files changed, 21 insertions(+), 14 deletions(-) diff --git a/src/assets/stylesheets/components/citeriagroup/startendclassgroup/hierarchicalclassselectbuilder.scss b/src/assets/stylesheets/components/citeriagroup/startendclassgroup/hierarchicalclassselectbuilder.scss index 13ac6e48..e60ebd51 100644 --- a/src/assets/stylesheets/components/citeriagroup/startendclassgroup/hierarchicalclassselectbuilder.scss +++ b/src/assets/stylesheets/components/citeriagroup/startendclassgroup/hierarchicalclassselectbuilder.scss @@ -151,7 +151,14 @@ text-overflow: ellipsis; white-space: nowrap; overflow: hidden; - + .label-icon { + width: 48px; + font-size: 13px; + display: inline-block; + padding: 0 9px 0 0; + text-align: right; + /*text-indent: -4px;*/ + } } &.disabled span.item-sel { opacity: 0.7; @@ -212,7 +219,7 @@ width: 31px; text-align: center; /*height: 100%;*/ - padding: 9px 0; + padding: 9px 18px; border-right: 1px solid #D9D9D9; display: table; span { diff --git a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/ClassTypeId.ts b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/ClassTypeId.ts index 31f42dd8..237d75c6 100644 --- a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/ClassTypeId.ts +++ b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/ClassTypeId.ts @@ -244,22 +244,22 @@ class ClassSelectBuilder extends HTMLComponent { convertToJsonDag(rootNodes:any[]) { + console.log('rootNodes') ; + console.log(rootNodes) ; let arrayToJson: Array = []; - - arrayToJson = this.getRecursiveDagElements(rootNodes) ; - - - console.log('arrayToJson'); - console.log(arrayToJson); - + arrayToJson = this.getRecursiveDagElements(rootNodes, '') ; return JSON.parse(JSON.stringify(arrayToJson)); - } - getRecursiveDagElements(elements: Array) { + getRecursiveDagElements(elements: Array, default_icon:string) { let arrayToJson: Array = []; elements.forEach(element => { let disabled = false ; + let icon = element.payload.getIcon() ; + if (icon == '') { + icon = default_icon ; + } + if (element.disabled === true) { disabled = true ; } @@ -268,14 +268,14 @@ class ClassSelectBuilder extends HTMLComponent { id: element.payload.getId(), tooltip: element.payload.getTooltip(), color: element.payload.getColor(), - icon: element.payload.getIcon(), + icon: icon, highlightedIcon: element.payload.getHighlightedIcon(), count: 50, disabled: disabled, childs: Array() } if (element.children.length > 0) { - rowToJson.childs = this.getRecursiveDagElements(element.children) ; + rowToJson.childs = this.getRecursiveDagElements(element.children, icon) ; } arrayToJson.push(rowToJson); }); diff --git a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts index 46c5910d..7f237908 100644 --- a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts +++ b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts @@ -226,7 +226,7 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { //let selectable = element.disabled == true ? `data-selectable="false"` : `data-selectable="true"` ; let enabledClass = element.disabled == true ? ` disabled` : `enabled` ; var selected = this.defaultValue.value == element.id ? ' selected="selected"' : ""; - let item = $(`
      • ${element.label}${UiuxConfig.ICON_DAG_ARROW_RIGHT}
      • `) ; + let item = $(`
      • ${element.icon}${element.label}${UiuxConfig.ICON_DAG_ARROW_RIGHT}
      • `) ; return item ; } From 98ea7a7608555c84c579b1e7aa7a725f81e2070a Mon Sep 17 00:00:00 2001 From: Thomas Francart Date: Thu, 29 Aug 2024 19:00:49 +0200 Subject: [PATCH 20/55] test configs for hierarchy --- dev-page/configs/collections-shacl.ttl | 1201 +++++++++++++++++ dev-page/configs/instantiations-shacl.ttl | 1173 ++++++++++++++++ .../configs/sparnatural-hierarchy-config.ttl | 62 +- .../configs/sparnatural-hierarchy-config.xlsx | Bin 51883 -> 51780 bytes dev-page/index.html | 5 +- 5 files changed, 2412 insertions(+), 29 deletions(-) create mode 100644 dev-page/configs/collections-shacl.ttl create mode 100644 dev-page/configs/instantiations-shacl.ttl diff --git a/dev-page/configs/collections-shacl.ttl b/dev-page/configs/collections-shacl.ttl new file mode 100644 index 00000000..0cc829e9 --- /dev/null +++ b/dev-page/configs/collections-shacl.ttl @@ -0,0 +1,1201 @@ +@prefix premis: . +@prefix schema: . +@prefix owl: . +@prefix volipi: . +@prefix xsd: . +@prefix skosthes: . +@prefix rdfs: . +@prefix qb: . +@prefix dct: . +@prefix sh: . +@prefix doap: . +@prefix rico: . +@prefix dcat: . +@prefix euvoc: . +@prefix prov: . +@prefix foaf: . +@prefix crm: . +@prefix adms: . +@prefix org: . +@prefix xls2rdf: . +@prefix core: . +@prefix spao-i: . +@prefix olo: . +@prefix shacl-play: . +@prefix datasources: . +@prefix rdf: . +@prefix ebucore: . +@prefix spao-co: . +@prefix dash: . +@prefix spao: . +@prefix frbroo: . +@prefix dc: . +@prefix skos: . +@prefix skosxl: . + + a owl:Ontology; + dct:title "Documentation of Swiss Performing Arts Collections model"; + dct:abstract """(_english_) This page documents the structure of the Collections data published by the SAPA Foundation. The SAPA Foundation uses several RDF ontologies within the [performing-arts.ch](https://www.performing-arts.ch) platform. To describe its collections, it mainly uses the [Records in Contexts](https://www.ica.org/resource/records-in-contexts-ontology/) ontology, with the following specific features: + +- The [version 0.2 of RiC-O](https://github.com/ICA-EGAD/RiC-O/tree/master/ontology/previous-versions/RiC-O_v0-2_release) is used +- `rico:Instantiation` are created mainly for audiovisual documents (including photos), and very marginally for other document types, for which only the classes `rico:RecordSet`, `rico:Record` or `rico:RecordPart` are used. +- The class `rico:RecordResource` is never instantiated directly. +- `rico:Record` entities are used to describe documents (e.g. a videotape). +- `rico:RecordPart` entities are used mainly in the audiovisual field (e.g. different recordings on the same videotape). +- The SAPA Foundation works in multiple languages (mainly German, French and Italian). Descriptions are produced in the language of the document. However, the `rico:hasOrHadLanguage` property is not systematically used to declare the language. + +----- + +(_français_) Cette page documente la structure des données de Collections publiées par la Fondation SAPA. La Fondation SAPA utilise plusieurs ontologies RDF au sein de la plateforme [performing-arts.ch](https://www.performing-arts.ch). Pour décrire ses collections, elle utilise princiaplement l'ontologie [Records in Contexts](https://www.ica.org/resource/records-in-contexts-ontology/) avec les spécificités suivantes: + +- la [version 0.2 de RiC-O](https://github.com/ICA-EGAD/RiC-O/tree/master/ontology/previous-versions/RiC-O_v0-2_release) est utilisée +- les `rico:Instantiation` sont créées princiaplement pour les documents audiovisuels (y compris photo) et très marginalement pour les autres types de documents pour lesquels on se contente des entités `rico:RecordSet`, `rico:Record` et `rico:RecordPart`. +- La classe `rico:RecordResource` n'est pas utilisée directement. +- Les entités `rico:Record` sont utilisées pour désigner les documents (exemple une bande vidéo) +- Les entités `rico:RecordPart` sont utilisées princiapelement dans le domaine audiovisuel (exemple : des enregistrements différents sur une même bande vidéo). +- La Fondation SAPA travaille de façon mutilingue (principalement allemand, français, italien). Les descriptions sont réalisées dans la langue du document. Toutefois, la propriété `rico:hasOrHadLanguage` n'est pas utilisée de façon systèmatique pour déclarer celle-ci."""; + foaf:depiction ; + dcat:distribution _:ba09c1662f6649d08454fc46fcbacca13624; + dct:hasFormat , + ; + rdfs:seeAlso . + +_:ba09c1662f6649d08454fc46fcbacca13624 dct:format ; + dcat:downloadURL . + +spao-co:RecordResource a sh:NodeShape; + sh:order "1"^^xsd:integer; + volipi:iconName "fa-light fa-file-heart"; + sh:targetClass rico:RecordResource; + rdfs:label "Record Resource"@en; + skos:definition "Note : the class RecordResource is never instantiated directly and groups the common properties between Record, RecordSet and RecordPart."@en; + foaf:depiction spao-co:Diagram_Record, spao-co:Diagram_RecordSet, spao-co:Diagram_RecordPart; + sh:property spao-co:RecordResource_descriptiveNote, spao-co:RecordResource_hasAccessibility, + spao-co:RecordResource_hasCopyrightDeclaration, spao-co:RecordResource_hasInternalNote, + spao-co:RecordResource_hasInstantiation, spao-co:RecordResource_hasNote, spao-co:RecordResource_hasOrHadIdentifier, + spao-co:RecordResource_hasOrHadSubject, spao-co:RecordResource_hasPermission, spao-co:RecordResource_hasPhysicalUsability, + spao-co:RecordResource_hasProcessingConvention, spao-co:RecordResource_hasProcessingDate, + spao-co:RecordResource_hasProtectionDuration, spao-co:RecordResource_hasTermsOfProtection, + spao-co:RecordResource_hasUsageRightsStill, spao-co:RecordResource_hasUsageRightsStreaming, + spao-co:RecordResource_identifier, spao-co:RecordResource_index, spao-co:RecordResource_isAssociatedWithDate, + spao-co:RecordResource_isRelatedTo, spao-co:RecordResource_legacyIdentifier, spao-co:RecordResource_name, + spao-co:RecordResource_seeAlso . + +spao-co:Record a sh:NodeShape; + sh:order "2"^^xsd:integer; + volipi:iconName "fa-light fa-file"; + sh:targetClass rico:Record; + rdfs:label "Record"@en; + skos:example ; + foaf:depiction spao-co:Diagram_Record; + shacl-play:background-color "F7CECC"; + sh:property spao-co:Record_conditionsOfAccess, spao-co:Record_comment, spao-co:Record_conditionsOfUse, + spao-co:Record_copyrightNotice, spao-co:Record_deliveryNumber, spao-co:Record_hasAnnotationRecto, + spao-co:Record_hasAnnotationVerso, spao-co:Record_hasCreator, spao-co:Record_hasCredit, + spao-co:Record_hasDocumentaryFormType, spao-co:Record_hasDoublets, spao-co:Record_hasExtent, + spao-co:Record_hasOrHadLanguage, spao-co:Record_hasOrHadLocation, spao-co:Record_hasPacking, + spao-co:Record_hasProvenance, spao-co:Record_hasRecordState, spao-co:Record_isAssociatedWithEvent, + spao-co:Record_isAssociatedWithPlace, spao-co:Record_isOrWasIncludedIn, spao-co:RecordSet_zeroOrMore_isOrWasIncludedIn, + spao-co:Record_physicalCharacteristics, spao-co:Record_sameAs . + +rico:Record rdfs:subClassOf rico:RecordResource . + +spao-co:RecordSet a sh:NodeShape; + sh:order "3"^^xsd:integer; + volipi:iconName "fa-light fa-box-archive"; + sh:targetClass rico:RecordSet; + rdfs:label "Record Set"@en; + skos:example ; + foaf:depiction spao-co:Diagram_RecordSet; + shacl-play:background-color "F7948F"; + sh:property spao-co:RecordSet_comment, spao-co:RecordSet_cassation, spao-co:RecordSet_conditionsOfAccess, + spao-co:RecordSet_conditionsOfUse, spao-co:RecordSet_copyrightNotice, spao-co:RecordSet_deliveryNumber, + spao-co:RecordSet_hasCreator, spao-co:RecordSet_hasCredit, spao-co:RecordSet_hasDoublets, + spao-co:RecordSet_hasExtent, spao-co:RecordSet_hasOrHadAllMembersWithDocumentaryFormType, + spao-co:RecordSet_hasOrHadLanguage, spao-co:RecordSet_hasOrHadLocation, spao-co:RecordSet_hasPacking, + spao-co:RecordSet_hasProvenance, spao-co:RecordSet_hasRecordSetType, spao-co:RecordSet_history, + spao-co:RecordSet_isAssociatedWithEvent, spao-co:RecordSet_isAssociatedWithPlace, + spao-co:RecordSet_isOrWasIncludedIn, spao-co:RecordSet_physicalCharacteristics, spao-co:RecordSet_sameAs . + +rico:RecordSet rdfs:subClassOf rico:RecordResource . + +spao-co:RecordPart a sh:NodeShape; + sh:order "4"^^xsd:integer; + volipi:iconName "fa-light fa-puzzle"; + sh:targetClass rico:RecordPart; + rdfs:label "Record Part"@en; + skos:definition "RecordParts are mostly used to describe video recordings with multiple recordings on the same video tape."@en; + skos:example ; + foaf:depiction spao-co:Diagram_RecordPart; + shacl-play:background-color "F7E0DF"; + sh:property spao-co:RecordPart_hasDocumentaryFormType, spao-co:RecordPart_isOrWasConstituentOf . + +rico:RecordPart rdfs:subClassOf rico:RecordResource . + +spao-co:ArchivalPlace a sh:NodeShape; + sh:order "5"^^xsd:integer; + volipi:iconName "fa-light fa-building"; + sh:targetClass spao:ArchivalPlace; + rdfs:label "Archival place"@en; + sh:property spao-co:ArchivalPlace_containedBy, spao-co:ArchivalPlace_hasPacking, spao-co:ArchivalPlace_label . + +spao-co:Event a sh:NodeShape; + sh:order "6"^^xsd:integer; + volipi:iconName "fa-light fa-calendar-xmark"; + sh:targetClass rico:Event; + rdfs:label "Event"@en; + sh:property spao-co:Event_hasEventType, spao-co:Event_label . + +spao-co:RecordResourceExtent a sh:NodeShape; + sh:order "80"^^xsd:integer; + volipi:iconName "fa-light fa-ruler-triangle"; + sh:targetClass rico:RecordResourceExtent; + rdfs:label "Extent"@en; + sh:deactivated "true"^^xsd:boolean; + sh:property spao-co:RecordResourceExtent_hasUnitOfMeasurement, spao-co:RecordResourceExtent_quantity . + +spao-co:Identifier a sh:NodeShape; + sh:order "81"^^xsd:integer; + volipi:iconName "fa-light fa-barcode"; + sh:targetClass rico:Identifier; + rdfs:label "Identifier"@en; + sh:deactivated "true"^^xsd:boolean; + sh:property spao-co:Identifier_P2_has_type, spao-co:Identifier_value . + +spao-co:SingleDate a sh:NodeShape; + sh:order "82"^^xsd:integer; + volipi:iconName "fa-light fa-calendar-xmark"; + sh:targetClass rico:SingleDate; + rdfs:label "Date (single)"@en; + sh:deactivated "true"^^xsd:boolean; + sh:property spao-co:SingleDate_certainty, spao-co:SingleDate_dateQualifier, spao-co:SingleDate_dateStandard, + spao-co:SingleDate_expressedDate, spao-co:SingleDate_normalizedDateValue . + +spao-co:Date a sh:NodeShape; + sh:order "83"^^xsd:integer; + volipi:iconName "fa-light fa-calendar"; + sh:targetClass rico:Date; + rdfs:label "Date"@en; + sh:deactivated "true"^^xsd:boolean; + sh:property spao-co:Date_dateStandard, spao-co:Date_expressedDate, spao-co:Date_normalizedDateValue . + +spao-co:DateRange a sh:NodeShape; + sh:order "84"^^xsd:integer; + volipi:iconName "fa-light fa-calendar-range"; + sh:targetClass rico:DateRange; + rdfs:label "Date (range)"@en; + sh:deactivated "true"^^xsd:boolean; + sh:property spao-co:DateRange_hasBeginningDate, spao-co:DateRange_hasEndDate . + +spao-co:Concept a sh:NodeShape; + sh:order "90"^^xsd:integer; + volipi:iconName "fa-light fa-tags"; + sh:targetClass skos:Concept; + rdfs:label "Concept"@en; + sh:property spao-co:Concept_prefLabel, spao-co:Concept_altLabel, spao-co:Concept_hiddenLabel, + spao-co:Concept_broader, spao-co:Concept_narrower, spao-co:Concept_definition, spao-co:Concept_inScheme, + spao-co:Concept_topConceptOf, spao-co:Concept_exactMatch, spao-co:Concept_comment . + +spao-co:Language a sh:NodeShape; + sh:order "91"^^xsd:integer; + volipi:iconName "fa-light fa-language"; + sh:targetClass rico:Language; + rdfs:label "Language"@en . + +rico:Language rdfs:subClassOf skos:Concept . + +spao-co:DocumentaryFormType a sh:NodeShape; + sh:order "92"^^xsd:integer; + volipi:iconName "fa-light fa-tags"; + sh:targetClass rico:DocumentaryFormType; + rdfs:label "Documentary Form Type"@en . + +rico:DocumentaryFormType rdfs:subClassOf skos:Concept . + +spao-co:RecordState a sh:NodeShape; + sh:order "94"^^xsd:integer; + volipi:iconName "fa-light fa-tags"; + sh:targetClass rico:RecordState; + rdfs:label "Record State"@en . + +rico:RecordState rdfs:subClassOf skos:Concept . + +spao-co:RecordResource_descriptiveNote sh:path rico:descriptiveNote; + sh:order "1"; + sh:name "descriptive note"@en; + sh:description """Descriptive information about an entity that is not otherwise addressed (RiC-O 0.2) +This is generally used in the data to describe the content of the Record (similar to rico:scopeAndContent)"""@en; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-co:RecordResource_hasAccessibility sh:path spao:hasAccessibility; + sh:order "2"; + sh:name "has accessibility"@en; + sh:description "Indique l'accessibilité publique aux documents, les deux valeurs possible sont \"public\" ou \"collaborateur/trice\""@fr, + "Indicates whether the documents are publicly accessible, the two possible values are \"public\" or \"collaborator\"."@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class skos:Concept . + +spao-co:RecordResource_hasCopyrightDeclaration sh:path spao:hasCopyrightDeclaration; + sh:order "3"; + sh:name "has copyright declaration"@en; + sh:description "Caractérise les informations à disposition de l'institution concernant les droits d'auteur sur les archives. Des valeurs possibles sont \"Oui\", \"Non\", \"En recherche\", \"Partiel\"."@fr, + "Characterizes the information available to the institution regarding copyright on the archives. Possible values are \"Yes\", \"No\", \"In research\", \"Partial\"."@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class skos:Concept . + +spao-co:RecordResource_hasInternalNote sh:path spao:hasInternalNote; + sh:order "4"; + sh:name "has internal note"@en; + sh:description "Note de gestion interne à l'usage des archivistes. Ce champs n'est pas exporté dans les dumps publics."@fr, + "Internal management note for use by archivists. This field is not exported in public dumps."@en; + skos:editorialNote "A migrer vers SKOS plus tard"@en; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-co:RecordResource_hasInstantiation sh:path rico:hasInstantiation; + sh:order "5"; + sh:name "has instantiation"@en; + sh:description """Connects a Record Resource to one of its Instantiations. (RiC-O 0.2) +There is not always an Instantiation for each RecordResource in the data, depending on the type of document. For audio, photo and video documents, there is always at least one Instantiation."""@en; + sh:nodeKind sh:IRI; + sh:class rico:Instantiation . + +spao-co:RecordResource_hasNote sh:path spao:hasNote; + sh:order "6"; + sh:name "has note"@en; + sh:description "Note générale à destination du public."@fr, "General note for the public."@en; + skos:editorialNote "A migrer vers SKOS plus tard"@en; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-co:RecordResource_hasOrHadIdentifier sh:path rico:hasOrHadIdentifier; + sh:order "7"; + sh:name "has or had identifier"@en; + sh:description """Connects a Thing to one of its past or present Identifiers. (RiC-O 0.2) +This is progressively implemented for all resources, it contains the same value as rico:identifier, with an additional qualifier."""@en; + sh:nodeKind sh:IRI; + sh:class rico:Identifier . + +spao-co:RecordResource_hasOrHadSubject sh:path rico:hasOrHadSubject; + sh:order "16"; + sh:name "has or had subject"@en; + sh:description """Connects a Record Resource to a Thing that is or was its subject. (RiC-O 0.2) + +This can take any type of entity as a value."""@en; + skos:editorialNote """Par souci de cohérence avec RiC, je mettrai en range rico:Thing, et normalement toutes les valeurs devraient avoir une classe qui est sous-classe de rico:Thing. +Cela pose question pour les Performance_Plan et les Recording. + +L'ontologie SAPA pourrait déclarer des triplets additionnels pour dire que des classes FRBRoo sont subclassOf RiC-O:Thing. + +Si on ne souhaite pas faire cela, on pourrait enlever du range les classes CRM qui ont une correspondance RiCO (Group, Actor, E21_Person, etc...) + +Pour l'instant ce que je fais c'est que j'enlève du range les classes CRM qui ont leur correspondance dans RiC-O, et je laisse celles qui n'ont pas de correspondance"""@en; + sh:nodeKind sh:IRI . + +spao-co:RecordResource_hasPermission sh:path spao:hasPermission; + sh:order "17"; + sh:name "has permission"@en; + sh:description "Pour les archives non accessibles au public, indique les groupes de collaborateurs/trices y ayant accès."@fr, + "For archives not accessible to the public, indicates the groups of collaborators who have access."@en; + skos:editorialNote "C'est un chemps de gestion interne qui définit quel groupe d'utilisateurs à droit d'accéder au contenu de cette Ressource. je mets skos:Concept en range"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class skos:Concept . + +spao-co:RecordResource_hasPhysicalUsability sh:path spao:hasPhysicalUsability; + sh:order "18"; + sh:name "has physical usability"@en; + sh:description "Catégorie indiquant la possibilité de manipuler les archives par rapport à leur état de conservation physique. Les valeurs possibles sont \"Restreinte\", \"Non restreinte\", \"Impossible\""@fr, + "Category indicating the possibility of handling the archives in relation to their physical state of preservation. The possible values are \"Restricted\", \"Unrestricted\", \"Impossible\"."@en; + skos:editorialNote "je mets skos:Concept en range"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class skos:Concept . + +spao-co:RecordResource_hasProcessingConvention sh:path spao:hasProcessingConvention; + sh:order "19"; + sh:name "has processing convention"@en; + sh:description "Référence à la norme suivie lors des travaux de description. Par exemple \"ISAD-G\""@fr, + "Reference to the standard followed during descriptive work. For example \"ISAD-G\"."@en; + skos:editorialNote """N'y aurait-il pas une propriété RiC-O ? + +THOMAS : regarder les valeurs et voir si une propriété existante existe en RiC-O"""@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-co:RecordResource_hasProcessingDate sh:path spao:hasProcessingDate; + sh:order "20"; + sh:name "has processing date"@en; + sh:description "Date à laquelle la description des archives a été réalisée ou modifiée."@fr, + "Date on which the archive description was created or modified."@en; + sh:nodeKind sh:IRI; + sh:or _:ba09c1662f6649d08454fc46fcbacca13625 . + +_:ba09c1662f6649d08454fc46fcbacca13625 rdf:first _:ba09c1662f6649d08454fc46fcbacca13626; + rdf:rest _:ba09c1662f6649d08454fc46fcbacca13627 . + +_:ba09c1662f6649d08454fc46fcbacca13626 sh:class rico:SingleDate . + +_:ba09c1662f6649d08454fc46fcbacca13627 rdf:first _:ba09c1662f6649d08454fc46fcbacca13628; + rdf:rest _:ba09c1662f6649d08454fc46fcbacca13629 . + +_:ba09c1662f6649d08454fc46fcbacca13628 sh:class rico:DateRange . + +_:ba09c1662f6649d08454fc46fcbacca13629 rdf:first _:ba09c1662f6649d08454fc46fcbacca13630; + rdf:rest rdf:nil . + +_:ba09c1662f6649d08454fc46fcbacca13630 sh:class rico:Date . + +spao-co:RecordResource_hasProtectionDuration sh:path spao:hasProtectionDuration; + sh:order "21"; + sh:name "has protection duration"@en; + sh:description "Indication de la durée pendant laquelle le document n'est pas accessible au public."@fr, + "Indication of the duration during which the document is not accessible to the public."@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-co:RecordResource_hasTermsOfProtection sh:path spao:hasTermsOfProtection; + sh:order "22"; + sh:name "has terms of protection"@en; + sh:description "Indique l'événement de référence à partir duquel le délai de protection démarre. L'usage de cette propriété n'est pas stabilisée au sein de la fondation SAPA."@fr, + "Indicates the reference event from which the protection period starts. The use of this property is not stabilized within the SAPA foundation."@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class skos:Concept . + +spao-co:RecordResource_hasUsageRightsStill sh:path spao:hasUsageRightsStill; + sh:order "23"; + sh:name "has usage rights still"@en; + sh:description "Indique si la fondation détient les droits pour la publication par elle-même des captures d'écran. Les valeurs possibles sont \"Oui\", \"Non\" ou \"Inconnu\"."@fr, + "Indicates whether the foundation holds the rights for the publication by itself of screen captures. Possible values are \"Yes\", \"No\" or \"Unknown\"."@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class skos:Concept . + +spao-co:RecordResource_hasUsageRightsStreaming sh:path spao:hasUsageRightsStreaming; + sh:order "24"; + sh:name "has usage rights streaming"@en; + sh:description "Indique si la fondation détient les droits pour la publication par elle-même du streaming vidéo. Les valeurs possibles sont \"Oui\", \"Non\" ou \"Inconnu\"."@fr, + "Indicates whether the foundation holds the rights for the publication by itself of video streaming. Possible values are \"Yes\", \"No\" or \"Unknown\"."@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class skos:Concept . + +spao-co:RecordResource_identifier sh:path rico:identifier; + sh:order "25"; + sh:name "identifier"@en; + sh:description """A word, number, letter, symbol, or any combination of these used to uniquely identify or reference an individual instance of an entity within a specific information domain. Includes Global Persistent Identifiers (globally unique and persistently resolvable identifier for the entity) and/or Local Identifiers. (RiC-O 0.2) + +The usage of this property is deprecated and it will be replaced by rico:hasOrHadIdentifier."""@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-co:RecordResource_index sh:path olo:index; + sh:order "26"; + sh:name "index"@en; + skos:editorialNote "Cette propriété nous permet de définir un ordre de tri des entités soit dans les Layouts soit dans les exports."@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:integer . + +spao-co:RecordResource_isAssociatedWithDate sh:path rico:isAssociatedWithDate; + sh:order "27"; + sh:name "is associated with date"@en; + sh:description """Connects a Thing to a Date associated with its existence and lifecycle. (RiC-O 0.2) + +This contains the date or date range that the resource covers (for example, for a set of documents, this will contain the date of creation of the first document until the date of creation of the last document)"""@en; + sh:nodeKind sh:IRI; + sh:or _:ba09c1662f6649d08454fc46fcbacca13631 . + +_:ba09c1662f6649d08454fc46fcbacca13631 rdf:first _:ba09c1662f6649d08454fc46fcbacca13632; + rdf:rest _:ba09c1662f6649d08454fc46fcbacca13633 . + +_:ba09c1662f6649d08454fc46fcbacca13632 sh:class rico:DateRange . + +_:ba09c1662f6649d08454fc46fcbacca13633 rdf:first _:ba09c1662f6649d08454fc46fcbacca13634; + rdf:rest _:ba09c1662f6649d08454fc46fcbacca13635 . + +_:ba09c1662f6649d08454fc46fcbacca13634 sh:class rico:SingleDate . + +_:ba09c1662f6649d08454fc46fcbacca13635 rdf:first _:ba09c1662f6649d08454fc46fcbacca13636; + rdf:rest rdf:nil . + +_:ba09c1662f6649d08454fc46fcbacca13636 sh:class rico:Date . + +spao-co:RecordResource_isRelatedTo sh:path spao:isRelatedTo; + sh:order "28"; + sh:name "is related to"@en; + sh:description "Information sur des ensembles documentaires conservés hors de l'institution et portant sur le même sujet."@fr, + "Information on documentary collections preserved outside the institution and describing with the same subject."@en; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-co:RecordResource_legacyIdentifier sh:path spao:legacyIdentifier; + sh:order "29"; + sh:name "legacy identifier"@en; + sh:description "Lors d'un changement de cote, l'ancienne cote est conservée dans cette propriété."@fr, + "In case of a change in identifier, the old identifier is kept in this property."@en; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-co:RecordResource_name sh:path rico:name; + sh:order "30"; + sh:name "name"@en; + sh:description """A label, title or term designating the entity in order to make it distinguishable from other similar entities. For Record Resource or Instantiation, the Name is generally assigned by an Agent as most do not have a Name given when created. (RiC-O 0.2) + +This is the label assigned to the resource."""@en; + sh:minCount "1"^^xsd:integer; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string; + dash:propertyRole dash:LabelRole . + +spao-co:RecordResource_seeAlso sh:path spao:seeAlso; + sh:order "31"; + sh:name "see also"@en; + sh:description "Propriété générique qui permet d'établir un lien entre une resource et une autre entité."@fr, + "Generic property that allows a link to be established between a resource and another entity."@en; + rdfs:seeAlso ; + skos:editorialNote "Will be migrated to rico:isRelatedTo, probably at the time of the RiC-O 1.0 conversion"@en; + sh:nodeKind sh:IRI . + +spao-co:Record_conditionsOfAccess sh:path rico:conditionsOfAccess; + sh:order "1"; + sh:name "conditions of access"@en; + sh:description """Terms and circumstances affecting the availability of a Record Resource for consultation. Such conditions may originate in laws, regulations and policies, including those pertaining to privacy and security concerns or restrictions; they may concern a specific Instantiation of a Record Resource, for example, conditions that require preservation treatment; or they may specify the software or hardware necessary to access the Instantiation. (RiC-O 0.2) + + +This property expresses the conditions of access to the document for the public, for example \"Accès libre selon le règlement de SAPA\"."""@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-co:Record_comment sh:path rdfs:comment; + sh:order "2"; + sh:name "comment"@en; + sh:description "This is rarely used and mostly for internal notes."@en; + skos:editorialNote "Note : Présent seulement 3 fois."@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-co:Record_conditionsOfUse sh:path rico:conditionsOfUse; + sh:order "3"; + sh:name "conditions of use"@en; + sh:description """Terms and circumstances affecting the use of a Record Resource after access has been provided. Includes conditions governing reproduction of the Record Resource under applicable copyright (intellectual property) and/or property legislation, and of the Instantiation, due to conservation status. (RiC-O 0.2) + +This property expresses the conditions of reuse of the resource, for example \"Utilisation et réutilisation selon le règlement de SAPA\"."""@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-co:Record_copyrightNotice sh:path schema:copyrightNotice; + sh:order "4"; + sh:name "copyright notice"@en; + sh:description "Indicates how the copyright citation should be written."@en; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-co:Record_deliveryNumber sh:path spao:deliveryNumber; + sh:order "5"; + sh:name "delivery number"@en; + sh:description "Numéro donné au moment où les archives rentrent dans l'institution, qui permet un suivi."@fr, + "Number given when the archives enter the institution, allowing tracking."@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-co:Record_hasAnnotationRecto sh:path spao:hasAnnotationRecto; + sh:order "6"; + sh:name "has annotation (recto)"@en; + sh:description "Reprise des informations textuelles apposés au recto du document."@fr, + "Transcription of the textual information placed on the front of the document."@en; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-co:Record_hasAnnotationVerso sh:path spao:hasAnnotationVerso; + sh:order "7"; + sh:name "has annotation (verso)"@en; + sh:description "Reprise des informations textuelles apposés au verso du document."@fr, + "Transcription of the textual information placed on the back of the document."@en; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-co:Record_hasCreator sh:path rico:hasCreator; + sh:order "8"; + sh:name "has creator"@en; + sh:description "Connects a Record Resource or an Instantiation to an Agent that is either responsible for all or some of the content of the Record Resource or is a contributor to the genesis or production of an Instantiation. (RiC-O 0.2)"@en; + sh:nodeKind sh:IRI; + sh:class rico:Agent . + +spao-co:Record_hasCredit sh:path spao:hasCredit; + sh:order "9"; + sh:name "has credit"@en; + sh:description "La déclaration obligatoire donnée par le détenteur des droits."@fr, + "The mandatory statement given by the rights holder."@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-co:Record_hasDocumentaryFormType sh:path rico:hasDocumentaryFormType; + sh:order "10"; + sh:name "has documentary form type"@en; + sh:description """Connects a Record or Record Part to its Documentary Form Type. (RiC-O 0.2) + +Types of documents include \"Moving image\", \"Object\", \"Photography\", etc."""@en; + sh:nodeKind sh:IRI; + sh:class rico:DocumentaryFormType . + +spao-co:Record_hasDoublets sh:path spao:hasDoublets; + sh:order "11"; + sh:name "has doublets"@en; + sh:description "Indique combien de doublons sont présents dans ce lot de documents."@fr, + "Indicates how many duplicates are present in this set of documents."@en; + skos:editorialNote "Champs de gestion administrative qui sert à repérer les doublons"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-co:Record_hasExtent sh:path rico:hasExtent; + sh:order "12"; + sh:name "has extent"@en; + sh:description """Connects a Record Resource or Instantiation to an Extent. (RiC-O 0.2) + +This can include a number of boxes, a number of gigabytes, etc."""@en; + sh:nodeKind sh:IRI; + sh:class rico:RecordResourceExtent . + +spao-co:Record_hasOrHadLanguage sh:path rico:hasOrHadLanguage; + sh:order "14"; + sh:name "has or had language"@en; + sh:description """Connects an Agent or Record Resource to a Language that it uses or used. (RiC-O 0.2) + +This is mostly using the official Swiss languages."""@en; + sh:nodeKind sh:IRI; + sh:class rico:Language . + +spao-co:Record_hasOrHadLocation sh:path rico:hasOrHadLocation; + sh:order "15"; + sh:name "has or had location"@en; + sh:description """Connects a Thing to a Place in which this Thing ir or was located. (RiC-O 0.2) + +This indicates where the archive container is physically located in the hierarchy or archival places. Theoretically, the physical location should be asserted at the Instantiation level, but it is asserted here when there is no Instantiation for the RecordResource."""@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class spao:ArchivalPlace . + +spao-co:Record_hasPacking sh:path spao:hasPacking; + sh:order "16"; + sh:name "has packing"@en; + sh:description "Référence à un type de contenant donnant des indications de taille, mais aussi une indication de localisation possible. Des valeurs possibles sont \"Boite A4\", \"Poster\", etc. (un poster serait vraisemblablement rangé dans le meuble à plans)."@fr, + "Reference to a type of container giving size indications, but also a possible location indication. Possible values are \"Box A4\", \"Poster\", etc. (a poster would presumably be stored in the plan cabinet)."@en; + skos:editorialNote """Ce champs sert à préciser le type/taille de contenant utilisé : A4, A3 etc. Nous ne l'utilisons pas beaucoup. Son intérêt devrait être réévaluer. +Je mets skos:Concept en range"""@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class skos:Concept . + +spao-co:Record_hasProvenance sh:path rico:hasProvenance; + sh:order "17"; + sh:name "has provenance"@en; + sh:description "Connects a Record Resource or an Instantiation to an Agent that creates or accumulates the Record Resource, receives it, or sends it. (RiC-O 0.2)"@en; + skos:editorialNote "Note : hasProvenance n'est plus dans RiC-O 1.0, maintenant c'est rico:hasOrganicProvenance ou rico:hasOrganicOrFunctionalProvenance"@en; + sh:nodeKind sh:IRI; + sh:or _:ba09c1662f6649d08454fc46fcbacca13637 . + +_:ba09c1662f6649d08454fc46fcbacca13637 rdf:first _:ba09c1662f6649d08454fc46fcbacca13638; + rdf:rest _:ba09c1662f6649d08454fc46fcbacca13639 . + +_:ba09c1662f6649d08454fc46fcbacca13638 sh:class rico:Person . + +_:ba09c1662f6649d08454fc46fcbacca13639 rdf:first _:ba09c1662f6649d08454fc46fcbacca13640; + rdf:rest rdf:nil . + +_:ba09c1662f6649d08454fc46fcbacca13640 sh:class rico:CorporateBody . + +spao-co:Record_hasRecordState sh:path rico:hasRecordState; + sh:order "19"; + sh:name "has record state"@en; + sh:description """Connects a Record or Record Part to a Record State that categorizes its state. (RiC-O 0.2) + +This is applied only to photography and is used to indicate if it is an original print, signed original print, etc."""@en; + sh:nodeKind sh:IRI; + sh:class rico:RecordState . + +spao-co:Record_isAssociatedWithEvent sh:path rico:isAssociatedWithEvent; + sh:order "20"; + sh:name "is associated with event"@en; + sh:description """Connects a Thing to an Event that is associated with its existence and lifecycle. (RiC-O 0.2) + +This is used to describe the acquisition of the record, with only a type of Event, indicating if the acquisition resulted from a donation, a loan, etc."""@en; + sh:nodeKind sh:IRI; + sh:class rico:Event . + +spao-co:Record_isAssociatedWithPlace sh:path rico:isAssociatedWithPlace; + sh:order "21"; + sh:name "is associated with place"@en; + sh:description """Connects a Thing to a Place that is associated with its existence and lifecycle. (RiC-O 0.2) + +This indicates a place related to the content of the document, for example a building depicted on a photograph"""@en; + skos:editorialNote "Ici on utilise la classe CRM comme range et cela sera décrit dans la partie Panorama"@en; + sh:nodeKind sh:IRI; + sh:class crm:E53_Place . + +spao-co:Record_isOrWasIncludedIn sh:path rico:isOrWasIncludedIn; + sh:order "22"; + sh:name "is or was included in (direct)"@en; + sh:description "Connects a Record Set or a Record to a Record Set that aggregates or aggregated it in the past. (RiC-O 0.2)"@en; + skos:editorialNote "RiC-O 1.0 : rico:isDirectlyIncludedIn"@en; + sh:minCount "1"^^xsd:integer; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class rico:RecordSet . + +spao-co:RecordSet_zeroOrMore_isOrWasIncludedIn sh:path _:ba09c1662f6649d08454fc46fcbacca13641; + sh:order "23"; + sh:name "is or was included in (ancestor)"@en; + sh:description "Connects this Record to an ancestor RecordSet"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class rico:RecordSet . + +_:ba09c1662f6649d08454fc46fcbacca13641 sh:zeroOrMorePath rico:isOrWasIncludedIn . + +spao-co:Record_physicalCharacteristics sh:path rico:physicalCharacteristics; + sh:order "24"; + sh:name "physical characteristics"@en; + sh:description """Information about the physical features of the Instantiation. Includes information about the physical nature and condition such as conservation status. (RiC-O 0.2) + +Theoretically this is applied to Instantiations, but is used also at the Record level when there is no Instantiation declared."""@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-co:Record_sameAs sh:path owl:sameAs; + sh:order "25"; + sh:name "same as (owl)"@en; + sh:description "Link to the URL of this RecordSet in the legacy catalog. This information is in the public triplestore, but this is a hidden field in the layout when browsing the public website. The URL stored is not dereferencable."@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI . + +spao-co:RecordSet_comment sh:path rdfs:comment; + sh:order "1"; + sh:name "comment"@en; + sh:description "This is rarely used and mostly for internal notes."@en; + skos:editorialNote "Utilisé 55 fois"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-co:RecordSet_cassation sh:path spao:cassation; + sh:order "2"; + sh:name "cassation"@en; + sh:description "Note qui documente ce qui a été éliminé au moment de l'évaluation des archives. (Par exemple \"On a éliminé tous les doublons\")"@fr, + "Note documenting what has been eliminated during the archive evaluation. (For example \"All duplicates have been eliminated\")"@en; + skos:editorialNote "Voir si une propriété RiC-O permettrait d'encoder cela."@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-co:RecordSet_conditionsOfAccess sh:path rico:conditionsOfAccess; + sh:order "3"; + sh:name "conditions of access"@en; + sh:description """Terms and circumstances affecting the availability of a Record Resource for consultation. Such conditions may originate in laws, regulations and policies, including those pertaining to privacy and security concerns or restrictions; they may concern a specific Instantiation of a Record Resource, for example, conditions that require preservation treatment; or they may specify the software or hardware necessary to access the Instantiation. (RiC-O 0.2) + +This property expresses the conditions of access to the document for the public, for example \"Accès libre selon le règlement de SAPA\"."""@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-co:RecordSet_conditionsOfUse sh:path rico:conditionsOfUse; + sh:order "4"; + sh:name "conditions of use"@en; + sh:description """Terms and circumstances affecting the use of a Record Resource after access has been provided. Includes conditions governing reproduction of the Record Resource under applicable copyright (intellectual property) and/or property legislation, and of the Instantiation, due to conservation status. (RiC-O 0.2) + +This property expresses the conditions of reuse of the resource, for example \"Utilisation et réutilisation selon le règlement de SAPA\"."""@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-co:RecordSet_copyrightNotice sh:path schema:copyrightNotice; + sh:order "5"; + sh:name "copyright notice"@en; + sh:description "Indicates how the copyright citation should be written."@en; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-co:RecordSet_deliveryNumber sh:path spao:deliveryNumber; + sh:order "6"; + sh:name "delivery number"@en; + sh:description "Numéro donné au moment où les archives rentrent dans l'institution, qui permet un suivi."@fr, + "Number given when the archives enter the institution, allowing tracking."@en; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-co:RecordSet_hasCreator sh:path rico:hasCreator; + sh:order "7"; + sh:name "has creator"@en; + sh:description "Connects a Record Resource or an Instantiation to an Agent that is either responsible for all or some of the content of the Record Resource or is a contributor to the genesis or production of an Instantiation. (RiC-O 0.2)"@en; + skos:editorialNote "Je garde rico:Person en range"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class rico:Person . + +spao-co:RecordSet_hasCredit sh:path spao:hasCredit; + sh:order "8"; + sh:name "has credit"@en; + sh:description "La déclaration obligatoire donnée par le détenteur des droits."@fr, + "The mandatory statement given by the rights holder."@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-co:RecordSet_hasDoublets sh:path spao:hasDoublets; + sh:order "9"; + sh:name "has doublets"@en; + sh:description "Indique combien de doublons sont présents dans ce lot de documents."@fr, + "Indicates how many duplicates are present in this set of documents."@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-co:RecordSet_hasExtent sh:path rico:hasExtent; + sh:order "10"; + sh:name "has extent"@en; + sh:description """Connects a Record Resource or Instantiation to an Extent. (RiC-O 0.2) + +This can include a number of boxes, a number of gigabytes, etc."""@en; + sh:nodeKind sh:IRI; + sh:class rico:RecordResourceExtent . + +spao-co:RecordSet_hasOrHadAllMembersWithDocumentaryFormType sh:path rico:hasOrHadAllMembersWithDocumentaryFormType; + sh:order "11"; + sh:name "has or had members with documentary form type"@en; + sh:description """Connects a Record Set and a Documentary Form Type that categorizes all the Records or Record Parts that are or were included in the Record Set. (RiC-O 0.2) + +This uses the same controlled vocabulary as rico:hasDocumentaryFormType on the Records."""@en; + sh:nodeKind sh:IRI; + sh:class rico:DocumentaryFormType . + +spao-co:RecordSet_hasOrHadLanguage sh:path rico:hasOrHadLanguage; + sh:order "12"; + sh:name "has or had language"@en; + sh:description """Connects an Agent or Record Resource to a Language that it uses or used. (RiC-O 0.2) + +This is mostly using the official Swiss languages."""@en; + sh:nodeKind sh:IRI; + sh:class rico:Language . + +spao-co:RecordSet_hasOrHadLocation sh:path rico:hasOrHadLocation; + sh:order "13"; + sh:name "has or had location"@en; + sh:description """Connects a Thing to a Place in which this Thing ir or was located. (RiC-O 0.2) + +This indicates where the archive container is physically located in the hierarchy or archival places. Theoretically, the physical location should be asserted at the Instantiation level, but it is asserted here when there is no Instantiation for the RecordResource."""@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class spao:ArchivalPlace . + +spao-co:RecordSet_hasPacking sh:path spao:hasPacking; + sh:order "14"; + sh:name "has packing"@en; + sh:description "Référence à un type de contenant donnant des indications de taille, mais aussi une indication de localisation possible. Des valeurs possibles sont \"Boite A4\", \"Poster\", etc. (un poster serait vraisemblablement rangé dans le meuble à plans)."@fr, + "Reference to a type of container giving size indications, but also a possible location indication. Possible values are \"Box A4\", \"Poster\", etc. (a poster would presumably be stored in the plan cabinet)."@en; + sh:nodeKind sh:IRI; + sh:class skos:Concept . + +spao-co:RecordSet_hasProvenance sh:path rico:hasProvenance; + sh:order "15"; + sh:name "has provenance"@en; + sh:description "Connects a Record Resource or an Instantiation to an Agent that creates or accumulates the Record Resource, receives it, or sends it. (RiC-O 0.2)"@en; + skos:editorialNote "Je garde seulement les classes Ric-O en range et je simplifie pour rico:Agent"@en; + sh:nodeKind sh:IRI; + sh:class rico:Agent . + +spao-co:RecordSet_hasRecordSetType sh:path rico:hasRecordSetType; + sh:order "16"; + sh:name "has record set type"@en; + sh:description """Connects a Record Set to a Record Set Type that categorizes it. (RiC-O 0.2) + +Possible values are \"Fonds\", \"Serie\", etc."""@en; + skos:editorialNote "Je mets skos:Concept en range, mais pourquoi pas une classe RiC-O ? Ce n'est pas normal, les autres vocabulaires contrôlés comme DocumentaryFormType ont bien une classe dédié. Normalement ca devrait être rico:RecordSetType"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class skos:Concept . + +spao-co:RecordSet_history sh:path rico:history; + sh:order "17"; + sh:name "history"@en; + sh:description "Summary of the development of an entity, since its origin until present time. (RiC-O 0.2)"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-co:RecordSet_isAssociatedWithEvent sh:path rico:isAssociatedWithEvent; + sh:order "18"; + sh:name "is associated with event"@en; + sh:description """Connects a Thing to an Event that is associated with its existence and lifecycle. (RiC-O 0.2) + +This is used to describe the acquisition of the record, with only a type of Event, indicating if the acquisition resulted from a donation, a loan, etc."""@en; + sh:nodeKind sh:IRI; + sh:class rico:Event . + +spao-co:RecordSet_isAssociatedWithPlace sh:path rico:isAssociatedWithPlace; + sh:order "19"; + sh:name "is associated with place"@en; + sh:description """Connects a Thing to a Place that is associated with its existence and lifecycle. (RiC-O 0.2) + +This indicates a place related to the content of the document, for example a building depicted on a photograph"""@en; + skos:editorialNote "je met rico:Place en range"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class rico:Place . + +spao-co:RecordSet_isOrWasIncludedIn sh:path rico:isOrWasIncludedIn; + sh:order "20"; + sh:name "is or was included in"@en; + sh:description "Connects a Record Set or a Record to a Record Set that aggregates or aggregated it in the past. (RiC-O 0.2)"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class rico:RecordSet . + +spao-co:RecordSet_physicalCharacteristics sh:path rico:physicalCharacteristics; + sh:order "21"; + sh:name "physical characteristics"@en; + sh:description """Information about the physical features of the Instantiation. Includes information about the physical nature and condition such as conservation status. (RiC-O 0.2) + +Theoretically this is applied to Instantiations, but is used also at the Record level when there is no Instantiation declared."""@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-co:RecordSet_sameAs sh:path owl:sameAs; + sh:order "22"; + sh:name "same as (owl)"@en; + sh:description "Link to the URL of this RecordSet in the legacy catalog. This information is in the public triplestore, but this is a hidden field in the layout when browsing the public website. The URL stored is not dereferencable."@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI . + +spao-co:RecordPart_hasDocumentaryFormType sh:path rico:hasDocumentaryFormType; + sh:order "1"; + sh:name "has documentary form type"@en; + sh:description """Connects a Record or Record Part to its Documentary Form Type. (RiC-O 0.2) + +Types of documents include \"Moving image\", \"Object\", \"Photography\", etc."""@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class rico:DocumentaryFormType . + +spao-co:RecordPart_isOrWasConstituentOf sh:path rico:isOrWasConstituentOf; + sh:order "2"; + sh:name "is or was constituent of"@en; + sh:description "Connects a Record Part to a Record of which this Record Part was a component of. (RiC-O 0.2)"@en; + sh:minCount "1"^^xsd:integer; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class rico:Record . + +spao-co:RecordResourceExtent_hasUnitOfMeasurement sh:path rico:hasUnitOfMeasurement; + sh:order "1"; + sh:name "has unit"@en; + sh:description "A reference to the \"extent unit\" controlled vocabulary to indicate the unit of measure of the extent. Example of values are \"boxes\", \"kg\", \"linear meter\", \"envelopes\", etc."@en; + rdfs:seeAlso ; + skos:editorialNote "There was a mistake in the type of the range : it was rico:unitOfMeasurement, it should be rico:UnitOfMeasurement, with capital \"U\""@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class rico:UnitOfMeasurement . + +spao-co:RecordResourceExtent_quantity sh:path rico:quantity; + sh:order "2"; + sh:name "quantity"@en; + sh:description "The quantity of the extent, given either as a integer or a string."@en; + sh:minCount "1"^^xsd:integer; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:or _:ba09c1662f6649d08454fc46fcbacca13642 . + +_:ba09c1662f6649d08454fc46fcbacca13642 rdf:first _:ba09c1662f6649d08454fc46fcbacca13643; + rdf:rest _:ba09c1662f6649d08454fc46fcbacca13644 . + +_:ba09c1662f6649d08454fc46fcbacca13643 sh:datatype xsd:integer . + +_:ba09c1662f6649d08454fc46fcbacca13644 rdf:first _:ba09c1662f6649d08454fc46fcbacca13645; + rdf:rest rdf:nil . + +_:ba09c1662f6649d08454fc46fcbacca13645 sh:datatype xsd:string . + +spao-co:Identifier_P2_has_type sh:path crm:P2_has_type; + sh:order "1"; + sh:name "type"@en; + sh:description "A reference to the type of the identifier, from the \"identifier\" controlled vocabulary, with values such as \"Unique ID\", \"Old Identifier\", \"Technical Identifier\", etc."@en; + rdfs:seeAlso ; + skos:editorialNote "Il faut migrer cette structure en structure RiC-O : rico:hasIdentifierType, et il faut typer les valeurs avec la classe rico:IdentifierType à la place d'une classe CRM"@en; + sh:minCount "1"^^xsd:integer; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class skos:Concept; + dash:searchWidget core:ListProperty; + datasources:datasource datasources:list_skospreflabel_alpha_with_count . + +spao-co:Identifier_value sh:path rdf:value; + sh:order "2"; + sh:name "value"@en; + sh:description "The value of the identifier, as a literal string."@en; + rdfs:seeAlso ; + skos:editorialNote "Il faut migrer cette structure en structure RiC-O : en RiC-O il y a rico:textualValue ou rico:normalizedValue"@en; + sh:minCount "1"^^xsd:integer; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-co:Event_hasEventType sh:path rico:hasEventType; + sh:order "1"; + sh:name "has event type"@en; + sh:description "Connects an Event to an Event Type which categorizes it. (RiC-O 0.2)"@en; + sh:minCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class rico:EventType; + dash:searchWidget core:ListProperty; + datasources:datasource datasources:list_skospreflabel_alpha_with_count . + +spao-co:Event_label sh:path rdfs:label; + sh:order "2"; + sh:name "label"@en; + sh:description "The name of the event."@en; + sh:nodeKind sh:Literal; + sh:or _:ba09c1662f6649d08454fc46fcbacca13646 . + +_:ba09c1662f6649d08454fc46fcbacca13646 rdf:first _:ba09c1662f6649d08454fc46fcbacca13647; + rdf:rest _:ba09c1662f6649d08454fc46fcbacca13648 . + +_:ba09c1662f6649d08454fc46fcbacca13647 sh:datatype rdf:langString . + +_:ba09c1662f6649d08454fc46fcbacca13648 rdf:first _:ba09c1662f6649d08454fc46fcbacca13649; + rdf:rest rdf:nil . + +_:ba09c1662f6649d08454fc46fcbacca13649 sh:datatype xsd:string . + +spao-co:ArchivalPlace_containedBy sh:path rico:containedBy; + sh:order "1"; + sh:name "contained by"@en; + sh:description "A reference to the place in which this one is contained, thus forming a hierarchy of places."@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class spao:ArchivalPlace . + +spao-co:ArchivalPlace_hasPacking sh:path spao:hasPacking; + sh:order "2"; + sh:name "has packing"@en; + sh:description "A reference to a concept in the packing controlled vocabulary to indicate the king of packaging or format of this place, such as \"box A4\", \"box A5\", \"digital file\", \"painting\", etc. This is not stated on all archival places."@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class skos:Concept . + +spao-co:ArchivalPlace_label sh:path rdfs:label; + sh:order "3"; + sh:name "label"@en; + sh:description "The name of the place"@en; + sh:minCount "1"^^xsd:integer; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string; + dash:propertyRole dash:LabelRole . + +spao-co:Date_dateStandard sh:path rico:dateStandard; + sh:name "date standard"@en; + sh:description "Identifier of the standard of the Normalized date. (RiC-O 0.2)"@en; + skos:editorialNote """L'utilisation de rico:Date directement est bizarre. Soit on met une SingleDate, soit un DateRange, mais pourquoi utiliser rico:Date directement ? de toutes façons c'est à migrer. + +Requête pour savoir où c'est utilisé : + +PREFIX rico: +PREFIX rdfs: +PREFIX rdf: +SELECT ?p (COUNT(?p) AS ?count) (SAMPLE(?x) AS ?sample) +WHERE { + ?x ?p ?o . + ?o a rico:Date . +} +GROUP BY ?p +ORDER BY DESC(?count) + +Ce sont beaucoup des birthDate de personnes, ou des beginningDate / endDate d'organisation. On peut laisser comme cela de toutes façons"""@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-co:Date_expressedDate sh:path rico:expressedDate; + sh:name "expressed date"@en; + sh:description "Natural language expression of a Date. (RiC-O 0.2) This is the field used to display the date on the screen."@en; + rdfs:seeAlso "cf issue https://github.com/sapa/performing-arts-ch-import/issues/34"; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-co:Date_normalizedDateValue sh:path rico:normalizedDateValue; + sh:name "normalized date value"@en; + sh:description """Date representation based on a standard, preferably machine-readable. (RiC-O 0.2). + +Currently the rico:normalizedDateValue is a copy of the rico:expressedDate and does not use a specific datatype. It is an xsd:string."""@en; + skos:editorialNote """C'est dommage que ce champs n'ait pas un datatype normalisé + +Aujourd'hui, il y a seulement un seul champ de date dans le formulaire de saisie, qui est la date normalisée, et qui est recopiée dans le expressedDate. Il faudrait mieux que : +1. La date normalisée soit typée avec un datatype de date (soit xsd:date, xsd:gYear, etc.) +2. Qu'elle ne soit pas recopiée dans expressedDate +3. Que le champs \"expressedDate\" soit visible dans le formulaire comme un champs séparé pour pouvoir renseignée une date littérale quand il y a besoin (\"aux alentours de juin 1985\") + +On pourrait utiliser une regex pour vérifier quelles valeurs sont invalides"""@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-co:DateRange_hasBeginningDate sh:path rico:hasBeginningDate; + sh:name "has beginning date"@en; + sh:description "Connects a Thing to a Date at which this Thing that came into existence. (RiC-O 0.2)"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class rico:SingleDate . + +spao-co:DateRange_hasEndDate sh:path rico:hasEndDate; + sh:name "has end date"@en; + sh:description "Connects a Thing to a Date at which the existence of that Thing ended. (RiC-O 0.2)"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class rico:SingleDate . + +spao-co:SingleDate_certainty sh:path rico:certainty; + sh:name "certainty"@en; + sh:description """Qualifies the level of certitude of the accuracy of a Date, an Event or a Relation. (RiC-O 0.2) + +Example of values are \"probable\", \"deduced\", \"uncertain\", etc."""@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class skos:Concept; + dash:searchWidget core:ListProperty; + datasources:datasource datasources:list_skospreflabel_alpha_with_count . + +spao-co:SingleDate_dateQualifier sh:path rico:dateQualifier; + sh:name "date qualifier"@en; + sh:description """Indicates the precision of a date. It specifies if, and to what extent, the value is an estimation. (RiC-O 0.2) + +Example of values are \"circa\", \"exact\", \"during\", etc."""@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class skos:Concept; + dash:searchWidget core:ListProperty; + datasources:datasource datasources:list_skospreflabel_alpha_with_count . + +spao-co:SingleDate_dateStandard sh:path rico:dateStandard; + sh:name "date standard"@en; + sh:description "Identifier of the standard of the Normalized date. (RiC-O 0.2)"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-co:SingleDate_expressedDate sh:path rico:expressedDate; + sh:name "expressed date"@en; + sh:description "Natural language expression of a Date. (RiC-O 0.2)"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-co:SingleDate_normalizedDateValue sh:path rico:normalizedDateValue; + sh:name "normalized date value"@en; + sh:description "Date representation based on a standard, preferably machine-readable. (RiC-O 0.2)"@en; + skos:editorialNote "C'est dommage que ce champs n'ait pas un datatype normalisé"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-co:Concept_prefLabel sh:path skos:prefLabel; + sh:order "1"; + sh:name "preferred label"@en; + sh:description "The preferred label of the concept. There is at most one preferred label per language."@en; + sh:minCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype rdf:langString; + dash:propertyRole dash:LabelRole; + sh:uniqueLang "true"^^xsd:boolean . + +spao-co:Concept_altLabel sh:path skos:altLabel; + sh:order "2"; + sh:name "alternative label (synonym)"@en; + sh:description "A synonym, acronym, or any other non-preferred term to refer to the concept."@en; + sh:nodeKind sh:Literal; + sh:datatype rdf:langString . + +spao-co:Concept_hiddenLabel sh:path skos:hiddenLabel; + sh:order "3"; + sh:name "hidden label"@en; + sh:description "A hidden label for the concept. Hidden labels are kept for references and to be able to match user queries, but should not be presented to end users."@en; + sh:nodeKind sh:Literal; + sh:datatype rdf:langString . + +spao-co:Concept_broader sh:path skos:broader; + sh:order "4"; + sh:name "broader"@en; + sh:description "A reference to a more generic concept of this concept."@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class skos:Concept . + +spao-co:Concept_narrower sh:path skos:narrower; + sh:order "5"; + sh:name "narrower"@en; + sh:description "A reference to a more specific concept of this concept."@en; + sh:nodeKind sh:IRI; + sh:class skos:Concept . + +spao-co:Concept_definition sh:path skos:definition; + sh:order "6"; + sh:name "definition"@en; + sh:description "A textual definition for this concept."@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype rdf:langString . + +spao-co:Concept_inScheme sh:path skos:inScheme; + sh:order "7"; + sh:name "in scheme"@en; + sh:description "A reference to the controlled vocabulary to which this concept belongs. Each concept belongs to one and only one controlled vocabulary."@en; + sh:minCount "1"^^xsd:integer; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class skos:ConceptScheme . + +spao-co:Concept_topConceptOf sh:path skos:topConceptOf; + sh:order "8"; + sh:name "top concept of"@en; + sh:description "When the concept is a \"root\" concept (that is, without broader concept), this property will hold a reference to its controlled vocabulary to indicate it is a top concept of the vocabulary."@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class skos:ConceptScheme . + +spao-co:Concept_exactMatch sh:path skos:exactMatch; + sh:order "9"; + sh:name "exact match"@en; + sh:description "A reference to a matching concept in a controlled vocabulary of another organization. Depending on the vocabulary, matching concepts can be taken from the Library of Congress, Records in Contexts ontology, the Deutsche National Bibliothek, RDA registry, Getty, the ECLAP repository (European Collected Library of Artistic Performance), Wikidata, UK National Archives, etc."@en; + sh:nodeKind sh:IRI . + +spao-co:Concept_comment sh:path rdfs:comment; + sh:order "10"; + sh:name "comment"@en; + sh:description "A comment on the concept, sometimes giving textual information on its equivalence to other concepts."@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype rdf:langString . + +spao-co:Diagram_Record dct:title "Record"@fr; + sh:order "1"^^xsd:integer . + +spao-co:Diagram_RecordSet dct:title "Record Set"@fr; + sh:order "2"^^xsd:integer . + +spao-co:Diagram_RecordPart dct:title "Record Part"@fr; + sh:order "3"^^xsd:integer . diff --git a/dev-page/configs/instantiations-shacl.ttl b/dev-page/configs/instantiations-shacl.ttl new file mode 100644 index 00000000..ce9ec0af --- /dev/null +++ b/dev-page/configs/instantiations-shacl.ttl @@ -0,0 +1,1173 @@ +@prefix premis: . +@prefix schema: . +@prefix owl: . +@prefix volipi: . +@prefix xsd: . +@prefix skosthes: . +@prefix rdfs: . +@prefix qb: . +@prefix dct: . +@prefix sh: . +@prefix doap: . +@prefix rico: . +@prefix vocab: . +@prefix dcat: . +@prefix euvoc: . +@prefix prov: . +@prefix foaf: . +@prefix crm: . +@prefix rda-u: . +@prefix adms: . +@prefix org: . +@prefix xls2rdf: . +@prefix crypto: . +@prefix core: . +@prefix spao-i: . +@prefix olo: . +@prefix shacl-play: . +@prefix datasources: . +@prefix rdf: . +@prefix ebucore: . +@prefix spao-co: . +@prefix dash: . +@prefix spao: . +@prefix frbroo: . +@prefix dc: . +@prefix skos: . +@prefix skosxl: . + + a owl:Ontology; + dct:hasFormat , + ; + rdfs:seeAlso . + +spao-i:Instantiation a sh:NodeShape; + sh:order "1"^^xsd:integer; + volipi:iconName "fa-light fa-files"; + sh:targetClass rico:Instantiation; + rdfs:label "Instantiation"@en; + sh:closed "true"; + sh:ignoredProperties _:ba09c1662f6649d08454fc46fcbacca13650; + shacl-play:background-color "ff6363"; + sh:property spao-i:Instantiation_aspectRatio, spao-i:Instantiation_channels, spao-i:Instantiation_descriptiveNote, + spao-i:Instantiation_duration, spao-i:Instantiation_hasAccessibility, spao-i:Instantiation_hasArchivalStatus, + spao-i:Instantiation_hasCarrierType, spao-i:Instantiation_hasCondition, spao-i:Instantiation_hasCopyPath, + spao-i:Instantiation_hasDerivedInstantiation, spao-i:Instantiation_hasExtent, spao-i:Instantiation_hasFormat, + spao-i:Instantiation_hasInternalNote, spao-i:Instantiation_hasNote, spao-i:Instantiation_hasOrHadIdentifier, + spao-i:Instantiation_hasOrHadLocation, spao-i:Instantiation_hasPacking, spao-i:Instantiation_hasPermission, + spao-i:Instantiation_hasPhysicalUsability, spao-i:Instantiation_hasProcessingDate, + spao-i:Instantiation_hasProtectionDuration, spao-i:Instantiation_hasRepresentationType, + spao-i:Instantiation_hasResponsibleEmployee, spao-i:Instantiation_hasStandard, spao-i:Instantiation_hasTermsOfProtection, + spao-i:Instantiation_hasVideoDamage, spao-i:Instantiation_height, spao-i:Instantiation_history, + spao-i:Instantiation_identifier, spao-i:Instantiation_index, spao-i:Instantiation_integrity, + spao-i:Instantiation_isAssociatedWithEvent, spao-i:Instantiation_lastControl, spao-i:Instantiation_legacyIdentifier, + spao-i:Instantiation_P45_consists_of, spao-i:Instantiation_P60558, spao-i:Instantiation_physicalCharacteristics, + spao-i:Instantiation_preparationDate, spao-i:Instantiation_recordingSystem, spao-i:Instantiation_samplingRate, + spao-i:Instantiation_scanningFormat, spao-i:Instantiation_scanningOrder, spao-i:Instantiation_seeAlso, + spao-i:Instantiation_width, spao-i:Instantiation_inversePath_includedIn, spao-i:Instantiation_inversePath_hasInstantiation . + +_:ba09c1662f6649d08454fc46fcbacca13650 rdf:first rdf:type; + rdf:rest rdf:nil . + +spao-i:File a sh:NodeShape; + sh:order "2"^^xsd:integer; + volipi:iconName "fa-light fa-file-video"; + sh:targetClass premis:File; + rdfs:label "File"@en; + sh:closed "true"; + sh:ignoredProperties _:ba09c1662f6649d08454fc46fcbacca13651; + shacl-play:background-color "ff6363"; + sh:property spao-i:File_aspectRatio, spao-i:File_channels, spao-i:File_compositionLevel, + spao-i:File_duration, spao-i:File_fixity, spao-i:File_frameRate, spao-i:File_hasFormat, + spao-i:File_hasStandard, spao-i:File_hasVideoDamage, spao-i:File_height, spao-i:File_history, + spao-i:File_integrity, spao-i:File_isIncludedIn, spao-i:File_label, spao-i:File_lastControl, + spao-i:File_originalName, spao-i:File_P60558, spao-i:File_samplingRate, spao-i:File_scanningFormat, + spao-i:File_scanningOrder, spao-i:File_seeAlso, spao-i:File_size, spao-i:File_width . + +_:ba09c1662f6649d08454fc46fcbacca13651 rdf:first rdf:type; + rdf:rest rdf:nil . + +spao-i:InstantiationExtent a sh:NodeShape; + sh:order "80"^^xsd:integer; + volipi:iconName "fa-light fa-ruler-triangle"; + sh:targetClass rico:InstantiationExtent; + rdfs:label "Instantiation Extent"@en; + sh:closed "true"; + sh:ignoredProperties _:ba09c1662f6649d08454fc46fcbacca13652; + shacl-play:background-color "b4c7dc"; + sh:property spao-i:InstantiationExtent_quantity, spao-i:InstantiationExtent_hasUnitOfMeasurement; + sh:deactivated "true"^^xsd:boolean . + +_:ba09c1662f6649d08454fc46fcbacca13652 rdf:first rdf:type; + rdf:rest rdf:nil . + +spao-co:Identifier a sh:NodeShape; + sh:order "81"^^xsd:integer; + sh:targetClass rico:Identifier; + rdfs:label "Identifier"@en; + sh:closed "true"; + sh:ignoredProperties _:ba09c1662f6649d08454fc46fcbacca13653; + shacl-play:background-color "b4c7dc"; + sh:property spao-i:Identifier_value, spao-i:Identifier_P2_has_type; + sh:deactivated "true"^^xsd:boolean . + +_:ba09c1662f6649d08454fc46fcbacca13653 rdf:first rdf:type; + rdf:rest rdf:nil . + +spao-co:SingleDate a sh:NodeShape; + sh:order "82"^^xsd:integer; + volipi:iconName "fa-light fa-calendar-xmark"; + sh:targetClass rico:SingleDate; + rdfs:label "Date (single)"@en; + sh:deactivated "true"^^xsd:boolean; + sh:closed "true"; + sh:ignoredProperties _:ba09c1662f6649d08454fc46fcbacca13654; + shacl-play:background-color "b4c7dc"; + sh:property spao-i:SingleDate_certainty, spao-i:SingleDate_dateQualifier, spao-i:SingleDate_dateStandard, + spao-i:SingleDate_expressedDate, spao-i:SingleDate_normalizedDateValue . + +_:ba09c1662f6649d08454fc46fcbacca13654 rdf:first rdf:type; + rdf:rest rdf:nil . + +spao-co:Date a sh:NodeShape; + sh:order "83"^^xsd:integer; + volipi:iconName "fa-light fa-calendar"; + sh:targetClass rico:Date; + rdfs:label "Date"@en; + sh:deactivated "true"^^xsd:boolean; + sh:closed "true"; + sh:ignoredProperties _:ba09c1662f6649d08454fc46fcbacca13655; + shacl-play:background-color "b4c7dc"; + sh:property spao-i:Date_dateStandard, spao-i:Date_expressedDate, spao-i:Date_normalizedDateValue . + +_:ba09c1662f6649d08454fc46fcbacca13655 rdf:first rdf:type; + rdf:rest rdf:nil . + +spao-co:DateRange a sh:NodeShape; + sh:order "84"^^xsd:integer; + volipi:iconName "fa-light fa-calendar-range"; + sh:targetClass rico:DateRange; + rdfs:label "Date (range)"@en; + sh:deactivated "true"^^xsd:boolean; + sh:closed "true"; + sh:ignoredProperties _:ba09c1662f6649d08454fc46fcbacca13656; + shacl-play:background-color "b4c7dc"; + sh:property spao-i:DateRange_hasBeginningDate, spao-i:DateRange_hasEndDate . + +_:ba09c1662f6649d08454fc46fcbacca13656 rdf:first rdf:type; + rdf:rest rdf:nil . + +spao-i:Concept a sh:NodeShape; + rdfs:label "Concept"@en; + sh:property spao-i:Concept_prefLabel; + sh:deactivated "true"^^xsd:boolean . + +spao-i:Standard a sh:NodeShape; + sh:order "90"^^xsd:integer; + sh:targetClass ebucore:Standard; + rdfs:label "Standard"@en; + sh:node spao-i:Concept; + shacl-play:background-color "edf2fa"; + sh:deactivated "true"^^xsd:boolean; + sh:property spao-i:Standard_inScheme . + +spao-i:AudioFormat a sh:NodeShape; + sh:order "91"^^xsd:integer; + sh:targetClass ebucore:AudioFormat; + rdfs:label "(Type of) Audio Format"@en; + sh:node spao-i:Concept; + shacl-play:background-color "edf2fa"; + sh:deactivated "true"^^xsd:boolean; + sh:property spao-i:AudioFormat_inScheme . + +spao-i:ContainerFormat a sh:NodeShape; + sh:order "92"^^xsd:integer; + sh:targetClass ebucore:ContainerFormat; + rdfs:label "(Type of) Container Format"@en; + sh:node spao-i:Concept; + shacl-play:background-color "edf2fa"; + sh:deactivated "true"^^xsd:boolean; + sh:property spao-i:ContainerFormat_inScheme . + +spao-i:StorageMedium a sh:NodeShape; + sh:order "93"^^xsd:integer; + sh:targetClass premis:StorageMedium; + rdfs:label "(Type of) Storage Medium"@en; + sh:node spao-i:Concept; + shacl-play:background-color "edf2fa"; + sh:deactivated "true"^^xsd:boolean . + +spao-i:VideoFormat a sh:NodeShape; + sh:order "94"^^xsd:integer; + sh:targetClass ebucore:VideoFormat; + rdfs:label "(Type of) Video Format"@en; + sh:node spao-i:Concept; + shacl-play:background-color "edf2fa"; + sh:deactivated "true"^^xsd:boolean; + sh:property spao-i:VideoFormat_inScheme . + +spao-i:CarrierType a sh:NodeShape; + sh:order "95"^^xsd:integer; + sh:targetClass rico:CarrierType; + rdfs:label "Type of Carrier"@en; + sh:node spao-i:Concept; + shacl-play:background-color "edf2fa"; + sh:deactivated "true"^^xsd:boolean; + sh:property spao-i:CarrierType_inScheme . + +spao-i:RepresentationType a sh:NodeShape; + sh:order "96"^^xsd:integer, "103"^^xsd:integer; + sh:targetClass rico:RepresentationType; + rdfs:label "Type of Representation"@en; + sh:node spao-i:Concept; + shacl-play:background-color "edf2fa"; + sh:deactivated "true"^^xsd:boolean; + sh:property spao-i:RepresentationType_inScheme . + +spao-i:Accessibility a sh:NodeShape; + sh:order "97"^^xsd:integer; + rdfs:label "Type of Accessibility"@en; + sh:node spao-i:Concept; + shacl-play:background-color "edf2fa"; + sh:deactivated "true"^^xsd:boolean; + sh:property spao-i:Accessibility_inScheme . + +spao-i:PreservationState a sh:NodeShape; + sh:order "98"^^xsd:integer; + rdfs:label "Type of Preservation State"@en; + sh:node spao-i:Concept; + shacl-play:background-color "edf2fa"; + sh:deactivated "true"^^xsd:boolean; + sh:property spao-i:PreservationState_inScheme . + +spao-i:Condition a sh:NodeShape; + sh:order "99"^^xsd:integer; + rdfs:label "Type of Condition"@en; + sh:node spao-i:Concept; + shacl-play:background-color "edf2fa"; + sh:deactivated "true"^^xsd:boolean; + sh:property spao-i:Condition_inScheme . + +spao-i:Packing a sh:NodeShape; + sh:order "100"^^xsd:integer; + rdfs:label "Type of Packing"@en; + sh:node spao-i:Concept; + shacl-play:background-color "edf2fa"; + sh:deactivated "true"^^xsd:boolean; + sh:property spao-i:Packing_inScheme . + +spao-i:Permission a sh:NodeShape; + sh:order "101"^^xsd:integer; + rdfs:label "Type of Permission"@en; + sh:node spao-i:Concept; + shacl-play:background-color "edf2fa"; + sh:deactivated "true"^^xsd:boolean; + sh:property spao-i:Permission_inScheme . + +spao-i:PhysicalUsability a sh:NodeShape; + sh:order "102"^^xsd:integer; + rdfs:label "Type of Physical usability"@en; + sh:node spao-i:Concept; + shacl-play:background-color "edf2fa"; + sh:deactivated "true"^^xsd:boolean; + sh:property spao-i:PhysicalUsability_inScheme . + +spao-i:TermsOfProtection a sh:NodeShape; + sh:order "104"^^xsd:integer; + rdfs:label "Type of Terms of Protection"@en; + sh:node spao-i:Concept; + shacl-play:background-color "edf2fa"; + sh:deactivated "true"^^xsd:boolean; + sh:property spao-i:TermsOfProtection_inScheme . + +spao-i:VideoDamage a sh:NodeShape; + sh:order "105"^^xsd:integer; + rdfs:label "Type of Video Damage"@en; + sh:node spao-i:Concept; + shacl-play:background-color "edf2fa"; + sh:deactivated "true"^^xsd:boolean; + sh:property spao-i:VideoDamage_inScheme . + +spao-i:Material a sh:NodeShape; + sh:order "106"^^xsd:integer; + rdfs:label "Type of Material"@en; + sh:node spao-i:Concept; + shacl-play:background-color "edf2fa"; + sh:deactivated "true"^^xsd:boolean; + sh:property spao-i:Material_inScheme . + +spao-i:ColorContent a sh:NodeShape; + sh:order "107"^^xsd:integer; + rdfs:label "Type of Color Content"@en; + sh:node spao-i:Concept; + shacl-play:background-color "edf2fa"; + sh:deactivated "true"^^xsd:boolean; + sh:property spao-i:ColorContent_inScheme . + +spao-i:RecordingSystem a sh:NodeShape; + sh:order "108"^^xsd:integer; + rdfs:label "Type of Recording System"@en; + sh:node spao-i:Concept; + shacl-play:background-color "edf2fa"; + sh:deactivated "true"^^xsd:boolean; + sh:property spao-i:RecordingSystem_inScheme . + +spao-i:ScanningFormat a sh:NodeShape; + sh:order "109"^^xsd:integer; + rdfs:label "Type of Scanning Format"@en; + sh:node spao-i:Concept; + shacl-play:background-color "edf2fa"; + sh:deactivated "true"^^xsd:boolean; + sh:property spao-i:ScanningFormat_inScheme . + +spao-i:ScanningOrder a sh:NodeShape; + sh:order "110"^^xsd:integer; + rdfs:label "Type of Scanning Order"@en; + sh:node spao-i:Concept; + shacl-play:background-color "edf2fa"; + sh:deactivated "true"^^xsd:boolean; + sh:property spao-i:ScanningOrder_inScheme . + +spao-i:Instantiation_aspectRatio sh:path ebucore:aspectRatio; + sh:name "aspect ratio"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-i:Instantiation_channels sh:path ebucore:channels; + sh:name "channels"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-i:Instantiation_descriptiveNote sh:path rico:descriptiveNote; + sh:name "descriptive note"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-i:Instantiation_duration sh:path ebucore:duration, schema:duration; + sh:name "duration (ebucore)"@en, "duration (schema)"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-i:Instantiation_hasAccessibility sh:path spao:hasAccessibility; + sh:name "has accessibility"@en; + sh:nodeKind sh:IRI; + sh:class skos:Concept; + sh:node spao-i:Accessibility; + dash:searchWidget core:ListProperty; + datasources:datasource datasources:list_skospreflabel_alpha_with_count . + +spao-i:Instantiation_hasArchivalStatus sh:path spao:hasArchivalStatus; + sh:name "has archival status"@en; + sh:description "For historical reasons, this property is not set on old instantiations, but it is mandatory for new instantiations."@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class skos:Concept; + sh:node spao-i:PreservationState; + dash:searchWidget core:ListProperty; + datasources:datasource datasources:list_skospreflabel_alpha_with_count . + +spao-i:Instantiation_hasCarrierType sh:path rico:hasCarrierType; + sh:name "has carrier type"@en; + sh:description "Note : the entries in rico:CarrierType vocabulary are also types premis:StorageMedium."@en; + skos:editorialNote """The class rico:RepresentationType is not expected in the range. Only rico:CarrierType is expected. This is probably an error. There is a single value that says \"visual\", here is the query: + +SELECT DISTINCT ?s ?result +WHERE +{ ?s a +; + ?result . + ?result a +}"""@en; + sh:nodeKind sh:IRI; + sh:class rico:CarrierType; + sh:node spao-i:CarrierType; + dash:searchWidget core:ListProperty; + datasources:datasource datasources:list_skospreflabel_alpha_with_count . + +spao-i:Instantiation_hasCondition sh:path spao:hasCondition; + sh:name "has condition"@en; + sh:nodeKind sh:IRI; + sh:class skos:Concept; + sh:node spao-i:Condition; + dash:searchWidget core:ListProperty; + datasources:datasource datasources:list_skospreflabel_alpha_with_count . + +spao-i:Instantiation_hasCopyPath sh:path spao:hasCopyPath; + sh:name "has copy path"@en; + skos:editorialNote "20240628 : je bascule dans l'espace de nom final et je déclare dans l'ontologie"@en; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-i:Instantiation_hasDerivedInstantiation sh:path rico:hasDerivedInstantiation; + sh:name "has derived instantiation"@en; + skos:editorialNote "Il y a toujours un double typage : les instantiations sont toujouts typées rico:Instantiation avec en plus soit ebucore:MediaResource (objet analogique) ou premis:Representation"@en; + sh:nodeKind sh:IRI; + sh:class rico:Instantiation . + +spao-i:Instantiation_hasExtent sh:path rico:hasExtent; + sh:name "has extent"@en; + skos:editorialNote """Ici je pense que rico:ResourceResourceExtent en range est une erreur. Voici la query: + +PREFIX rico: +SELECT DISTINCT ?s ?result +WHERE +{ ?s a +; + ?result . + ?result a rico:RecordResourceExtent +} + +Il n'y a pas beaucoup de valeur. +Exemple d'Instantiation : http://data.performing-arts.ch/o/c364c6e6-7a87-400f-920b-525824eab956"""@en; + sh:nodeKind sh:IRI; + sh:class rico:InstantiationExtent; + dash:searchWidget core:NonSelectableProperty . + +spao-i:Instantiation_hasFormat sh:path ebucore:hasFormat; + sh:name "has audio or video format"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:or _:ba09c1662f6649d08454fc46fcbacca13657; + dash:searchWidget core:ListProperty; + datasources:datasource datasources:list_skospreflabel_alpha_with_count . + +_:ba09c1662f6649d08454fc46fcbacca13657 rdf:first _:ba09c1662f6649d08454fc46fcbacca13658; + rdf:rest _:ba09c1662f6649d08454fc46fcbacca13659 . + +_:ba09c1662f6649d08454fc46fcbacca13658 sh:class ebucore:AudioFormat . + +_:ba09c1662f6649d08454fc46fcbacca13659 rdf:first _:ba09c1662f6649d08454fc46fcbacca13660; + rdf:rest rdf:nil . + +_:ba09c1662f6649d08454fc46fcbacca13660 sh:class ebucore:VideoFormat . + +spao-i:Instantiation_hasInternalNote sh:path spao:hasInternalNote; + sh:name "has note (internal)"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-i:Instantiation_hasNote sh:path spao:hasNote; + sh:name "has note"@en; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-i:Instantiation_hasOrHadIdentifier sh:path rico:hasOrHadIdentifier; + sh:name "has or had identifier (structured)"@en; + sh:nodeKind sh:IRI; + sh:class rico:Identifier . + +spao-i:Instantiation_hasOrHadLocation sh:path rico:hasOrHadLocation; + sh:name "has or had location"@en; + sh:nodeKind sh:IRI; + sh:class spao:ArchivalPlace . + +spao-i:Instantiation_hasPacking sh:path spao:hasPacking; + sh:name "has packing"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class skos:Concept; + sh:node spao-i:Packing; + dash:searchWidget core:ListProperty; + datasources:datasource datasources:list_skospreflabel_alpha_with_count . + +spao-i:Instantiation_hasPermission sh:path spao:hasPermission; + sh:name "has permission"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class skos:Concept; + sh:node spao-i:Permission; + dash:searchWidget core:ListProperty; + datasources:datasource datasources:list_skospreflabel_alpha_with_count . + +spao-i:Instantiation_hasPhysicalUsability sh:path spao:hasPhysicalUsability; + sh:name "has physical usability"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class skos:Concept; + sh:node spao-i:PhysicalUsability; + dash:searchWidget core:ListProperty; + datasources:datasource datasources:list_skospreflabel_alpha_with_count . + +spao-i:Instantiation_hasProcessingDate sh:path spao:hasProcessingDate; + sh:name "has processing date"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class rico:SingleDate; + dash:searchWidget core:NonSelectableProperty . + +spao-i:Instantiation_hasProtectionDuration sh:path spao:hasProtectionDuration; + sh:name "has protection duration"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-i:Instantiation_hasRepresentationType sh:path rico:hasRepresentationType; + sh:name "has representation type"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class rico:RepresentationType; + sh:node spao-i:RepresentationType; + dash:searchWidget core:ListProperty; + datasources:datasource datasources:list_skospreflabel_alpha_with_count . + +spao-i:Instantiation_hasResponsibleEmployee sh:path spao:hasResponsibleEmployee; + sh:name "has responsible employee"@en; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-i:Instantiation_hasStandard sh:path ebucore:hasStandard; + sh:name "has standard (ebucore)"@en; + skos:editorialNote "PAL, NTS"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class ebucore:Standard; + sh:node spao-i:Standard; + dash:searchWidget core:ListProperty; + datasources:datasource datasources:list_skospreflabel_alpha_with_count . + +spao-i:Instantiation_hasTermsOfProtection sh:path spao:hasTermsOfProtection; + sh:name "has terms of protection"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class skos:Concept; + sh:node spao-i:TermsOfProtection; + dash:searchWidget core:ListProperty; + datasources:datasource datasources:list_skospreflabel_alpha_with_count . + +spao-i:Instantiation_hasVideoDamage sh:path spao:hasVideoDamage; + sh:name "has video damage (type)"@en; + sh:nodeKind sh:IRI; + sh:class skos:Concept; + sh:node spao-i:VideoDamage; + dash:searchWidget core:ListProperty; + datasources:datasource datasources:list_skospreflabel_alpha_with_count . + +spao-i:Instantiation_height sh:path ebucore:height; + sh:name "height"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-i:Instantiation_history sh:path rico:history; + sh:name "history"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-i:Instantiation_identifier sh:path rico:identifier; + sh:name "identifier (literal)"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-i:Instantiation_index sh:path olo:index; + sh:name "index"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:integer . + +spao-i:Instantiation_integrity sh:path rico:integrity; + sh:name "integrity"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-i:Instantiation_isAssociatedWithEvent sh:path rico:isAssociatedWithEvent; + sh:name "is associated with event"@en; + skos:editorialNote "Qu'est-ce que ces Event représentent ?"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class rico:Event . + +spao-i:Instantiation_lastControl sh:path spao:lastControl; + sh:name "last control (date)"@en; + skos:editorialNote "Ici il faudrait normaliser: soit en datatype, soit en date Rico."@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRIOrLiteral; + sh:or _:ba09c1662f6649d08454fc46fcbacca13661 . + +_:ba09c1662f6649d08454fc46fcbacca13661 rdf:first _:ba09c1662f6649d08454fc46fcbacca13662; + rdf:rest _:ba09c1662f6649d08454fc46fcbacca13663 . + +_:ba09c1662f6649d08454fc46fcbacca13662 sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +_:ba09c1662f6649d08454fc46fcbacca13663 rdf:first _:ba09c1662f6649d08454fc46fcbacca13664; + rdf:rest rdf:nil . + +_:ba09c1662f6649d08454fc46fcbacca13664 sh:nodeKind sh:IRI; + sh:class rico:SingleDate . + +spao-i:Instantiation_legacyIdentifier sh:path spao:legacyIdentifier; + sh:name "legacy identifier"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-i:Instantiation_P45_consists_of sh:path crm:P45_consists_of; + sh:name "consists of (P45)"@en; + skos:editorialNote "Matériaux : glass, plastic, synthetic, etc. Pas de propriété correspondante dans RiC-O"@en; + sh:nodeKind sh:IRI; + sh:class skos:Concept; + sh:node spao-i:Material; + dash:searchWidget core:ListProperty; + datasources:datasource datasources:list_skospreflabel_alpha_with_count . + +spao-i:Instantiation_P60558 sh:path rda-u:P60558; + sh:name "has colour content"@en; + sh:description "Possible values are \"grayscale\", \"black and white\", \"color\", \"mixed color\""@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class skos:Concept; + sh:node spao-i:ColorContent; + dash:searchWidget core:ListProperty; + datasources:datasource datasources:list_skospreflabel_alpha_with_count . + +spao-i:Instantiation_physicalCharacteristics sh:path rico:physicalCharacteristics; + sh:name "physical characteristics"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-i:Instantiation_preparationDate sh:path spao:preparationDate; + sh:name "preparation date"@en; + sh:nodeKind sh:IRI; + sh:or _:ba09c1662f6649d08454fc46fcbacca13665 . + +_:ba09c1662f6649d08454fc46fcbacca13665 rdf:first _:ba09c1662f6649d08454fc46fcbacca13666; + rdf:rest _:ba09c1662f6649d08454fc46fcbacca13667 . + +_:ba09c1662f6649d08454fc46fcbacca13666 sh:class rico:SingleDate . + +_:ba09c1662f6649d08454fc46fcbacca13667 rdf:first _:ba09c1662f6649d08454fc46fcbacca13668; + rdf:rest _:ba09c1662f6649d08454fc46fcbacca13669 . + +_:ba09c1662f6649d08454fc46fcbacca13668 sh:class rico:DateRange . + +_:ba09c1662f6649d08454fc46fcbacca13669 rdf:first _:ba09c1662f6649d08454fc46fcbacca13670; + rdf:rest rdf:nil . + +_:ba09c1662f6649d08454fc46fcbacca13670 sh:class rico:Date . + +spao-i:Instantiation_recordingSystem sh:path spao:recordingSystem; + sh:name "recording system"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class skos:Concept; + sh:node spao-i:RecordingSystem; + dash:searchWidget core:ListProperty; + datasources:datasource datasources:list_skospreflabel_alpha_with_count . + +spao-i:Instantiation_samplingRate sh:path ebucore:samplingRate; + sh:name "sampling rate"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-i:Instantiation_scanningFormat sh:path ebucore:scanningFormat; + sh:name "scanning format"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class skos:Concept; + sh:node spao-i:ScanningFormat; + dash:searchWidget core:ListProperty; + datasources:datasource datasources:list_skospreflabel_alpha_with_count . + +spao-i:Instantiation_scanningOrder sh:path ebucore:scanningOrder; + sh:name "scanning order"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class skos:Concept; + sh:node spao-i:ScanningOrder; + dash:searchWidget core:ListProperty; + datasources:datasource datasources:list_skospreflabel_alpha_with_count . + +spao-i:Instantiation_seeAlso sh:path spao:seeAlso; + sh:name "see also"@en; + sh:nodeKind sh:IRI . + +spao-i:Instantiation_width sh:path ebucore:width; + sh:name "width"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-i:Instantiation_inversePath_includedIn sh:path _:ba09c1662f6649d08454fc46fcbacca13671; + sh:name "includes file"@en; + sh:nodeKind sh:IRI; + sh:node spao-i:File . + +_:ba09c1662f6649d08454fc46fcbacca13671 sh:inversePath premis:isIncludedIn . + +spao-i:Instantiation_inversePath_hasInstantiation sh:path _:ba09c1662f6649d08454fc46fcbacca13672; + sh:name "instantiates"@en; + sh:nodeKind sh:IRI; + sh:node spao-co:Record . + +_:ba09c1662f6649d08454fc46fcbacca13672 sh:inversePath rico:hasInstantiation . + +spao-i:File_aspectRatio sh:path ebucore:aspectRatio; + sh:name "aspect ratio"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal . + +spao-i:File_channels sh:path ebucore:channels; + sh:name "channels"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-i:File_compositionLevel sh:path premis:compositionLevel; + sh:name "composition level"@en; + sh:minCount "1"^^xsd:integer; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string; + sh:in _:ba09c1662f6649d08454fc46fcbacca13673 . + +_:ba09c1662f6649d08454fc46fcbacca13673 rdf:first "0"; + rdf:rest _:ba09c1662f6649d08454fc46fcbacca13674 . + +_:ba09c1662f6649d08454fc46fcbacca13674 rdf:first "1"; + rdf:rest rdf:nil . + +spao-i:File_duration sh:path ebucore:duration; + sh:name "duration"@en; + skos:editorialNote """Pourquoi un ebucore:duration et un schema:duration ? A vérifier dans le triplestore + +ebucore:duration est réservé aux fichiers individuels. + +L'utilisation de schema:duration est a priori sur 4 File qui sont des tests, à cleaner + +SPARQL : + +PREFIX schema: +PREFIX premis: +PREFIX spav: +SELECT ?entity ?duration +WHERE { + ?entity a premis:File . + ?entity schema:duration ?duration . +} +LIMIT 1000"""@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-i:File_fixity sh:path premis:fixity; + sh:name "fixity"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class crypto:md5 . + +spao-i:File_frameRate sh:path ebucore:frameRate; + sh:name "frame rate"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-i:File_hasFormat sh:path ebucore:hasFormat; + sh:name "has audio, video or container format"@en; + skos:editorialNote """Revoir les range ensemble, est-ce correct ? --> oui + +vocabulaires cibles : cf (ContainerFormat), vf (VideoFormat), af (AudioFormat). C'est géré au niveau du formulaire - à mettre + +ajouter les vocabulaires cibles (idem modèle Performance)"""@en; + sh:nodeKind sh:IRI; + sh:or _:ba09c1662f6649d08454fc46fcbacca13675; + dash:searchWidget core:ListProperty; + datasources:datasource datasources:list_skospreflabel_alpha_with_count . + +_:ba09c1662f6649d08454fc46fcbacca13675 rdf:first _:ba09c1662f6649d08454fc46fcbacca13676; + rdf:rest _:ba09c1662f6649d08454fc46fcbacca13677 . + +_:ba09c1662f6649d08454fc46fcbacca13676 sh:class ebucore:AudioFormat . + +_:ba09c1662f6649d08454fc46fcbacca13677 rdf:first _:ba09c1662f6649d08454fc46fcbacca13678; + rdf:rest _:ba09c1662f6649d08454fc46fcbacca13679 . + +_:ba09c1662f6649d08454fc46fcbacca13678 sh:class ebucore:ContainerFormat . + +_:ba09c1662f6649d08454fc46fcbacca13679 rdf:first _:ba09c1662f6649d08454fc46fcbacca13680; + rdf:rest rdf:nil . + +_:ba09c1662f6649d08454fc46fcbacca13680 sh:class ebucore:VideoFormat . + +spao-i:File_hasStandard sh:path ebucore:hasStandard; + sh:name "has standard"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class ebucore:Standard; + sh:node spao-i:Standard; + dash:searchWidget core:ListProperty; + datasources:datasource datasources:list_skospreflabel_alpha_with_count . + +spao-i:File_hasVideoDamage sh:path spao:hasVideoDamage; + sh:name "has video damage (type)"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class skos:Concept; + sh:node spao-i:VideoDamage; + dash:searchWidget core:ListProperty; + datasources:datasource datasources:list_skospreflabel_alpha_with_count . + +spao-i:File_height sh:path ebucore:height; + sh:name "height"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-i:File_history sh:path rico:history; + sh:name "history"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-i:File_integrity sh:path rico:integrity; + sh:name "integrity"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-i:File_isIncludedIn sh:path premis:isIncludedIn; + sh:name "is included in"@en; + sh:minCount "1"^^xsd:integer; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class rico:Instantiation . + +spao-i:File_label sh:path rdfs:label; + sh:name "label"@en; + skos:editorialNote """Issue existante : https://github.com/sapa/performing-arts-ch-import/issues/26 (sera déplacée dans le cleaning) + +Requête pour lister les File sans rdfs:label: + +PREFIX rdfs: +PREFIX premis: +PREFIX spav: +SELECT ?entity +WHERE { + ?entity a premis:File . + FILTER NOT EXISTS { ?entity rdfs:label ?label } +} +LIMIT 1000"""@en; + sh:minCount "1"^^xsd:integer; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string; + dash:propertyRole dash:LabelRole . + +spao-i:File_lastControl sh:path spao:lastControl; + sh:name "last control"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class rico:SingleDate; + dash:searchWidget core:NonSelectableProperty . + +spao-i:File_originalName sh:path premis:originalName; + sh:name "original frame"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-i:File_P60558 sh:path rda-u:P60558; + sh:name "color content (P60558)"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class skos:Concept; + sh:node spao-i:ColorContent; + dash:searchWidget core:ListProperty; + datasources:datasource datasources:list_skospreflabel_alpha_with_count . + +spao-i:File_samplingRate sh:path ebucore:samplingRate; + sh:name "sampling rate"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-i:File_scanningFormat sh:path ebucore:scanningFormat; + sh:name "scanning format"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class skos:Concept; + sh:node spao-i:ScanningFormat; + dash:searchWidget core:ListProperty; + datasources:datasource datasources:list_skospreflabel_alpha_with_count . + +spao-i:File_scanningOrder sh:path ebucore:scanningOrder; + sh:name "scanning order"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class skos:Concept; + sh:node spao-i:ScanningOrder; + dash:searchWidget core:ListProperty; + datasources:datasource datasources:list_skospreflabel_alpha_with_count . + +spao-i:File_seeAlso sh:path spao:seeAlso; + sh:name "see also"@en; + sh:nodeKind sh:IRI . + +spao-i:File_size sh:path premis:size; + sh:name "size"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-i:File_width sh:path ebucore:width; + sh:name "width"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-i:Identifier_value sh:path rdf:value; + sh:order "1"; + sh:name "value"@en; + sh:description "The value of the identifier, as a literal string."@en; + rdfs:seeAlso ; + skos:editorialNote "Il faut migrer cette structure en structure RiC-O : en RiC-O il y a rico:textualValue ou rico:normalizedValue"@en; + sh:minCount "1"^^xsd:integer; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string; + sh:deactivated "true"^^xsd:boolean . + +spao-i:Identifier_P2_has_type sh:path crm:P2_has_type; + sh:order "2"; + sh:name "type"@en; + sh:description "A reference to the type of the identifier, from the \"identifier\" controlled vocabulary, with values such as \"Unique ID\", \"Old Identifier\", \"Technical Identifier\", etc."@en; + rdfs:seeAlso ; + skos:editorialNote "Il faut migrer cette structure en structure RiC-O : rico:hasIdentifierType, et il faut typer les valeurs avec la classe rico:IdentifierType à la place d'une classe CRM"@en; + sh:minCount "1"^^xsd:integer; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class skos:Concept; + sh:in _:ba09c1662f6649d08454fc46fcbacca13681; + sh:deactivated "true"^^xsd:boolean . + +_:ba09c1662f6649d08454fc46fcbacca13681 rdf:first vocab:iduni; + rdf:rest _:ba09c1662f6649d08454fc46fcbacca13682 . + +_:ba09c1662f6649d08454fc46fcbacca13682 rdf:first vocab:idpid; + rdf:rest _:ba09c1662f6649d08454fc46fcbacca13683 . + +_:ba09c1662f6649d08454fc46fcbacca13683 rdf:first vocab:idcon; + rdf:rest _:ba09c1662f6649d08454fc46fcbacca13684 . + +_:ba09c1662f6649d08454fc46fcbacca13684 rdf:first vocab:idold; + rdf:rest _:ba09c1662f6649d08454fc46fcbacca13685 . + +_:ba09c1662f6649d08454fc46fcbacca13685 rdf:first vocab:idtec; + rdf:rest rdf:nil . + +spao-i:InstantiationExtent_quantity sh:path rico:quantity; + sh:order "1"; + sh:name "quantity"@en; + sh:description "The quantity of the extent, given either as a integer or a string."@en; + skos:editorialNote "Thomas : voir si dans la doc des Collections on peut faire apparaitre les 2 datatypes qui n'apparaissent pas dans la doc généré"@en; + sh:minCount "1"^^xsd:integer; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string . + +spao-i:InstantiationExtent_hasUnitOfMeasurement sh:path rico:hasUnitOfMeasurement; + sh:order "2"; + sh:name "has unit"@en; + sh:description "A reference to the \"extent unit\" controlled vocabulary to indicate the unit of measure of the extent. Example of values are \"boxes\", \"kg\", \"linear meter\", \"envelopes\", etc."@en; + rdfs:seeAlso ; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class rico:UnitOfMeasurement . + +spao-i:Date_dateStandard sh:path rico:dateStandard; + sh:name "date standard"@en; + skos:editorialNote """L'utilisation de rico:Date directement est bizarre. Soit on met une SingleDate, soit un DateRange, mais pourquoi utiliser rico:Date directement ? de toutes façons c'est à migrer. + +Requête pour savoir où c'est utilisé : + +PREFIX rico: +PREFIX rdfs: +PREFIX rdf: +SELECT ?p (COUNT(?p) AS ?count) (SAMPLE(?x) AS ?sample) +WHERE { + ?x ?p ?o . + ?o a rico:Date . +} +GROUP BY ?p +ORDER BY DESC(?count) + +Ce sont beaucoup des birthDate de personnes, ou des beginningDate / endDate d'organisation. On peut laisser comme cela de toutes façons"""@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string; + sh:deactivated "true"^^xsd:boolean . + +spao-i:Date_expressedDate sh:path rico:expressedDate; + sh:name "expressed date"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string; + sh:deactivated "true"^^xsd:boolean . + +spao-i:Date_normalizedDateValue sh:path rico:normalizedDateValue; + sh:name "normalized date value"@en; + skos:editorialNote "C'est dommage que ce champs n'ait pas un datatype normalisé"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string; + sh:deactivated "true"^^xsd:boolean . + +spao-i:DateRange_hasBeginningDate sh:path rico:hasBeginningDate; + sh:name "has beginning date"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class rico:SingleDate; + dash:searchWidget core:NonSelectableProperty; + sh:deactivated "true"^^xsd:boolean . + +spao-i:DateRange_hasEndDate sh:path rico:hasEndDate; + sh:name "has end date"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class rico:SingleDate; + dash:searchWidget core:NonSelectableProperty; + sh:deactivated "true"^^xsd:boolean . + +spao-i:SingleDate_certainty sh:path rico:certainty; + sh:name "certainty"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class skos:Concept; + sh:deactivated "true"^^xsd:boolean; + rdfs:comment "We disable properties from these shared objects : we need to keep them here for documentation, we don't want to have them twice since we already have them in the Collections model" . + +spao-i:SingleDate_dateQualifier sh:path rico:dateQualifier; + sh:name "date qualifier"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:IRI; + sh:class skos:Concept; + sh:deactivated "true"^^xsd:boolean . + +spao-i:SingleDate_dateStandard sh:path rico:dateStandard; + sh:name "date standard"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string; + sh:deactivated "true"^^xsd:boolean . + +spao-i:SingleDate_expressedDate sh:path rico:expressedDate; + sh:name "expressed date"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string; + sh:deactivated "true"^^xsd:boolean . + +spao-i:SingleDate_normalizedDateValue sh:path rico:normalizedDateValue; + sh:name "normalized date value"@en; + skos:editorialNote "C'est dommage que ce champs n'ait pas un datatype normalisé"@en; + sh:maxCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype xsd:string; + sh:deactivated "true"^^xsd:boolean . + +spao-i:Concept_prefLabel sh:path skos:prefLabel; + sh:name "preferred label"@en; + sh:minCount "1"^^xsd:integer; + sh:nodeKind sh:Literal; + sh:datatype rdf:langString; + dash:propertyRole dash:LabelRole; + sh:uniqueLang "true"^^xsd:boolean . + +spao-i:Accessibility_inScheme sh:path skos:inScheme; + sh:name "in scheme"@en; + sh:hasValue vocab:ac . + +spao-i:PreservationState_inScheme sh:path skos:inScheme; + sh:name "in scheme"@en; + sh:hasValue vocab:as . + +spao-i:CarrierType_inScheme sh:path skos:inScheme; + sh:name "in scheme"@en; + sh:hasValue vocab:fv . + +spao-i:Condition_inScheme sh:path skos:inScheme; + sh:name "in scheme"@en; + sh:hasValue vocab:cd . + +spao-i:Packing_inScheme sh:path skos:inScheme; + sh:name "in scheme"@en; + sh:hasValue vocab:pk . + +spao-i:Permission_inScheme sh:path skos:inScheme; + sh:name "in scheme"@en; + sh:hasValue vocab:pm . + +spao-i:PhysicalUsability_inScheme sh:path skos:inScheme; + sh:name "in scheme"@en; + sh:hasValue vocab:pu . + +spao-i:RepresentationType_inScheme sh:path skos:inScheme; + sh:name "in scheme"@en; + sh:hasValue vocab:rt . + +spao-i:Standard_inScheme sh:path skos:inScheme; + sh:name "in scheme"@en; + sh:hasValue vocab:bs . + +spao-i:TermsOfProtection_inScheme sh:path skos:inScheme; + sh:name "in scheme"@en; + sh:hasValue vocab:tp . + +spao-i:VideoDamage_inScheme sh:path skos:inScheme; + sh:name "in scheme"@en; + sh:hasValue vocab:vd . + +spao-i:Material_inScheme sh:path skos:inScheme; + sh:name "in scheme"@en; + sh:hasValue vocab:zj . + +spao-i:ColorContent_inScheme sh:path skos:inScheme; + sh:name "in scheme"@en; + sh:hasValue vocab:cl . + +spao-i:RecordingSystem_inScheme sh:path skos:inScheme; + sh:name "in scheme"@en; + sh:hasValue vocab:zf . + +spao-i:ScanningFormat_inScheme sh:path skos:inScheme; + sh:name "in scheme"@en; + sh:hasValue vocab:sf . + +spao-i:ScanningOrder_inScheme sh:path skos:inScheme; + sh:name "in scheme"@en; + sh:hasValue vocab:so . + +spao-i:AudioFormat_inScheme sh:path skos:inScheme; + sh:name "in scheme"@en; + sh:hasValue vocab:af . + +spao-i:VideoFormat_inScheme sh:path skos:inScheme; + sh:name "in scheme"@en; + sh:hasValue vocab:vf . + +spao-i:ContainerFormat_inScheme sh:path skos:inScheme; + sh:name "in scheme"@en; + sh:hasValue vocab:cf . + +spao-co:RecordResource sh:deactivated "true"^^xsd:boolean . + +spao-co:Record sh:deactivated "true"^^xsd:boolean . + +spao-co:RecordSet sh:deactivated "true"^^xsd:boolean . + +spao-co:RecordPart sh:deactivated "true"^^xsd:boolean . + +spao-co:ArchivalPlace sh:deactivated "true"^^xsd:boolean . + +spao-co:Event sh:deactivated "true"^^xsd:boolean . + +spao-co:Concept sh:deactivated "true"^^xsd:boolean . diff --git a/dev-page/configs/sparnatural-hierarchy-config.ttl b/dev-page/configs/sparnatural-hierarchy-config.ttl index fe91e026..a1535e65 100644 --- a/dev-page/configs/sparnatural-hierarchy-config.ttl +++ b/dev-page/configs/sparnatural-hierarchy-config.ttl @@ -91,7 +91,7 @@ this:Organization a sh:NodeShape; rdfs:label "Organization"@en, "Organisme"@fr; sh:description "An organization, i.e., a group of persons with an identity or a social status. It includes notarial offices, and all organizations mentioned in the notarial records."@en, "Un organisme, c'est-à-dire un groupe de personnes physiques ayant une identité ou un statut social. Inclut les études notariales, et toutes les collectivités mentionnées dans les archives notariales."@fr; - sh:property . + sh:property this:Personne_Organization_agentIsTargetOfPerformanceRelation_beginningDate . this:Etude a sh:NodeShape; sh:order "7"^^xsd:integer; @@ -112,7 +112,7 @@ this:Personne a sh:NodeShape; rdfs:label "Person"@en, "Personne"@fr; sh:description "Any person. It includes notaries, and any person mentioned in notarial records."@en, "Toute personne physique. Inclut les notaires, et surtout toute personne mentionnée dans les archives notariales."@fr; - sh:property . + sh:property this:Personne_Organization_agentIsTargetOfPerformanceRelation_beginningDate . this:Notaire a sh:NodeShape; sh:order "7"^^xsd:integer; @@ -155,74 +155,80 @@ this:Adresse_hasOrHadLocation sh:path rico:hasOrHadLocation; sh:order "1"; sh:name "has location"@en, "est située dans"@fr; sh:nodeKind sh:IRI; - sh:or _:17d00ff6071d48b4a355f4284ed63c332791; + sh:or _:e99289c33b654f7e8ebf0bfbdc55b464173; dash:searchWidget core:ListProperty; dash:propertyRole dash:LabelRole; datasources:datasource this:list_rdfslabel_with_range_count_langfr . -_:17d00ff6071d48b4a355f4284ed63c332791 rdf:first _:17d00ff6071d48b4a355f4284ed63c332792; - rdf:rest _:17d00ff6071d48b4a355f4284ed63c332793 . +_:e99289c33b654f7e8ebf0bfbdc55b464173 rdf:first _:e99289c33b654f7e8ebf0bfbdc55b464174; + rdf:rest _:e99289c33b654f7e8ebf0bfbdc55b464175 . -_:17d00ff6071d48b4a355f4284ed63c332792 sh:node this:Voie . +_:e99289c33b654f7e8ebf0bfbdc55b464174 sh:node this:Voie . -_:17d00ff6071d48b4a355f4284ed63c332793 rdf:first _:17d00ff6071d48b4a355f4284ed63c332794; +_:e99289c33b654f7e8ebf0bfbdc55b464175 rdf:first _:e99289c33b654f7e8ebf0bfbdc55b464176; rdf:rest rdf:nil . -_:17d00ff6071d48b4a355f4284ed63c332794 sh:node this:QuartierOuParoisse . +_:e99289c33b654f7e8ebf0bfbdc55b464176 sh:node this:QuartierOuParoisse . -this:Adresse_inversePath_hasOrHadLocation sh:path _:17d00ff6071d48b4a355f4284ed63c332795; +this:Adresse_inversePath_hasOrHadLocation sh:path _:e99289c33b654f7e8ebf0bfbdc55b464177; sh:order "2"; sh:name "is address of"@en, "est l'adresse de"@fr; sh:nodeKind sh:IRI; - sh:or _:17d00ff6071d48b4a355f4284ed63c332796; + sh:or _:e99289c33b654f7e8ebf0bfbdc55b464178; dash:searchWidget core:ListProperty; dash:propertyRole dash:LabelRole; datasources:datasource this:list_rdfslabel_with_range_count_langfr . -_:17d00ff6071d48b4a355f4284ed63c332795 sh:inversePath rico:hasOrHadLocation . +_:e99289c33b654f7e8ebf0bfbdc55b464177 sh:inversePath rico:hasOrHadLocation . -_:17d00ff6071d48b4a355f4284ed63c332796 rdf:first _:17d00ff6071d48b4a355f4284ed63c332797; - rdf:rest _:17d00ff6071d48b4a355f4284ed63c332798 . +_:e99289c33b654f7e8ebf0bfbdc55b464178 rdf:first _:e99289c33b654f7e8ebf0bfbdc55b464179; + rdf:rest _:e99289c33b654f7e8ebf0bfbdc55b464180 . -_:17d00ff6071d48b4a355f4284ed63c332797 sh:node this:Etude . +_:e99289c33b654f7e8ebf0bfbdc55b464179 sh:node this:Etude . -_:17d00ff6071d48b4a355f4284ed63c332798 rdf:first _:17d00ff6071d48b4a355f4284ed63c332799; +_:e99289c33b654f7e8ebf0bfbdc55b464180 rdf:first _:e99289c33b654f7e8ebf0bfbdc55b464181; rdf:rest rdf:nil . -_:17d00ff6071d48b4a355f4284ed63c332799 sh:node this:Notaire . +_:e99289c33b654f7e8ebf0bfbdc55b464181 sh:node this:Notaire . -this:EtudeNotaire_hasOrHadLocation_hasOrHadLocation sh:path _:17d00ff6071d48b4a355f4284ed63c332800; +this:EtudeNotaire_hasOrHadLocation_hasOrHadLocation sh:path _:e99289c33b654f7e8ebf0bfbdc55b464182; sh:order "1"; sh:name "performs an activity in the district or street"@en, "exerce dans le quartier ou la voie"@fr; sh:nodeKind sh:IRI; - sh:or _:17d00ff6071d48b4a355f4284ed63c332802; + sh:or _:e99289c33b654f7e8ebf0bfbdc55b464184; dash:searchWidget core:ListProperty; dash:propertyRole dash:LabelRole; datasources:datasource this:list_rdfslabel_with_range_count_langfr . -_:17d00ff6071d48b4a355f4284ed63c332800 rdf:first rico:hasOrHadLocation; - rdf:rest _:17d00ff6071d48b4a355f4284ed63c332801 . +_:e99289c33b654f7e8ebf0bfbdc55b464182 rdf:first rico:hasOrHadLocation; + rdf:rest _:e99289c33b654f7e8ebf0bfbdc55b464183 . -_:17d00ff6071d48b4a355f4284ed63c332801 rdf:first rico:hasOrHadLocation; +_:e99289c33b654f7e8ebf0bfbdc55b464183 rdf:first rico:hasOrHadLocation; rdf:rest rdf:nil . -_:17d00ff6071d48b4a355f4284ed63c332802 rdf:first _:17d00ff6071d48b4a355f4284ed63c332803; - rdf:rest _:17d00ff6071d48b4a355f4284ed63c332804 . +_:e99289c33b654f7e8ebf0bfbdc55b464184 rdf:first _:e99289c33b654f7e8ebf0bfbdc55b464185; + rdf:rest _:e99289c33b654f7e8ebf0bfbdc55b464186 . -_:17d00ff6071d48b4a355f4284ed63c332803 sh:node this:Voie . +_:e99289c33b654f7e8ebf0bfbdc55b464185 sh:node this:Voie . -_:17d00ff6071d48b4a355f4284ed63c332804 rdf:first _:17d00ff6071d48b4a355f4284ed63c332805; +_:e99289c33b654f7e8ebf0bfbdc55b464186 rdf:first _:e99289c33b654f7e8ebf0bfbdc55b464187; rdf:rest rdf:nil . -_:17d00ff6071d48b4a355f4284ed63c332805 sh:node this:QuartierOuParoisse . +_:e99289c33b654f7e8ebf0bfbdc55b464187 sh:node this:QuartierOuParoisse . - - sh:path "(rico:agentIsTargetOfPerformanceRelation rico:beginningDate)"; +this:Personne_Organization_agentIsTargetOfPerformanceRelation_beginningDate sh:path + _:e99289c33b654f7e8ebf0bfbdc55b464188; sh:name "has beginning date of occupation"@en, "a pour date de début d'exercice"@fr; sh:nodeKind sh:Literal; sh:datatype xsd:date; dash:searchWidget core:TimeProperty-Date . +_:e99289c33b654f7e8ebf0bfbdc55b464188 rdf:first rico:agentIsTargetOfPerformanceRelation; + rdf:rest _:e99289c33b654f7e8ebf0bfbdc55b464189 . + +_:e99289c33b654f7e8ebf0bfbdc55b464189 rdf:first rico:beginningDate; + rdf:rest rdf:nil . + this:list_rdfslabel_with_range_count_langfr a datasources:SparqlDatasource; datasources:queryTemplate this:query_list_label_with_range_count_langfr; datasources:labelProperty rdfs:label . diff --git a/dev-page/configs/sparnatural-hierarchy-config.xlsx b/dev-page/configs/sparnatural-hierarchy-config.xlsx index 75dae27d3f858ded88efd32bee475abd11ce4e23..24cd71d55a8045b76c5a5137e371e902de520942 100644 GIT binary patch delta 23774 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 D5TXDH delta 24291 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 bMS8_(@F8Oa2yz^- diff --git a/dev-page/index.html b/dev-page/index.html index 23129a02..9609ccb0 100644 --- a/dev-page/index.html +++ b/dev-page/index.html @@ -57,8 +57,11 @@ + + + Date: Thu, 29 Aug 2024 19:01:31 +0200 Subject: [PATCH 21/55] Return only icon code + fix property Dag + delete JSONLD provider --- .../ObjectPropertyTypeId.ts | 2 + src/sparnatural/dag/Dag.ts | 8 +- .../spec-providers/ISpecificationEntry.ts | 2 +- .../SparnaturalSpecificationFactory.ts | 66 ++--- .../jsonld/JsonLdSpecificationEntity.ts | 127 --------- .../jsonld/JsonLdSpecificationEntry.ts | 136 --------- .../jsonld/JsonLdSpecificationProperty.ts | 264 ------------------ .../jsonld/JsonLdSpecificationProvider.ts | 218 --------------- .../owl/OWLSpecificationEntry.ts | 33 +-- .../shacl/SHACLSpecificationEntity.ts | 2 +- .../shacl/SHACLSpecificationEntry.ts | 16 +- 11 files changed, 49 insertions(+), 825 deletions(-) delete mode 100644 src/sparnatural/spec-providers/jsonld/JsonLdSpecificationEntity.ts delete mode 100644 src/sparnatural/spec-providers/jsonld/JsonLdSpecificationEntry.ts delete mode 100644 src/sparnatural/spec-providers/jsonld/JsonLdSpecificationProperty.ts delete mode 100644 src/sparnatural/spec-providers/jsonld/JsonLdSpecificationProvider.ts diff --git a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/objectpropertygroup/ObjectPropertyTypeId.ts b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/objectpropertygroup/ObjectPropertyTypeId.ts index 3b2124a8..5ab2489f 100644 --- a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/objectpropertygroup/ObjectPropertyTypeId.ts +++ b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/objectpropertygroup/ObjectPropertyTypeId.ts @@ -124,6 +124,8 @@ class PropertySelectBuilder { ) { this.items = this.specProvider.getEntity(domainClassID).getConnectingProperties(rangeClassID); + console.log(this.specProvider.getEntity(domainClassID).getConnectingPropertiesTree(rangeClassID)) + if (this.items.length > 1) { return this.#multipleConnectingProperty(this.items); } diff --git a/src/sparnatural/dag/Dag.ts b/src/sparnatural/dag/Dag.ts index 20e728fc..97cd86db 100644 --- a/src/sparnatural/dag/Dag.ts +++ b/src/sparnatural/dag/Dag.ts @@ -72,8 +72,8 @@ export class Dag implements DagIfc { dataMap.set(item.getId(), item); }); - let hierarchyMap:Map = new Map(); - this.initFromFlatList(hierarchyMap, dataMap, new Array()); + + this.initFromFlatList(hierarchy, dataMap, new Array()); } /** @@ -99,7 +99,11 @@ export class Dag implements DagIfc { data.forEach((item)=> { dataMap.set(item.getId(), item); }); + // empty hierarchy map let hierarchyMap:Map = new Map(); + data.forEach((item)=> { + hierarchyMap.set(item.getId(), []); + }); this.initFromFlatList(hierarchyMap, dataMap, new Array()); } diff --git a/src/sparnatural/spec-providers/ISpecificationEntry.ts b/src/sparnatural/spec-providers/ISpecificationEntry.ts index fa0bb031..afbbf087 100644 --- a/src/sparnatural/spec-providers/ISpecificationEntry.ts +++ b/src/sparnatural/spec-providers/ISpecificationEntry.ts @@ -11,7 +11,7 @@ export default interface ISpecificationEntry { getLabel(): string; getTooltip(): string|undefined; - getIcon(): string; + getIcon(): string|undefined; getHighlightedIcon(): string|undefined; getColor(): string|undefined; diff --git a/src/sparnatural/spec-providers/SparnaturalSpecificationFactory.ts b/src/sparnatural/spec-providers/SparnaturalSpecificationFactory.ts index 7417d6a8..d36b3960 100644 --- a/src/sparnatural/spec-providers/SparnaturalSpecificationFactory.ts +++ b/src/sparnatural/spec-providers/SparnaturalSpecificationFactory.ts @@ -1,7 +1,6 @@ import { DataFactory } from 'rdf-data-factory'; import { RdfStore } from "rdf-stores"; import { BaseRDFReader, RDF } from "./BaseRDFReader"; -import JsonLdSpecificationProvider from "./jsonld//JsonLdSpecificationProvider"; import { OWLSpecificationProvider } from "./owl//OWLSpecificationProvider"; import { SH, SHACLSpecificationProvider } from "./shacl/SHACLSpecificationProvider"; @@ -10,10 +9,7 @@ let DF = new DataFactory(); class SparnaturalSpecificationFactory { build(cfg:any, language:string, callback:any) { - if (typeof cfg == "object") { - // if the config is a JSON object in the page, read it directly - callback(new JsonLdSpecificationProvider(cfg, language)); - } else if (cfg.includes("@prefix") || cfg.includes(" { if(theStore.asDataset().has( @@ -38,45 +34,31 @@ class SparnaturalSpecificationFactory { } }); } else { - if (cfg.includes("json")) { - // if it contains "json" parse the result as JSON - $.when( - $.getJSON(cfg, function (data) { - callback(new JsonLdSpecificationProvider(data, language)); - }).fail(function (response) { - console.error( - "Sparnatural - unable to load JSON config file : " + cfg - ); - }) - ).done(function () {}); - } else { - - let configs = (cfg as string).split(" "); - console.log("Configuring from " + configs.length + " configs"); + let configs = (cfg as string).split(" "); + console.log("Configuring from " + configs.length + " configs"); - BaseRDFReader.buildStore(configs, (theStore:RdfStore) => { - if(theStore.asDataset().has( - DF.quad( - null, - RDF.TYPE, - SH.NODE_SHAPE, - null - ) - )) { - let provider = new SHACLSpecificationProvider( - theStore, - language - ); - callback(provider); - } else { - let provider = new OWLSpecificationProvider( - theStore, - language - ); - callback(provider); - } - }); + BaseRDFReader.buildStore(configs, (theStore:RdfStore) => { + if(theStore.asDataset().has( + DF.quad( + null, + RDF.TYPE, + SH.NODE_SHAPE, + null + ) + )) { + let provider = new SHACLSpecificationProvider( + theStore, + language + ); + callback(provider); + } else { + let provider = new OWLSpecificationProvider( + theStore, + language + ); + callback(provider); } + }); } } } diff --git a/src/sparnatural/spec-providers/jsonld/JsonLdSpecificationEntity.ts b/src/sparnatural/spec-providers/jsonld/JsonLdSpecificationEntity.ts deleted file mode 100644 index d24869c2..00000000 --- a/src/sparnatural/spec-providers/jsonld/JsonLdSpecificationEntity.ts +++ /dev/null @@ -1,127 +0,0 @@ -import { DagIfc, Dag } from "../../dag/Dag"; -import { Config } from "../../ontologies/SparnaturalConfig"; -import ISpecificationEntity from "../ISpecificationEntity"; -import JsonLdSpecificationEntry from "./JsonLdSpecificationEntry"; -import JsonLdSpecificationProperty from "./JsonLdSpecificationProperty"; -import JsonLdSpecificationProvider from "./JsonLdSpecificationProvider"; -import ISpecificationProperty from "../ISpecificationProperty"; - -export default class JsonLdSpecificationEntity extends JsonLdSpecificationEntry implements ISpecificationEntity { - constructor(jsonSpecs:any, provider:JsonLdSpecificationProvider, id:string, lang:string) { - super(jsonSpecs, provider, id, lang); - } - - - getConnectedEntities(): string[] { - var items: any[] = []; - - for (var j in this.jsonSpecs["@graph"]) { - var item = this.jsonSpecs["@graph"][j]; - if (JsonLdSpecificationProvider._isObjectProperty(item)) { - let prop:JsonLdSpecificationProperty = new JsonLdSpecificationProperty(this.jsonSpecs, this.provider, item["@id"], this.lang); - if (prop.readDomain().indexOf(this.id) >= 0) { - var values = prop.getRange(); - for (var i in values) { - items = JsonLdSpecificationProvider.pushIfNotExist(values[i], items); - } - } - } - } - - // sort resulting array to garantee classes appear in the order - // they are declared in the specs - items = this._sortItemsByIndex(items); - - return items; - } - - getConnectedEntitiesTree(): DagIfc { - return new Dag(); - } - - hasConnectedEntities(): boolean { - return this.getConnectedEntities().length > 0; - } - - getConnectingProperties(range: string): string[] { - var items: any[] = []; - - for (var i in this.jsonSpecs["@graph"]) { - var item = this.jsonSpecs["@graph"][i]; - if (JsonLdSpecificationProvider._isObjectProperty(item)) { - let prop:JsonLdSpecificationProperty = new JsonLdSpecificationProperty(this.jsonSpecs, this.provider, item["@id"], this.lang); - if ( - (prop.readDomain().indexOf(this.id) >= 0) && - (range === null || prop.getRange().indexOf(range) >= 0) - ) { - items = JsonLdSpecificationProvider.pushIfNotExist(item["@id"], items); - } - } - } - - return items; - } - - - /** - * Return the tree of properties connecting this entity to the specified range entity - * @param range The URI of the selected target entity - * @returns - */ - getConnectingPropertiesTree(range: string): DagIfc { - // 1. get list of properties - let entities:ISpecificationProperty[] = this.getConnectingProperties(range).map(s => this.provider.getProperty(s)) as ISpecificationProperty[]; - - // 2. turn it into a flat tree - let dag:Dag = new Dag(); - dag.initFlatTreeFromFlatList(entities); - return dag; - } - - isLiteralEntity(): boolean { - var classEntity = JsonLdSpecificationProvider.getResourceById(this.id, this.jsonSpecs); - if(classEntity == null) return false; - - if (classEntity && classEntity["subClassOf"]) { - var superClasses = - classEntity["subClassOf"] === "object" - ? classEntity["subClassOf"] - : new Array(classEntity["subClassOf"]); - for (var i in superClasses) { - var value = superClasses[i]; - if (this._expand(value) == Config.RDFS_LITERAL) { - return true; - } - } - } - - return false; - } - - hasTypeCriteria(): boolean { - var classEntity = JsonLdSpecificationProvider.getResourceById(this.id, this.jsonSpecs); - if(classEntity == null) return false; - - if (classEntity["subClassOf"]) { - var superClasses = - classEntity["subClassOf"] === "object" - ? classEntity["subClassOf"] - : new Array(classEntity["subClassOf"]); - for (var i in superClasses) { - var value = superClasses[i]; - if (this._expand(value) == Config.NOT_INSTANTIATED_CLASS) { - return true; - } - } - } - - return false; - } - - - - getDefaultLabelProperty(): string | undefined { - return this._readValue(this.id, "defaultLabelProperty"); - } - -} \ No newline at end of file diff --git a/src/sparnatural/spec-providers/jsonld/JsonLdSpecificationEntry.ts b/src/sparnatural/spec-providers/jsonld/JsonLdSpecificationEntry.ts deleted file mode 100644 index 707e314d..00000000 --- a/src/sparnatural/spec-providers/jsonld/JsonLdSpecificationEntry.ts +++ /dev/null @@ -1,136 +0,0 @@ -import Datasources from "../../ontologies/SparnaturalConfigDatasources"; -import ISpecificationEntry from "../ISpecificationEntry"; -import JsonLdSpecificationProvider from "./JsonLdSpecificationProvider"; - -export default class JsonLdSpecificationEntry implements ISpecificationEntry { - id:string; - provider:JsonLdSpecificationProvider; - jsonSpecs:any; - lang:string; - - - constructor(jsonSpecs:any, provider:JsonLdSpecificationProvider, id:string, lang:string) { - this.id = id; - this.provider = provider; - this.jsonSpecs = jsonSpecs; - this.lang = lang; - } - - getId(): string { - return this.id; - } - - getLabel(): string { - var item = JsonLdSpecificationProvider.getResourceById(this.id, this.jsonSpecs); - if (item !== null) { - for (var i in item["label"]) { - var aLabel = item["label"][i]; - if (aLabel["@language"] == this.lang) { - return aLabel["@value"]; - } - } - } - return ""; - } - - getTooltip(): string { - var item = JsonLdSpecificationProvider.getResourceById(this.id, this.jsonSpecs); - if (item !== null) { - for (var i in item["tooltip"]) { - var aLabel = item["tooltip"][i]; - if (aLabel["@language"] == this.lang) { - return aLabel["@value"]; - } - } - } - - return ""; - } - - getColor(): string|undefined { - var item = JsonLdSpecificationProvider.getResourceById(this.id, this.jsonSpecs); - if (item !== null) { - return item["color"]; - } - } - - getIcon(): string { - if (JsonLdSpecificationProvider.getResourceById(this.id, this.jsonSpecs)["faIcon"] != null) { - // use of fa-fw for fixed-width icons - return ( - " " - ); - } else if (JsonLdSpecificationProvider.getResourceById(this.id, this.jsonSpecs)["icon"] != null) { - - return JsonLdSpecificationProvider.getResourceById(this.id, this.jsonSpecs)["icon"] - } else { - // this is ugly, just so it aligns with other entries having an icon - return "     "; - } - } - - getHighlightedIcon(): string { - return JsonLdSpecificationProvider.getResourceById(this.id, this.jsonSpecs)["highlightedIcon"]; - } - - getOrder(): string { - return this.jsonSpecs["@graph"].indexOf(JsonLdSpecificationProvider.getResourceById(this.id, this.jsonSpecs)); - } - - getParents(): string[] { - return []; - } - - - protected _readValue(id: any, key: string | number) { - var theObject = JsonLdSpecificationProvider.getResourceById(id, this.jsonSpecs); - - if (theObject !== null && theObject[key]) { - return theObject[key]; - } - }; - - protected _sortItemsByIndex(items: any[]) { - var me = this; - items.sort(function (c1: any, c2: any) { - const c1Value = me.jsonSpecs["@graph"].indexOf(JsonLdSpecificationProvider.getResourceById(c1, me.jsonSpecs)); - const c2Value = me.jsonSpecs["@graph"].indexOf(JsonLdSpecificationProvider.getResourceById(c2, me.jsonSpecs)); - - let comparison = 0; - if (c1Value > c2Value) { - comparison = 1; - } else if (c1Value < c2Value) { - comparison = -1; - } - return comparison; - }); - - return items; - }; - - protected _expand(id: string) { - if (id.startsWith("http")) { - return id; - } - - if (id.indexOf(":") >= 0) { - let prefix = id.split(":")[0]; - if (this.jsonSpecs["@context"][prefix] == null) { - // can't do anything - return id; - } else { - return this.jsonSpecs["@context"][prefix] + id.split(":")[1]; - } - } else { - if (this.jsonSpecs["@context"]["@vocab"] == null) { - // can't do anything - return id; - } else { - return this.jsonSpecs["@context"]["@vocab"] + id; - } - } - }; - -} \ No newline at end of file diff --git a/src/sparnatural/spec-providers/jsonld/JsonLdSpecificationProperty.ts b/src/sparnatural/spec-providers/jsonld/JsonLdSpecificationProperty.ts deleted file mode 100644 index e3c9dee0..00000000 --- a/src/sparnatural/spec-providers/jsonld/JsonLdSpecificationProperty.ts +++ /dev/null @@ -1,264 +0,0 @@ -import { Term } from "@rdfjs/types"; -import Datasources from "../../ontologies/SparnaturalConfigDatasources"; -import ISpecificationProperty from "../ISpecificationProperty"; -import JsonLdSpecificationEntry from "./JsonLdSpecificationEntry"; -import JsonLdSpecificationProvider from "./JsonLdSpecificationProvider"; - -enum WIDGETSTYPES { - "sparnatural:AutocompleteProperty", - "sparnatural:ListProperty", - "sparnatural:LiteralListProperty", - "sparnatural:SearchProperty", - "sparnatural:StringEqualsProperty", - "sparnatural:GraphDBSearchProperty", - "sparnatural:VirtuosoSearchProperty", - "sparnatural:TimeProperty-Year", - "sparnatural:TimeProperty-Date", - "sparnatural:TimeProperty-Period", - "sparnatural:NonSelectableProperty", - "sparnatural:BooleanProperty", - "sparnatural:TreeProperty", - "sparnatural:MapProperty", -} - -interface IDataSources { - // one of queryString or queryTemplate must be set - queryString?: string; - queryTemplate?: any; - - labelPath?: any; - labelProperty?: any; - // one of childrenPath or childrenProperty must be present if queryTemplate is set, only for Trees datasource - childrenPath?: any; - childrenProperty?: any; - // optional - sparqlEndpointUrl?: any; - // optional - noSort?: any; -} - -export default class JsonLdSpecificationProperty extends JsonLdSpecificationEntry implements ISpecificationProperty { - constructor(jsonSpecs:any, provider:JsonLdSpecificationProvider, id:string, lang:string) { - if (id != null && typeof id === "object") { - throw Error("Property expects a string id"); - } - - super(jsonSpecs, provider, id, lang); - } - - getRange(): string[] { - return this.#readDomainOrRange("range"); - } - - getPropertyType(range:string): string|undefined { - var objectProperty = JsonLdSpecificationProvider.getResourceById(this.id, this.jsonSpecs); - if(objectProperty == null) return undefined; - - var superProperties = - objectProperty["subPropertyOf"] === "object" - ? objectProperty["subPropertyOf"] - : new Array(objectProperty["subPropertyOf"]); - - for (var i in superProperties) { - var value = superProperties[i]; - - if (value in WIDGETSTYPES) { - return this._expand(value); - } - throw Error( - `Couldn't find object property type for ${value}. Make sure there is a Widget for this object property type!` - ); - } - } - - getDatasource() { - var propertyOrClass = JsonLdSpecificationProvider.getResourceById(this.id, this.jsonSpecs); - return this.#_buildDatasource(propertyOrClass["datasource"]); - } - - getTreeChildrenDatasource() { - var propertyOrClass = JsonLdSpecificationProvider.getResourceById(this.id, this.jsonSpecs); - return this.#_buildDatasource(propertyOrClass["treeRootsDatasource"]); - } - getTreeRootsDatasource() { - var propertyOrClass = JsonLdSpecificationProvider.getResourceById(this.id, this.jsonSpecs); - return this.#_buildDatasource(propertyOrClass["treeChildrenDatasource"]); - } - - /** - * { - * queryString: "...", - * queryTemplate: "...", - * labelPath: "...", - * labelProperty: "...", - * childrenPath: "...", - * childrenProperty: "..." - * } - **/ - #_buildDatasource(datasourceObject: { [x: string]: any }|string) { - if (datasourceObject == null) { - return null; - } - - var datasource: IDataSources = {}; - - if (datasource && this.#isDataSourceObject(datasourceObject)) { - // if datasource is an object... - - // Alternative 1 : read optional queryString - datasource.queryString = datasourceObject["queryString"]; - - // Alternative 2 : queryTemplate + labelPath - var queryTemplate = datasourceObject["queryTemplate"]; - - if (queryTemplate != null) { - var expandedQueryTemplate = this._expand(queryTemplate); - var knownQueryTemplate = - Datasources.QUERY_STRINGS_BY_QUERY_TEMPLATE.get( - expandedQueryTemplate - ); - if (knownQueryTemplate != null) { - // 2.1 It is known in default Sparnatural ontology - datasource.queryTemplate = knownQueryTemplate; - } else { - // 2.2 Unknown, could be defined in the config itself - // TODO - console.error( - "Reference to custom query template currently unsupported in JSON config" - ); - } - } - - // labelPath - datasource.labelPath = datasourceObject["labelPath"]; - - // labelProperty - datasource.labelProperty = datasourceObject["labelProperty"]; - - // childrenPath - datasource.childrenPath = datasourceObject["childrenPath"]; - - // childrenProperty - datasource.childrenProperty = datasourceObject["childrenProperty"]; - - // read optional sparqlEndpointUrl - datasource.sparqlEndpointUrl = datasourceObject["sparqlEndpointUrl"]; - - // read optional noSort - datasource.noSort = datasourceObject["noSort"]; - } else { - // if datasource is a URI... - // look it up in known datasources config - datasource = Datasources.DATASOURCES_CONFIG.get( - this._expand(datasourceObject as string) - ); - if (datasource == null) { - // look it up in the config - console.error( - "Reference to custom datasource URI currently unsupported in JSON config" - ); - } - } - - return datasource; - }; - - #isDataSourceObject(val:any): val is IDataSources{ - const isObj = ( - typeof val === 'object' && - val !== null && - !Array.isArray(val) && - typeof val !== 'string' - ) - - return isObj && ("queryString" in val || "queryTemplate" in val) - } - - getMinValue():string|undefined { - return undefined; - } - - getMaxValue():string|undefined { - return undefined; - } - - getValues():Term[] | undefined { - return undefined; - } - - isMultilingual(): boolean { - var item = JsonLdSpecificationProvider.getResourceById(this.id, this.jsonSpecs); - if (item !== null) { - return item["isMultilingual"] == true; - } - - return false; - } - - omitClassCriteria(): boolean { - return false; - } - - getBeginDateProperty(): string | undefined { - return this._readValue(this.id, "beginDateProperty"); - } - - getEndDateProperty(): string | undefined { - return this._readValue(this.id, "endDateProperty"); - } - - getExactDateProperty(): string | undefined { - return this._readValue(this.id, "exactDateProperty"); - } - - isEnablingNegation(): boolean { - var item = JsonLdSpecificationProvider.getResourceById(this.id, this.jsonSpecs); - if (item !== null) { - return item["enableNegation"] == true; - } - - return false; - } - - isEnablingOptional(): boolean { - var item = JsonLdSpecificationProvider.getResourceById(this.id, this.jsonSpecs); - if (item !== null) { - return item["enableOptional"] == true; - } - - return false; - } - - getServiceEndpoint(): string | undefined { - const serviceId = this._readValue(this.id,"sparqlService") - if (serviceId) return this._readValue(serviceId,"endpoint") - } - - isLogicallyExecutedAfter(): boolean { - const executedAfter = this._readValue(this.id,"executedAfter"); - return executedAfter?executedAfter:false; - } - - readDomain() { - return this.#readDomainOrRange("domain"); - }; - - #readDomainOrRange(domainOrRange: string) : string[] { - var result = new Array(); - var item = JsonLdSpecificationProvider.getResourceById(this.id, this.jsonSpecs); - if(item == null) return result; - - if (typeof item[domainOrRange] === "object") { - for (var i in item[domainOrRange]["unionOf"]["@list"]) { - var value = item[domainOrRange]["unionOf"]["@list"][i]; - result.push(value["@id"] as string); - } - } else if (item[domainOrRange]) { - result.push(item[domainOrRange]); - } - - return result; - }; - - -} \ No newline at end of file diff --git a/src/sparnatural/spec-providers/jsonld/JsonLdSpecificationProvider.ts b/src/sparnatural/spec-providers/jsonld/JsonLdSpecificationProvider.ts deleted file mode 100644 index a62b4d8f..00000000 --- a/src/sparnatural/spec-providers/jsonld/JsonLdSpecificationProvider.ts +++ /dev/null @@ -1,218 +0,0 @@ -import ISparnaturalSpecification from "../ISparnaturalSpecification"; -import ISpecificationEntity from "../ISpecificationEntity"; -import JsonLdSpecificationEntity from "./JsonLdSpecificationEntity"; -import ISpecificationProperty from "../ISpecificationProperty"; -import JsonLdSpecificationProperty from "./JsonLdSpecificationProperty"; -import { Dag, DagIfc } from "../../dag/Dag"; - -interface IDataSources { - // one of queryString or queryTemplate must be set - queryString?: string; - queryTemplate?: any; - - labelPath?: any; - labelProperty?: any; - // one of childrenPath or childrenProperty must be present if queryTemplate is set, only for Trees datasource - childrenPath?: any; - childrenProperty?: any; - // optional - sparqlEndpointUrl?: any; - // optional - noSort?: any; -} - -enum WIDGETSTYPES { - "sparnatural:AutocompleteProperty", - "sparnatural:ListProperty", - "sparnatural:LiteralListProperty", - "sparnatural:SearchProperty", - "sparnatural:StringEqualsProperty", - "sparnatural:VirtuosoSearchProperty", - "sparnatural:GraphDBSearchProperty", - "sparnatural:TimeProperty-Year", - "sparnatural:TimeProperty-Date", - "sparnatural:TimeProperty-Period", - "sparnatural:NonSelectableProperty", - "sparnatural:BooleanProperty", - "sparnatural:TreeProperty", - "sparnatural:MapProperty", -} - -export default class JsonLdSpecificationProvider implements ISparnaturalSpecification { - jsonSpecs: any; - lang: any; - constructor(specs: any, lang: any) { - this.jsonSpecs = specs; - this.lang = lang; - } - - - getEntity(entityUri: string): ISpecificationEntity { - return new JsonLdSpecificationEntity( - this.jsonSpecs, - this, - entityUri, - this.lang - ); - } - - getProperty(property: string): ISpecificationProperty { - return new JsonLdSpecificationProperty( - this.jsonSpecs, - this, - property, - this.lang - ); - } - - getAllSparnaturalEntities() { - var classes = this.getEntitiesInDomainOfAnyProperty(); - // copy initial array - var result = classes.slice(); - // now look for all classes we can reach from this class list - for (const aClass of classes) { - let c = new JsonLdSpecificationEntity(this.jsonSpecs, this, aClass, this.lang); - var connectedClasses = c.getConnectedEntities(); - for (const aConnectedClass of connectedClasses) { - JsonLdSpecificationProvider.pushIfNotExist(aConnectedClass, result); - } - } - return result; - }; - - getLanguages(): string[] { - - let languages:Set = new Set(); - for (var j in this.jsonSpecs["@graph"]) { - var item = this.jsonSpecs["@graph"][j]; - for (var i in item["label"]) { - var aLabel = item["label"][i]; - languages.add(aLabel["@language"]); - } - } - return [...languages]; - } - - /* - Reads "first-level" classes, i.e. classes that are in the domain - of at least one property that connects them to other classes - */ - getEntitiesInDomainOfAnyProperty() { - var items: any[] = []; - - for (var j in this.jsonSpecs["@graph"]) { - var item = this.jsonSpecs["@graph"][j]; - if (JsonLdSpecificationProvider._isObjectProperty(item)) { - let prop = new JsonLdSpecificationProperty(this.jsonSpecs, this, item["@id"], this.lang); - var domains = prop.readDomain(); - for (var i in domains) { - var aClass = domains[i]; - let c = new JsonLdSpecificationEntity(this.jsonSpecs, this, aClass, this.lang); - // always exclude RemoteClasses from first list - if (!c.hasTypeCriteria()) { - items = JsonLdSpecificationProvider.pushIfNotExist(aClass, items); - } - } - } - } - - // sort resulting array to garantee classes appear in the order - // they are declared in the specs - items = this._sortItemsByIndex(items); - - return items; - }; - - getEntitiesTreeInDomainOfAnyProperty(): DagIfc { - throw new Dag(); - } - - - expandSparql(sparql: string) { - for (var i in this.jsonSpecs["@graph"]) { - var item = this.jsonSpecs["@graph"][i]; - - if (item["sparqlString"] != null) { - var re = new RegExp("<" + item["@id"] + ">", "g"); - sparql = sparql.replace(re, item["sparqlString"]); - } - } - - return sparql; - }; - - public static _isObjectProperty(item: { [x: string]: any }) { - if (typeof item["@type"] === "object") { - for (var i in item["@type"]) { - var value = item["@type"][i]; - if (value == "ObjectProperty") { - return true; - } - } - - return false; - } else { - return item["@type"] == "ObjectProperty"; - } - }; - - public static pushIfNotExist(item: any, items: any[]) { - if (items.indexOf(item) < 0) { - items.push(item); - } - - return items; - }; - - public static getResourceById = function (id: any, jsonSpecs:any) { - for (var i in jsonSpecs["@graph"]) { - var anEntry = jsonSpecs["@graph"][i]; - if (anEntry["@id"] == id) { - return anEntry; - } - } - return null; - }; - - _sortItemsByIndex(items: any[]) { - var me = this; - items.sort(function (c1: any, c2: any) { - const c1Value = me.jsonSpecs["@graph"].indexOf(JsonLdSpecificationProvider.getResourceById(c1, me.jsonSpecs)); - const c2Value = me.jsonSpecs["@graph"].indexOf(JsonLdSpecificationProvider.getResourceById(c2, me.jsonSpecs)); - - let comparison = 0; - if (c1Value > c2Value) { - comparison = 1; - } else if (c1Value < c2Value) { - comparison = -1; - } - return comparison; - }); - - return items; - }; - - _expand(id: string) { - if (id.startsWith("http")) { - return id; - } - - if (id.indexOf(":") >= 0) { - let prefix = id.split(":")[0]; - if (this.jsonSpecs["@context"][prefix] == null) { - // can't do anything - return id; - } else { - return this.jsonSpecs["@context"][prefix] + id.split(":")[1]; - } - } else { - if (this.jsonSpecs["@context"]["@vocab"] == null) { - // can't do anything - return id; - } else { - return this.jsonSpecs["@context"]["@vocab"] + id; - } - } - }; - -} diff --git a/src/sparnatural/spec-providers/owl/OWLSpecificationEntry.ts b/src/sparnatural/spec-providers/owl/OWLSpecificationEntry.ts index d08b07fd..148e36df 100644 --- a/src/sparnatural/spec-providers/owl/OWLSpecificationEntry.ts +++ b/src/sparnatural/spec-providers/owl/OWLSpecificationEntry.ts @@ -52,26 +52,19 @@ export class OWLSpecificationEntry extends BaseRDFReader implements ISpecificati } getIcon(): string { - var faIcon = this.graph.readProperty( - factory.namedNode(this.uri), - factory.namedNode(Config.FA_ICON) - ); - if (faIcon.length > 0) { - // use of fa-fw for fixed-width icons - return ( - " " - ); - } else { - var icons = this.graph.readProperty(factory.namedNode(this.uri), factory.namedNode(Config.ICON)); - if (icons.length > 0) { - return icons[0].value; - } else { - // this is ugly, just so it aligns with other entries having an icon - return "     "; - } - } + var faIcon = this.graph.readProperty( + factory.namedNode(this.uri), + VOLIPI.ICON_NAME + ); + + if (faIcon.length > 0) { + return faIcon[0].value; + } else { + var icons = this.graph.readProperty(factory.namedNode(this.uri), VOLIPI.ICON); + if (icons.length > 0) { + return icons[0].value; + } + } } getHighlightedIcon(): string|undefined { diff --git a/src/sparnatural/spec-providers/shacl/SHACLSpecificationEntity.ts b/src/sparnatural/spec-providers/shacl/SHACLSpecificationEntity.ts index efa53e0b..f5f3e565 100644 --- a/src/sparnatural/spec-providers/shacl/SHACLSpecificationEntity.ts +++ b/src/sparnatural/spec-providers/shacl/SHACLSpecificationEntity.ts @@ -522,7 +522,7 @@ export class SpecialSHACLSpecificationEntity implements ISHACLSpecificationEntit } getIcon(): string { - return SHACLSpecificationEntry.buildIconHtml(this.icon); + return this.icon; } getHighlightedIcon(): string { diff --git a/src/sparnatural/spec-providers/shacl/SHACLSpecificationEntry.ts b/src/sparnatural/spec-providers/shacl/SHACLSpecificationEntry.ts index b7c3a570..49591b04 100644 --- a/src/sparnatural/spec-providers/shacl/SHACLSpecificationEntry.ts +++ b/src/sparnatural/spec-providers/shacl/SHACLSpecificationEntry.ts @@ -38,27 +38,15 @@ export abstract class SHACLSpecificationEntry extends BaseRDFReader implements I ); if (faIcon.length > 0) { - return SHACLSpecificationEntry.buildIconHtml(faIcon[0].value); + return faIcon[0].value; } else { var icons = this.graph.readProperty(factory.namedNode(this.uri), VOLIPI.ICON); if (icons.length > 0) { return icons[0].value; - } else { - // this is ugly, just so it aligns with other entries having an icon - return "     "; - } + } } } - static buildIconHtml(iconCode:string) { - // use of fa-fw for fixed-width icons - return ( - " " - ); - } - /** * @returns always return an empty icon. TODO : implement */ From 6146b461984f73564a531b7ec4d46746721e734d Mon Sep 17 00:00:00 2001 From: antoine37120 Date: Tue, 3 Sep 2024 18:25:37 +0200 Subject: [PATCH 22/55] new icons by class + fix height after init + shadow + top align + border radius --- .../hierarchicalclassselectbuilder.scss | 22 ++++++-- .../startendclassgroup/ClassTypeId.ts | 3 +- .../HierarchicalClassSelectBuilder.ts | 56 +++++++++++++++++-- 3 files changed, 70 insertions(+), 11 deletions(-) diff --git a/src/assets/stylesheets/components/citeriagroup/startendclassgroup/hierarchicalclassselectbuilder.scss b/src/assets/stylesheets/components/citeriagroup/startendclassgroup/hierarchicalclassselectbuilder.scss index e60ebd51..a2ca00a2 100644 --- a/src/assets/stylesheets/components/citeriagroup/startendclassgroup/hierarchicalclassselectbuilder.scss +++ b/src/assets/stylesheets/components/citeriagroup/startendclassgroup/hierarchicalclassselectbuilder.scss @@ -1,3 +1,6 @@ +@use '../../../base'; +@use '../../../mixins'; + .ClassTypeId.Highlited .htmlSelectUiUx .currentWrapper { border-radius: unset; @@ -90,11 +93,16 @@ position: absolute; width: 345px; height: 400px; + top: base.$height-components - 4 ; + z-index: 2; transition-property: height; transition-duration: 0.1s; transition-delay: 0; + + border-radius: 4px; + box-shadow: 0px 0px 8px 0px #00000026; } ul { @@ -119,8 +127,11 @@ transition-delay: 0; z-index: 1000; + + + &.active-pane { - display: inline-block; + /*display: inline-block;*/ margin-left: 0; /*transition-property: margin-left; transition-duration: 1s; @@ -160,9 +171,8 @@ /*text-indent: -4px;*/ } } - &.disabled span.item-sel { - opacity: 0.7; - cursor: default; + &.disabled span.item-traverse { + border-left: 1px solid transparent; } span.item-traverse { @@ -200,8 +210,8 @@ } } - &.disabled>span.item-sel:hover { - background-color: initial ; + &.disabled:hover { + background-color: var(--primary-color-light) ; } } diff --git a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/ClassTypeId.ts b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/ClassTypeId.ts index 237d75c6..bb12d0e2 100644 --- a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/ClassTypeId.ts +++ b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/ClassTypeId.ts @@ -79,6 +79,7 @@ class ClassTypeId extends HTMLComponent { // convert to niceSelect: https://jqueryniceselect.hernansartorio.com/ // needs to happen after html.append(). it uses rendered stuff on page to create a new select... should move away from that this.oldWidget = this.selectBuilder.selectBuilder.getInput(); + this.selectBuilder.selectBuilder.initSelectUiUxListsHeight() ; //force init heigh after dominsertion. //this.widgetHtml = this.widgetHtml.niceSelect(); // nice-select is not a proper select tag and that's why can't listen for change events... move away from nice-select! this.#addOnChangeListener(this.oldWidget); @@ -256,7 +257,7 @@ class ClassSelectBuilder extends HTMLComponent { elements.forEach(element => { let disabled = false ; let icon = element.payload.getIcon() ; - if (icon == '') { + if (icon == undefined) { icon = default_icon ; } diff --git a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts index 7f237908..a45be8d4 100644 --- a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts +++ b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts @@ -47,6 +47,7 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { htmlSelectUiUxLists: JQuery; htmlInputValueClass: JQuery; htmlInputValuePath: JQuery; + htmlInputValueIcon: JQuery; htmlCurentValue: JQuery; breadcrumItems: Array = []; hierarchyData: Array = []; @@ -90,10 +91,17 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { setCurrentContent() { let entity_path = this.htmlInputValuePath.val() as string; let entity_id = this.htmlInputValueClass.val() as string; + let entity_icon = this.htmlInputValueIcon.val() as string; + + + let icon = `` ; + if (entity_icon != '') { + icon = `` ; + } let entity = this.specProvider.getEntity(entity_id) ; - this.htmlCurentValue.html(`${entity.getIcon()} ${entity.getLabel()} `) ; + this.htmlCurentValue.html(`${icon} ${entity.getLabel()} `) ; } initSelectUiUxListsHeight() { @@ -142,6 +150,33 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { ); } } + + let li_elements_disabled = this.htmlSelectUiUx[0].querySelectorAll('li.disabled'); + //let ul_elements = this.htmlSelectUiUx[0].querySelectorAll('ul') ; + for (var element of li_elements_disabled) { + //let class_id = element.getAttribute('value') ; + let class_childs_list_id = element.getAttribute('list-child-id') ; + //Search in all ul if have parent attr with this class_id + let hasChild = this.htmlSelectUiUx[0].querySelector('ul[parent="'+class_childs_list_id+'"]'); + if (hasChild !== null) { + element.classList.add("have-childs"); + // if parent is after in dom move before + /*if(this.parentIsAfter( element.parentElement, hasChild ) ) { + element.parentElement.before(hasChild); + }*/ + //element.querySelector('span.item-traverse'); + element.querySelector('span.item-sel').addEventListener( + "click", + (e: CustomEvent) => { + let class_target = (e.target as any).closest('li').getAttribute('list-child-id') ; + this.htmlSelectUiUx[0].querySelectorAll('ul[parent].active-pane').forEach(el => this. moveHasAncestor(el)); + this.moveHasChild(this.htmlSelectUiUx[0].querySelector('ul[parent="'+class_target+'"]')); + this.initSelectUiUxListsHeight() ; + //this.addBreadcrumItem(class_target, (e.target as any).parentElement.innerHTML ) ; + } + ); + } + } //All breadcrum return action let ul_breadcrum_elements = this.htmlSelectUiUx[0].querySelectorAll('div.returnBtn') ; for (var br_element of ul_breadcrum_elements) { @@ -167,7 +202,9 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { (e: CustomEvent) => { let class_id = (e.target as any).closest('li').getAttribute('data-id') ; let class_path = (e.target as any).closest('li').getAttribute('data-parent') ; + let class_icon = (e.target as any).closest('li').getAttribute('data-icon') ; + this.htmlInputValueIcon.val(class_icon) ; this.htmlInputValuePath.val(class_path) ; this.htmlInputValueClass.val(class_id).trigger("change"); this.setCurrentContent() ; @@ -222,11 +259,20 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { } buildClassSelectItem(element: JsonDagRow, parent:string) { - let image = element.icon != null ? `data-icon="${element.icon}" data-iconh="${element.highlightedIcon}"` :"" ; + //let image = element.icon != null ? `data-icon="${element.icon}" data-iconh="${element.highlightedIcon}"` :"" ; //let selectable = element.disabled == true ? `data-selectable="false"` : `data-selectable="true"` ; let enabledClass = element.disabled == true ? ` disabled` : `enabled` ; - var selected = this.defaultValue.value == element.id ? ' selected="selected"' : ""; - let item = $(`
      • ${element.icon}${element.label}${UiuxConfig.ICON_DAG_ARROW_RIGHT}
      • `) ; + let icon = `` ; + let iconValue = ``; + if (element.icon != '') { + icon = `` ; + iconValue = `data-icon="${element.icon}"` ; + } + let selected = this.defaultValue.value == element.id ? 'selected="selected"' : ""; + let tooltip = element.tooltip != undefined ? `title="${element.tooltip}"` : ""; + let color = element.color != undefined ? `data-color="${element.color}"` : ""; + + let item = $(`
      • ${icon}${element.label}${UiuxConfig.ICON_DAG_ARROW_RIGHT}
      • `) ; return item ; } @@ -263,6 +309,7 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { this.htmlSelectUiUxBreadCrum = $(`
        `) ; this.htmlInputValueClass = $(``) ; this.htmlInputValuePath = $(``) ; + this.htmlInputValueIcon = $(``) ; this.htmlCurentValue = $('Chercher des ressources') ; let initBreadcrumData: BreadCrumData = { parentsLabels: ['Tout'], @@ -286,6 +333,7 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { this.htmlSelectUiUx.append(this.htmlSelectUiUxLists) ; this.htmlSelectUiUx.append(this.htmlInputValueClass) ; this.htmlSelectUiUx.append(this.htmlInputValuePath) ; + this.htmlSelectUiUx.append(this.htmlInputValueIcon) ; this.html.append(this.htmlSelectUiUx) ; this.initClassSelector() ; this.displayClassSelector() ; From 0962f47ce87218b29483bb2a2d33d79c72251c88 Mon Sep 17 00:00:00 2001 From: antoine37120 Date: Tue, 3 Sep 2024 20:12:05 +0200 Subject: [PATCH 23/55] add dag selection on object property --- .../ObjectPropertyTypeId.ts | 123 +++++++++++++++--- 1 file changed, 104 insertions(+), 19 deletions(-) diff --git a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/objectpropertygroup/ObjectPropertyTypeId.ts b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/objectpropertygroup/ObjectPropertyTypeId.ts index 5ab2489f..302e3b20 100644 --- a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/objectpropertygroup/ObjectPropertyTypeId.ts +++ b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/objectpropertygroup/ObjectPropertyTypeId.ts @@ -4,6 +4,9 @@ import ISparnaturalSpecification from "../../../../../spec-providers/ISparnatura import ArrowComponent from "../../../../buttons/ArrowComponent"; import HTMLComponent from "../../../../HtmlComponent"; import CriteriaGroup from "../CriteriaGroup"; +import {HierarchicalClassSelectBuilder, JsonDagRow, DagWidgetDefaultValue} from "../startendclassgroup/HierarchicalClassSelectBuilder"; +import { DagIfc, DagNodeIfc, DagNode} from "../../../../../dag/Dag"; +import ISpecificationProperty from "../../../../../spec-providers/ISpecificationProperty"; /** * The property selector @@ -44,15 +47,30 @@ class ObjectPropertyTypeId extends HTMLComponent { if (this.endClassVal) { this.#removeTempLbl(); // set the correct objectProperty matching to Start and End value - this.oldWidget = this.#getObjectProperty(); - this.html.append(this.oldWidget); - this.widgetHtml = this.oldWidget.niceSelect(); + + this.widgetHtml = this.#getObjectProperty(); + + this.html.append(this.widgetHtml); + this.oldWidget = this.selectBuilder.selectBuilder.getInput(); + + this.selectBuilder.selectBuilder.initSelectUiUxListsHeight() ; //force init heigh after dominsertion. + + //this.html.append(this.oldWidget); this.#addOnChangeListener(this.oldWidget); // if there is no options for the user to choose, then trigger the change event - if (this.selectBuilder.items.length <= 1) { + + /*if (this.selectBuilder.selectableItems.length <= 1) { + console.log(this.selectBuilder.selectableItems.length) ; this.oldWidget.trigger("change"); + }*/ + + // If juste 1 option selectable + if (this.selectBuilder.selectableItems.length == 1) { + this.selectBuilder.selectBuilder.defaultValue.value = this.selectBuilder.selectableItems[0] ; + this.submitSelected(); } + } else { // there hasn't been an Object in Endclassgroup chosen. render a temporary label this.widgetHtml = $( @@ -66,10 +84,15 @@ class ObjectPropertyTypeId extends HTMLComponent { return this; } + + submitSelected() { + this.selectBuilder.selectBuilder.submitSelectedValue() ; + } + // when a value gets selected from the dropdown menu (niceselect), then change is called #addOnChangeListener(selectWidget: JQuery) { selectWidget.on("change", () => { - let selectedValue = selectWidget.val(); + let selectedValue = this.selectBuilder.selectBuilder.getInput().val(); //disable further choice this.widgetHtml.addClass("disabled"); this.widgetHtml.removeClass("open"); @@ -89,7 +112,7 @@ class ObjectPropertyTypeId extends HTMLComponent { // sets the ObjectProperty according to the Subject and Object e.g Country isCountryOf Musuem #getObjectProperty() { - this.selectBuilder = new PropertySelectBuilder(this.specProvider); + this.selectBuilder = new PropertySelectBuilder(this, this.specProvider); var default_value = null; return this.selectBuilder.buildPropertySelect( @@ -110,29 +133,91 @@ export default ObjectPropertyTypeId; * Example: changes the relationship from 'Country relatedTo Museum' => 'Country countryOf Museum' * There can be multiple connectingProperties. User might need to choose. **/ -class PropertySelectBuilder { - items: Array; +class PropertySelectBuilder extends HTMLComponent { + selectableItems: Array; specProvider: ISparnaturalSpecification; - constructor(specProvider: any) { + selectBuilder: HierarchicalClassSelectBuilder; + constructor(ParentComponent: HTMLComponent, specProvider: ISparnaturalSpecification) { + + super("ObjectPropertyTypeId", ParentComponent, null); this.specProvider = specProvider; } + + render(): this { + super.render(); + return this; + } + + convertToJsonDag(rootNodes:any[]) { + console.log('rootNodes') ; + console.log(rootNodes) ; + let arrayToJson: Array = []; + this.selectableItems = [] ; + arrayToJson = this.getRecursiveDagElements(rootNodes, '') ; + return JSON.parse(JSON.stringify(arrayToJson)); + } + + getRecursiveDagElements(elements: Array, default_icon:string) { + let arrayToJson: Array = []; + elements.forEach(element => { + let disabled = false ; + let icon = element.payload.getIcon() ; + if (icon == undefined) { + icon = default_icon ; + } + + if (element.disabled === true) { + disabled = true ; + } else { + + this.selectableItems.push(element.payload.getId()) ; + } + let rowToJson = { + label: element.payload.getLabel(), + id: element.payload.getId(), + tooltip: element.payload.getTooltip(), + color: element.payload.getColor(), + icon: icon, + highlightedIcon: element.payload.getHighlightedIcon(), + count: 50, + disabled: disabled, + childs: Array() + } + if (element.children.length > 0) { + rowToJson.childs = this.getRecursiveDagElements(element.children, icon) ; + } + arrayToJson.push(rowToJson); + }); + return arrayToJson ; + + } + + initDagWidget(items:DagIfc, default_value: DagWidgetDefaultValue) { + let jsonDag = this.convertToJsonDag(items.roots) ; + this.selectBuilder = new HierarchicalClassSelectBuilder(this.ParentComponent, this.specProvider, jsonDag, default_value ); + return this.selectBuilder.buildClassSelectFromJson() ; ; + } + buildPropertySelect( domainClassID: string, rangeClassID: string, default_value: string ) { - this.items = this.specProvider.getEntity(domainClassID).getConnectingProperties(rangeClassID); - - console.log(this.specProvider.getEntity(domainClassID).getConnectingPropertiesTree(rangeClassID)) - - if (this.items.length > 1) { - return this.#multipleConnectingProperty(this.items); + + + let defaultValue: DagWidgetDefaultValue = { + value: default_value, + path: '', } - return this.#singleConnectingProperty(this.items); + + return this.initDagWidget( + this.specProvider.getEntity(domainClassID).getConnectingPropertiesTree(rangeClassID), + defaultValue + ); } - #multipleConnectingProperty(items: Array) { + /*#multipleConnectingProperty(items: Array) { let default_value = items[0]; let list: Array = []; items.forEach((i) => { @@ -193,8 +278,8 @@ class PropertySelectBuilder { ${label} ` - ); + ) return htmlnew; - } + };*/ } From 101958d00ba69611f9ce064fad7e42749670a75c Mon Sep 17 00:00:00 2001 From: antoine37120 Date: Thu, 5 Sep 2024 11:04:34 +0200 Subject: [PATCH 24/55] animmation fil ariane + fix icons size + placehoder color --- dev-page/index.html | 5 +- .../hierarchicalclassselectbuilder.scss | 227 +++++---- .../HierarchicalClassSelectBuilder.ts | 482 +++++------------- 3 files changed, 273 insertions(+), 441 deletions(-) diff --git a/dev-page/index.html b/dev-page/index.html index 9609ccb0..5f5f6a4a 100644 --- a/dev-page/index.html +++ b/dev-page/index.html @@ -57,11 +57,14 @@ + + + div { - display: inline-block; - cursor: pointer; + &.selected { + background-color: #fff; + opacity: 1; + padding: 0 0; + span i { + font-size: 22px; + } } } + .htmlSelectUiUxLists { - display: none; overflow-x: hidden; - /*overflow-y: auto;*/ position: absolute; width: 345px; height: 400px; top: base.$height-components - 4 ; z-index: 2; - - transition-property: height; transition-duration: 0.1s; transition-delay: 0; - border-radius: 4px; box-shadow: 0px 0px 8px 0px #00000026; + + .htmlSelectUiUxBreadCrum { + display: flex; + height: 55px; + align-items: center; + width: 100%; + background-color: #fff; + border-bottom: 1px solid #e8e8e8; + margin-left: 0; + transition-property: margin-left; + transition-duration: 0.5s; + transition-delay: 0; + + //First block for backward action + .htmlBreadCrumLeft { + .htmlBreadCrumBack { + display: block; + width: 31px; + height: 55px; + text-align: center; + padding: 9px 18px; + border-right: 1px solid #e8e8e8; + display: table; + span { + display: table-cell; + vertical-align: middle; + text-align: center; + } + } + } + + //Second block for navigation path display + .htmlBreadCrumRight { + display: block; + padding: 8px; + line-height: 13.62px; + height: 55px; + .htmlBreadCrumPath { + //for all texts in ancestors path + &>div { + display: inline-block; + font-size: 10px; + font-weight: 700; + line-height: 13.62px; + text-align: left; + opacity: 0.5; + } + .htmlBreadCrumPathHome { + + } + .htmlBreadCrumPathParentsPrefix { + display: none; + } + .htmlBreadCrumPathParents { + .ancestor-item { + margin-left: 300px; + transition-property: margin-left; + transition-duration: 0.5s; + transition-delay: 0; + &.appened { + margin-left: 0; + } + } + + + } + } + .htmlBreadCrumParentLabel { + display: block; + position: relative; + font-size: 16px; + font-weight: 700; + line-height: 21.79px; + text-align: left; + opacity: 1; + &>span { + display: inline-block; + position: absolute; + top: 0; + left: 300px; + + transition-property: left; + transition-duration: 0.5s; + transition-delay: 0s; + + &:first-of-type { + left: 0; + } + + &.move-left { + left: -300px; + } + &.move-to-display { + left: 0; + } + &.move-right { + left: 300px; + } + } + + } + } + } + &.root-display { + .htmlSelectUiUxBreadCrum { + margin-left: 345px; + } + ul { + top: 0; + border-top: solid 0 #fff; + } + } + } ul { position: absolute; - top:0; + top:55px; left: 0; width: 345px; padding:0; @@ -120,29 +220,22 @@ display: inline-block; white-space: normal; vertical-align: top; - border-right: 1px solid #e8e8e8; + /*border-right: 1px solid #e8e8e8;*/ max-height: 400px; - transition-property: margin-left; - transition-duration: 0.5s; - transition-delay: 0; + transition-property: margin-left, top; + transition-duration: 0.5s, 0s; + transition-delay: 0, 0.6s; z-index: 1000; - - - + &.root { + top: 0; + } &.active-pane { - /*display: inline-block;*/ margin-left: 0; - /*transition-property: margin-left; - transition-duration: 1s; - transition-delay: 0;*/ } - &.active-pane-hide-left { margin-left: -345px; } - - li { cursor: pointer; border-bottom: solid 1px #e8e8e8; @@ -164,10 +257,10 @@ overflow: hidden; .label-icon { width: 48px; - font-size: 13px; + font-size: 22px; display: inline-block; padding: 0 9px 0 0; - text-align: right; + text-align: center; /*text-indent: -4px;*/ } } @@ -185,7 +278,7 @@ } &.have-childs { span.item-sel { - width: 311px; + width: 315px; } span.item-traverse { display: inline-block; @@ -209,61 +302,11 @@ } } } - &.disabled:hover { background-color: var(--primary-color-light) ; } } - - li.SubBreadcrum { - height: auto; - align-items: center; - width: 100%; - - .wrapper { - display: flex; - } - - .returnBtn { - display: block; - width: 31px; - text-align: center; - /*height: 100%;*/ - padding: 9px 18px; - border-right: 1px solid #D9D9D9; - display: table; - span { - display: table-cell; - vertical-align: middle; - text-align: center; - } - } - .parents-items { - display: block; - padding: 8px; - - line-height: 13.62px; - .parentLabel { - display: inline-block; - font-size: 10px; - font-weight: 700; - line-height: 13.62px; - text-align: left; - opacity: 0.5; - - } - .parentLabel:last-child { - display: block; - font-size: 16px; - font-weight: 700; - line-height: 21.79px; - text-align: left; - opacity: 1; - } - } - } } - } /* Scroll bar */ diff --git a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts index a45be8d4..94ccc97a 100644 --- a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts +++ b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts @@ -44,6 +44,12 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { //htmlCoreSelect: JQuery; htmlSelectUiUx: JQuery; htmlSelectUiUxBreadCrum: JQuery; + htmlBreadCrumBack: JQuery; + htmlBreadCrumPath: JQuery; + htmlBreadCrumPathHome: JQuery; + htmlBreadCrumPathParentsPrefix: JQuery; + htmlBreadCrumPathParents: JQuery; + htmlBreadCrumParentLabel: JQuery; htmlSelectUiUxLists: JQuery; htmlInputValueClass: JQuery; htmlInputValuePath: JQuery; @@ -72,9 +78,26 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { moveHasAncestor(el:any) { el.classList.remove('active-pane') ; el.classList.add('active-pane-hide-left'); + if (el.getAttribute('parent') == '') { + this.htmlSelectUiUxLists[0].classList.add('root-display') ; + } } moveHasChild(el:any) { el.classList.add('active-pane') ; + this.htmlSelectUiUxLists[0].classList.remove('root-display') ; + let parentItem = this.getParentLiToUl(el) ; + let liParentLabel = parentItem.querySelector('.item-label').innerText ; + this.downAncestorInParentLabel(liParentLabel) ; + //test if liparent is not on root ul + let ulOfLiParent = parentItem.closest('ul') ; + if (ulOfLiParent.getAttribute('parent') != '') { //need to add ancestor item label to path, need to animate first acestor + let liAncestor = this.getParentLiToUl(ulOfLiParent); + let liAncestorLabel = liAncestor.querySelector('.item-label').innerText ; + this.setAncestorInBreadcrumPath(liAncestorLabel) ; + } else { + this.htmlBreadCrumParentLabel[0].classList.add('display'); + } + } moveHasLeaveChild(el:any) { el.classList.remove('active-pane') ; @@ -82,33 +105,90 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { moveHasEnterAncestor(el:any) { el.classList.remove('active-pane-hide-left'); el.classList.add('active-pane') ; + if (el.getAttribute('parent') == '') { + this.htmlSelectUiUxLists[0].classList.add('root-display') ; + } + this.upAncestorInParentLabel() ; + } + + getParentLiToUl(el:any):any { + let uniqPath = el.getAttribute('parent') ; + return this.htmlSelectUiUx[0].querySelector(`li[list-child-id="${uniqPath}"]`) ; } getInput() { return this.htmlInputValueClass ; } + setAncestorInBreadcrumPath(newAcestorLabel:any) { + let NewAncestor = $(` / ${newAcestorLabel}`) ; + this.htmlBreadCrumPathParents[0].innerHTML = '' ; + this.htmlBreadCrumPathParents.append(NewAncestor) ; + setTimeout(function() { + NewAncestor[0].classList.toggle('appened'); + }, 1); + + } + downAncestorInParentLabel(newParentLabel:any) { + let new_item = $(`${newParentLabel}`) ; + if(this.htmlBreadCrumParentLabel[0].querySelector('span:last-of-type') != null) { + this.htmlBreadCrumParentLabel[0].querySelector('span:last-of-type').classList.add('move-left') ; + this.htmlBreadCrumParentLabel[0].querySelector('span:last-of-type').classList.remove('move-to-display') ; + } + this.htmlBreadCrumParentLabel.append(new_item) ; + let htmlBreadCrumParentLabel = this.htmlBreadCrumParentLabel[0] ; + setTimeout(function() { + htmlBreadCrumParentLabel.querySelector('span:last-of-type').classList.add('move-to-display') + }, 1); + } + upAncestorInParentLabel() { + let parentList = this.htmlBreadCrumParentLabel[0].querySelectorAll('span') ; + if (parentList.length == 1) { + let htmlBreadCrumParentLabel = this.htmlBreadCrumParentLabel[0] ; + setTimeout(function() { + htmlBreadCrumParentLabel.querySelector('span:last-of-type').remove() ; + }, 500); + return true; + } + if(this.htmlBreadCrumParentLabel[0].querySelector('span:last-of-type') != null) { + this.htmlBreadCrumParentLabel[0].querySelector('span:last-of-type').classList.add('move-right') ; + this.htmlBreadCrumParentLabel[0].querySelector('span:last-of-type').classList.remove('move-to-display') ; + } + let indexToDisplay = parentList.length - 2; + if (indexToDisplay >= 0) { + parentList[indexToDisplay].classList.remove('move-left') ; + parentList[indexToDisplay].classList.add('move-to-display') ; + + this.htmlBreadCrumPathParents[0].querySelector('span:last-of-type').classList.remove('appened') ; + let htmlBreadCrumPathParents = this.htmlBreadCrumPathParents[0] ; + setTimeout(function() { + htmlBreadCrumPathParents.querySelector('span:last-of-type').remove() ; + }, 500); + } + let htmlBreadCrumParentLabel = this.htmlBreadCrumParentLabel[0] ; + setTimeout(function() { + htmlBreadCrumParentLabel.querySelector('span:last-of-type').remove() ; + }, 500); + } + setCurrentContent() { let entity_path = this.htmlInputValuePath.val() as string; let entity_id = this.htmlInputValueClass.val() as string; let entity_icon = this.htmlInputValueIcon.val() as string; - - let icon = `` ; if (entity_icon != '') { icon = `` ; } - let entity = this.specProvider.getEntity(entity_id) ; - this.htmlCurentValue.html(`${icon} ${entity.getLabel()} `) ; + this.htmlCurentValue[0].classList.add('selected') ; } initSelectUiUxListsHeight() { let listToDisplay = this.htmlSelectUiUx[0].querySelector('ul[parent].active-pane') ; - let allLists = this.htmlSelectUiUx[0].querySelectorAll('ul[parent]') ; + //let allLists = this.htmlSelectUiUx[0].querySelectorAll('ul[parent]') ; let listToDisplayLiCount = this.htmlSelectUiUx[0].querySelectorAll('ul[parent].active-pane li').length ; - let breadcrumHeight = 15; + let breadcrumHeight = 55; if (listToDisplay.classList.contains('root')) { breadcrumHeight = 0 ; } @@ -117,8 +197,7 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { newHeight = 400 ; } this.htmlSelectUiUxLists[0].style.height = newHeight+'px' ; - - this.htmlSelectUiUx[0].querySelectorAll('ul[parent]').forEach((el:HTMLElement) => el.style.height = newHeight+'px' ); + this.htmlSelectUiUx[0].querySelectorAll('ul[parent]').forEach((el:HTMLElement) => el.style.height = (newHeight - breadcrumHeight) +'px' ); } @@ -133,19 +212,15 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { let hasChild = this.htmlSelectUiUx[0].querySelector('ul[parent="'+class_childs_list_id+'"]'); if (hasChild !== null) { element.classList.add("have-childs"); - // if parent is after in dom move before - /*if(this.parentIsAfter( element.parentElement, hasChild ) ) { - element.parentElement.before(hasChild); - }*/ - //element.querySelector('span.item-traverse'); element.querySelector('span.item-traverse').addEventListener( "click", (e: CustomEvent) => { let class_target = (e.target as any).closest('li').getAttribute('list-child-id') ; + let parent_ul_return = (e.target as any).closest('ul').getAttribute('parent') ; this.htmlSelectUiUx[0].querySelectorAll('ul[parent].active-pane').forEach(el => this. moveHasAncestor(el)); this.moveHasChild(this.htmlSelectUiUx[0].querySelector('ul[parent="'+class_target+'"]')); this.initSelectUiUxListsHeight() ; - //this.addBreadcrumItem(class_target, (e.target as any).parentElement.innerHTML ) ; + this.htmlBreadCrumBack[0].setAttribute('return-target', parent_ul_return) ; } ); } @@ -160,39 +235,33 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { let hasChild = this.htmlSelectUiUx[0].querySelector('ul[parent="'+class_childs_list_id+'"]'); if (hasChild !== null) { element.classList.add("have-childs"); - // if parent is after in dom move before - /*if(this.parentIsAfter( element.parentElement, hasChild ) ) { - element.parentElement.before(hasChild); - }*/ - //element.querySelector('span.item-traverse'); element.querySelector('span.item-sel').addEventListener( "click", (e: CustomEvent) => { let class_target = (e.target as any).closest('li').getAttribute('list-child-id') ; + let parent_ul_return = (e.target as any).closest('ul').getAttribute('parent') ; this.htmlSelectUiUx[0].querySelectorAll('ul[parent].active-pane').forEach(el => this. moveHasAncestor(el)); this.moveHasChild(this.htmlSelectUiUx[0].querySelector('ul[parent="'+class_target+'"]')); this.initSelectUiUxListsHeight() ; - //this.addBreadcrumItem(class_target, (e.target as any).parentElement.innerHTML ) ; + this.htmlBreadCrumBack[0].setAttribute('return-target', parent_ul_return) ; } ); } } //All breadcrum return action - let ul_breadcrum_elements = this.htmlSelectUiUx[0].querySelectorAll('div.returnBtn') ; - for (var br_element of ul_breadcrum_elements) { - br_element.addEventListener( - "click", - (e: CustomEvent) => { - let class_target = (e.target as any).closest('.returnBtn').getAttribute('return-target') ; - this.htmlSelectUiUx[0].querySelectorAll('ul[parent].active-pane').forEach(el => this.moveHasLeaveChild(el)); - //this.htmlSelectUiUx[0].querySelector('ul[parent="'+class_target+'"]').classList.add("active-pane"); - - this.moveHasEnterAncestor(this.htmlSelectUiUx[0].querySelector('ul[parent="'+class_target+'"]')); - this.initSelectUiUxListsHeight() ; - //this.addBreadcrumItem(class_target, (e.target as any).parentElement.innerHTML ) ; + this.htmlBreadCrumBack[0].addEventListener( + "click", + (e: CustomEvent) => { + let class_target = (e.target as any).closest('.htmlBreadCrumBack').getAttribute('return-target') ; + this.htmlSelectUiUx[0].querySelectorAll('ul[parent].active-pane').forEach(el => this.moveHasLeaveChild(el)); + this.moveHasEnterAncestor(this.htmlSelectUiUx[0].querySelector('ul[parent="'+class_target+'"]')); + this.initSelectUiUxListsHeight() ; + if (class_target != '') { + let new_tareget_back = this.getParentLiToUl(this.htmlSelectUiUx[0].querySelector('ul[parent="'+class_target+'"]')).closest('ul').getAttribute('parent') ; + this.htmlBreadCrumBack[0].setAttribute('return-target', new_tareget_back) ; } - ); - } + } + ); // Listen click for selectable class let li_elements_sel = this.htmlSelectUiUx[0].querySelectorAll('li.enabled .item-sel'); @@ -214,21 +283,32 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { }); } + initBreadCrum() { + this.htmlBreadCrumBack = $('
        '); + let BackContent = $(`${UiuxConfig.ICON_DAG_ARROW_LEFT}`); + this.htmlBreadCrumPath = $('
        '); + this.htmlBreadCrumPathHome = $('
        Tout
        '); + this.htmlBreadCrumPathParentsPrefix = $('
        ..
        '); + this.htmlBreadCrumPathParents = $('
        '); + this.htmlBreadCrumParentLabel = $('
        '); + //First block for backward action + let leftBlock = $('
        ') ; + this.htmlBreadCrumBack.append(BackContent) ; + leftBlock.append(this.htmlBreadCrumBack) ; + this.htmlSelectUiUxBreadCrum.append(leftBlock) ; + //Second block for navigation path display + let rightBlock = $('
        ') ; + this.htmlBreadCrumPath.append(this.htmlBreadCrumPathHome) ; + this.htmlBreadCrumPath.append(this.htmlBreadCrumPathParentsPrefix) ; + this.htmlBreadCrumPath.append(this.htmlBreadCrumPathParents) ; + rightBlock.append(this.htmlBreadCrumPath) ; + rightBlock.append(this.htmlBreadCrumParentLabel) ; + this.htmlSelectUiUxBreadCrum.append(rightBlock) ; + } buildClassSelectList(arrayNode: Array, parentClass: string, path: string, breadCrumData: BreadCrumData) { if(arrayNode.length > 0) { - //let Ul = $(`
          `) ; let Ul = $(`
            `) ; - - if(breadCrumData.parentsLabels.length > 1) { - let htmlBreadCrum = $(`
          • ${UiuxConfig.ICON_DAG_ARROW_LEFT}
          • `); - let breadcrumParentsList = $('
            ') ; - breadCrumData.parentsLabels.forEach(labelItem => { - breadcrumParentsList.append($(`
            ${labelItem}
            `)) ; - }); - $(htmlBreadCrum[0].querySelector('div.wrapper')).append(breadcrumParentsList) ; - Ul.append(htmlBreadCrum) ; - } let i = 0 ; arrayNode.forEach(element => { let htmlItem = this.buildClassSelectItem(element, path) ; @@ -259,8 +339,6 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { } buildClassSelectItem(element: JsonDagRow, parent:string) { - //let image = element.icon != null ? `data-icon="${element.icon}" data-iconh="${element.highlightedIcon}"` :"" ; - //let selectable = element.disabled == true ? `data-selectable="false"` : `data-selectable="true"` ; let enabledClass = element.disabled == true ? ` disabled` : `enabled` ; let icon = `` ; let iconValue = ``; @@ -272,7 +350,7 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { let tooltip = element.tooltip != undefined ? `title="${element.tooltip}"` : ""; let color = element.color != undefined ? `data-color="${element.color}"` : ""; - let item = $(`
          • ${icon}${element.label}${UiuxConfig.ICON_DAG_ARROW_RIGHT}
          • `) ; + let item = $(`
          • ${icon}${element.label}${UiuxConfig.ICON_DAG_ARROW_RIGHT}
          • `) ; return item ; } @@ -305,7 +383,7 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { //init select options array let selectOptionList: Array = []; this.htmlSelectUiUx = $(`
            `) ; - this.htmlSelectUiUxLists = $(`
            `) ; + this.htmlSelectUiUxLists = $(`
            `) ; this.htmlSelectUiUxBreadCrum = $(`
            `) ; this.htmlInputValueClass = $(``) ; this.htmlInputValuePath = $(``) ; @@ -316,26 +394,24 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { returnPath: '', } - this.buildClassSelectList(this.hierarchyData, 'root active-pane', '', initBreadcrumData) ; + + this.initBreadCrum() ; + this.htmlSelectUiUxLists.append(this.htmlSelectUiUxBreadCrum) ; + this.buildClassSelectList(this.hierarchyData, 'root active-pane', '', initBreadcrumData) ; - /*this.htmlCoreSelect = $("", { - // open triggers the niceselect to be open - class: "my-new-list input-val open", - html: list.join(""), - });this.htmlSelectUiUxBreadCrum - this.html = $('
            '); - this.html.append(this.htmlCoreSelect) ; - this.htmlSelectUiUx.append(this.htmlSelectUiUxBreadCrum) ; - this.htmlSelectUiUx.append(this.htmlSelectUiUxLists) ; - this.html.append(this.htmlSelectUiUx) ; - this.initClassSelector() ; - return this.html.children(); - }*/ - } - - /* - function isStartClassGroup( - ParentComponent: HTMLComponent - ): ParentComponent is StartClassGroup { - return ( - (ParentComponent as unknown as StartClassGroup).baseCssClass === - "StartClassGroup" - ); - } // https://www.typescriptlang.org/docs/handbook/advanced-types.html#user-defined-type-guards - - - function isEndClassGroup( - ParentComponent: HTMLComponent - ): ParentComponent is EndClassGroup { - return ( - (ParentComponent as unknown as EndClassGroup).baseCssClass === - "EndClassGroup" - ); - } // https://www.typescriptlang.org/docs/handbook/advanced-types.html#user-defined-type-guards - */ +} export default HierarchicalClassSelectBuilder; From ae0297e0f336dc9294c702951d6bd8d445240cea Mon Sep 17 00:00:00 2001 From: Thomas Francart Date: Thu, 5 Sep 2024 11:21:57 +0200 Subject: [PATCH 25/55] update test files for hierarchy --- dev-page/configs/collections-shacl.ttl | 121 +++++---- dev-page/configs/instantiations-shacl.ttl | 274 ++++++-------------- dev-page/configs/sapa-sparnatural-shacl.ttl | 211 +++++++++++++++ dev-page/index.html | 2 +- 4 files changed, 344 insertions(+), 264 deletions(-) create mode 100644 dev-page/configs/sapa-sparnatural-shacl.ttl diff --git a/dev-page/configs/collections-shacl.ttl b/dev-page/configs/collections-shacl.ttl index 0cc829e9..2aa2fc97 100644 --- a/dev-page/configs/collections-shacl.ttl +++ b/dev-page/configs/collections-shacl.ttl @@ -55,20 +55,20 @@ - Les entités `rico:RecordPart` sont utilisées princiapelement dans le domaine audiovisuel (exemple : des enregistrements différents sur une même bande vidéo). - La Fondation SAPA travaille de façon mutilingue (principalement allemand, français, italien). Les descriptions sont réalisées dans la langue du document. Toutefois, la propriété `rico:hasOrHadLanguage` n'est pas utilisée de façon systèmatique pour déclarer celle-ci."""; foaf:depiction ; - dcat:distribution _:ba09c1662f6649d08454fc46fcbacca13624; + dcat:distribution _:ba09c1662f6649d08454fc46fcbacca15807; dct:hasFormat , ; rdfs:seeAlso . -_:ba09c1662f6649d08454fc46fcbacca13624 dct:format ; +_:ba09c1662f6649d08454fc46fcbacca15807 dct:format ; dcat:downloadURL . spao-co:RecordResource a sh:NodeShape; sh:order "1"^^xsd:integer; volipi:iconName "fa-light fa-file-heart"; - sh:targetClass rico:RecordResource; + sh:target spao-co:RecordResource-target; rdfs:label "Record Resource"@en; - skos:definition "Note : the class RecordResource is never instantiated directly and groups the common properties between Record, RecordSet and RecordPart."@en; + skos:definition "Note : the class RecordResource is never instantiated directly and groups the common properties between Record, RecordSet and RecordPart. Instances are either rico:Record, rico:RecordSet or rico:RecordPart"@en; foaf:depiction spao-co:Diagram_Record, spao-co:Diagram_RecordSet, spao-co:Diagram_RecordPart; sh:property spao-co:RecordResource_descriptiveNote, spao-co:RecordResource_hasAccessibility, spao-co:RecordResource_hasCopyrightDeclaration, spao-co:RecordResource_hasInternalNote, @@ -81,11 +81,22 @@ spao-co:RecordResource a sh:NodeShape; spao-co:RecordResource_isRelatedTo, spao-co:RecordResource_legacyIdentifier, spao-co:RecordResource_name, spao-co:RecordResource_seeAlso . +spao-co:RecordResource-target sh:select """SELECT $this +WHERE { + $this a ?rrType . + VALUES ?rrType { + + + + } +}""" . + spao-co:Record a sh:NodeShape; sh:order "2"^^xsd:integer; volipi:iconName "fa-light fa-file"; sh:targetClass rico:Record; rdfs:label "Record"@en; + sh:node spao-co:RecordResource; skos:example ; foaf:depiction spao-co:Diagram_Record; shacl-play:background-color "F7CECC"; @@ -95,16 +106,15 @@ spao-co:Record a sh:NodeShape; spao-co:Record_hasDocumentaryFormType, spao-co:Record_hasDoublets, spao-co:Record_hasExtent, spao-co:Record_hasOrHadLanguage, spao-co:Record_hasOrHadLocation, spao-co:Record_hasPacking, spao-co:Record_hasProvenance, spao-co:Record_hasRecordState, spao-co:Record_isAssociatedWithEvent, - spao-co:Record_isAssociatedWithPlace, spao-co:Record_isOrWasIncludedIn, spao-co:RecordSet_zeroOrMore_isOrWasIncludedIn, - spao-co:Record_physicalCharacteristics, spao-co:Record_sameAs . - -rico:Record rdfs:subClassOf rico:RecordResource . + spao-co:Record_isAssociatedWithPlace, spao-co:Record_isOrWasIncludedIn, spao-co:Record_physicalCharacteristics, + spao-co:Record_sameAs . spao-co:RecordSet a sh:NodeShape; sh:order "3"^^xsd:integer; volipi:iconName "fa-light fa-box-archive"; sh:targetClass rico:RecordSet; rdfs:label "Record Set"@en; + sh:node spao-co:RecordResource; skos:example ; foaf:depiction spao-co:Diagram_RecordSet; shacl-play:background-color "F7948F"; @@ -117,30 +127,27 @@ spao-co:RecordSet a sh:NodeShape; spao-co:RecordSet_isAssociatedWithEvent, spao-co:RecordSet_isAssociatedWithPlace, spao-co:RecordSet_isOrWasIncludedIn, spao-co:RecordSet_physicalCharacteristics, spao-co:RecordSet_sameAs . -rico:RecordSet rdfs:subClassOf rico:RecordResource . - spao-co:RecordPart a sh:NodeShape; sh:order "4"^^xsd:integer; volipi:iconName "fa-light fa-puzzle"; sh:targetClass rico:RecordPart; rdfs:label "Record Part"@en; + sh:node spao-co:RecordResource; skos:definition "RecordParts are mostly used to describe video recordings with multiple recordings on the same video tape."@en; skos:example ; foaf:depiction spao-co:Diagram_RecordPart; shacl-play:background-color "F7E0DF"; sh:property spao-co:RecordPart_hasDocumentaryFormType, spao-co:RecordPart_isOrWasConstituentOf . -rico:RecordPart rdfs:subClassOf rico:RecordResource . - spao-co:ArchivalPlace a sh:NodeShape; - sh:order "5"^^xsd:integer; + sh:order "6"^^xsd:integer; volipi:iconName "fa-light fa-building"; sh:targetClass spao:ArchivalPlace; rdfs:label "Archival place"@en; sh:property spao-co:ArchivalPlace_containedBy, spao-co:ArchivalPlace_hasPacking, spao-co:ArchivalPlace_label . spao-co:Event a sh:NodeShape; - sh:order "6"^^xsd:integer; + sh:order "7"^^xsd:integer; volipi:iconName "fa-light fa-calendar-xmark"; sh:targetClass rico:Event; rdfs:label "Event"@en; @@ -333,22 +340,22 @@ spao-co:RecordResource_hasProcessingDate sh:path spao:hasProcessingDate; sh:description "Date à laquelle la description des archives a été réalisée ou modifiée."@fr, "Date on which the archive description was created or modified."@en; sh:nodeKind sh:IRI; - sh:or _:ba09c1662f6649d08454fc46fcbacca13625 . + sh:or _:ba09c1662f6649d08454fc46fcbacca15808 . -_:ba09c1662f6649d08454fc46fcbacca13625 rdf:first _:ba09c1662f6649d08454fc46fcbacca13626; - rdf:rest _:ba09c1662f6649d08454fc46fcbacca13627 . +_:ba09c1662f6649d08454fc46fcbacca15808 rdf:first _:ba09c1662f6649d08454fc46fcbacca15809; + rdf:rest _:ba09c1662f6649d08454fc46fcbacca15810 . -_:ba09c1662f6649d08454fc46fcbacca13626 sh:class rico:SingleDate . +_:ba09c1662f6649d08454fc46fcbacca15809 sh:class rico:SingleDate . -_:ba09c1662f6649d08454fc46fcbacca13627 rdf:first _:ba09c1662f6649d08454fc46fcbacca13628; - rdf:rest _:ba09c1662f6649d08454fc46fcbacca13629 . +_:ba09c1662f6649d08454fc46fcbacca15810 rdf:first _:ba09c1662f6649d08454fc46fcbacca15811; + rdf:rest _:ba09c1662f6649d08454fc46fcbacca15812 . -_:ba09c1662f6649d08454fc46fcbacca13628 sh:class rico:DateRange . +_:ba09c1662f6649d08454fc46fcbacca15811 sh:class rico:DateRange . -_:ba09c1662f6649d08454fc46fcbacca13629 rdf:first _:ba09c1662f6649d08454fc46fcbacca13630; +_:ba09c1662f6649d08454fc46fcbacca15812 rdf:first _:ba09c1662f6649d08454fc46fcbacca15813; rdf:rest rdf:nil . -_:ba09c1662f6649d08454fc46fcbacca13630 sh:class rico:Date . +_:ba09c1662f6649d08454fc46fcbacca15813 sh:class rico:Date . spao-co:RecordResource_hasProtectionDuration sh:path spao:hasProtectionDuration; sh:order "21"; @@ -411,22 +418,22 @@ spao-co:RecordResource_isAssociatedWithDate sh:path rico:isAssociatedWithDate; This contains the date or date range that the resource covers (for example, for a set of documents, this will contain the date of creation of the first document until the date of creation of the last document)"""@en; sh:nodeKind sh:IRI; - sh:or _:ba09c1662f6649d08454fc46fcbacca13631 . + sh:or _:ba09c1662f6649d08454fc46fcbacca15814 . -_:ba09c1662f6649d08454fc46fcbacca13631 rdf:first _:ba09c1662f6649d08454fc46fcbacca13632; - rdf:rest _:ba09c1662f6649d08454fc46fcbacca13633 . +_:ba09c1662f6649d08454fc46fcbacca15814 rdf:first _:ba09c1662f6649d08454fc46fcbacca15815; + rdf:rest _:ba09c1662f6649d08454fc46fcbacca15816 . -_:ba09c1662f6649d08454fc46fcbacca13632 sh:class rico:DateRange . +_:ba09c1662f6649d08454fc46fcbacca15815 sh:class rico:DateRange . -_:ba09c1662f6649d08454fc46fcbacca13633 rdf:first _:ba09c1662f6649d08454fc46fcbacca13634; - rdf:rest _:ba09c1662f6649d08454fc46fcbacca13635 . +_:ba09c1662f6649d08454fc46fcbacca15816 rdf:first _:ba09c1662f6649d08454fc46fcbacca15817; + rdf:rest _:ba09c1662f6649d08454fc46fcbacca15818 . -_:ba09c1662f6649d08454fc46fcbacca13634 sh:class rico:SingleDate . +_:ba09c1662f6649d08454fc46fcbacca15817 sh:class rico:SingleDate . -_:ba09c1662f6649d08454fc46fcbacca13635 rdf:first _:ba09c1662f6649d08454fc46fcbacca13636; +_:ba09c1662f6649d08454fc46fcbacca15818 rdf:first _:ba09c1662f6649d08454fc46fcbacca15819; rdf:rest rdf:nil . -_:ba09c1662f6649d08454fc46fcbacca13636 sh:class rico:Date . +_:ba09c1662f6649d08454fc46fcbacca15819 sh:class rico:Date . spao-co:RecordResource_isRelatedTo sh:path spao:isRelatedTo; sh:order "28"; @@ -607,17 +614,17 @@ spao-co:Record_hasProvenance sh:path rico:hasProvenance; sh:description "Connects a Record Resource or an Instantiation to an Agent that creates or accumulates the Record Resource, receives it, or sends it. (RiC-O 0.2)"@en; skos:editorialNote "Note : hasProvenance n'est plus dans RiC-O 1.0, maintenant c'est rico:hasOrganicProvenance ou rico:hasOrganicOrFunctionalProvenance"@en; sh:nodeKind sh:IRI; - sh:or _:ba09c1662f6649d08454fc46fcbacca13637 . + sh:or _:ba09c1662f6649d08454fc46fcbacca15820 . -_:ba09c1662f6649d08454fc46fcbacca13637 rdf:first _:ba09c1662f6649d08454fc46fcbacca13638; - rdf:rest _:ba09c1662f6649d08454fc46fcbacca13639 . +_:ba09c1662f6649d08454fc46fcbacca15820 rdf:first _:ba09c1662f6649d08454fc46fcbacca15821; + rdf:rest _:ba09c1662f6649d08454fc46fcbacca15822 . -_:ba09c1662f6649d08454fc46fcbacca13638 sh:class rico:Person . +_:ba09c1662f6649d08454fc46fcbacca15821 sh:class rico:Person . -_:ba09c1662f6649d08454fc46fcbacca13639 rdf:first _:ba09c1662f6649d08454fc46fcbacca13640; +_:ba09c1662f6649d08454fc46fcbacca15822 rdf:first _:ba09c1662f6649d08454fc46fcbacca15823; rdf:rest rdf:nil . -_:ba09c1662f6649d08454fc46fcbacca13640 sh:class rico:CorporateBody . +_:ba09c1662f6649d08454fc46fcbacca15823 sh:class rico:CorporateBody . spao-co:Record_hasRecordState sh:path rico:hasRecordState; sh:order "19"; @@ -657,18 +664,8 @@ spao-co:Record_isOrWasIncludedIn sh:path rico:isOrWasIncludedIn; sh:nodeKind sh:IRI; sh:class rico:RecordSet . -spao-co:RecordSet_zeroOrMore_isOrWasIncludedIn sh:path _:ba09c1662f6649d08454fc46fcbacca13641; - sh:order "23"; - sh:name "is or was included in (ancestor)"@en; - sh:description "Connects this Record to an ancestor RecordSet"@en; - sh:maxCount "1"^^xsd:integer; - sh:nodeKind sh:IRI; - sh:class rico:RecordSet . - -_:ba09c1662f6649d08454fc46fcbacca13641 sh:zeroOrMorePath rico:isOrWasIncludedIn . - spao-co:Record_physicalCharacteristics sh:path rico:physicalCharacteristics; - sh:order "24"; + sh:order "#REF!"; sh:name "physical characteristics"@en; sh:description """Information about the physical features of the Instantiation. Includes information about the physical nature and condition such as conservation status. (RiC-O 0.2) @@ -678,7 +675,7 @@ Theoretically this is applied to Instantiations, but is used also at the Record sh:datatype xsd:string . spao-co:Record_sameAs sh:path owl:sameAs; - sh:order "25"; + sh:order "#REF!"; sh:name "same as (owl)"@en; sh:description "Link to the URL of this RecordSet in the legacy catalog. This information is in the public triplestore, but this is a hidden field in the layout when browsing the public website. The URL stored is not dereferencable."@en; sh:maxCount "1"^^xsd:integer; @@ -918,17 +915,17 @@ spao-co:RecordResourceExtent_quantity sh:path rico:quantity; sh:minCount "1"^^xsd:integer; sh:maxCount "1"^^xsd:integer; sh:nodeKind sh:Literal; - sh:or _:ba09c1662f6649d08454fc46fcbacca13642 . + sh:or _:ba09c1662f6649d08454fc46fcbacca15824 . -_:ba09c1662f6649d08454fc46fcbacca13642 rdf:first _:ba09c1662f6649d08454fc46fcbacca13643; - rdf:rest _:ba09c1662f6649d08454fc46fcbacca13644 . +_:ba09c1662f6649d08454fc46fcbacca15824 rdf:first _:ba09c1662f6649d08454fc46fcbacca15825; + rdf:rest _:ba09c1662f6649d08454fc46fcbacca15826 . -_:ba09c1662f6649d08454fc46fcbacca13643 sh:datatype xsd:integer . +_:ba09c1662f6649d08454fc46fcbacca15825 sh:datatype xsd:integer . -_:ba09c1662f6649d08454fc46fcbacca13644 rdf:first _:ba09c1662f6649d08454fc46fcbacca13645; +_:ba09c1662f6649d08454fc46fcbacca15826 rdf:first _:ba09c1662f6649d08454fc46fcbacca15827; rdf:rest rdf:nil . -_:ba09c1662f6649d08454fc46fcbacca13645 sh:datatype xsd:string . +_:ba09c1662f6649d08454fc46fcbacca15827 sh:datatype xsd:string . spao-co:Identifier_P2_has_type sh:path crm:P2_has_type; sh:order "1"; @@ -969,17 +966,17 @@ spao-co:Event_label sh:path rdfs:label; sh:name "label"@en; sh:description "The name of the event."@en; sh:nodeKind sh:Literal; - sh:or _:ba09c1662f6649d08454fc46fcbacca13646 . + sh:or _:ba09c1662f6649d08454fc46fcbacca15828 . -_:ba09c1662f6649d08454fc46fcbacca13646 rdf:first _:ba09c1662f6649d08454fc46fcbacca13647; - rdf:rest _:ba09c1662f6649d08454fc46fcbacca13648 . +_:ba09c1662f6649d08454fc46fcbacca15828 rdf:first _:ba09c1662f6649d08454fc46fcbacca15829; + rdf:rest _:ba09c1662f6649d08454fc46fcbacca15830 . -_:ba09c1662f6649d08454fc46fcbacca13647 sh:datatype rdf:langString . +_:ba09c1662f6649d08454fc46fcbacca15829 sh:datatype rdf:langString . -_:ba09c1662f6649d08454fc46fcbacca13648 rdf:first _:ba09c1662f6649d08454fc46fcbacca13649; +_:ba09c1662f6649d08454fc46fcbacca15830 rdf:first _:ba09c1662f6649d08454fc46fcbacca15831; rdf:rest rdf:nil . -_:ba09c1662f6649d08454fc46fcbacca13649 sh:datatype xsd:string . +_:ba09c1662f6649d08454fc46fcbacca15831 sh:datatype xsd:string . spao-co:ArchivalPlace_containedBy sh:path rico:containedBy; sh:order "1"; diff --git a/dev-page/configs/instantiations-shacl.ttl b/dev-page/configs/instantiations-shacl.ttl index ce9ec0af..029d5179 100644 --- a/dev-page/configs/instantiations-shacl.ttl +++ b/dev-page/configs/instantiations-shacl.ttl @@ -47,7 +47,7 @@ spao-i:Instantiation a sh:NodeShape; sh:targetClass rico:Instantiation; rdfs:label "Instantiation"@en; sh:closed "true"; - sh:ignoredProperties _:ba09c1662f6649d08454fc46fcbacca13650; + sh:ignoredProperties _:ba09c1662f6649d08454fc46fcbacca15773; shacl-play:background-color "ff6363"; sh:property spao-i:Instantiation_aspectRatio, spao-i:Instantiation_channels, spao-i:Instantiation_descriptiveNote, spao-i:Instantiation_duration, spao-i:Instantiation_hasAccessibility, spao-i:Instantiation_hasArchivalStatus, @@ -64,9 +64,9 @@ spao-i:Instantiation a sh:NodeShape; spao-i:Instantiation_P45_consists_of, spao-i:Instantiation_P60558, spao-i:Instantiation_physicalCharacteristics, spao-i:Instantiation_preparationDate, spao-i:Instantiation_recordingSystem, spao-i:Instantiation_samplingRate, spao-i:Instantiation_scanningFormat, spao-i:Instantiation_scanningOrder, spao-i:Instantiation_seeAlso, - spao-i:Instantiation_width, spao-i:Instantiation_inversePath_includedIn, spao-i:Instantiation_inversePath_hasInstantiation . + spao-i:Instantiation_width . -_:ba09c1662f6649d08454fc46fcbacca13650 rdf:first rdf:type; +_:ba09c1662f6649d08454fc46fcbacca15773 rdf:first rdf:type; rdf:rest rdf:nil . spao-i:File a sh:NodeShape; @@ -75,7 +75,7 @@ spao-i:File a sh:NodeShape; sh:targetClass premis:File; rdfs:label "File"@en; sh:closed "true"; - sh:ignoredProperties _:ba09c1662f6649d08454fc46fcbacca13651; + sh:ignoredProperties _:ba09c1662f6649d08454fc46fcbacca15774; shacl-play:background-color "ff6363"; sh:property spao-i:File_aspectRatio, spao-i:File_channels, spao-i:File_compositionLevel, spao-i:File_duration, spao-i:File_fixity, spao-i:File_frameRate, spao-i:File_hasFormat, @@ -84,7 +84,7 @@ spao-i:File a sh:NodeShape; spao-i:File_originalName, spao-i:File_P60558, spao-i:File_samplingRate, spao-i:File_scanningFormat, spao-i:File_scanningOrder, spao-i:File_seeAlso, spao-i:File_size, spao-i:File_width . -_:ba09c1662f6649d08454fc46fcbacca13651 rdf:first rdf:type; +_:ba09c1662f6649d08454fc46fcbacca15774 rdf:first rdf:type; rdf:rest rdf:nil . spao-i:InstantiationExtent a sh:NodeShape; @@ -93,12 +93,11 @@ spao-i:InstantiationExtent a sh:NodeShape; sh:targetClass rico:InstantiationExtent; rdfs:label "Instantiation Extent"@en; sh:closed "true"; - sh:ignoredProperties _:ba09c1662f6649d08454fc46fcbacca13652; + sh:ignoredProperties _:ba09c1662f6649d08454fc46fcbacca15775; shacl-play:background-color "b4c7dc"; - sh:property spao-i:InstantiationExtent_quantity, spao-i:InstantiationExtent_hasUnitOfMeasurement; - sh:deactivated "true"^^xsd:boolean . + sh:property spao-i:InstantiationExtent_quantity, spao-i:InstantiationExtent_hasUnitOfMeasurement . -_:ba09c1662f6649d08454fc46fcbacca13652 rdf:first rdf:type; +_:ba09c1662f6649d08454fc46fcbacca15775 rdf:first rdf:type; rdf:rest rdf:nil . spao-co:Identifier a sh:NodeShape; @@ -106,12 +105,11 @@ spao-co:Identifier a sh:NodeShape; sh:targetClass rico:Identifier; rdfs:label "Identifier"@en; sh:closed "true"; - sh:ignoredProperties _:ba09c1662f6649d08454fc46fcbacca13653; + sh:ignoredProperties _:ba09c1662f6649d08454fc46fcbacca15776; shacl-play:background-color "b4c7dc"; - sh:property spao-i:Identifier_value, spao-i:Identifier_P2_has_type; - sh:deactivated "true"^^xsd:boolean . + sh:property spao-i:Identifier_value, spao-i:Identifier_P2_has_type . -_:ba09c1662f6649d08454fc46fcbacca13653 rdf:first rdf:type; +_:ba09c1662f6649d08454fc46fcbacca15776 rdf:first rdf:type; rdf:rest rdf:nil . spao-co:SingleDate a sh:NodeShape; @@ -121,12 +119,12 @@ spao-co:SingleDate a sh:NodeShape; rdfs:label "Date (single)"@en; sh:deactivated "true"^^xsd:boolean; sh:closed "true"; - sh:ignoredProperties _:ba09c1662f6649d08454fc46fcbacca13654; + sh:ignoredProperties _:ba09c1662f6649d08454fc46fcbacca15777; shacl-play:background-color "b4c7dc"; sh:property spao-i:SingleDate_certainty, spao-i:SingleDate_dateQualifier, spao-i:SingleDate_dateStandard, spao-i:SingleDate_expressedDate, spao-i:SingleDate_normalizedDateValue . -_:ba09c1662f6649d08454fc46fcbacca13654 rdf:first rdf:type; +_:ba09c1662f6649d08454fc46fcbacca15777 rdf:first rdf:type; rdf:rest rdf:nil . spao-co:Date a sh:NodeShape; @@ -136,11 +134,11 @@ spao-co:Date a sh:NodeShape; rdfs:label "Date"@en; sh:deactivated "true"^^xsd:boolean; sh:closed "true"; - sh:ignoredProperties _:ba09c1662f6649d08454fc46fcbacca13655; + sh:ignoredProperties _:ba09c1662f6649d08454fc46fcbacca15778; shacl-play:background-color "b4c7dc"; sh:property spao-i:Date_dateStandard, spao-i:Date_expressedDate, spao-i:Date_normalizedDateValue . -_:ba09c1662f6649d08454fc46fcbacca13655 rdf:first rdf:type; +_:ba09c1662f6649d08454fc46fcbacca15778 rdf:first rdf:type; rdf:rest rdf:nil . spao-co:DateRange a sh:NodeShape; @@ -150,17 +148,16 @@ spao-co:DateRange a sh:NodeShape; rdfs:label "Date (range)"@en; sh:deactivated "true"^^xsd:boolean; sh:closed "true"; - sh:ignoredProperties _:ba09c1662f6649d08454fc46fcbacca13656; + sh:ignoredProperties _:ba09c1662f6649d08454fc46fcbacca15779; shacl-play:background-color "b4c7dc"; sh:property spao-i:DateRange_hasBeginningDate, spao-i:DateRange_hasEndDate . -_:ba09c1662f6649d08454fc46fcbacca13656 rdf:first rdf:type; +_:ba09c1662f6649d08454fc46fcbacca15779 rdf:first rdf:type; rdf:rest rdf:nil . spao-i:Concept a sh:NodeShape; rdfs:label "Concept"@en; - sh:property spao-i:Concept_prefLabel; - sh:deactivated "true"^^xsd:boolean . + sh:property spao-i:Concept_prefLabel . spao-i:Standard a sh:NodeShape; sh:order "90"^^xsd:integer; @@ -373,15 +370,6 @@ spao-i:Instantiation_hasArchivalStatus sh:path spao:hasArchivalStatus; spao-i:Instantiation_hasCarrierType sh:path rico:hasCarrierType; sh:name "has carrier type"@en; sh:description "Note : the entries in rico:CarrierType vocabulary are also types premis:StorageMedium."@en; - skos:editorialNote """The class rico:RepresentationType is not expected in the range. Only rico:CarrierType is expected. This is probably an error. There is a single value that says \"visual\", here is the query: - -SELECT DISTINCT ?s ?result -WHERE -{ ?s a -; - ?result . - ?result a -}"""@en; sh:nodeKind sh:IRI; sh:class rico:CarrierType; sh:node spao-i:CarrierType; @@ -398,31 +386,16 @@ spao-i:Instantiation_hasCondition sh:path spao:hasCondition; spao-i:Instantiation_hasCopyPath sh:path spao:hasCopyPath; sh:name "has copy path"@en; - skos:editorialNote "20240628 : je bascule dans l'espace de nom final et je déclare dans l'ontologie"@en; sh:nodeKind sh:Literal; sh:datatype xsd:string . spao-i:Instantiation_hasDerivedInstantiation sh:path rico:hasDerivedInstantiation; sh:name "has derived instantiation"@en; - skos:editorialNote "Il y a toujours un double typage : les instantiations sont toujouts typées rico:Instantiation avec en plus soit ebucore:MediaResource (objet analogique) ou premis:Representation"@en; sh:nodeKind sh:IRI; sh:class rico:Instantiation . spao-i:Instantiation_hasExtent sh:path rico:hasExtent; sh:name "has extent"@en; - skos:editorialNote """Ici je pense que rico:ResourceResourceExtent en range est une erreur. Voici la query: - -PREFIX rico: -SELECT DISTINCT ?s ?result -WHERE -{ ?s a -; - ?result . - ?result a rico:RecordResourceExtent -} - -Il n'y a pas beaucoup de valeur. -Exemple d'Instantiation : http://data.performing-arts.ch/o/c364c6e6-7a87-400f-920b-525824eab956"""@en; sh:nodeKind sh:IRI; sh:class rico:InstantiationExtent; dash:searchWidget core:NonSelectableProperty . @@ -431,19 +404,19 @@ spao-i:Instantiation_hasFormat sh:path ebucore:hasFormat; sh:name "has audio or video format"@en; sh:maxCount "1"^^xsd:integer; sh:nodeKind sh:IRI; - sh:or _:ba09c1662f6649d08454fc46fcbacca13657; + sh:or _:ba09c1662f6649d08454fc46fcbacca15780; dash:searchWidget core:ListProperty; datasources:datasource datasources:list_skospreflabel_alpha_with_count . -_:ba09c1662f6649d08454fc46fcbacca13657 rdf:first _:ba09c1662f6649d08454fc46fcbacca13658; - rdf:rest _:ba09c1662f6649d08454fc46fcbacca13659 . +_:ba09c1662f6649d08454fc46fcbacca15780 rdf:first _:ba09c1662f6649d08454fc46fcbacca15781; + rdf:rest _:ba09c1662f6649d08454fc46fcbacca15782 . -_:ba09c1662f6649d08454fc46fcbacca13658 sh:class ebucore:AudioFormat . +_:ba09c1662f6649d08454fc46fcbacca15781 sh:class ebucore:AudioFormat . -_:ba09c1662f6649d08454fc46fcbacca13659 rdf:first _:ba09c1662f6649d08454fc46fcbacca13660; +_:ba09c1662f6649d08454fc46fcbacca15782 rdf:first _:ba09c1662f6649d08454fc46fcbacca15783; rdf:rest rdf:nil . -_:ba09c1662f6649d08454fc46fcbacca13660 sh:class ebucore:VideoFormat . +_:ba09c1662f6649d08454fc46fcbacca15783 sh:class ebucore:VideoFormat . spao-i:Instantiation_hasInternalNote sh:path spao:hasInternalNote; sh:name "has note (internal)"@en; @@ -522,7 +495,6 @@ spao-i:Instantiation_hasResponsibleEmployee sh:path spao:hasResponsibleEmployee; spao-i:Instantiation_hasStandard sh:path ebucore:hasStandard; sh:name "has standard (ebucore)"@en; - skos:editorialNote "PAL, NTS"@en; sh:maxCount "1"^^xsd:integer; sh:nodeKind sh:IRI; sh:class ebucore:Standard; @@ -579,28 +551,26 @@ spao-i:Instantiation_integrity sh:path rico:integrity; spao-i:Instantiation_isAssociatedWithEvent sh:path rico:isAssociatedWithEvent; sh:name "is associated with event"@en; - skos:editorialNote "Qu'est-ce que ces Event représentent ?"@en; sh:maxCount "1"^^xsd:integer; sh:nodeKind sh:IRI; sh:class rico:Event . spao-i:Instantiation_lastControl sh:path spao:lastControl; sh:name "last control (date)"@en; - skos:editorialNote "Ici il faudrait normaliser: soit en datatype, soit en date Rico."@en; sh:maxCount "1"^^xsd:integer; sh:nodeKind sh:IRIOrLiteral; - sh:or _:ba09c1662f6649d08454fc46fcbacca13661 . + sh:or _:ba09c1662f6649d08454fc46fcbacca15784 . -_:ba09c1662f6649d08454fc46fcbacca13661 rdf:first _:ba09c1662f6649d08454fc46fcbacca13662; - rdf:rest _:ba09c1662f6649d08454fc46fcbacca13663 . +_:ba09c1662f6649d08454fc46fcbacca15784 rdf:first _:ba09c1662f6649d08454fc46fcbacca15785; + rdf:rest _:ba09c1662f6649d08454fc46fcbacca15786 . -_:ba09c1662f6649d08454fc46fcbacca13662 sh:nodeKind sh:Literal; +_:ba09c1662f6649d08454fc46fcbacca15785 sh:nodeKind sh:Literal; sh:datatype xsd:string . -_:ba09c1662f6649d08454fc46fcbacca13663 rdf:first _:ba09c1662f6649d08454fc46fcbacca13664; +_:ba09c1662f6649d08454fc46fcbacca15786 rdf:first _:ba09c1662f6649d08454fc46fcbacca15787; rdf:rest rdf:nil . -_:ba09c1662f6649d08454fc46fcbacca13664 sh:nodeKind sh:IRI; +_:ba09c1662f6649d08454fc46fcbacca15787 sh:nodeKind sh:IRI; sh:class rico:SingleDate . spao-i:Instantiation_legacyIdentifier sh:path spao:legacyIdentifier; @@ -611,7 +581,6 @@ spao-i:Instantiation_legacyIdentifier sh:path spao:legacyIdentifier; spao-i:Instantiation_P45_consists_of sh:path crm:P45_consists_of; sh:name "consists of (P45)"@en; - skos:editorialNote "Matériaux : glass, plastic, synthetic, etc. Pas de propriété correspondante dans RiC-O"@en; sh:nodeKind sh:IRI; sh:class skos:Concept; sh:node spao-i:Material; @@ -637,22 +606,22 @@ spao-i:Instantiation_physicalCharacteristics sh:path rico:physicalCharacteristic spao-i:Instantiation_preparationDate sh:path spao:preparationDate; sh:name "preparation date"@en; sh:nodeKind sh:IRI; - sh:or _:ba09c1662f6649d08454fc46fcbacca13665 . + sh:or _:ba09c1662f6649d08454fc46fcbacca15788 . -_:ba09c1662f6649d08454fc46fcbacca13665 rdf:first _:ba09c1662f6649d08454fc46fcbacca13666; - rdf:rest _:ba09c1662f6649d08454fc46fcbacca13667 . +_:ba09c1662f6649d08454fc46fcbacca15788 rdf:first _:ba09c1662f6649d08454fc46fcbacca15789; + rdf:rest _:ba09c1662f6649d08454fc46fcbacca15790 . -_:ba09c1662f6649d08454fc46fcbacca13666 sh:class rico:SingleDate . +_:ba09c1662f6649d08454fc46fcbacca15789 sh:class rico:SingleDate . -_:ba09c1662f6649d08454fc46fcbacca13667 rdf:first _:ba09c1662f6649d08454fc46fcbacca13668; - rdf:rest _:ba09c1662f6649d08454fc46fcbacca13669 . +_:ba09c1662f6649d08454fc46fcbacca15790 rdf:first _:ba09c1662f6649d08454fc46fcbacca15791; + rdf:rest _:ba09c1662f6649d08454fc46fcbacca15792 . -_:ba09c1662f6649d08454fc46fcbacca13668 sh:class rico:DateRange . +_:ba09c1662f6649d08454fc46fcbacca15791 sh:class rico:DateRange . -_:ba09c1662f6649d08454fc46fcbacca13669 rdf:first _:ba09c1662f6649d08454fc46fcbacca13670; +_:ba09c1662f6649d08454fc46fcbacca15792 rdf:first _:ba09c1662f6649d08454fc46fcbacca15793; rdf:rest rdf:nil . -_:ba09c1662f6649d08454fc46fcbacca13670 sh:class rico:Date . +_:ba09c1662f6649d08454fc46fcbacca15793 sh:class rico:Date . spao-i:Instantiation_recordingSystem sh:path spao:recordingSystem; sh:name "recording system"@en; @@ -697,20 +666,6 @@ spao-i:Instantiation_width sh:path ebucore:width; sh:nodeKind sh:Literal; sh:datatype xsd:string . -spao-i:Instantiation_inversePath_includedIn sh:path _:ba09c1662f6649d08454fc46fcbacca13671; - sh:name "includes file"@en; - sh:nodeKind sh:IRI; - sh:node spao-i:File . - -_:ba09c1662f6649d08454fc46fcbacca13671 sh:inversePath premis:isIncludedIn . - -spao-i:Instantiation_inversePath_hasInstantiation sh:path _:ba09c1662f6649d08454fc46fcbacca13672; - sh:name "instantiates"@en; - sh:nodeKind sh:IRI; - sh:node spao-co:Record . - -_:ba09c1662f6649d08454fc46fcbacca13672 sh:inversePath rico:hasInstantiation . - spao-i:File_aspectRatio sh:path ebucore:aspectRatio; sh:name "aspect ratio"@en; sh:maxCount "1"^^xsd:integer; @@ -728,33 +683,16 @@ spao-i:File_compositionLevel sh:path premis:compositionLevel; sh:maxCount "1"^^xsd:integer; sh:nodeKind sh:Literal; sh:datatype xsd:string; - sh:in _:ba09c1662f6649d08454fc46fcbacca13673 . + sh:in _:ba09c1662f6649d08454fc46fcbacca15794 . -_:ba09c1662f6649d08454fc46fcbacca13673 rdf:first "0"; - rdf:rest _:ba09c1662f6649d08454fc46fcbacca13674 . +_:ba09c1662f6649d08454fc46fcbacca15794 rdf:first "0"; + rdf:rest _:ba09c1662f6649d08454fc46fcbacca15795 . -_:ba09c1662f6649d08454fc46fcbacca13674 rdf:first "1"; +_:ba09c1662f6649d08454fc46fcbacca15795 rdf:first "1"; rdf:rest rdf:nil . spao-i:File_duration sh:path ebucore:duration; sh:name "duration"@en; - skos:editorialNote """Pourquoi un ebucore:duration et un schema:duration ? A vérifier dans le triplestore - -ebucore:duration est réservé aux fichiers individuels. - -L'utilisation de schema:duration est a priori sur 4 File qui sont des tests, à cleaner - -SPARQL : - -PREFIX schema: -PREFIX premis: -PREFIX spav: -SELECT ?entity ?duration -WHERE { - ?entity a premis:File . - ?entity schema:duration ?duration . -} -LIMIT 1000"""@en; sh:maxCount "1"^^xsd:integer; sh:nodeKind sh:Literal; sh:datatype xsd:string . @@ -773,30 +711,25 @@ spao-i:File_frameRate sh:path ebucore:frameRate; spao-i:File_hasFormat sh:path ebucore:hasFormat; sh:name "has audio, video or container format"@en; - skos:editorialNote """Revoir les range ensemble, est-ce correct ? --> oui - -vocabulaires cibles : cf (ContainerFormat), vf (VideoFormat), af (AudioFormat). C'est géré au niveau du formulaire - à mettre - -ajouter les vocabulaires cibles (idem modèle Performance)"""@en; sh:nodeKind sh:IRI; - sh:or _:ba09c1662f6649d08454fc46fcbacca13675; + sh:or _:ba09c1662f6649d08454fc46fcbacca15796; dash:searchWidget core:ListProperty; datasources:datasource datasources:list_skospreflabel_alpha_with_count . -_:ba09c1662f6649d08454fc46fcbacca13675 rdf:first _:ba09c1662f6649d08454fc46fcbacca13676; - rdf:rest _:ba09c1662f6649d08454fc46fcbacca13677 . +_:ba09c1662f6649d08454fc46fcbacca15796 rdf:first _:ba09c1662f6649d08454fc46fcbacca15797; + rdf:rest _:ba09c1662f6649d08454fc46fcbacca15798 . -_:ba09c1662f6649d08454fc46fcbacca13676 sh:class ebucore:AudioFormat . +_:ba09c1662f6649d08454fc46fcbacca15797 sh:class ebucore:AudioFormat . -_:ba09c1662f6649d08454fc46fcbacca13677 rdf:first _:ba09c1662f6649d08454fc46fcbacca13678; - rdf:rest _:ba09c1662f6649d08454fc46fcbacca13679 . +_:ba09c1662f6649d08454fc46fcbacca15798 rdf:first _:ba09c1662f6649d08454fc46fcbacca15799; + rdf:rest _:ba09c1662f6649d08454fc46fcbacca15800 . -_:ba09c1662f6649d08454fc46fcbacca13678 sh:class ebucore:ContainerFormat . +_:ba09c1662f6649d08454fc46fcbacca15799 sh:class ebucore:ContainerFormat . -_:ba09c1662f6649d08454fc46fcbacca13679 rdf:first _:ba09c1662f6649d08454fc46fcbacca13680; +_:ba09c1662f6649d08454fc46fcbacca15800 rdf:first _:ba09c1662f6649d08454fc46fcbacca15801; rdf:rest rdf:nil . -_:ba09c1662f6649d08454fc46fcbacca13680 sh:class ebucore:VideoFormat . +_:ba09c1662f6649d08454fc46fcbacca15801 sh:class ebucore:VideoFormat . spao-i:File_hasStandard sh:path ebucore:hasStandard; sh:name "has standard"@en; @@ -843,19 +776,6 @@ spao-i:File_isIncludedIn sh:path premis:isIncludedIn; spao-i:File_label sh:path rdfs:label; sh:name "label"@en; - skos:editorialNote """Issue existante : https://github.com/sapa/performing-arts-ch-import/issues/26 (sera déplacée dans le cleaning) - -Requête pour lister les File sans rdfs:label: - -PREFIX rdfs: -PREFIX premis: -PREFIX spav: -SELECT ?entity -WHERE { - ?entity a premis:File . - FILTER NOT EXISTS { ?entity rdfs:label ?label } -} -LIMIT 1000"""@en; sh:minCount "1"^^xsd:integer; sh:maxCount "1"^^xsd:integer; sh:nodeKind sh:Literal; @@ -929,46 +849,41 @@ spao-i:Identifier_value sh:path rdf:value; sh:name "value"@en; sh:description "The value of the identifier, as a literal string."@en; rdfs:seeAlso ; - skos:editorialNote "Il faut migrer cette structure en structure RiC-O : en RiC-O il y a rico:textualValue ou rico:normalizedValue"@en; sh:minCount "1"^^xsd:integer; sh:maxCount "1"^^xsd:integer; sh:nodeKind sh:Literal; - sh:datatype xsd:string; - sh:deactivated "true"^^xsd:boolean . + sh:datatype xsd:string . spao-i:Identifier_P2_has_type sh:path crm:P2_has_type; sh:order "2"; sh:name "type"@en; sh:description "A reference to the type of the identifier, from the \"identifier\" controlled vocabulary, with values such as \"Unique ID\", \"Old Identifier\", \"Technical Identifier\", etc."@en; rdfs:seeAlso ; - skos:editorialNote "Il faut migrer cette structure en structure RiC-O : rico:hasIdentifierType, et il faut typer les valeurs avec la classe rico:IdentifierType à la place d'une classe CRM"@en; sh:minCount "1"^^xsd:integer; sh:maxCount "1"^^xsd:integer; sh:nodeKind sh:IRI; sh:class skos:Concept; - sh:in _:ba09c1662f6649d08454fc46fcbacca13681; - sh:deactivated "true"^^xsd:boolean . + sh:in _:ba09c1662f6649d08454fc46fcbacca15802 . -_:ba09c1662f6649d08454fc46fcbacca13681 rdf:first vocab:iduni; - rdf:rest _:ba09c1662f6649d08454fc46fcbacca13682 . +_:ba09c1662f6649d08454fc46fcbacca15802 rdf:first vocab:iduni; + rdf:rest _:ba09c1662f6649d08454fc46fcbacca15803 . -_:ba09c1662f6649d08454fc46fcbacca13682 rdf:first vocab:idpid; - rdf:rest _:ba09c1662f6649d08454fc46fcbacca13683 . +_:ba09c1662f6649d08454fc46fcbacca15803 rdf:first vocab:idpid; + rdf:rest _:ba09c1662f6649d08454fc46fcbacca15804 . -_:ba09c1662f6649d08454fc46fcbacca13683 rdf:first vocab:idcon; - rdf:rest _:ba09c1662f6649d08454fc46fcbacca13684 . +_:ba09c1662f6649d08454fc46fcbacca15804 rdf:first vocab:idcon; + rdf:rest _:ba09c1662f6649d08454fc46fcbacca15805 . -_:ba09c1662f6649d08454fc46fcbacca13684 rdf:first vocab:idold; - rdf:rest _:ba09c1662f6649d08454fc46fcbacca13685 . +_:ba09c1662f6649d08454fc46fcbacca15805 rdf:first vocab:idold; + rdf:rest _:ba09c1662f6649d08454fc46fcbacca15806 . -_:ba09c1662f6649d08454fc46fcbacca13685 rdf:first vocab:idtec; +_:ba09c1662f6649d08454fc46fcbacca15806 rdf:first vocab:idtec; rdf:rest rdf:nil . spao-i:InstantiationExtent_quantity sh:path rico:quantity; sh:order "1"; sh:name "quantity"@en; sh:description "The quantity of the extent, given either as a integer or a string."@en; - skos:editorialNote "Thomas : voir si dans la doc des Collections on peut faire apparaitre les 2 datatypes qui n'apparaissent pas dans la doc généré"@en; sh:minCount "1"^^xsd:integer; sh:maxCount "1"^^xsd:integer; sh:nodeKind sh:Literal; @@ -985,94 +900,65 @@ spao-i:InstantiationExtent_hasUnitOfMeasurement sh:path rico:hasUnitOfMeasuremen spao-i:Date_dateStandard sh:path rico:dateStandard; sh:name "date standard"@en; - skos:editorialNote """L'utilisation de rico:Date directement est bizarre. Soit on met une SingleDate, soit un DateRange, mais pourquoi utiliser rico:Date directement ? de toutes façons c'est à migrer. - -Requête pour savoir où c'est utilisé : - -PREFIX rico: -PREFIX rdfs: -PREFIX rdf: -SELECT ?p (COUNT(?p) AS ?count) (SAMPLE(?x) AS ?sample) -WHERE { - ?x ?p ?o . - ?o a rico:Date . -} -GROUP BY ?p -ORDER BY DESC(?count) - -Ce sont beaucoup des birthDate de personnes, ou des beginningDate / endDate d'organisation. On peut laisser comme cela de toutes façons"""@en; sh:maxCount "1"^^xsd:integer; sh:nodeKind sh:Literal; - sh:datatype xsd:string; - sh:deactivated "true"^^xsd:boolean . + sh:datatype xsd:string . spao-i:Date_expressedDate sh:path rico:expressedDate; sh:name "expressed date"@en; sh:maxCount "1"^^xsd:integer; sh:nodeKind sh:Literal; - sh:datatype xsd:string; - sh:deactivated "true"^^xsd:boolean . + sh:datatype xsd:string . spao-i:Date_normalizedDateValue sh:path rico:normalizedDateValue; sh:name "normalized date value"@en; - skos:editorialNote "C'est dommage que ce champs n'ait pas un datatype normalisé"@en; sh:maxCount "1"^^xsd:integer; sh:nodeKind sh:Literal; - sh:datatype xsd:string; - sh:deactivated "true"^^xsd:boolean . + sh:datatype xsd:string . spao-i:DateRange_hasBeginningDate sh:path rico:hasBeginningDate; sh:name "has beginning date"@en; sh:maxCount "1"^^xsd:integer; sh:nodeKind sh:IRI; sh:class rico:SingleDate; - dash:searchWidget core:NonSelectableProperty; - sh:deactivated "true"^^xsd:boolean . + dash:searchWidget core:NonSelectableProperty . spao-i:DateRange_hasEndDate sh:path rico:hasEndDate; sh:name "has end date"@en; sh:maxCount "1"^^xsd:integer; sh:nodeKind sh:IRI; sh:class rico:SingleDate; - dash:searchWidget core:NonSelectableProperty; - sh:deactivated "true"^^xsd:boolean . + dash:searchWidget core:NonSelectableProperty . spao-i:SingleDate_certainty sh:path rico:certainty; sh:name "certainty"@en; sh:maxCount "1"^^xsd:integer; sh:nodeKind sh:IRI; - sh:class skos:Concept; - sh:deactivated "true"^^xsd:boolean; - rdfs:comment "We disable properties from these shared objects : we need to keep them here for documentation, we don't want to have them twice since we already have them in the Collections model" . + sh:class skos:Concept . spao-i:SingleDate_dateQualifier sh:path rico:dateQualifier; sh:name "date qualifier"@en; sh:maxCount "1"^^xsd:integer; sh:nodeKind sh:IRI; - sh:class skos:Concept; - sh:deactivated "true"^^xsd:boolean . + sh:class skos:Concept . spao-i:SingleDate_dateStandard sh:path rico:dateStandard; sh:name "date standard"@en; sh:maxCount "1"^^xsd:integer; sh:nodeKind sh:Literal; - sh:datatype xsd:string; - sh:deactivated "true"^^xsd:boolean . + sh:datatype xsd:string . spao-i:SingleDate_expressedDate sh:path rico:expressedDate; sh:name "expressed date"@en; sh:maxCount "1"^^xsd:integer; sh:nodeKind sh:Literal; - sh:datatype xsd:string; - sh:deactivated "true"^^xsd:boolean . + sh:datatype xsd:string . spao-i:SingleDate_normalizedDateValue sh:path rico:normalizedDateValue; sh:name "normalized date value"@en; - skos:editorialNote "C'est dommage que ce champs n'ait pas un datatype normalisé"@en; sh:maxCount "1"^^xsd:integer; sh:nodeKind sh:Literal; - sh:datatype xsd:string; - sh:deactivated "true"^^xsd:boolean . + sh:datatype xsd:string . spao-i:Concept_prefLabel sh:path skos:prefLabel; sh:name "preferred label"@en; @@ -1157,17 +1043,3 @@ spao-i:VideoFormat_inScheme sh:path skos:inScheme; spao-i:ContainerFormat_inScheme sh:path skos:inScheme; sh:name "in scheme"@en; sh:hasValue vocab:cf . - -spao-co:RecordResource sh:deactivated "true"^^xsd:boolean . - -spao-co:Record sh:deactivated "true"^^xsd:boolean . - -spao-co:RecordSet sh:deactivated "true"^^xsd:boolean . - -spao-co:RecordPart sh:deactivated "true"^^xsd:boolean . - -spao-co:ArchivalPlace sh:deactivated "true"^^xsd:boolean . - -spao-co:Event sh:deactivated "true"^^xsd:boolean . - -spao-co:Concept sh:deactivated "true"^^xsd:boolean . diff --git a/dev-page/configs/sapa-sparnatural-shacl.ttl b/dev-page/configs/sapa-sparnatural-shacl.ttl new file mode 100644 index 00000000..a626b8e6 --- /dev/null +++ b/dev-page/configs/sapa-sparnatural-shacl.ttl @@ -0,0 +1,211 @@ +@prefix premis: . +@prefix schema: . +@prefix owl: . +@prefix volipi: . +@prefix xsd: . +@prefix skosthes: . +@prefix rdfs: . +@prefix qb: . +@prefix dct: . +@prefix sh: . +@prefix doap: . +@prefix rico: . +@prefix vocab: . +@prefix dcat: . +@prefix euvoc: . +@prefix prov: . +@prefix foaf: . +@prefix crm: . +@prefix rda-u: . +@prefix adms: . +@prefix org: . +@prefix xls2rdf: . +@prefix spao-sparnatural: . +@prefix crypto: . +@prefix core: . +@prefix spao-i: . +@prefix olo: . +@prefix shacl-play: . +@prefix datasources: . +@prefix rdf: . +@prefix ebucore: . +@prefix spao-co: . +@prefix dash: . +@prefix spao: . +@prefix frbroo: . +@prefix dc: . +@prefix skos: . +@prefix skosxl: . + + a owl:Ontology; + dct:hasFormat , + ; + rdfs:seeAlso . + +spao-sparnatural:Fonds a sh:NodeShape; + sh:target spao-sparnatural:Fonds-target; + rdfs:label "Fonds"@en; + sh:node spao-co:RecordSet; + skos:definition "This is the subset of RecordSet that are of type \"fonds\""@en . + +spao-sparnatural:Fonds-target sh:select """SELECT $this +WHERE { + $this a . + $this +}""" . + +spao-sparnatural:RecordResource_optional_isOrWasConstituentOf_zeroOrMore_isOrWasIncludedIn + sh:path _:ba09c1662f6649d08454fc46fcbacca15832; + sh:name "is in fonds"@en; + sh:description "Connects this RecordResource (Record or RecortPart) to its Fonds"@fr; + sh:minCount "1"^^xsd:integer; + sh:maxCount "sh:IRI"^^xsd:integer; + sh:node spao-sparnatural:Fonds; + dash:searchWidget core:ListProperty; + datasources:datasource spao-sparnatural:list_riconame_with_range . + +_:ba09c1662f6649d08454fc46fcbacca15832 rdf:first _:ba09c1662f6649d08454fc46fcbacca15833; + rdf:rest _:ba09c1662f6649d08454fc46fcbacca15834 . + +_:ba09c1662f6649d08454fc46fcbacca15833 sh:zeroOrOnePath rico:isOrWasConstituentOf . + +_:ba09c1662f6649d08454fc46fcbacca15834 rdf:first _:ba09c1662f6649d08454fc46fcbacca15835; + rdf:rest rdf:nil . + +_:ba09c1662f6649d08454fc46fcbacca15835 sh:zeroOrMorePath rico:isOrWasIncludedIn . + +spao-co:RecordResource sh:property spao-sparnatural:RecordResource_optional_isOrWasConstituentOf_zeroOrMore_isOrWasIncludedIn; + sh:deactivated "true"^^xsd:boolean . + +spao-sparnatural:Instantiation_inversePath_includedIn sh:path _:ba09c1662f6649d08454fc46fcbacca15836; + sh:name "includes file"@en; + sh:nodeKind sh:IRI; + sh:node spao-i:File . + +_:ba09c1662f6649d08454fc46fcbacca15836 sh:inversePath premis:isIncludedIn . + +spao-i:Instantiation sh:property spao-sparnatural:Instantiation_inversePath_includedIn, + spao-sparnatural:Instantiation_inversePath_hasInstantiation, spao-sparnatural:Instantiation_identifier_or_hasOrHadIdentifier; + sh:deactivated "false"^^xsd:boolean . + +spao-sparnatural:Instantiation_inversePath_hasInstantiation sh:path _:ba09c1662f6649d08454fc46fcbacca15837; + sh:name "instantiates"@en; + sh:nodeKind sh:IRI; + sh:node spao-co:RecordResource . + +_:ba09c1662f6649d08454fc46fcbacca15837 sh:inversePath rico:hasInstantiation . + +spao-sparnatural:Instantiation_identifier_or_hasOrHadIdentifier sh:path _:ba09c1662f6649d08454fc46fcbacca15838; + sh:name "identifier label"@en; + sh:nodeKind sh:Literal; + sh:datatype xsd:string; + dash:propertyRole dash:LabelRole . + +_:ba09c1662f6649d08454fc46fcbacca15838 sh:alternativePath _:ba09c1662f6649d08454fc46fcbacca15839 . + +_:ba09c1662f6649d08454fc46fcbacca15839 rdf:first rico:identifier; + rdf:rest _:ba09c1662f6649d08454fc46fcbacca15840 . + +_:ba09c1662f6649d08454fc46fcbacca15840 rdf:first _:ba09c1662f6649d08454fc46fcbacca15841; + rdf:rest rdf:nil . + +_:ba09c1662f6649d08454fc46fcbacca15841 rdf:first rico:hasOrHadIdentifier; + rdf:rest _:ba09c1662f6649d08454fc46fcbacca15842 . + +_:ba09c1662f6649d08454fc46fcbacca15842 rdf:first rdf:value; + rdf:rest rdf:nil . + +spao-sparnatural:list_riconame_with_range a datasources:SparqlDatasource; + datasources:queryTemplate datasources:query_list_label_with_range_alpha_with_count; + datasources:labelProperty rico:name . + +spao-i:File sh:deactivated "false"^^xsd:boolean . + +spao-co:Identifier sh:deactivated "true"^^xsd:boolean . + +spao-i:InstantiationExtent sh:deactivated "true"^^xsd:boolean . + +spao-co:SingleDate sh:deactivated "true"^^xsd:boolean . + +spao-co:Date sh:deactivated "true"^^xsd:boolean . + +spao-co:DateRange sh:deactivated "true"^^xsd:boolean . + +spao-i:Concept sh:deactivated "true"^^xsd:boolean . + +spao-i:Standard sh:deactivated "true"^^xsd:boolean . + +spao-i:AudioFormat sh:deactivated "true"^^xsd:boolean . + +spao-i:ContainerFormat sh:deactivated "true"^^xsd:boolean . + +spao-i:StorageMedium sh:deactivated "true"^^xsd:boolean . + +spao-i:VideoFormat sh:deactivated "true"^^xsd:boolean . + +spao-i:CarrierType sh:deactivated "true"^^xsd:boolean . + +spao-i:RepresentationType sh:deactivated "true"^^xsd:boolean . + +spao-i:Accessibility sh:deactivated "true"^^xsd:boolean . + +spao-i:PreservationState sh:deactivated "true"^^xsd:boolean . + +spao-i:Condition sh:deactivated "true"^^xsd:boolean . + +spao-i:Packing sh:deactivated "true"^^xsd:boolean . + +spao-i:Permission sh:deactivated "true"^^xsd:boolean . + +spao-i:PhysicalUsability sh:deactivated "true"^^xsd:boolean . + +spao-i:TermsOfProtection sh:deactivated "true"^^xsd:boolean . + +spao-i:VideoDamage sh:deactivated "true"^^xsd:boolean . + +spao-i:Material sh:deactivated "true"^^xsd:boolean . + +spao-i:ColorContent sh:deactivated "true"^^xsd:boolean . + +spao-i:RecordingSystem sh:deactivated "true"^^xsd:boolean . + +spao-i:ScanningFormat sh:deactivated "true"^^xsd:boolean . + +spao-i:ScanningOrder sh:deactivated "true"^^xsd:boolean . + +spao-co:Record sh:deactivated "true"^^xsd:boolean . + +spao-co:RecordSet sh:deactivated "true"^^xsd:boolean . + +spao-co:RecordPart sh:deactivated "true"^^xsd:boolean . + +spao-co:ArchivalPlace sh:deactivated "true"^^xsd:boolean . + +spao-co:Event sh:deactivated "true"^^xsd:boolean . + +spao-co:Concept sh:deactivated "true"^^xsd:boolean . + +spao-i:SingleDate_certainty sh:deactivated "true"^^xsd:boolean; + rdfs:comment "We disable properties from these shared objects : we need to keep them here for documentation, we don't want to have them twice since we already have them in the Collections model" . + +spao-i:SingleDate_dateQualifier sh:deactivated "true"^^xsd:boolean . + +spao-i:SingleDate_dateStandard sh:deactivated "true"^^xsd:boolean . + +spao-i:SingleDate_expressedDate sh:deactivated "true"^^xsd:boolean . + +spao-i:SingleDate_normalizedDateValue sh:deactivated "true"^^xsd:boolean . + +spao-i:DateRange_hasBeginningDate sh:deactivated "true"^^xsd:boolean . + +spao-i:DateRange_hasEndDate sh:deactivated "true"^^xsd:boolean . + +spao-i:Date_dateStandard sh:deactivated "true"^^xsd:boolean . + +spao-i:Date_expressedDate sh:deactivated "true"^^xsd:boolean . + +spao-i:Date_normalizedDateValue sh:deactivated "true"^^xsd:boolean . + +spao-i:Identifier_value sh:deactivated "true"^^xsd:boolean . + +spao-i:Identifier_P2_has_type sh:deactivated "true"^^xsd:boolean . diff --git a/dev-page/index.html b/dev-page/index.html index 5f5f6a4a..278cd579 100644 --- a/dev-page/index.html +++ b/dev-page/index.html @@ -62,7 +62,7 @@ - + Date: Thu, 5 Sep 2024 11:45:04 +0200 Subject: [PATCH 26/55] =?UTF-8?q?Ajout=20d'un=20niveau=20de=20hi=C3=A9rarc?= =?UTF-8?q?hie?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../configs/sapa-sparnatural-shacl-test.ttl | 45 +++++++++++++++++++ dev-page/index.html | 2 +- 2 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 dev-page/configs/sapa-sparnatural-shacl-test.ttl diff --git a/dev-page/configs/sapa-sparnatural-shacl-test.ttl b/dev-page/configs/sapa-sparnatural-shacl-test.ttl new file mode 100644 index 00000000..41c4f98f --- /dev/null +++ b/dev-page/configs/sapa-sparnatural-shacl-test.ttl @@ -0,0 +1,45 @@ +@prefix premis: . +@prefix schema: . +@prefix owl: . +@prefix volipi: . +@prefix xsd: . +@prefix skosthes: . +@prefix rdfs: . +@prefix qb: . +@prefix dct: . +@prefix sh: . +@prefix doap: . +@prefix rico: . +@prefix vocab: . +@prefix dcat: . +@prefix euvoc: . +@prefix prov: . +@prefix foaf: . +@prefix crm: . +@prefix rda-u: . +@prefix adms: . +@prefix org: . +@prefix xls2rdf: . +@prefix spao-sparnatural: . +@prefix crypto: . +@prefix core: . +@prefix spao-i: . +@prefix olo: . +@prefix shacl-play: . +@prefix datasources: . +@prefix rdf: . +@prefix ebucore: . +@prefix spao-co: . +@prefix dash: . +@prefix spao: . +@prefix frbroo: . +@prefix dc: . +@prefix skos: . +@prefix skosxl: . + + a owl:Ontology. + +spao-sparnatural:FondsTheatre a sh:NodeShape; + rdfs:label "Fonds Théatre"@en; + sh:node spao-sparnatural:Fonds; + skos:definition "Un fonds sur le théatre"@en . diff --git a/dev-page/index.html b/dev-page/index.html index 278cd579..91fc452f 100644 --- a/dev-page/index.html +++ b/dev-page/index.html @@ -64,7 +64,7 @@ Date: Thu, 5 Sep 2024 12:18:11 +0200 Subject: [PATCH 27/55] =?UTF-8?q?Plus=20de=20niveaux=20hi=C3=A9rarchiques?= =?UTF-8?q?=20!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dev-page/configs/sapa-sparnatural-shacl-test.ttl | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/dev-page/configs/sapa-sparnatural-shacl-test.ttl b/dev-page/configs/sapa-sparnatural-shacl-test.ttl index 41c4f98f..cdf6b28d 100644 --- a/dev-page/configs/sapa-sparnatural-shacl-test.ttl +++ b/dev-page/configs/sapa-sparnatural-shacl-test.ttl @@ -40,6 +40,16 @@ a owl:Ontology. spao-sparnatural:FondsTheatre a sh:NodeShape; - rdfs:label "Fonds Théatre"@en; + rdfs:label "Fonds Théatre"@fr; sh:node spao-sparnatural:Fonds; - skos:definition "Un fonds sur le théatre"@en . + skos:definition "Un fonds sur le théatre"@fr . + +spao-sparnatural:FondsTheatreDeRue a sh:NodeShape; + rdfs:label "Fonds Théatre De Rue"@fr; + sh:node spao-sparnatural:FondsTheatre; + skos:definition "Un fonds sur le théatre de rue"@fr . + +spao-sparnatural:FondsTheatreDeRueMime a sh:NodeShape; + rdfs:label "Fonds Théatre De Rue Mimé"@fr; + sh:node spao-sparnatural:FondsTheatreDeRue; + skos:definition "Un fonds sur le théatre de rue mimé"@fr . \ No newline at end of file From da7d09c619e619412aa31c922e783202ffedda07 Mon Sep 17 00:00:00 2001 From: antoine37120 Date: Thu, 5 Sep 2024 13:58:49 +0200 Subject: [PATCH 28/55] fix 2 items dans fil d'ariane --- .../HierarchicalClassSelectBuilder.ts | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts index 94ccc97a..5e9f0b5b 100644 --- a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts +++ b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts @@ -93,7 +93,7 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { if (ulOfLiParent.getAttribute('parent') != '') { //need to add ancestor item label to path, need to animate first acestor let liAncestor = this.getParentLiToUl(ulOfLiParent); let liAncestorLabel = liAncestor.querySelector('.item-label').innerText ; - this.setAncestorInBreadcrumPath(liAncestorLabel) ; + this.downAncestorInBreadcrumPath(liAncestorLabel) ; } else { this.htmlBreadCrumParentLabel[0].classList.add('display'); } @@ -120,15 +120,28 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { return this.htmlInputValueClass ; } - setAncestorInBreadcrumPath(newAcestorLabel:any) { + downAncestorInBreadcrumPath(newAcestorLabel:any) { let NewAncestor = $(` / ${newAcestorLabel}`) ; - this.htmlBreadCrumPathParents[0].innerHTML = '' ; + //this.htmlBreadCrumPathParents[0].innerHTML = '' ; this.htmlBreadCrumPathParents.append(NewAncestor) ; setTimeout(function() { NewAncestor[0].classList.toggle('appened'); }, 1); } + + /*upAncestorInBreadcrumPath() { + let parentList = this.htmlBreadCrumPathParents[0].querySelectorAll('span') ; + if (parentList.length == 2) { + this.htmlBreadCrumPathParents[0].querySelector('span:last-of-type').classList.remove('appened') ; + let htmlBreadCrumPathParents = this.htmlBreadCrumPathParents[0] ; + setTimeout(function() { + htmlBreadCrumPathParents.querySelector('span:last-of-type').remove() ; + }, 500); + return true; + } + + }*/ downAncestorInParentLabel(newParentLabel:any) { let new_item = $(`${newParentLabel}`) ; if(this.htmlBreadCrumParentLabel[0].querySelector('span:last-of-type') != null) { From 8f1db4e068a2d9b33f02971b22ffacca70b4c1d4 Mon Sep 17 00:00:00 2001 From: antoine37120 Date: Thu, 5 Sep 2024 14:52:14 +0200 Subject: [PATCH 29/55] Ajout prefix fil ariane si un fil incomplet --- .../hierarchicalclassselectbuilder.scss | 10 ++++++++++ .../HierarchicalClassSelectBuilder.ts | 15 +++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/src/assets/stylesheets/components/citeriagroup/startendclassgroup/hierarchicalclassselectbuilder.scss b/src/assets/stylesheets/components/citeriagroup/startendclassgroup/hierarchicalclassselectbuilder.scss index 5a0b13f6..1eef1e74 100644 --- a/src/assets/stylesheets/components/citeriagroup/startendclassgroup/hierarchicalclassselectbuilder.scss +++ b/src/assets/stylesheets/components/citeriagroup/startendclassgroup/hierarchicalclassselectbuilder.scss @@ -139,9 +139,16 @@ } .htmlBreadCrumPathHome { + &.onHiddenUp { + display: none; + } } .htmlBreadCrumPathParentsPrefix { display: none; + + &.onHiddenUp { + display: inline-block; + } } .htmlBreadCrumPathParents { .ancestor-item { @@ -152,6 +159,9 @@ &.appened { margin-left: 0; } + &.onHiddenUp { + display: none; + } } diff --git a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts index 5e9f0b5b..3db72199 100644 --- a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts +++ b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts @@ -121,6 +121,12 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { } downAncestorInBreadcrumPath(newAcestorLabel:any) { + let parentList = this.htmlBreadCrumPathParents[0].querySelectorAll('span:not(.onHiddenUp)') ; + if (parentList.length == 2) { + parentList[0].classList.add('onHiddenUp'); + this.htmlBreadCrumPathHome[0].classList.add('onHiddenUp'); + this.htmlBreadCrumPathParentsPrefix[0].classList.add('onHiddenUp'); + } let NewAncestor = $(` / ${newAcestorLabel}`) ; //this.htmlBreadCrumPathParents[0].innerHTML = '' ; this.htmlBreadCrumPathParents.append(NewAncestor) ; @@ -177,6 +183,15 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { setTimeout(function() { htmlBreadCrumPathParents.querySelector('span:last-of-type').remove() ; }, 500); + + let pathHiddenParentList = this.htmlBreadCrumPathParents[0].querySelectorAll('span.onHiddenUp') ; + if (pathHiddenParentList.length > 0) { + pathHiddenParentList[(pathHiddenParentList.length - 1)].classList.remove('onHiddenUp'); + } + if (this.htmlBreadCrumPathParents[0].querySelectorAll('span.onHiddenUp').length == 0) { + this.htmlBreadCrumPathHome[0].classList.remove('onHiddenUp'); + this.htmlBreadCrumPathParentsPrefix[0].classList.remove('onHiddenUp'); + } } let htmlBreadCrumParentLabel = this.htmlBreadCrumParentLabel[0] ; setTimeout(function() { From 93edff6ed318071affb0538ec3238a0aa4586898 Mon Sep 17 00:00:00 2001 From: antoine37120 Date: Mon, 9 Sep 2024 13:19:30 +0200 Subject: [PATCH 30/55] =?UTF-8?q?supression=20input=20+refonte=20event=20c?= =?UTF-8?q?hange=20+=20affichage=20valeur=20selectionn=C3=A9e=20=20+=20pla?= =?UTF-8?q?ceholder=20translation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/assets/lang/en.json | 1 + src/assets/lang/fr.json | 1 + .../citeriagroup/criteriagroup.scss | 71 ++++++++++++++++ .../objectpropertygroup.scss | 5 +- .../objectpropertytypeid.scss | 15 ++++ .../hierarchicalclassselectbuilder.scss | 2 +- .../startendclassgroup.scss | 6 ++ .../criteriagroup/CriteriaGroup.ts | 1 + .../ObjectPropertyTypeId.ts | 77 ++++++++++++----- .../startendclassgroup/ClassTypeId.ts | 56 ++++++++++-- .../startendclassgroup/EndClassGroup.ts | 1 + .../HierarchicalClassSelectBuilder.ts | 85 ++++++++++--------- .../startendclassgroup/StartClassGroup.ts | 12 ++- 13 files changed, 256 insertions(+), 77 deletions(-) diff --git a/src/assets/lang/en.json b/src/assets/lang/en.json index e96e1203..a38e2360 100644 --- a/src/assets/lang/en.json +++ b/src/assets/lang/en.json @@ -24,6 +24,7 @@ "DisplayValueDateTo": "Until", "ButtonAdd": "Add", "ListWidgetNoItem": "... Oups, no value found !", + "StartClassTemporaryLabel": "Search for resources", "ObjectPropertyTemporaryLabel": "related to", "labelOptionOptional": "Optional", "labelOptionNotExists": "Not exists", diff --git a/src/assets/lang/fr.json b/src/assets/lang/fr.json index 2b901c03..cea182df 100644 --- a/src/assets/lang/fr.json +++ b/src/assets/lang/fr.json @@ -24,6 +24,7 @@ "DisplayValueDateTo": "Jusqu'à", "ButtonAdd": "Ajouter", "ListWidgetNoItem": "... Oups, aucune valeur trouvée !", + "StartClassTemporaryLabel": "Chercher des ressources", "ObjectPropertyTemporaryLabel": "relié(e) à", "labelOptionOptional": "Optionnel", "labelOptionNotExists": "Négatif", diff --git a/src/assets/stylesheets/components/citeriagroup/criteriagroup.scss b/src/assets/stylesheets/components/citeriagroup/criteriagroup.scss index 2b52bcc6..56b99d2e 100644 --- a/src/assets/stylesheets/components/citeriagroup/criteriagroup.scss +++ b/src/assets/stylesheets/components/citeriagroup/criteriagroup.scss @@ -80,6 +80,77 @@ border-radius: 11px; z-index: 2; } + + .currentWrapper { + height: 48px; + background: rgba(0, 0, 0, 0); + border-color: rgba(0, 0, 0, 0); + padding-left: 10px; + padding-right: 26px; + border-width: 0; + border-top-width: 3px; + border-bottom-width: 3px; + border-top: 3px solid #fff; + border-bottom: 3px solid #fff; + + span.current { + display: inline-block; + height: 42px; + line-height: 42px; + vertical-align: bottom; + max-width: 200px; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + opacity: 0.6; + background-color: var(--primary-color-light) ; + padding: 0 14px; + span { + display: inline-block; + vertical-align: bottom; + min-width: 20px; + } + &.selected { + background-color: #fff; + opacity: 1; + padding: 0 0; + color: var(--default-text-color); + span i { + font-size: 22px; + } + } + } + } + .VariableSelected .currentWrapper { + color: var(--default-text-color); + border-color: rgba(0, 0, 0, 0); + border-radius: 0; + } + + + .ClassTypeId.Highlited .currentWrapper { + border-radius: unset; + background-color: var(--primary-color-main); + border-color: #fff; + .current { + color: #fff; + background-color: var(--primary-color-main); + } + } + + .StartClassGroup .ClassTypeId.Highlited .currentWrapper { + border-top-left-radius: 6px; + border-bottom-left-radius: 6px; + } + + .ClassTypeId.Highlited.VariableSelected .currentWrapper { + border-color: var(--secondary-color-important); + } + .StartClassGroup .ClassTypeId .currentWrapper { + border-left: 3px solid #fff; + } + + } /* When a value is selected or Where is enabled */ diff --git a/src/assets/stylesheets/components/citeriagroup/objectpropertygroup/objectpropertygroup.scss b/src/assets/stylesheets/components/citeriagroup/objectpropertygroup/objectpropertygroup.scss index 47c3d3a2..eb55eafb 100644 --- a/src/assets/stylesheets/components/citeriagroup/objectpropertygroup/objectpropertygroup.scss +++ b/src/assets/stylesheets/components/citeriagroup/objectpropertygroup/objectpropertygroup.scss @@ -1,7 +1,7 @@ @use "../../../base"; .ObjectPropertyGroup { - margin-right: -15px; + /*margin-right: -15px;*/ padding-left: 10px; .nice-select{ padding-left:1em; @@ -9,7 +9,7 @@ .current { font-style: italic; } - .temporary-label { + .currentWrapper span.current.temporary-label { line-height: base.$height-components-under - 2; font-size: 14px; height: 42px; @@ -17,5 +17,6 @@ padding-right: 25px; display: inline-block; color: var(--default-text-color); + background-color: #fff; } } \ No newline at end of file diff --git a/src/assets/stylesheets/components/citeriagroup/objectpropertygroup/objectpropertytypeid.scss b/src/assets/stylesheets/components/citeriagroup/objectpropertygroup/objectpropertytypeid.scss index f46c2189..d4d8a0ea 100644 --- a/src/assets/stylesheets/components/citeriagroup/objectpropertygroup/objectpropertytypeid.scss +++ b/src/assets/stylesheets/components/citeriagroup/objectpropertygroup/objectpropertytypeid.scss @@ -1,3 +1,18 @@ .ObjectPropertyTypeId{ + position: relative; display: flex; + + .currentWrapper { + padding-left: 15px; + } + + span.current { + width: 232px; + &.selected { + width: auto; + } + &.temporary-label { + width: auto; + } + } } \ No newline at end of file diff --git a/src/assets/stylesheets/components/citeriagroup/startendclassgroup/hierarchicalclassselectbuilder.scss b/src/assets/stylesheets/components/citeriagroup/startendclassgroup/hierarchicalclassselectbuilder.scss index 1eef1e74..a7de503e 100644 --- a/src/assets/stylesheets/components/citeriagroup/startendclassgroup/hierarchicalclassselectbuilder.scss +++ b/src/assets/stylesheets/components/citeriagroup/startendclassgroup/hierarchicalclassselectbuilder.scss @@ -22,7 +22,7 @@ } .htmlSelectUiUx { - position: relative; + position: absolute; top: 0; left: 0; display: block; diff --git a/src/assets/stylesheets/components/citeriagroup/startendclassgroup/startendclassgroup.scss b/src/assets/stylesheets/components/citeriagroup/startendclassgroup/startendclassgroup.scss index de563c71..5189df40 100644 --- a/src/assets/stylesheets/components/citeriagroup/startendclassgroup/startendclassgroup.scss +++ b/src/assets/stylesheets/components/citeriagroup/startendclassgroup/startendclassgroup.scss @@ -67,6 +67,12 @@ font-style: italic; } } + span.current { + width: 232px; + &.selected { + width: auto; + } + } } diff --git a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/CriteriaGroup.ts b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/CriteriaGroup.ts index 764ec38e..865d8d25 100644 --- a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/CriteriaGroup.ts +++ b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/CriteriaGroup.ts @@ -39,6 +39,7 @@ class CriteriaGroup extends HTMLComponent { this.StartClassGroup = new StartClassGroup( this, this.specProvider, + I18n.labels.StartClassTemporaryLabel, startClassVal, // Decides if the selectviewvarBtn is rendered on the startClass. That is the case only for the first one startClassEyeBtn diff --git a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/objectpropertygroup/ObjectPropertyTypeId.ts b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/objectpropertygroup/ObjectPropertyTypeId.ts index 302e3b20..000d89c0 100644 --- a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/objectpropertygroup/ObjectPropertyTypeId.ts +++ b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/objectpropertygroup/ObjectPropertyTypeId.ts @@ -23,6 +23,7 @@ class ObjectPropertyTypeId extends HTMLComponent { ); specProvider: ISparnaturalSpecification; selectBuilder: PropertySelectBuilder; + htmlCurentValue: JQuery; constructor( ParentComponent: HTMLComponent, specProvider: ISparnaturalSpecification, @@ -42,18 +43,25 @@ class ObjectPropertyTypeId extends HTMLComponent { created by PropertySelectBuilder */ render() { - super.render(); + super.render(); + + this.htmlCurentValue = $('') ; + let currentWrapper = $('
            ') ; + currentWrapper.append(this.htmlCurentValue) ; + this.html.append(currentWrapper); // if there is an Object selected if (this.endClassVal) { this.#removeTempLbl(); // set the correct objectProperty matching to Start and End value + + this.widgetHtml = this.#getObjectProperty(); this.html.append(this.widgetHtml); - this.oldWidget = this.selectBuilder.selectBuilder.getInput(); + this.oldWidget = this.selectBuilder.selectWidget.getInput(); - this.selectBuilder.selectBuilder.initSelectUiUxListsHeight() ; //force init heigh after dominsertion. + this.selectBuilder.selectWidget.initSelectUiUxListsHeight() ; //force init heigh after dominsertion. //this.html.append(this.oldWidget); this.#addOnChangeListener(this.oldWidget); @@ -67,17 +75,20 @@ class ObjectPropertyTypeId extends HTMLComponent { // If juste 1 option selectable if (this.selectBuilder.selectableItems.length == 1) { - this.selectBuilder.selectBuilder.defaultValue.value = this.selectBuilder.selectableItems[0] ; + this.selectBuilder.selectWidget.defaultValue.value = this.selectBuilder.selectableItems[0] ; this.submitSelected(); } } else { // there hasn't been an Object in Endclassgroup chosen. render a temporary label - this.widgetHtml = $( + this.htmlCurentValue[0].innerHTML = this.temporaryLabel + this.htmlCurentValue[0].classList.add('temporary-label') + + /*this.widgetHtml = $( '' + this.temporaryLabel + "" - ); + );*/ } this.html.append(this.widgetHtml); this.arrow.render(); @@ -86,29 +97,49 @@ class ObjectPropertyTypeId extends HTMLComponent { submitSelected() { - this.selectBuilder.selectBuilder.submitSelectedValue() ; + this.selectBuilder.selectWidget.submitSelectedValue() ; + } + + + setCurrentContent(id:string) { + this.#removeTempLbl() ; + let entity = this.specProvider.getProperty(id) ; + let entity_icon = entity.getIcon() ; + let icon = `` ; + if (entity_icon != undefined ) { + icon = `` ; + } + this.htmlCurentValue.html(`${icon} ${entity.getLabel()} `) ; + this.htmlCurentValue[0].classList.add('selected') ; } // when a value gets selected from the dropdown menu (niceselect), then change is called #addOnChangeListener(selectWidget: JQuery) { - selectWidget.on("change", () => { - let selectedValue = this.selectBuilder.selectBuilder.getInput().val(); - //disable further choice - this.widgetHtml.addClass("disabled"); - this.widgetHtml.removeClass("open"); - this.html[0].dispatchEvent( - new CustomEvent("onObjectPropertyTypeIdSelected", { - bubbles: true, - detail: selectedValue, - }) - ); - }); + + selectWidget[0].addEventListener( + "change", + (e: CustomEvent) => { + let selectedValue = e.detail.value ; + console.log(e.detail) ; + this.setCurrentContent(selectedValue) ; + //disable further choice on nice-select + this.widgetHtml[0].classList.add("disabled"); + this.widgetHtml[0].classList.remove("open"); + this.html[0].dispatchEvent( + new CustomEvent("onObjectPropertyTypeIdSelected", { + bubbles: true, + detail: selectedValue, + }) + ); + }); } // removes the temporary label e.g 'relatedTo' #removeTempLbl() { - $(this.html).find(".temporary-label").remove(); + //$(this.html).find(".temporary-label").remove(); + this.htmlCurentValue[0].classList.remove('temporary-label') ; } + // sets the ObjectProperty according to the Subject and Object e.g Country isCountryOf Musuem #getObjectProperty() { @@ -136,7 +167,7 @@ export default ObjectPropertyTypeId; class PropertySelectBuilder extends HTMLComponent { selectableItems: Array; specProvider: ISparnaturalSpecification; - selectBuilder: HierarchicalClassSelectBuilder; + selectWidget: HierarchicalClassSelectBuilder; constructor(ParentComponent: HTMLComponent, specProvider: ISparnaturalSpecification) { super("ObjectPropertyTypeId", ParentComponent, null); @@ -195,8 +226,8 @@ class PropertySelectBuilder extends HTMLComponent { initDagWidget(items:DagIfc, default_value: DagWidgetDefaultValue) { let jsonDag = this.convertToJsonDag(items.roots) ; - this.selectBuilder = new HierarchicalClassSelectBuilder(this.ParentComponent, this.specProvider, jsonDag, default_value ); - return this.selectBuilder.buildClassSelectFromJson() ; ; + this.selectWidget = new HierarchicalClassSelectBuilder(this.ParentComponent, this.specProvider, jsonDag, default_value ); + return this.selectWidget.buildClassSelectFromJson() ; ; } buildPropertySelect( diff --git a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/ClassTypeId.ts b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/ClassTypeId.ts index bb12d0e2..2272a5d6 100644 --- a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/ClassTypeId.ts +++ b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/ClassTypeId.ts @@ -36,12 +36,16 @@ class ClassTypeId extends HTMLComponent { UnselectButton: UnselectBtn; selectViewVariableBtn: SelectViewVariableBtn; specProvider: ISparnaturalSpecification; + htmlCurentValue: JQuery; + temporaryLabel: string; constructor( ParentComponent: HTMLComponent, specProvider: ISparnaturalSpecification, + temporaryLabel: string, startClassVal?: any ) { super("ClassTypeId", ParentComponent, null); + this.temporaryLabel = temporaryLabel; //this.selectBuilder = new HierarchicalClassSelectBuilder(this, specProvider); this.selectBuilder = new ClassSelectBuilder(this, specProvider); this.startClassVal = startClassVal; @@ -55,11 +59,18 @@ class ClassTypeId extends HTMLComponent { this.#onchangeViewVariable ); super.render(); + + // no back arrow on start class if (!isStartClassGroup(this.ParentComponent)) { this.backArrow.render(); } + this.htmlCurentValue = $(`${this.temporaryLabel}`) ; + let currentWrapper = $('
            ') ; + currentWrapper.append(this.htmlCurentValue) ; + this.html.append(currentWrapper); + if (isStartClassGroup(this.ParentComponent)) { if(!this.startClassVal?.type) { // If this Component is a child of the StartClassGroup component in the first row with no value selected @@ -78,8 +89,8 @@ class ClassTypeId extends HTMLComponent { this.html.append(this.widgetHtml); // convert to niceSelect: https://jqueryniceselect.hernansartorio.com/ // needs to happen after html.append(). it uses rendered stuff on page to create a new select... should move away from that - this.oldWidget = this.selectBuilder.selectBuilder.getInput(); - this.selectBuilder.selectBuilder.initSelectUiUxListsHeight() ; //force init heigh after dominsertion. + this.oldWidget = this.selectBuilder.selectWidget.getInput(); + this.selectBuilder.selectWidget.initSelectUiUxListsHeight() ; //force init heigh after dominsertion. //this.widgetHtml = this.widgetHtml.niceSelect(); // nice-select is not a proper select tag and that's why can't listen for change events... move away from nice-select! this.#addOnChangeListener(this.oldWidget); @@ -91,7 +102,7 @@ class ClassTypeId extends HTMLComponent { } submitSelected() { - this.selectBuilder.selectBuilder.submitSelectedValue() ; + this.selectBuilder.selectWidget.submitSelectedValue() ; } // is called by EndClassGroup @@ -103,11 +114,38 @@ class ClassTypeId extends HTMLComponent { }; this.UnselectButton = new UnselectBtn(this, removeEndClassEvent).render(); } + + setCurrentContent(id:string) { + let entity = this.specProvider.getEntity(id) ; + let entity_icon = entity.getIcon() ; + let icon = `` ; + if (entity_icon != undefined ) { + icon = `` ; + } + this.htmlCurentValue.html(`${icon} ${entity.getLabel()} `) ; + this.htmlCurentValue[0].classList.add('selected') ; + } // when a value gets selected from the dropdown menu (niceselect), then change is called #addOnChangeListener(selectWidget: JQuery) { - selectWidget.on("change", () => { - let selectedValue = this.selectBuilder.selectBuilder.getInput().val(); + selectWidget[0].addEventListener( + "change", + (e: CustomEvent) => { + let selectedValue = e.detail.value ; + console.log(e.detail) ; + this.setCurrentContent(selectedValue) ; + //disable further choice on nice-select + this.widgetHtml[0].classList.add("disabled"); + this.widgetHtml[0].classList.remove("open"); + this.html[0].dispatchEvent( + new CustomEvent("classTypeValueSelected", { + bubbles: true, + detail: selectedValue, + }) + ); + }); + /*selectWidget.on("change", (e) => { + let selectedValue = e.detail.value ; //disable further choice on nice-select this.widgetHtml[0].classList.add("disabled"); this.widgetHtml[0].classList.remove("open"); @@ -117,7 +155,7 @@ class ClassTypeId extends HTMLComponent { detail: selectedValue, }) ); - }); + });*/ } #onchangeViewVariable = (selected: boolean) => { @@ -178,7 +216,7 @@ export default ClassTypeId; **/ class ClassSelectBuilder extends HTMLComponent { specProvider: ISparnaturalSpecification; - selectBuilder: HierarchicalClassSelectBuilder; + selectWidget: HierarchicalClassSelectBuilder; constructor(ParentComponent: HTMLComponent, specProvider: ISparnaturalSpecification) { super("ClassTypeId", ParentComponent, null); this.specProvider = specProvider; @@ -286,8 +324,8 @@ class ClassSelectBuilder extends HTMLComponent { initDagWidget(items:DagIfc, default_value: DagWidgetDefaultValue) { let jsonDag = this.convertToJsonDag(items.roots) ; - this.selectBuilder = new HierarchicalClassSelectBuilder(this.ParentComponent, this.specProvider, jsonDag, default_value ); - return this.selectBuilder.buildClassSelectFromJson() ; ; + this.selectWidget = new HierarchicalClassSelectBuilder(this.ParentComponent, this.specProvider, jsonDag, default_value ); + return this.selectWidget.buildClassSelectFromJson() ; ; } /*buildClassSelectFromItems(items:DagIfc, default_value: string) { diff --git a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/EndClassGroup.ts b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/EndClassGroup.ts index df19e6f4..8141d6e7 100644 --- a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/EndClassGroup.ts +++ b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/EndClassGroup.ts @@ -108,6 +108,7 @@ class EndClassGroup extends HTMLComponent { this.inputSelector = new ClassTypeId( this, this.specProvider, + '', startClassVal ); this.inputSelector.render(); diff --git a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts index 3db72199..c2078c72 100644 --- a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts +++ b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts @@ -27,6 +27,11 @@ export interface DagWidgetDefaultValue { value: string, path: string, } +export interface DagWidgetValue { + value: string, + path: string, + icon: string, +} export interface BreadCrumData { parentsLabels: Array, returnPath: string, @@ -51,10 +56,7 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { htmlBreadCrumPathParents: JQuery; htmlBreadCrumParentLabel: JQuery; htmlSelectUiUxLists: JQuery; - htmlInputValueClass: JQuery; - htmlInputValuePath: JQuery; - htmlInputValueIcon: JQuery; - htmlCurentValue: JQuery; + //htmlCurentValue: JQuery; breadcrumItems: Array = []; hierarchyData: Array = []; value: string; @@ -63,6 +65,11 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { value: '', path: '' }; + widgetValue: DagWidgetValue = { + value: '', + path: '', + icon: '' + }; constructor(ParentComponent: HTMLComponent, specProvider: ISparnaturalSpecification, hierarchyData: Array, defaultValue: DagWidgetDefaultValue) { super("HierarchicalClassSelectBuilder", ParentComponent, null); this.specProvider = specProvider; @@ -117,7 +124,7 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { } getInput() { - return this.htmlInputValueClass ; + return this.html ; } downAncestorInBreadcrumPath(newAcestorLabel:any) { @@ -199,18 +206,16 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { }, 500); } - setCurrentContent() { - let entity_path = this.htmlInputValuePath.val() as string; - let entity_id = this.htmlInputValueClass.val() as string; - let entity_icon = this.htmlInputValueIcon.val() as string; + /*setCurrentContent() { + let entity = this.specProvider.getEntity(this.widgetValue.value) ; + let entity_icon = entity.getIcon() ; let icon = `` ; if (entity_icon != '') { icon = `` ; } - let entity = this.specProvider.getEntity(entity_id) ; this.htmlCurentValue.html(`${icon} ${entity.getLabel()} `) ; this.htmlCurentValue[0].classList.add('selected') ; - } + }*/ initSelectUiUxListsHeight() { let listToDisplay = this.htmlSelectUiUx[0].querySelector('ul[parent].active-pane') ; @@ -301,10 +306,19 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { let class_path = (e.target as any).closest('li').getAttribute('data-parent') ; let class_icon = (e.target as any).closest('li').getAttribute('data-icon') ; - this.htmlInputValueIcon.val(class_icon) ; - this.htmlInputValuePath.val(class_path) ; - this.htmlInputValueClass.val(class_id).trigger("change"); - this.setCurrentContent() ; + this.widgetValue = { + value: class_id, + path: class_path, + icon: class_icon, + }; + + this.html[0].dispatchEvent( + new CustomEvent("widgetItemSelected", { + bubbles: true, + detail: this.widgetValue, + }) + ); + //this.setCurrentContent() ; } ); @@ -413,10 +427,7 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { this.htmlSelectUiUx = $(`
            `) ; this.htmlSelectUiUxLists = $(`
            `) ; this.htmlSelectUiUxBreadCrum = $(`
            `) ; - this.htmlInputValueClass = $(``) ; - this.htmlInputValuePath = $(``) ; - this.htmlInputValueIcon = $(``) ; - this.htmlCurentValue = $('Chercher des ressources') ; + //this.htmlCurentValue = $('Chercher des ressources') ; let initBreadcrumData: BreadCrumData = { parentsLabels: ['Tout'], returnPath: '', @@ -429,31 +440,29 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { this.buildClassSelectList(this.hierarchyData, 'root active-pane', '', initBreadcrumData) ; this.html = $('
            '); - let currentWrapper = $('
            ') ; - currentWrapper.append(this.htmlCurentValue) ; - this.htmlSelectUiUx.append(currentWrapper) ; + //let currentWrapper = $('
            ') ; + //currentWrapper.append(this.htmlCurentValue) ; + //this.htmlSelectUiUx.append(currentWrapper) ; this.htmlSelectUiUx.append(this.htmlSelectUiUxLists) ; - this.htmlSelectUiUx.append(this.htmlInputValueClass) ; - this.htmlSelectUiUx.append(this.htmlInputValuePath) ; - this.htmlSelectUiUx.append(this.htmlInputValueIcon) ; this.html.append(this.htmlSelectUiUx) ; this.initClassSelector() ; - + this.displayClassSelector() ; + + this.html[0].addEventListener( + "widgetItemSelected", + (e: CustomEvent) => { + this.html[0].dispatchEvent( + new CustomEvent("change", { + bubbles: true, + detail: e.detail, + }) + ); + this.hideClassSelector() ; - this.htmlInputValueClass.on("change", () => { - let selectedValue: any = this.htmlInputValueClass.val(); - this.value = selectedValue ; - this.valuePath = this.htmlInputValuePath.val() as string; - this.html[0].dispatchEvent( - new CustomEvent("change", { - bubbles: true, - detail: {value: this.value, valuePath: this.valuePath}, - }) - ); - this.hideClassSelector() ; - }); + } + ); return this.html.children(); } diff --git a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/StartClassGroup.ts b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/StartClassGroup.ts index 8beba058..6f4e9a48 100644 --- a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/StartClassGroup.ts +++ b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/StartClassGroup.ts @@ -14,7 +14,8 @@ class StartClassGroup extends HTMLComponent { inputSelector: ClassTypeId; ParentCriteriaGroup: CriteriaGroup; specProvider: ISparnaturalSpecification; - renderEyeBtn:Boolean = false + renderEyeBtn:Boolean = false; + temporaryLabel: string; // shadow variable for http://data.sparna.fr/ontologies/sparnatural-config-core/index-en.html#defaultLabelProperty defaultLblVar: SelectedVal ={ type:null, @@ -24,12 +25,15 @@ class StartClassGroup extends HTMLComponent { constructor( ParentCriteriaGroup: CriteriaGroup, specProvider: ISparnaturalSpecification, + temporaryLabel: string, startClassVal?: SelectedVal, - renderEyeBtn?: Boolean + renderEyeBtn?: Boolean, ) { super("StartClassGroup", ParentCriteriaGroup, null); this.specProvider = specProvider; - this.inputSelector = new ClassTypeId(this, this.specProvider, startClassVal); + + this.temporaryLabel = temporaryLabel; + this.inputSelector = new ClassTypeId(this, this.specProvider, this.temporaryLabel, startClassVal); this.ParentCriteriaGroup = this.ParentComponent as CriteriaGroup; this.startClassVal = startClassVal ? startClassVal @@ -37,7 +41,7 @@ class StartClassGroup extends HTMLComponent { type: null, variable: null, }; - this.renderEyeBtn = renderEyeBtn + this.renderEyeBtn = renderEyeBtn; } render() { From 18321685511658d2e31d63e75d9e97bc22ceef9a Mon Sep 17 00:00:00 2001 From: antoine37120 Date: Tue, 10 Sep 2024 18:20:29 +0200 Subject: [PATCH 31/55] =?UTF-8?q?#351=20Aligner=20le=20s=C3=A9lecteur=20su?= =?UTF-8?q?r=20le=20placeholder=20=C3=A0=20gauche?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hierarchicalclassselectbuilder.scss | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/assets/stylesheets/components/citeriagroup/startendclassgroup/hierarchicalclassselectbuilder.scss b/src/assets/stylesheets/components/citeriagroup/startendclassgroup/hierarchicalclassselectbuilder.scss index a7de503e..e18675ac 100644 --- a/src/assets/stylesheets/components/citeriagroup/startendclassgroup/hierarchicalclassselectbuilder.scss +++ b/src/assets/stylesheets/components/citeriagroup/startendclassgroup/hierarchicalclassselectbuilder.scss @@ -21,10 +21,21 @@ border-left: 3px solid #fff; } +.ObjectPropertyTypeId { + .htmlSelectUiUx { + left: 15px; + } +} +.EndClassGroup { + .htmlSelectUiUx { + left: 28px; + } +} + .htmlSelectUiUx { position: absolute; top: 0; - left: 0; + left: 13px; display: block; white-space: nowrap; background-color: #fff; From 214d84768252eb1b6319bff9712d4ede3585f3aa Mon Sep 17 00:00:00 2001 From: Thomas Francart Date: Tue, 10 Sep 2024 22:01:21 +0200 Subject: [PATCH 32/55] ... --- .../startendclassgroup/HierarchicalClassSelectBuilder.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts index c2078c72..f9eaab84 100644 --- a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts +++ b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts @@ -330,7 +330,7 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { let BackContent = $(`${UiuxConfig.ICON_DAG_ARROW_LEFT}`); this.htmlBreadCrumPath = $('
            '); this.htmlBreadCrumPathHome = $('
            Tout
            '); - this.htmlBreadCrumPathParentsPrefix = $('
            ..
            '); + this.htmlBreadCrumPathParentsPrefix = $('
            ...
            '); this.htmlBreadCrumPathParents = $('
            '); this.htmlBreadCrumParentLabel = $('
            '); //First block for backward action From b58a6946b8184601b356881e9deb984488854af5 Mon Sep 17 00:00:00 2001 From: Thomas Francart Date: Tue, 10 Sep 2024 22:33:08 +0200 Subject: [PATCH 33/55] Test tooltip --- dev-page/configs/instantiations-shacl.ttl | 1 + 1 file changed, 1 insertion(+) diff --git a/dev-page/configs/instantiations-shacl.ttl b/dev-page/configs/instantiations-shacl.ttl index 029d5179..03b4ab5d 100644 --- a/dev-page/configs/instantiations-shacl.ttl +++ b/dev-page/configs/instantiations-shacl.ttl @@ -46,6 +46,7 @@ spao-i:Instantiation a sh:NodeShape; volipi:iconName "fa-light fa-files"; sh:targetClass rico:Instantiation; rdfs:label "Instantiation"@en; + sh:description "Ceci est un tooltip"@en , "Ceci est un tooltip"@fr ; sh:closed "true"; sh:ignoredProperties _:ba09c1662f6649d08454fc46fcbacca15773; shacl-play:background-color "ff6363"; From 78f6e6a592d74f0db5a673be0cbc3101ddb2ac83 Mon Sep 17 00:00:00 2001 From: antoine37120 Date: Wed, 11 Sep 2024 09:18:30 +0200 Subject: [PATCH 34/55] #351 Laisse le placeholder "related to" dans le ObjectPropertyId --- .../criteriagroup/objectpropertygroup/ObjectPropertyTypeId.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/objectpropertygroup/ObjectPropertyTypeId.ts b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/objectpropertygroup/ObjectPropertyTypeId.ts index 000d89c0..1a569cce 100644 --- a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/objectpropertygroup/ObjectPropertyTypeId.ts +++ b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/objectpropertygroup/ObjectPropertyTypeId.ts @@ -45,7 +45,7 @@ class ObjectPropertyTypeId extends HTMLComponent { render() { super.render(); - this.htmlCurentValue = $('') ; + this.htmlCurentValue = $(`${this.temporaryLabel}`) ; let currentWrapper = $('
            ') ; currentWrapper.append(this.htmlCurentValue) ; this.html.append(currentWrapper); From 8138d89736cf0b695b404abba5822e9dd76f2112 Mon Sep 17 00:00:00 2001 From: antoine37120 Date: Wed, 11 Sep 2024 10:23:36 +0200 Subject: [PATCH 35/55] =?UTF-8?q?#351=20Compter=20le=20nombre=20de=20carac?= =?UTF-8?q?t=C3=A8re=20et=20afficher=20un=20tooltip=20si=20>=2032=20+=20In?= =?UTF-8?q?t=C3=A9grer=20les=20tooltips=20tippy=20+=20fix=20text=20overflo?= =?UTF-8?q?w=20breadcrum?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hierarchicalclassselectbuilder.scss | 16 ++++++++++++-- .../HierarchicalClassSelectBuilder.ts | 22 +++++++++++++++++-- 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/src/assets/stylesheets/components/citeriagroup/startendclassgroup/hierarchicalclassselectbuilder.scss b/src/assets/stylesheets/components/citeriagroup/startendclassgroup/hierarchicalclassselectbuilder.scss index e18675ac..69066370 100644 --- a/src/assets/stylesheets/components/citeriagroup/startendclassgroup/hierarchicalclassselectbuilder.scss +++ b/src/assets/stylesheets/components/citeriagroup/startendclassgroup/hierarchicalclassselectbuilder.scss @@ -137,11 +137,14 @@ display: block; padding: 8px; line-height: 13.62px; + width: 297px; height: 55px; .htmlBreadCrumPath { //for all texts in ancestors path + width: 100%; &>div { display: inline-block; + vertical-align:middle; font-size: 10px; font-weight: 700; line-height: 13.62px; @@ -162,11 +165,17 @@ } } .htmlBreadCrumPathParents { + vertical-align:middle; .ancestor-item { + display: inline-block; + vertical-align:middle; margin-left: 300px; + text-overflow: ellipsis; + overflow: hidden; transition-property: margin-left; transition-duration: 0.5s; transition-delay: 0; + max-width: 125px; &.appened { margin-left: 0; } @@ -191,6 +200,9 @@ position: absolute; top: 0; left: 300px; + max-width: 281px; + overflow-x: hidden; + text-overflow: ellipsis; transition-property: left; transition-duration: 0.5s; @@ -201,13 +213,13 @@ } &.move-left { - left: -300px; + left: -350px; } &.move-to-display { left: 0; } &.move-right { - left: 300px; + left: 350px; } } diff --git a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts index f9eaab84..024c56c1 100644 --- a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts +++ b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts @@ -10,6 +10,8 @@ import { I18n } from "../../../../../settings/I18n"; import { DagIfc, DagNodeIfc} from "../../../../../dag/Dag"; import ISpecificationEntity from "../../../../../spec-providers/ISpecificationEntity"; import UiuxConfig from "../../../../IconsConstants"; +import tippy from "tippy.js"; +import { TOOLTIP_CONFIG } from "../../../../../settings/defaultSettings"; export interface JsonDagRow { @@ -389,10 +391,21 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { iconValue = `data-icon="${element.icon}"` ; } let selected = this.defaultValue.value == element.id ? 'selected="selected"' : ""; - let tooltip = element.tooltip != undefined ? `title="${element.tooltip}"` : ""; + //Add tooltip content if description + let tooltip = element.tooltip != undefined ? `${element.tooltip}` : ""; + // Prepand label if contain more than 32 caracteres + if (element.label.length > 32) { + let sep = tooltip != '' ? ` - ` : "" ; + tooltip = `${element.label}${sep}${tooltip}` ; + } + // set typpy attribute if tooltip content + if (tooltip != '') { + tooltip = `data-tippy-content="${tooltip}"` ; + } + let color = element.color != undefined ? `data-color="${element.color}"` : ""; - let item = $(`
          • ${icon}${element.label}${UiuxConfig.ICON_DAG_ARROW_RIGHT}
          • `) ; + let item = $(`
          • ${icon}${element.label}${UiuxConfig.ICON_DAG_ARROW_RIGHT}
          • `) ; return item ; } @@ -449,6 +462,11 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { this.initClassSelector() ; this.displayClassSelector() ; + + tippy( + this.html[0].querySelectorAll(".item-sel[data-tippy-content]"), + TOOLTIP_CONFIG + ); this.html[0].addEventListener( "widgetItemSelected", From 0b0a8bebb92b795811dd83e93f30eb88158c0a08 Mon Sep 17 00:00:00 2001 From: antoine37120 Date: Wed, 11 Sep 2024 10:44:56 +0200 Subject: [PATCH 36/55] =?UTF-8?q?#351=20Voir=20si=20la=20largeur=20du=20pl?= =?UTF-8?q?aceholder=20peut=20=C3=AAtre=20identique=20au=20widget?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../stylesheets/components/citeriagroup/criteriagroup.scss | 7 +++++++ .../objectpropertygroup/objectpropertytypeid.scss | 5 +++++ .../startendclassgroup/HierarchicalClassSelectBuilder.ts | 2 ++ 3 files changed, 14 insertions(+) diff --git a/src/assets/stylesheets/components/citeriagroup/criteriagroup.scss b/src/assets/stylesheets/components/citeriagroup/criteriagroup.scss index 56b99d2e..5e621e8c 100644 --- a/src/assets/stylesheets/components/citeriagroup/criteriagroup.scss +++ b/src/assets/stylesheets/components/citeriagroup/criteriagroup.scss @@ -121,6 +121,13 @@ } } } + .focus { + .currentWrapper { + span.current { + min-width: 345px; + } + } + } .VariableSelected .currentWrapper { color: var(--default-text-color); border-color: rgba(0, 0, 0, 0); diff --git a/src/assets/stylesheets/components/citeriagroup/objectpropertygroup/objectpropertytypeid.scss b/src/assets/stylesheets/components/citeriagroup/objectpropertygroup/objectpropertytypeid.scss index d4d8a0ea..1b913d91 100644 --- a/src/assets/stylesheets/components/citeriagroup/objectpropertygroup/objectpropertytypeid.scss +++ b/src/assets/stylesheets/components/citeriagroup/objectpropertygroup/objectpropertytypeid.scss @@ -15,4 +15,9 @@ width: auto; } } + .focus span.current { + &.temporary-label { + width: 345px; + } + } } \ No newline at end of file diff --git a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts index 024c56c1..d5184b08 100644 --- a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts +++ b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts @@ -411,8 +411,10 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { displayClassSelector() { this.htmlSelectUiUx.addClass('open') ; + this.ParentComponent.html[0].classList.add('focus') ; } hideClassSelector() { + this.ParentComponent.html[0].classList.remove('focus') ; this.htmlSelectUiUx.removeClass('open') ; } From 47bd941951fb3ffc241821ca100687f3df8fa812 Mon Sep 17 00:00:00 2001 From: antoine37120 Date: Wed, 11 Sep 2024 12:41:48 +0200 Subject: [PATCH 37/55] =?UTF-8?q?#351=20Adapter=20la=20largeur=20du=20widg?= =?UTF-8?q?et=20si=20liste=20=C3=A0=20plat=20ou=20sans=20icon?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../citeriagroup/criteriagroup.scss | 20 +++++++++- .../objectpropertytypeid.scss | 5 --- .../hierarchicalclassselectbuilder.scss | 39 +++++++++++++++++++ .../HierarchicalClassSelectBuilder.ts | 25 +++++++++++- 4 files changed, 81 insertions(+), 8 deletions(-) diff --git a/src/assets/stylesheets/components/citeriagroup/criteriagroup.scss b/src/assets/stylesheets/components/citeriagroup/criteriagroup.scss index 5e621e8c..a492f46b 100644 --- a/src/assets/stylesheets/components/citeriagroup/criteriagroup.scss +++ b/src/assets/stylesheets/components/citeriagroup/criteriagroup.scss @@ -121,13 +121,29 @@ } } } - .focus { + + .focus { .currentWrapper { span.current { min-width: 345px; } } - } + &.selectorIsFlat { // -30px + .currentWrapper span.current { + min-width: 315px; + } + } + &:not(.selectorHasIcon) { // -48px + .currentWrapper span.current { + min-width: 297px; + } + } + &.selectorIsFlat:not(.selectorHasIcon) {// -48px -30px + .currentWrapper span.current { + min-width: 267px; + } + } + } .VariableSelected .currentWrapper { color: var(--default-text-color); border-color: rgba(0, 0, 0, 0); diff --git a/src/assets/stylesheets/components/citeriagroup/objectpropertygroup/objectpropertytypeid.scss b/src/assets/stylesheets/components/citeriagroup/objectpropertygroup/objectpropertytypeid.scss index 1b913d91..d4d8a0ea 100644 --- a/src/assets/stylesheets/components/citeriagroup/objectpropertygroup/objectpropertytypeid.scss +++ b/src/assets/stylesheets/components/citeriagroup/objectpropertygroup/objectpropertytypeid.scss @@ -15,9 +15,4 @@ width: auto; } } - .focus span.current { - &.temporary-label { - width: 345px; - } - } } \ No newline at end of file diff --git a/src/assets/stylesheets/components/citeriagroup/startendclassgroup/hierarchicalclassselectbuilder.scss b/src/assets/stylesheets/components/citeriagroup/startendclassgroup/hierarchicalclassselectbuilder.scss index 69066370..a926becf 100644 --- a/src/assets/stylesheets/components/citeriagroup/startendclassgroup/hierarchicalclassselectbuilder.scss +++ b/src/assets/stylesheets/components/citeriagroup/startendclassgroup/hierarchicalclassselectbuilder.scss @@ -88,6 +88,45 @@ } } + &.isFlat { // -30px + .htmlSelectUiUxLists { + width: 315px; + ul { + width: 315px; + } + } + } + &:not(.hasIcon) { // -48px + .htmlSelectUiUxLists { + width: 297px; + ul { + width: 297px; + .label-icon { + display: none; + } + } + .htmlSelectUiUxBreadCrum { + .htmlBreadCrumRight { + width: 249px; + .htmlBreadCrumPath .htmlBreadCrumPathParents .ancestor-item { + max-width: 101px; + } + .htmlBreadCrumParentLabel>span { + max-width: 233px; + } + } + } + } + } + &.isFlat:not(.hasIcon) {// -48px -30px + .htmlSelectUiUxLists { + width: 267px; + ul { + width: 267px; + } + } + } + .htmlSelectUiUxLists { display: none; overflow-x: hidden; diff --git a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts index d5184b08..cbc4813a 100644 --- a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts +++ b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts @@ -63,6 +63,7 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { hierarchyData: Array = []; value: string; valuePath: string; + hasIcon: boolean = false; defaultValue: DagWidgetDefaultValue = { value: '', path: '' @@ -119,6 +120,18 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { } this.upAncestorInParentLabel() ; } + isFlatHierarchy():boolean { + let isFlat = true ; + this.hierarchyData.forEach(element => { + if (element.childs.length > 0) { + isFlat = false ; + } + }) ; + return isFlat + } + withIcons() { + return this.hasIcon ; + } getParentLiToUl(el:any):any { let uniqPath = el.getAttribute('parent') ; @@ -389,6 +402,7 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { if (element.icon != '') { icon = `` ; iconValue = `data-icon="${element.icon}"` ; + this.hasIcon = true; } let selected = this.defaultValue.value == element.id ? 'selected="selected"' : ""; //Add tooltip content if description @@ -451,7 +465,6 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { this.initBreadCrum() ; this.htmlSelectUiUxLists.append(this.htmlSelectUiUxBreadCrum) ; - this.buildClassSelectList(this.hierarchyData, 'root active-pane', '', initBreadcrumData) ; this.html = $('
            '); @@ -463,6 +476,16 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { this.html.append(this.htmlSelectUiUx) ; this.initClassSelector() ; + if (this.isFlatHierarchy()) { + this.htmlSelectUiUx[0].classList.add('isFlat') ; + this.ParentComponent.html[0].classList.add('selectorIsFlat') ; + } + if (this.hasIcon) { + this.htmlSelectUiUx[0].classList.add('hasIcon') ; + this.ParentComponent.html[0].classList.add('selectorHasIcon') ; + } + + this.displayClassSelector() ; tippy( From 8092d86b359339c3677f5859359c6e9a28331850 Mon Sep 17 00:00:00 2001 From: Thomas Francart Date: Wed, 11 Sep 2024 12:42:09 +0200 Subject: [PATCH 38/55] First attempt at property hierarchy --- .../shacl/SHACLSpecificationEntity.ts | 37 ++++++++------- .../shacl/SHACLSpecificationProperty.ts | 46 ++++++++++++++++++- 2 files changed, 65 insertions(+), 18 deletions(-) diff --git a/src/sparnatural/spec-providers/shacl/SHACLSpecificationEntity.ts b/src/sparnatural/spec-providers/shacl/SHACLSpecificationEntity.ts index e77e59e5..e058dd94 100644 --- a/src/sparnatural/spec-providers/shacl/SHACLSpecificationEntity.ts +++ b/src/sparnatural/spec-providers/shacl/SHACLSpecificationEntity.ts @@ -114,11 +114,29 @@ export class SHACLSpecificationEntity extends SHACLSpecificationEntry implements */ getConnectingPropertiesTree(range: string): DagIfc { // 1. get list of properties - let entities:ISpecificationProperty[] = this.getConnectingProperties(range).map(s => this.provider.getProperty(s)) as ISpecificationProperty[]; + let properties:ISpecificationProperty[] = this.getConnectingProperties(range).map(s => this.provider.getProperty(s)) as ISpecificationProperty[]; + + // retrive the potential parents + while(!properties.every(property => { + return property.getParents().every(parent => { + return (properties.find(anotherProperty => anotherProperty.getId() === parent) != undefined); + }); + })) { + let parentsToAdd:ISpecificationProperty[] = []; + properties.forEach(property => { + property.getParents().forEach(parent => { + if(!properties.find(anotherProperty => anotherProperty.getId() === parent)) { + parentsToAdd.push(this.provider.getProperty(parent) as ISpecificationProperty); + } + }) + }); + parentsToAdd.forEach(p => properties.push(p)); + } // 2. turn it into a flat tree let dag:Dag = new Dag(); - dag.initFlatTreeFromFlatList(entities); + // dag.initFlatTreeFromFlatList(properties); + dag.initFromParentableAndIdAbleEntity(properties, []); return dag; } @@ -212,20 +230,7 @@ export class SHACLSpecificationEntity extends SHACLSpecificationEntry implements this.graph.readProperty(factory.namedNode(this.uri), SH.PROPERTY) .map(node => node.value); - // add all properties from node shapes of superclasses - /* - let superClasses:Term[] = this.getSuperClasses(); - superClasses.forEach(sc => { - let ns = this.provider.getNodeShapeTargetingClass(sc as Quad_Subject); - if(ns) { - let superClassEntity = new SHACLSpecificationEntity(ns.value,this.provider, this.store, this.lang); - propShapes.push(...superClassEntity.getProperties()); - } else { - console.warn("Warning, cannot find a node shape targeting class "+sc.value); - } - }); - */ - + // add all properties from parents (either through sh:node or sh:targetClass/rdfs:subClassOf/^sh:targetClass) let parents:string[] = this.getParents(); parents.forEach(p => { let parentEntity = new SHACLSpecificationEntity(p,this.provider, this.store, this.lang); diff --git a/src/sparnatural/spec-providers/shacl/SHACLSpecificationProperty.ts b/src/sparnatural/spec-providers/shacl/SHACLSpecificationProperty.ts index 0020401f..5fb279be 100644 --- a/src/sparnatural/spec-providers/shacl/SHACLSpecificationProperty.ts +++ b/src/sparnatural/spec-providers/shacl/SHACLSpecificationProperty.ts @@ -9,8 +9,9 @@ import { SpecialSHACLSpecificationEntityRegistry, SpecialSHACLSpecificationEntit import Datasources from "../../ontologies/SparnaturalConfigDatasources"; import ISHACLSpecificationEntity from "./ISHACLSpecificationEntity"; import { RdfStore } from "rdf-stores"; -import { Quad, Term } from "@rdfjs/types/data-model"; +import { Quad, Quad_Subject, Term } from "@rdfjs/types/data-model"; import { StoreModel } from "../StoreModel"; +import { OWL } from "../owl/OWLSpecificationProvider"; const factory = new DataFactory(); @@ -167,7 +168,48 @@ export class SHACLSpecificationProperty extends SHACLSpecificationEntry implemen } getParents(): string[] { - return []; + let parentsFromSuperProperties:Term[] = this.getSuperPropertiesOfPath() + // note : we exclude blank nodes + .filter(term => term.termType == "NamedNode") + // we find the property shape having this property as a path + .map(term => { + let propertyShapesWithSuperProperty:Quad_Subject[] = this.graph.findSubjectsOf(SH.PATH, term); + let result = undefined; + propertyShapesWithSuperProperty.forEach(ps => { + if(this.graph.hasTriple( + this.graph.findSingleSubjectOf(SH.PROPERTY, factory.namedNode(this.uri)), + SH.PROPERTY, + ps + )) { + result = ps; + } + }) + return result; + }) + // remove those for which the shape was not found + .filter(term => (term != undefined)); + + // concat parents from superclasses and from node - deduplicated + let parents = [...new Set([...parentsFromSuperProperties])]; + return parents + // and simply return the string value + .map(term => term.value); + } + + /** + * @returns the property shapes that target a superproperty of the property being the path of this shape. + * In other words follow sh:path/owl:subPropertyOf/^sh:path on the same entity + */ + getSuperPropertiesOfPath(): Term[] { + // retrieve property + let property:Term = this.graph.readSingleProperty(factory.namedNode(this.uri),SH.PATH) as Term; + if(property.termType == "NamedNode") { + // then retrieve super properties of this one + let superProperties:Term[] = this.graph.readProperty(property, RDFS.SUBPROPERTY_OF); + return superProperties; + } else { + return []; + } } /** From f24b2d591762e810ba493e04771ac89ab01170f5 Mon Sep 17 00:00:00 2001 From: antoine37120 Date: Wed, 11 Sep 2024 12:49:37 +0200 Subject: [PATCH 39/55] #351 fix add class delay after dom insertion --- .../startendclassgroup/HierarchicalClassSelectBuilder.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts index cbc4813a..2f0de97f 100644 --- a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts +++ b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts @@ -154,7 +154,7 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { this.htmlBreadCrumPathParents.append(NewAncestor) ; setTimeout(function() { NewAncestor[0].classList.toggle('appened'); - }, 1); + }, 10); } From b3df485f850bae2e03e18a7dcb16254147be274b Mon Sep 17 00:00:00 2001 From: antoine37120 Date: Wed, 11 Sep 2024 12:53:29 +0200 Subject: [PATCH 40/55] #351 add pointer on htmlBreadCrumBack --- .../startendclassgroup/hierarchicalclassselectbuilder.scss | 1 + 1 file changed, 1 insertion(+) diff --git a/src/assets/stylesheets/components/citeriagroup/startendclassgroup/hierarchicalclassselectbuilder.scss b/src/assets/stylesheets/components/citeriagroup/startendclassgroup/hierarchicalclassselectbuilder.scss index a926becf..69bb7dfe 100644 --- a/src/assets/stylesheets/components/citeriagroup/startendclassgroup/hierarchicalclassselectbuilder.scss +++ b/src/assets/stylesheets/components/citeriagroup/startendclassgroup/hierarchicalclassselectbuilder.scss @@ -163,6 +163,7 @@ padding: 9px 18px; border-right: 1px solid #e8e8e8; display: table; + cursor: pointer; span { display: table-cell; vertical-align: middle; From 6324caa5c754bfa315fd04bbe10eab1ec6ae7ec5 Mon Sep 17 00:00:00 2001 From: antoine37120 Date: Wed, 11 Sep 2024 14:51:46 +0200 Subject: [PATCH 41/55] #351 fix icon current value vertical align --- .../stylesheets/components/citeriagroup/criteriagroup.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/assets/stylesheets/components/citeriagroup/criteriagroup.scss b/src/assets/stylesheets/components/citeriagroup/criteriagroup.scss index a492f46b..1606eb10 100644 --- a/src/assets/stylesheets/components/citeriagroup/criteriagroup.scss +++ b/src/assets/stylesheets/components/citeriagroup/criteriagroup.scss @@ -107,7 +107,7 @@ padding: 0 14px; span { display: inline-block; - vertical-align: bottom; + vertical-align: middle; min-width: 20px; } &.selected { From 6d9caf48594f036219eaf0cef643c11810db3f9c Mon Sep 17 00:00:00 2001 From: antoine37120 Date: Wed, 11 Sep 2024 14:52:48 +0200 Subject: [PATCH 42/55] #351 fix button action AND vertical alignement --- .../stylesheets/components/citeriagroup/actions/actionand.scss | 2 +- src/assets/stylesheets/components/link-and-component.scss | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/assets/stylesheets/components/citeriagroup/actions/actionand.scss b/src/assets/stylesheets/components/citeriagroup/actions/actionand.scss index 6b155443..9741af3c 100644 --- a/src/assets/stylesheets/components/citeriagroup/actions/actionand.scss +++ b/src/assets/stylesheets/components/citeriagroup/actions/actionand.scss @@ -17,7 +17,7 @@ display:none; left: math.div(base.$margin-children-li - 45, 2); left: 36px; - top: math.div(base.$margin-component, 2); + top: math.div(base.$margin-component, 2)+2; line-height: 46px; /*width: 46px;*/ text-align: center; diff --git a/src/assets/stylesheets/components/link-and-component.scss b/src/assets/stylesheets/components/link-and-component.scss index 695a6183..768a66a9 100644 --- a/src/assets/stylesheets/components/link-and-component.scss +++ b/src/assets/stylesheets/components/link-and-component.scss @@ -10,7 +10,7 @@ background: #fff; position:relative; // left: 50%; - left: 8px; + left: 13px; top:-12px; border: 2px solid var(--primary-color-main) ; border-radius: 15px; From 6f0f9b535c9873380e8b9c6f93295e76e230a626 Mon Sep 17 00:00:00 2001 From: antoine37120 Date: Wed, 11 Sep 2024 14:53:35 +0200 Subject: [PATCH 43/55] #351 fix error if widgetComponent null --- src/sparnatural/generators/sparql/WhereBuilder.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sparnatural/generators/sparql/WhereBuilder.ts b/src/sparnatural/generators/sparql/WhereBuilder.ts index 200cdedc..457c67b1 100644 --- a/src/sparnatural/generators/sparql/WhereBuilder.ts +++ b/src/sparnatural/generators/sparql/WhereBuilder.ts @@ -58,7 +58,7 @@ export default class WhereBuilder{ this.#grpWrapper.CriteriaGroup.ObjectPropertyGroup.objectPropVal, this.#grpWrapper.CriteriaGroup.EndClassGroup.endClassVal, this.#grpWrapper.CriteriaGroup.EndClassGroup.isVarSelected(), - this.#grpWrapper.CriteriaGroup.EndClassGroup?.editComponents?.widgetWrapper?.widgetComponent.getWidgetValues() + this.#grpWrapper.CriteriaGroup.EndClassGroup?.editComponents?.widgetWrapper?.widgetComponent?.getWidgetValues() ); } } From c88e6d838e88d3004c2993603d4289bbca7060f6 Mon Sep 17 00:00:00 2001 From: antoine37120 Date: Wed, 11 Sep 2024 14:54:18 +0200 Subject: [PATCH 44/55] #351 fix selection startClass on where --- .../HierarchicalClassSelectBuilder.ts | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts index 2f0de97f..31e68455 100644 --- a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts +++ b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts @@ -434,19 +434,27 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { submitSelectedValue() { if (this.defaultValue.value != '') { - /*this.setCurrentContent() ; + //this.setCurrentContent() ; + + let entity = this.specProvider.getEntity(this.defaultValue.value) ; + let entity_icon = entity.getIcon() ; + this.widgetValue = { + value: this.defaultValue.value, + path: this.defaultValue.path, + icon: entity_icon, + }; this.html[0].dispatchEvent( new CustomEvent("change", { bubbles: true, detail: {value: this.defaultValue.value, valuePath: this.defaultValue.path}, }) ); - this.hideClassSelector() ;*/ - let clickEvent = new Event( 'click', { bubbles: true } ); + this.hideClassSelector() ; + /*let clickEvent = new Event( 'click', { bubbles: true } ); //let changeEvent = new Event( 'change', { bubbles: true } ); let allWithId = this.htmlSelectUiUx[0].querySelectorAll(`li[value="${this.defaultValue.value}"] .item-sel`); allWithId[0].dispatchEvent(clickEvent); - //this.htmlInputValueClass[0].dispatchEvent(changeEvent); + //this.htmlInputValueClass[0].dispatchEvent(changeEvent);*/ } } From 587f235d74658eeb0d23e9cf9e4d649009a67481 Mon Sep 17 00:00:00 2001 From: Thomas Francart Date: Wed, 11 Sep 2024 16:27:54 +0200 Subject: [PATCH 45/55] Fix property reading + added test for property hierarchy --- dev-page/configs/RiC-O_1-0.rdf | 25867 ++++++++++++++++ .../configs/sparnatural-hierarchy-config.ttl | 112 +- .../configs/sparnatural-hierarchy-config.xlsx | Bin 51780 -> 51957 bytes dev-page/index.html | 3 +- .../shacl/SHACLSpecificationEntity.ts | 13 +- 5 files changed, 25951 insertions(+), 44 deletions(-) create mode 100644 dev-page/configs/RiC-O_1-0.rdf diff --git a/dev-page/configs/RiC-O_1-0.rdf b/dev-page/configs/RiC-O_1-0.rdf new file mode 100644 index 00000000..35404fad --- /dev/null +++ b/dev-page/configs/RiC-O_1-0.rdf @@ -0,0 +1,25867 @@ + + + + + Florence Clavaud (Archives nationales de France), member of EGAD + and lead of EGAD RiC-O team from 2012 + Regine I. Heberlein (University of Princeton, USA), member of EGAD and EGAD + RiC-O team from 2023 + Miia Herrala (National Archives of Finland), member of EGAD and + EGAD RiC-O team from 2016 to 2022 + Jan Krause-Bilvin (Archives cantonales vaudoises, Switzerland), + member of EGAD and EGAD RiC-O team from 2023 + Daniel Pitti (University of Virginia, USA), chair of EGAD from + 2012 + Aaron Rubinstein (University of Massachusetts Amherst, USA), + member of EGAD and EGAD RiC-O team from 2012 to 2022 + Tobias Wildi (University of Applied Sciences of the Grisons, + Switzerland), member of EGAD and EGAD RiC-O team from 2019 + Ivo Zandhuis (Consultant Digital Cultural Heritage, The + Netherlands), member of EGAD and EGAD RiC-O team from 2023 + + International Council on Archives Expert Group on Archival + Description (ICA EGAD) + International Council on Archives + Copyright 2019-, International Council on Archives (ICA) + + + RiC-O (Records in Contexts-Ontology) is an OWL ontology for describing archival + record resources. As the third part of Records in Contexts standard, it is a formal + representation of Records in Contexts Conceptual Model (RiC-CM). + The current version is v1.0; it is + compliant with RiC-CM 1.0, which was published by EGAD on November + 30, 2023. As the first stable and complete version of this ontology, RiC-0 1.0 is + thus a major milestone. + RiC-O provides a generic vocabulary and formal rules for creating RDF datasets + to describe any kind of archival record resource, whether natively or by transforming + existing metadata (or generating them from existing archival metadata). It supports + publishing RDF datasets as Linked Data, querying them using SPARQL, and making + inferences. + + + + + + + + + + + + Introduction + RiC-O (Records in Contexts-Ontology) is an OWL ontology for describing archival + record resources. As the third part of Records in Contexts standard, it is a formal + representation of Records in Contexts Conceptual Model (RiC-CM). This version, which + is v1.0, is the latest official release. It is compliant with RiC-CM v1.0. + The following diagram shows the main RiC-CM 1.0 entities and a few relations + between them: + + + RiC-O design principles + The following design principles were followed when developing RiC-O. + + 1. RiC-O is a domain and reference ontology. + RiC-O provides a generic vocabulary and formal rules for + creating RDF datasets (or generating them from existing archival metadata) that + describe in a consistent way any kind of archival record + resource. It supports publishing RDF datasets as Linked Data, + querying them using SPARQL, and making inferences using the logic of the + ontology. + While some projects have built some specific ontologies for describing + archives, in 2013 no generic domain ontology existed for the specific needs of the + archival community. This is why EGAD decided to develop RiC-O as a part of RiC + standard. + Apart from this first, main target, RiC-O, as a technical + implementation of RiC-CM that also extends and refines it and that includes + formal logic, can guide or inspire, in many ways, the development of any tool + or system that manages (i.e. stores, enables to edit or processes) and + publishes descriptive archival metadata.. Of course, other + technical implementations of RiC-CM may be developed later on. Also, the current + technical implementations of the former ICA standards, e.g. EAD and EAC-CPF XML + schemas, should be made closer to RiC-CM in the future; on this topic, see the news and announcements of the Technical Subcommittee on Encoded Archival + Standards (TS-EAS) of the Society of American Archivists. + As RiC-O is a generic, domain ontology, it does not address by + itself every specific need or expectation that may occur in every + archival institution or project. It is rather a high level + framework and an institution or project implementing RiC-O can + apply only such a subset of properties as meets their needs, or extend the + specification according to their particular requirements, or do both. + As a domain ontology, RiC-O, at this stage, does not borrow from other + existing ontologies (such as the cultural heritage models – IFLA-LRM and + CIDOC-CRM, PREMIS, or PROV-O). It should therefore be easier, for an archival + institution or archival project, to understand, implement and maintain RiC-O + within its system. + Alignment with those and other models, where possible, will be undertaken in + a future revision cycle to support the interconnected nature of resource + description across the domains. This is of course essential for interconnecting + RDF datasets conforming to RiC-O with other datasets, or for using parts of RiC-O + in other contexts than the archival or records management realm. + + 2. RiC-O is immediately usable. + + This is a key feature. Metadata + conforming to superseded ICA standards can be transformed to RiC-O + successfully. Converting existing archival metadata created or + generated in current information systems and compliant with ICA standards to + RDF/RiC-O is possible without losing data or structure. + During the ongoing development process of RiC-O, intensive conversion + testing, either by hand or using scripts, was conducted on XML/EAD finding aids + and XML/EAC-CPF authority records to ensure that RiC-O is usable with existing + descriptive metadata. An open source + conversion software was also developed and made available in April + 2020. + While some existing metadata sets may have a very fine level of granularity + and accuracy, already using, for example, controlled vocabularies, or describing + curation events separately, often these metadata don’t have the very precise + structure that RiC-CM recommends. Even then, such a conversion process remains + possible. In order to allow this, RiC-O sometimes provides several methods for + representing information (as described below). From this point of view, RiC-O v1.0 + may be considered a transitional ontology, in which some components may be + deprecated later on. + The usability of a model also depends on its documentation. RiC-O is + documented extensively. The documentation will be reviewed and updated on a + continuing basis. + + 3. RiC-O provides a flexible framework. + + This is a very important principle too. It is related + with the usability principle quoted above. Moreover, archival + description is flexible by essence. It is quite commonly noted + that today the level of granularity of information varies from one finding aid to + another (or from one authority record to another), or even within the same finding + aid. Some series or agents are described summarily because little is known about + them and there is little time for extensive research, while other series, even + records, or agents are described in detail; some relations (e.g. that relating to + provenance) may be described without any detail while others may be thoroughly + documented, as ISAAR(CPF) and EAC-CPF allow it. + Being generally flexible, for an OWL ontology, depends first on the + polyhierarchical systems of classes and properties it provides. A superproperty or + superclass, more general or generic than its subproperties or subclasses, must + exist and be available for handling information, while at the same time more + accurate subcomponents must be there for handling more accurate description. Also, + RiC-O provides methods for describing relations as full entities, as well as + direct and short paths between entities. + + 4. RiC-O opens new potential for archival description. + + Linked Data tools and interfaces enable end users to go through + RDF/RiC-O graphs, query them using SPARQL, and make inferences. This means a + completely new way of consulting archival metadata and their multiple + contexts. An end user should be able to ask of any given data + set, for example, “What are (according to your dataset) the corporate bodies that + succeeded a given entity from its end of existence to now (as concerns this given + activity)?”, or “what instantiations of this photograph exist?”, or “what are the + existing copies of this original charter?”, and get a list of these entities. This + means that institutions or projects that invest in the implementation of RiC-O + will be able to query their data in ways not possible with the previous ICA + standards, and will get new insight into the content and context of their archives + that wasn’t visible with the existing ICA-standards. What is more, repositories + using RiC-O may infer new assertions from the RDF datasets and link them to other + resources outside their institution, thereby amplifying the query and inferencing + possibilities manifold. + + 5. RiC-O is extensible. + + Institutions with descriptive needs beyond what RiC-O provides out-of-the-box + have the option of extending the ontology by adding new subclasses or + subproperties as needed. Also, the concepts defined in existing SKOS vocabularies + (e.g. a list of documentary form types) can also be connected to RiC-O based + graphs (using the *Type classes, and properties which are in the domain or range + of these classes). + RiC-O has also the potential to be usable in other contexts than purely + archival ones. It can be used to “hook” archival description to descriptive + metadata in other domains (e.g. bibliographic or museum metadata). As said above, + alignment with other models will be undertaken by EGAD in a future revision cycle, + facilitating such connections. + + + Understanding RiC-O: a quick overview of some features + + From RiC-CM to RiC-O + + 1. RiC-O classes + Each RiC-CM entity has a corresponding class in + RiC-O. These classes are organized according to the same + hierarchy as in RiC-CM. Some projects may need very few of them (e.g. Agent, + Record Resource and Activity only), while others may need more (e.g. + Corporate Body and Person; Record; Place; Organic Provenance + Relation). + Many classes only exist in RiC-O and not in + RiC-CM. These additional classes address special + needs: + + some correspond to RiC-CM attributes, + when it may be considered necessary to handle them as full entities. This + is the case for Type and its + subclasses, that correspond to RiC-CM attributes that contain controlled + values, and that can help to articulate RiC-O with external RDF resources + like SKOS vocabularies; and also for Language, Name and + Identifier, that can be + considered as full entities and as key linking nodes in a RDF graph. All + these classes have been grouped under a Concept class. + some classes have been added in order to provide a + more accurate definition and model for some entities. + Place thus comes along with a + Physical Location + class, and with a Coordinates + class. A Place is considered both a geographical and + historical entity. As a historical entity, among other features, it has a + history, and may be preceded or succeeded by other Places. A Place also + may have zero to many Physical Location through time (for instance, its + boundaries, if it is an administrative area or a country, may change). + Each Physical Location may be connected to zero to many Coordinates. This + model is quite close to the Linked Places Format (https://github.com/LinkedPasts/linked-places). Another + example of such an addition is the Proxy + class, that represents (stands for) a Record Resource as it + exists in a specific Record Set. + finally, a system of n-ary classes helps to implement + the Relations section of RiC-CM. While these relations + also are represented as simple, binary object properties (e.g. hasOrganicProvenance that + corresponds to RiC-R026 relation), you may need to assign different + attributes to a relation, e.g. a date, certainty or description, as it is + already possible, and quite often done, in a XML/EAC-CPF file. One of the + standard available methods for representing such a documented relation in + RDF for now is to use a class. The RDF-star specification, which is being + developed by the W3C RDF-DEV Community Group, provides a far simpler + method (allowing to consider a triple as the subject or object of another + triple; see https://w3c.github.io/rdf-star/) and is already being used + by some tools; however it is not yet a complete W3C standard. Thus, for + example, in RiC-O a OrganicProvenanceRelation class exists. This class may + connect one to many Agents to one to many created or accumulated Record + Resources or Instantiations, and has some specific object properties + (certainty, date, description, source). Back to the hasOrganicProvenance object + property, let us add that it is formally defined in RiC-O, using OWL 2 + property chain axiom (see https://www.w3.org/TR/owl2-new-features/#F8:_Property_Chain_Inclusion), + as a ‘shortcut’ for the longer path + ‘thingIsSourceOfRelation/organicProvenanceRelation_role/relationHasTarget’, + where the intermediate node is an instance of OrganicProvenanceRelation: + <owl:propertyChainAxiom rdf:parseType="Collection"> + <rdf:Description + rdf:about="https://www.ica.org/standards/RiC/ontology#thingIsSourceOfRelation"/> + <rdf:Description + rdf:about="https://www.ica.org/standards/RiC/ontology#organicProvenanceRelation_role"/> + <rdf:Description + rdf:about="https://www.ica.org/standards/RiC/ontology#relationHasTarget"/> + </owl:propertyChainAxiom> + A triplestore, with the appropriate configuration, may thus + infer the direct ‘hasOrganicProvenance’ assertion from this long + path. + + + + 2. RiC-O datatype properties (relations whose object is a litteral) + and RiC-CM attributes + Most of the datatype properties in RiC-O correspond to + RiC-CM attributes that contain free, plain text. See for + example rico:generalDescription, rico:history and rico:scopeAndContent. + In many simple usecases it’s sufficent to just use the rico:identifier or rico:name datatype properties. However, in + addition to these datatype properties, the Name and Identifier RiC-CM + attributes also have corresponding classes (subclasses of rico:Appellation). A resource may have + several Identifiers (e.g. archival reference code, system number, digital + object identifier) or Names and each comes with different attributes; in + this case instances of classes are needed. + The Location RiC-CM attribute also has a rico:Physical Location + corresponding class (for users who want to use Place, Physical Location and + Coordinates for handling places). + As already said too, every RiC-CM attribute that has ‘controlled value’ + or ‘rule-based’ as a schema value, has a class as corresponding component in + RiC-O. However, for these CM attributes that correspond to a + RiC-O class, as it is necessary to provide an immediately usable + ontology, two supplementary datatype properties exist that allow not to + use the classes, at least for a while, if you want to implement RiC-O and + create RiC-O/RDF datasets from existing archival metadata without being + able to handle URIs for the information you have. + For example, you may not be able to handle and maintain URIs for some + controlled values you use in EAD finding aids for carrier types: maybe your + information system does not use a vocabulary for this, and you cannot for a + while consider these carrier types as full entities. Nevertheless you want + to produce RiC-O datasets where every piece of information is kept, and you + want to avoid blank nodes. If RiC-O would only provide the Carrier Type + class, it would be an issue for you. + So RiC-O provides a rico:type + datatype property, with range rdfs:literal, which allows you to move + forward. For RiC-CM Coordinates attribute, you also have the rico:geographicalCoordinates datatype property. + These datatype properties have a skos:scopeNote which says (for + example) "Provided for usability reasons. May be made deprecated or removed + later on. Use only if you don’t use Physical Location and Coordinates + classes with Place." + The same key design principle (RiC-O must be immediately + usable) led us to define some datatype properties that would enable users + to use RiC-O in simple usecases where they do not want to consider dates + and rules as full entities. Thus, there of course is Date + and Rule classes in RiC-O (since there are Date and Rule entities in + RiC-CM). And you also have a rico:date datatype property, which has several + subproperties; plus a rico:ruleFollowed datatype property. The same + analysis led us to keep the rico:history datatype property in RiC-O (same as RiC-CM history + attribute), while RiC-CM and RiC-O also provide the Event class, and using a series of Events may + of course be a better method, easier to query, link and display, than simply + using a history prose discourse. The two methods may be used in parallel + within the same dataset by an institution that, for example, would decide to + emphasize only the accession, appraisal and description events among the + whole history of Record Resources. + These datatype properties have the same kind of skos:scopeNote as + above. + Finally, we have introduced a few datatype properties that + do not correspond to any RiC-CM attribute. + Some are superproperties, and thus group datatype properties: rico:physicalOrLogicalExtent, with rico:carrierExtent, + rico:instantiationExtent and rico:recordResourceExtent as subproperties; + rico:textualValue, with + rico:expressedDate, rico:normalizedValue and rico:quantity as subproperties; + rico:measure; rico:referenceSystem. + Some are simply more specific properties: rico:accrualsStatus; rico:recordResourceStructure and rico:instantiationStructure, + subproperties of rico:structure; rico:title (subproperty of rico:name); rico:altitude, + rico:height, rico:latitude, rico:length, rico:longitude, rico:width + (subproperties of rico:measure), + rico:geodesicSystem and rico:altimetricSystem (subproperties of rico:referenceSystem). + + + 3. RiC-O object properties (relations between two entities) + In order to connect all the classes created, a significant + number of object properties have been defined. + While the 'flat' list of object properties is a long one, + the object properties are grouped + hierarchically, so that one can use the upper to + intermediate level ones for simplicity sake, or choose the most accurate and + expressive ones, or extend the system adding a subproperty easily. It is + expected that, in most use cases, a subset of these properties only will be + needed. + Below we just give a few details on certain specific sets of + properties. + While in RiC-CM it was not possible to achieve such a level of + precision with simple attributes, RiC-O includes object + properties to assert that a rico:RecordSet has or had members (either all of them, or + some of them) that share some characteristics, i.e. + Language, ContentType, DocumentaryFormType, LegalStatus, or RecordState. See + for example rico:hasOrHadAllMembersWithCategory, and its + subproperties. + Some of the object properties are formally defined as + shortcuts: they can be inferred if you create triples that + include instances of the Relation classes. See the example explained above + in the section dedicated to + classes. + Many properties, new in RiC-O 1.0, are transitive or + reflexive, as explained in the history note above. + + + 4. Named Individuals + RiC-O adds six individuals to address current and frequent + needs: + + FindingAid and AuthorityRecord, which are instances + of both RiC-O Documentary Form Type and SKOS Concept. They can be used + for categorizing Records, finding aids and authority records being + considered as Records. For example, a Record with Documentary Form Type + ‘Finding Aid’ may be connected to one to many Record Resources using the + 'rico:describes’ object property. + Fonds, Series, File, and Collection are instances of both Record + Set Type class and skos:Concept. Their definition is taken from the + ISAD(G) glossary. They can be used for categorizing Record + Sets. + + We expect other categories to be defined by the archival community as + RiC-O matures, forming rich, hopefully multilingual, SKOS vocabularies that + support rich description (for example, allowing an instance of the Documentary Form Type class to + have a history and temporal relations to other documentary form + types). + + + + RiC-O documentation and annotation properties + Each class or property has an English, a French and a Spanish label + (rdfs:label), and a description (rdfs:comment). Some also have a skos:scopeNote + or a skos:example. + When a RiC-O class or property corresponds to a RiC-CM component in any + way, its description and scope note are either the same as or derived from + their RiC-CM definition and scope note. + RiC-O provides two annotation properties (subproperties of rdfs:comment) + for handling: + + information about the corresponding RiC-CM component when applicable + (rico:RiCCMCorrespondingComponent). Various phrasings are used + in this property depending on the rule applied for defining the RiC-CM + component. + information about possible mappings with other models or ontologies + (rico:closeTo, rarely used in this + 1.0 version)). + + Any change in the definition of a class or property made since December + 2019 is documented using a skos:changeNote. + + + + Next steps + The following is a non exhaustive list of known issues, topics or tasks on + which EGAD has begun to work and will continue to work in the next + months. + + articulate the Event and Activity classes, and the Relation system of + classes + add suggestions of mappings (in rico:closeTo) and OWL equivalences + between some classes or properties and components in other models (among which + - this is not an exhaustive list- PREMIS, Schema.org, PROV-O, IFLA-LRM and RDA, + CIDOC-CRM), or document how these models can be used together. + + + + + + International Council on Archives Records in Contexts Ontology + (ICA RiC-O) version 1.0 + rico + https://www.ica.org/standards/RiC/ontology# + International Council on Archives Records in Contexts Ontology (ICA + RiC-O) version 1.0 + Version 1.0 - 2023-12-30. + + + + + + + History note + A first beta version of RiC-O was developed in 2017 and used by the National + Archives of France for building a proof of concept (https://piaaf.demo.logilab.fr). + EGAD continued to develop the ontology, and this process entered a very + active period in 2019, while RiC-CM v0.2 was being designed and edited. From + December 2018 to November 2019, about 65 persons that responded to a call for + reviewers, received successive beta versions of RiC-O and sent a few first + comments. While EGAD RiC-O team could not answer to each of these comments, each + was taken into account. RiC-O v0.1 was released on December 2019, at the same time + as RiC-CM v0.2 preview. + The Git repository that is used for handling RiC-O was made public in March + 2020 (see https://github.com/ICA-EGAD/RiC-O). + In 2020, RiC-CM v0.2 preview was significantly updated: the textual + definitions of many entities were changed, as well as the specifications of many + attributes; and the IRIs of lot of relations were changed, in order to take into + account past situations and to adopt some simple naming rules. As a consequence, + RiC-O had to be updated in order to remain compliant with RiC-CM. These changes + could not be made before the end of 2020, when RiC-CM could be considered stable. + EGAD also decided to make other changes in RiC-O, among which the most important + are mentioned in bold in the following list. + RiC-O 0.2 results from these updates and changes. It was released in February + 2021, and is fully compliant with RiC-CM 0.2, which was released in July + 2021. + + At the end of 2022, while the EGAD group, as part of + the development of version 1.0 of RiC-CM, was working on analyzing and taking into + account the very numerous comments relating to RiC-CM 0.2 received, a + new active phase of development started for RiC-O. A team of no longer three, + but six people prepared this version. It was then absolutely not + a question of breaking with the principles and methods already used; the work was + a continuation of what had already been done. It was a matter of + improving what had already been done, by simplifying wherever + possible the specifications, by adding some properties and taking into account + the needs that a growing community of users was expressing. On + the other hand, it was obviously a question of making RiC-O 1.0 + compliant with RiC-CM 1.0. + As the result of this work, RiC-O 1.0 defines: + + + 105 classes, one less than in v0.2. As in RiC-CM + 1.0, the modeling of dates has been modified, this led to the removal of the + three subclasses of rico:Date. It was + necessary to add a rico:MandateType + class, corresponding to the new RiC-A44 Mandate Type attribute of RiC-CM 1.0. A + generic rico:OrganicOrFunctionalProvenanceRelation class was also + added. + + 61 datatype properties, one less than in v0.2. + Several properties were renamed, to make the ontology compliant with RiC-CM 1.0 + (so rico:descriptiveNote has become rico:generalDescription, whose definition is a little different). + A rico:length property was added; + rico:calendar and rico:dateStandard were removed. The hierarchy of rico:date subproperties was revised. Some + properties were made subproperties of others (like rico:scopeAndContent, now a + subproperty of rico:generalDescription). + + 400 object properties, compared to 423 in RiC-O 0.2. + This simple count poorly accounts for the significant + modifications that were made to the object properties of RiC-O + 0.2. On the one hand, a certain number + of properties were added to make RiC-O compliant with RiC-CM + 1.0: addition of properties whose domain or range are rico:Date or rico:Event; addition of rico:hasOrHadMandateType and rico:isOrWasMandateTypeOf, + properties related to the new rico:MandateType class. On the other hand, to meet + the needs expressed by RiC-O users, other properties were + added: rico:isAgentAssociatedWithPlace, rico:isOrWasEmployerOf, rico:wasMergedInto, rico:wasSplitInto, rico:hasDeathPlace, rico:hasBirthPlace, rico:hasOrHadAnalogueInstantiation, rico:hasOrHadDigitalInstantiation, and their inverse properties. + Furthermore, a significant number of properties were + added to allow the expression of indirect relationships. Thus, + it is now possible, for instance, to specify that a rico:Record is included indirectly in a rico:RecordSet such as a fonds, using + rico:isIncludedInTransitive, or to infer this relation, which is + the super property of the new rico:isDirectlyIncludedIn property. The addition of + such transitive properties concerned partitive (sub-properties of rico:hasOrHadPart), sequential + (sub-properties of rico:precedesOrPreceded) and authority (sub-properties of + rico:hasOrHadSubordinate) relations, and the + inverse properties. It was accompanied by the creation of properties specifying + past relations. Finally, in order to simplify their + maintenance, the n-ary Relation classes were rolified. 48 new + reflexive object properties were created to do this, such as for example + rico:leadershipRelation_role; the definition of n-ary Relation + classes (such as rico:LeadershipRelation) was revised to introduce an equivalence + with these properties when they have the same source and the same target, and + the chain property axioms of the corresponding binary properties (such as + rico:hasOrHadLeader) were + revised. 166 object properties, which existed in RiC-O 0.2 and were specific to + each of the n-ary relations, could then be deleted. A full accounting of the + rolification of n-ary relations may be found at https://github.com/ICA-EGAD/RiC-O/issues/67). + + RiC-O 1.0 therefore presents itself as an ontology that is more + compact than RiC-O 0.2, while being richer, technically opening up new + possibilities (with transitive relations) and preserving the semantics defined + previously. + Besides, an effort has been made regarding the documentation of the ontology. + In particular, the labels of each class and property (rdfs:label + annotations) are now available in French and Spanish as well as in + English. We would like to thank our French-speaking and + Spanish-speaking colleagues, members or not of the ICA/EGAD group, who contributed + to this translation work. + Various bugs have been fixed and the OWL file has been systematically reread + many times. + A running list of changes since v0.1 may be found in Appendix I. Note that from October + 2020 any change on a component is described and dated in the specification of + this component, using skos:changeNote. + + + Appendix I: list of the changes made since the release of RiC-O + v0.1 + The following is a list of the changes made to RiC-O since the release of + RiC-O v0.1 in December 2019. The most important changes are mentioned in bold. + Note that from October 2020 any change on a component is described + and dated in the specification of this component, using + skos:changeNote. + + Fixed a bug in the documentation of rico:PerformanceRelation and its + object properties. + Renamed the file and updated the ontology metadata. + OccupationType made a subclass of ActivityType. + Changed the domain and range of rico:hasOriginal and rico:hasDraft (it is + now Record or Record Part); same for their inverse properties. + Fixed a bug in the definition of rico:provenanceRelationHasTarget + (removed the owl:propertyChainAxiom). + Changed the name of rico:leadBy object property (grammatical mistake) to + rico:ledBy. + 2020, October 19: Added a vann:preferredNamespaceUri and + vann:preferredNamespacePrefix property to the ontology metadata + 2020, October 19 : created RuleType and IdentifierType classes, along + with the associated object properties. + 2020, October 23: updated the text definition and/or scope + note of 33 classes, that correspond to RiC-CM entities or attributes, in + order to make them compliant with RiC-CM v0.2. Added a few + owl:disjointWith properties. + 2020, November 1: updated the text definition and/or scope + note of, and/or added examples for, 27 datatype properties, that correspond + to RiC-CM attributes, in order to make them compliant with RiC-CM + v0.2. + 2020, November 20: created new classes and properties for + handling an accurate description of instantation and record resource + extent: Extent, Carrier Extent, Instantiation Extent, Record + Resource Extent, Unit of measurement, Extent Type classes; unit of measurement + and quantity datatype properties; has Extent, is Extent Of, has Extent Type, is + Extent Type Of, has Unit Of Measurement, is Unit of Measurement Of, object + properties. + 2020, December 28: changed the IRIs and definition of RecordResourceState + class and of the associated object properties; changed the domain + or ranges and textual definitions of properties associated with Language, + LegalStatus, ContentType, DocumentaryFormType; added new object properties + for handling the description of some or all members of Record + Set. Added the corresponding change notes. + 2020, December 29: deleted the isSuperiorTo and isInferiorTo object + properties, as well as the AgentSubordinationRelation and its object properties + (as the RiC-R043 relation has been removed from RiC-CM 0.2). Added the + hasAuthor/isAuthorOf object properties, plus an AuthorshipRelation class and + its specific object properties (as the RiC-R079 relation has been added to + RiC-CM 0.2). Added the corresponding change notes. + 2021, January 22: changed the IRI, label, and/or + superproperties or inverse property IRI, and/or textual definition, and/or + domain or range, of 152 object properties. Among them, changed the IRI of + 119 object properties; 85 correspond to RiC-CM relations whose name has been + changed in RiC-CM 0.2. Added the corresponding change + notes. + 2021, January 27: added an rdfs:isDefinedBy to the specification of each + RiC-O class and property and made the last changes to the ontology metadata + (mainly in the history note). + 2021, February 1: last small changes in the ontology metadata (mainly in + the abstract). + 2021, February 1: 'hasOrHadPhysicalLocation' made a subproperty of + 'isPlaceAssociatedWith'; 'isOrWasPhysicalLocationOf' made a subproperty of + 'isAssociatedWithPlace'. + 2021, February 1: reordered everything with Protégé without changing the + content + 2021, February 4: checked and fixed the language of the + examples. + 2021, February 8: removed a few Restriction classes + (rdfs:subClassOf/owl:Restriction) in the definition of classes; completed the + textual definition and scope note of the Relation class. + 2021, February 9: added a link to RiC-CM 0.2 diagram overview in the + introduction; fixed some typos. + 2021, February 11: added an @xml:lang='en' on a few labels; updated the + definition (rdfs:comment) and scope note of the Rule class, as they were + recently changed in RiC-CM 0.2 full draft. + 2023, April 17: renamed the file (moving to RiC-O 1.0) and started to + update the ontology metadata. + 2023, April 19: removed the unnecessary restrictions + specified for a significant number of classes, among which + most of the subclasses of Type, plus Activity, AgentTemporalRelation, + Coordinates, CreationRelation, Event, Identifier, Instantiation, + MandateRelation, Person, PhysicalLocation, Place, RecordResource, RecordSet, + Rule. + 2023, April 21: removed an unnecessary restriction that remained on + Mandate class. + 2023, end of May-June 5: fixed some typos in the introduction and + definition of entities, including the use of "data property" term instead of + the correct "datatype property" one. + 2023, June 5: made includesOrIncluded object property a + subproperty of hasOrHadPart in addition to + isRecordResourceAssociatedToRecordResource. + 2023, June 21: added two object properties, sub-properties + of hasSuccessor: wasMergedInto and wasSplitInto, with + Corporate Body as domain and range, and their inverse ones. + 2023, July 25: adjusted definition of hasOrHadLanguage + 2023, August 25: added French labels to the descriptions of classes and + of datatype properties + 2023, August 28: added French labels to the descriptions of 250 object + properties; added an xml:lang attribute with value 'en' on rdfs:comment when it + was missing. Also added French labels to the two RiC-O annotation properties + and to the few named individuals already defined. + 2023, August 28: changed the domain of hasExtent (from Instantiation or + RecordResource to Thing), same for the range of isExtentOf; added a length + datatype property under measure. + 2023, August 29: updated hasInstantiation and + hasDerivedInstantiation, and the inverse properties (changed + their IRIs, labels, definitions, inverse properties, according to RiC-CM 1.0). + As a consequence, also updated the superproperties of migratedInto and + migratedFrom. Created four new object properties: + hasOrHadDigitalInstantiation, hasOrHadAnalogueInstantiation, and the inverse + ones. + 2023, August 29: fixed some typos in the English labels of a few object + properties and added the past tense to the English label of + hasOrHadCoordinates. + 2023, September 13: added 54 new object properties under 'hasorhadpart', + in order to extend the following nine existing properties: + 'containsOrContained', 'hasOrHadComponent', 'hasOrHadConstituent', + 'includesOrIncluded', 'hasOrHadSubdivision', 'hasOrHadSubevent'. Also did the + same for 'followsInTime', 'followsOrFollowed', 'isOrWasSubordinateto'. For each + listed property, one was added to express past partitive relations, and 2 other + ones for present partitive relations, the first one being transitive and the + superproperty of the second one. Added the inverse properties as well. Made + 'hasDescendant' and 'hasAncestor' transitive. + 2023, September 20: began to review and adjust the object + properties added on September 13, starting with the properties under + hasOrHadPart, and under the inverse isOrWasPartOf property. Among the + changes made: adjusted the change notes, added a few 'this is a transitive + relation' when missing in the rdfs:comment, and fixed the hierarchy of the + properties. Also, every past relation (e.g. contained) also made a + subproperty of hadPart. Every current transitive relation (e.g. + containsTransitive) made a subproperty of hasPartTransitive. Every current + direct relation (e.g. directlyContains) made a subproperty of + hasDirectPart. Fixed a syntaxic bug on the ontology history + note. + 2023, September 22: finished to check and fix the object properties added + on September 13, working on hasOrHadSubordinate/isOrWasSubordinateTo + subproperties and on precedesOrPreceded/followsOrFollowed + subproperties. + 2023, September 22: removed DateSingle, DateRange, DateSet + and added datatype and properties for dates. + 2023, October 10: began to complete the updates made for date and its + properties. work done for Date Type, hasDateType, is dateTypeOf, expressedDate, + normalizedDateValue and dateQualifier. Also made isCreationDateOfMostMembersOf + a subproperty of isCreationDateOfSomeMembersOf; same for the inverse object + properties. + 2023, October 12: finished to complete the updates made for + date and its properties. updated isCreationDateOf, + isCreationDateOfSomeMembersOf, isCreationDateOfMostMembersOf, + isCreationDateOfAllMembersOf, isPublicationDateOf and the inverse properties. + Also, renamed isDeletionDateOf into isDestructionDateOf, and applied the same + change to hasDeletiondate. Created isOccurrenceOf, isWithin, intersects ant the + inverse properties. + 2023, October 13: adjusted a few details on date object properties + (renamed some of them to correct the spelling or take past members of record + sets into account; added a few subPropertyOf; adjusted the annotations + accordingly). Fixed a syntax problem on the history note of the + ontology. + 2023, October 14: reintroduced the certainty datatype property with + domain Event and Relation. Adjusted a few details in the annotations of the + date properties. + 2023, October 16: fixed several bugs while resolving conflicts before + merging, including bad IRIs. + 2023, October 17: made occurredAtDate and isDateOfOccurenceof + subproperties of isEventAssociatedWith and isAssociatedWithEvent + 2023, October 19: made rico:wasUsedFromDate and rico:wasUsedToDate (and + its inverses) sub-properties of rico:hasBeginningDate and rico:hasEndDate (and + its inverses) respectively + 2023, October 19: added RecordPart to domain of hasOrHadConstituent and + to the range of the inverse property as well. + 2023, October 20: created the following new properties + isAgentAssociatedWithPlace, hasDeathPlace, hasBirthPlace, + agentHasOrHadLocation, hasOrHadEmployer and their inverse + properties as well. + 2023, October 26: added Record Part to the domain of hadOrhadConstituent + subproperties, and RecordPart to the range of the inverse ones. Changed the + definitions of these properties accordingly. Fixed a bug in the history note of + the ontology. Regenerated the inverse properties. + 2023, October 26: changed the domain and range of 'is or was employer + of', removed 'has or had member' super-property of the propertyn added an + rdfs:comment to it. Same for the inverse property. + 2023, October 26: added rdfs:comments, fixed one IRI, French labels, some + domains and range, to the recently added isPlaceAssociatedWithAgent, + isBirthPlaceOf, isDeathPlaceOf, isOrWasLocationOfAgent, and their inverse + properties. Fixed a bug in the history note of the ontology. Regenerated the + inverse properties. + 2023, November 2: added Spanish labels to 59 datatype + properties, 103 classes and 277 object properties. + 2023, November 7: added property chain axioms that were missing, in order + to define the following properties as shortcuts: isChildOf, hasOrHadPosition, + isOrWasAppellationOf, isOrWasDerivedFromInstantiation, hasOrHadWorkRelationWith + and hasGeneticLinkToRecordResource. + 2023, November 7: added a hasOrganicOrFunctionalProvenance property, + superproperty of documents and of hasOrganicProvenance (new name of + hasProvenance); added the shortcut. Same for the inverse property. Added a + OrganicAndFunctionalProvenanceRelation, superclass of OrganicProvenanceRelation + (new name of AgentOriginationRelation) and ActivityDocumentationRelation; + created the needed object properties. Adjusted the names of the properties of + OrganicProvenanceRelation. + 2023, November 8: rolifying the Relation classes, step + 1: created 48 reflexive object properties that rolify the + classes; modified the specifications of the Relation classes; modified the + chain property axioms of the corresponding shortcuts. Fixed the range of + isExtentOf. + 2023, November 8, later: rolifying the Relation classes, + step 2: deleted 166 object properties that had become + unnecessary. + 2023, November 12: updated the datatype properties in order + to make them compliant with RiC-CM 1.0 attributes. Changed the + IRIS of accrual (to accruals), accrualStatus (to accrualsStatus), + descriptiveNote (to generalDescription), integrity (to integrityNote), + physicalCharacteristics (to physicalCharacteristicsNote), + qualityOfRepresentation (to qualityOfRepresentationNote). Made scopeAndContent + a subproperty of generalDescription, and expressedDate a subproperty of name. + Updated or added a few domains and many rdfs:comment, skos:scopeNote, + skos:example. Also made usedFromDate a subproperty of beginningDate, and + usedToDate a subproperty of endDate. + 2023, November 12: updated the classes in order to make them + compliant with RiC-CM 1.0 entities and attributes. Updated or + added many rdfs:comment and skos:scopeNote, taking into account, as concerns + the Relation classes, the fact that they are n-ary. Created a new MandateType + class, corresponding to RiC-A44 attribute in RiC-CM 1.0. Also added a + rdfs:isDefinedBy to skos:Concept, skos:ConceptScheme and + voaf:Vocabulary. + 2023, November 12 and 13: updated 35 object properties in + order to make them compliant with RiC-CM 1.0 relations. Added labels or + modified rdfs:comment of 65 other object properties. Added + hasOrHadMandateType and isOrWasMandateType of. + + 2023, November 13: added or modified a few French or Spanish + labels. + 2023, November 13: updated the ontology metadata. + 2023, November 14: fixed some typos in the ontology metadata. + 2023, November 24: started to work on v1.0, after releasing v 1.0-beta: + renamed the file and updated a few metadata. + 2023, November 25: fixed three French labels; added Spanish labels to the + annotation properties and named individuals. + 2023, November 27: added Spanish labels to the 93 object properties which + were missing one. + 2023, December 6: improved the description (rdfs:comment) of + the 48 n-ary Relation classes by clearly specifying how they are + directed. + 2023, December 13: Completed the metadata of the vocabulary: added + dc:language, a history note and a scope note. + 2023, December 21: revised and updated the ontology metadata + and introduction, and the HTML view.. + 2023, December 27: in order to make the ontology clearer and more + consistent, renamed the certainty and source datatype properties to + relationCertainty and relationSource and reduced their domain to Relation. + Renamed the 'hasSource' object property to 'isEvidencedBy' and reduced its + domain to Relation and range to RecordResource; same for the inverse property, + 'isSourceOf', renamed to 'evidences'. Updated the specifications of these + properties accordingly. + 2023, December 27: added rdfs:isDefinedBy to all the properties not + defined in RiC-O itself. + 2023, December 28: made a few changes in the ontology introduction + (dcterms:description) and metadata. + 2023, December 29: Added the property chain axiom on 'hasCreator'. + 2023, December 30: Fixed a typo in five French labels. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + When it exists, specifies the identifier and name of RiC-CM + component that corresponds to the annotated class or property. + + RiC-CM corresponding component + composant correspondant dans RiC-CM + componente correspondiente en RiC-CM + + + 2023-11-25 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + + + An annotation property for recording a possible mapping to a + component in another model or ontology + + close to + proche de + cerca de + + + 2023-11-25 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + + + + + + + + Connects a AccumulationRelation to itself. It is a reflexive + property, that can stand for an instance of the class when necessary, e.g. when you explore + a knowledge graph. + + has the role of the Accumulation Relation + a le rôle de la Relation d’accumulation + desempeña el papel de la Relación de Acumulación + + + 2023-11-08 + In order to get a system of rolified Relation classes: created + the object property, with domain and range the AccumulationRelation rolified class. + Declared it as reflexive. Declared it(s) superproperty(ies). + + + This property "rolifies" the AccumulationRelation class. It + should be used only when you have to manage instances of the AccumulationRelation class, to + connect each instance to itself, in order to be able to infer, using OWL-RL and property + paths, the two shortcuts corresponding to this n-ary class. + + + + + + + + + Connects a ActivityDocumentationRelation to itself. It is a + reflexive property, that can stand for an instance of the class when necessary, e.g. when + you explore a knowledge graph. + + has the role of the Activity Documentation Relation + a le rôle de la Relation entre activités et ressources + archivistiques + desempeña el papel de la Relación de procedencia + funcional + + + 2023-11-08 + In order to get a system of rolified Relation classes: created + the object property, with domain and range the ActivityDocumentationRelation rolified + class. Declared it as reflexive. Declared it(s) superproperty(ies). + + + This property "rolifies" the ActivityDocumentationRelation + class. It should be used only when you have to manage instances of the + ActivityDocumentationRelation class, to connect each instance to itself, in order to be + able to infer, using OWL-RL and property paths, the two shortcuts corresponding to this + n-ary class. + + + + + + + + + + + + + + + Connects an Activity to an Agent Temporal Relation (when the + Activity is transferred from an Agent to another one) or a Mandate Relation (the Mandate + assigns the Activity to the Agent or defines it). + + activity is context of relation + activité est le contexte de la relation + actividad es contexto de relación + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + + + + + + Connects an Event to a Thing on which the Event has or had some + significant impact. + + affects or affected + affecte ou a affecté + afecta o afectaba a + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition + and corresponding CM component (changed made in order to make RiC-O compliant with + RiC-CM 0.2; the name of this property in RiC-O 0.1 was "affects"). + + + RiC-R059 ('affects or affected' + relation) + + + + + + + + + Connects a AgentControlRelation to itself. It is a reflexive + property, that can stand for an instance of the class when necessary, e.g. when you explore + a knowledge graph. + + has the role of the Agent Control Relation + a le rôle de la Relation de contrôle entre agents + desempeña el papel de la Relación de control entre + agentes + + + 2023-11-08 + In order to get a system of rolified Relation classes: created + the object property, with domain and range the AgentControlRelation rolified class. + Declared it as reflexive. Declared it(s) superproperty(ies). + + + This property "rolifies" the AgentControlRelation class. It + should be used only when you have to manage instances of the AgentControlRelation class, to + connect each instance to itself, in order to be able to infer, using OWL-RL and property + paths, the two shortcuts corresponding to this n-ary class. + + + + + + + + + Inverse of 'is or was location of agent' object + property. + + agent has or had location + agent a ou a eu pour localisation + agente tiene o tenía como localización + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-10-26 + Added a rdfs:comment. + + + + + 2023-10-20 + Property created for RiC-0 1.0. + + + + + + + + + + Connects a AgentHierarchicalRelation to itself. It is a reflexive + property, that can stand for an instance of the class when necessary, e.g. when you explore + a knowledge graph. + + has the role of the Agent Hierarchical Relation + a le rôle de la Relation hiérarchique entre agents + desempeña el papel de la Relación jerárquica entre + agentes + + + 2023-11-08 + In order to get a system of rolified Relation classes: created + the object property, with domain and range the AgentHierarchicalRelation rolified + class. Declared it as reflexive. Declared it(s) superproperty(ies). + + + This property "rolifies" the AgentHierarchicalRelation class. It + should be used only when you have to manage instances of the AgentHierarchicalRelation + class, to connect each instance to itself, in order to be able to infer, using OWL-RL and + property paths, the two shortcuts corresponding to this n-ary class. + + + + + + + + + Connects a AgentTemporalRelation to itself. It is a reflexive + property, that can stand for an instance of the class when necessary, e.g. when you explore + a knowledge graph. + + has the role of the Agent Temporal Relation + a le rôle de la Relation temporelle entre agents + desempeña el papel de la Relación temporal entre + agentes + + + 2023-11-08 + In order to get a system of rolified Relation classes: created + the object property, with domain and range the AgentTemporalRelation rolified class. + Declared it as reflexive. Declared it(s) superproperty(ies). + + + This property "rolifies" the AgentTemporalRelation class. It + should be used only when you have to manage instances of the AgentTemporalRelation class, + to connect each instance to itself, in order to be able to infer, using OWL-RL and property + paths, the two shortcuts corresponding to this n-ary class. + + + + + + + + Connects a AgentToAgentRelation to itself. It is a reflexive + property, that can stand for an instance of the class when necessary, e.g. when you explore + a knowledge graph. + + has the role of the Agent Relation + a le rôle de la Relation entre agents + desempeña el papel de la Relación entre agentes + + + 2023-11-08 + In order to get a system of rolified Relation classes: created + the object property, with domain and range the AgentToAgentRelation rolified class. + Declared it as reflexive. Declared it(s) superproperty(ies). + + + This property "rolifies" the AgentToAgentRelation class. It + should be used only when you have to manage instances of the AgentToAgentRelation class, to + connect each instance to itself, in order to be able to infer, using OWL-RL and property + paths, the two shortcuts corresponding to this n-ary class. + + + + + + + + Connects a AppellationRelation to itself. It is a reflexive + property, that can stand for an instance of the class when necessary, e.g. when you explore + a knowledge graph. + + has the role of the Appellation Relation + a le rôle de la Relation d’appellation + desempeña el papel de la Relación de denominación + + + 2023-11-08 + In order to get a system of rolified Relation classes: created + the object property, with domain and range the AppellationRelation rolified class. + Declared it as reflexive. Declared it(s) superproperty(ies). + + + This property "rolifies" the AppellationRelation class. It + should be used only when you have to manage instances of the AppellationRelation class, to + connect each instance to itself, in order to be able to infer, using OWL-RL and property + paths, the two shortcuts corresponding to this n-ary class. + + + + + + + + + + + + + + + Connects an Agent Temporal Relation or Mandate Relation, to an + Activity that is, either transferred from an Agent to another one, or assigned by a Mandate + to an Agent. + + as concerns activity + en ce qui concerne l’activité + en cuanto a actividad + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + + + + + + Connects a AuthorityRelation to itself. It is a reflexive + property, that can stand for an instance of the class when necessary, e.g. when you explore + a knowledge graph. + + has the role of the Authority Relation + a le rôle de la Relation d’autorité + desempeña el papel de la Relación de control por parte de + agentes + + + 2023-11-08 + In order to get a system of rolified Relation classes: created + the object property, with domain and range the AuthorityRelation rolified class. + Declared it as reflexive. Declared it(s) superproperty(ies). + + + This property "rolifies" the AuthorityRelation class. It should + be used only when you have to manage instances of the AuthorityRelation class, to connect + each instance to itself, in order to be able to infer, using OWL-RL and property paths, the + two shortcuts corresponding to this n-ary class. + + + + + + + + + + + + + Inverse of 'authorizes' object property + + authorized by + autorisé par + controlado por + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new mandateRelation_role object + property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + RiC-R067i ('authorizedBy' + relation) + + + + + + + + + + + + + Connects a Mandate to the Agent that the Mandate gives the + authority or competencies to act. + + authorizes + autorise + controla + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new mandateRelation_role object + property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + fixed the CM corresponding component name. + + + RiC-R067 ('authorizes' + relation) + + + + + + + + Connects a Mandate Relation to an Agent that assigns the + Mandate. + + authorizing agent + autorisation donnée par l’agent + autorización dada por el agente + + + 2023-11-13 + Fixed the rdfs:label in Spanish. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + + + + + + Connects a AuthorshipRelation to itself. It is a reflexive + property, that can stand for an instance of the class when necessary, e.g. when you explore + a knowledge graph. + + has the role of the Authorship Relation + a le rôle de la Relation de responsabilité + intellectuelle + desempeña el papel de la Relación de autoría + + + 2023-11-08 + In order to get a system of rolified Relation classes: created + the object property, with domain and range the AuthorshipRelation rolified class. + Declared it as reflexive. Declared it(s) superproperty(ies). + + + This property "rolifies" the AuthorshipRelation class. It should + be used only when you have to manage instances of the AuthorshipRelation class, to connect + each instance to itself, in order to be able to infer, using OWL-RL and property paths, the + two shortcuts corresponding to this n-ary class. + + + + + + + + Connects a ChildRelation to itself. It is a reflexive property, + that can stand for an instance of the class when necessary, e.g. when you explore a + knowledge graph. + + has the role of the Child Relation + a le rôle de la Relation de filiation + desempeña el papel de la Relación de filiación + + + 2023-11-08 + In order to get a system of rolified Relation classes: created + the object property, with domain and range the ChildRelation rolified class. Declared + it as reflexive. Declared it(s) superproperty(ies). + + + This property "rolifies" the ChildRelation class. It should be + used only when you have to manage instances of the ChildRelation class, to connect each + instance to itself, in order to be able to infer, using OWL-RL and property paths, the two + shortcuts corresponding to this n-ary class. + + + + + + + + + Connects a Place to a Place that it contained in the + past. + + contained + a contenu + contenía + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the labels, description (rdfs:comment). + + + + + 2023-09-05 + Object property added, along with its inverse property, in order to enable to + express past partitive relations between places (the current partitive relations + being also added, including a transitive one). + + + + + + + + + + + + Connects a Place to a region that is or was within + it. + + contains or contained + contient ou a contenu + contiene o contenía + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition, + corresponding CM component name ; added a scope note (changed made in order to make + RiC-O compliant with RiC-CM 0.2; the name of this property in RiC-O 0.1 was + "contains"). + + + Use for connecting two geographical or administrative + regions. + RiC-R007 ('contains or contained' + relation) + + + + + + + + + + Connects a Place to a Place that it contains, directly or indirectly. This is a + transitive relation. + + contains transitive + contient transitif + contiene transitivo + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the description (rdfs:comment) and labels. + + + + + 2023-09-05 + Object property added, along with its inverse property, in order to enable to + express current partitive relations between places (the past partitive relation also + being added). + + + + + + + + + + Connects a CorrespondenceRelation to itself. It is a reflexive + property, that can stand for an instance of the class when necessary, e.g. when you explore + a knowledge graph. + + has the role of the Correspondence Relation + a le rôle de la Relation épistolaire + desempeña el papel de la Relación entre personas por + correspondencia + + + 2023-11-08 + In order to get a system of rolified Relation classes: created + the object property, with domain and range the CorrespondenceRelation rolified class. + Declared it as reflexive. Declared it(s) superproperty(ies). + + + This property "rolifies" the CorrespondenceRelation class. It + should be used only when you have to manage instances of the CorrespondenceRelation class, + to connect each instance to itself, in order to be able to infer, using OWL-RL and property + paths, the two shortcuts corresponding to this n-ary class. + + + + + + + + Connects a CreationRelation to itself. It is a reflexive property, + that can stand for an instance of the class when necessary, e.g. when you explore a + knowledge graph. + + has the role of the Creation Relation + a le rôle de la Relation de création + desempeña el papel de la Relación de creación + + + 2023-11-08 + In order to get a system of rolified Relation classes: created + the object property, with domain and range the CreationRelation rolified class. + Declared it as reflexive. Declared it(s) superproperty(ies). + + + This property "rolifies" the CreationRelation class. It should + be used only when you have to manage instances of the CreationRelation class, to connect + each instance to itself, in order to be able to infer, using OWL-RL and property paths, the + two shortcuts corresponding to this n-ary class. + + + + + + + + Connects a Creation Relation to the Role Type that the creator + Agent(s) has in the creation process + + creation with role + création avec pour rôle + creación con el rol de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + + + + + + + Connects a DerivationRelation to itself. It is a reflexive + property, that can stand for an instance of the class when necessary, e.g. when you explore + a knowledge graph. + + has the role of the Derivation Relation + a le rôle de la Relation de dérivation + desempeña el papel de la Relación de derivación + + + 2023-11-08 + In order to get a system of rolified Relation classes: created + the object property, with domain and range the DerivationRelation rolified class. + Declared it as reflexive. Declared it(s) superproperty(ies). + + + This property "rolifies" the DerivationRelation class. It should + be used only when you have to manage instances of the DerivationRelation class, to connect + each instance to itself, in order to be able to infer, using OWL-RL and property paths, the + two shortcuts corresponding to this n-ary class. + + + + + + + + + Connects a DescendanceRelation to itself. It is a reflexive + property, that can stand for an instance of the class when necessary, e.g. when you explore + a knowledge graph. + + has the role of the Descendance Relation + a le rôle de la Relation de descendance + desempeña el papel de la Relación de descendencia + + + 2023-11-08 + In order to get a system of rolified Relation classes: created + the object property, with domain and range the DescendanceRelation rolified class. + Declared it as reflexive. Declared it(s) superproperty(ies). + + + This property "rolifies" the DescendanceRelation class. It + should be used only when you have to manage instances of the DescendanceRelation class, to + connect each instance to itself, in order to be able to infer, using OWL-RL and property + paths, the two shortcuts corresponding to this n-ary class. + + + + + + + + Connects a Record Resource to a Thing that it describes or + described. + + describes or described + décrit ou a décrit + describe o describía + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment). + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition, + corresponding CM component name (changed made in order to make RiC-O compliant with + RiC-CM 0.2; the name of this property in RiC-O 0.1 was "describes"). + + + Can be used, among other situations, for specifying that some + finding aid (a Record that has Documentary Form Type Finding Aid) describes some Record + Set. + RiC-R021 (describes or + described) + + + + + + + + + Connects a Place to another Place that it directly contains. + + contains directly + contient directement + contiene directamente + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the description (rdfs:comment) and labels. + + + + + 2023-09-05 + Object property added, along with its inverse property, in order to enable to + express current, direct, partitive relations between places (the possibly indirect, + transitive relation, superproperty of this one, being also added). + + + + + + + + + + Connects a Thing to a Thing that it follows directly in some non + chronological sequence. + + directly follows in sequence + suit directement dans la séquence + sigue directamente en la secuencia + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the description (rdfs:comment) and labels. + + + + + 2023-09-22 + Renamed the property and modified its definition (rdfs:comment) + in order to better distinguish it from followsInTime. + + + + + 2023-09-08 + Added transitive super-property and both present direct and + past sequential relations as well as their respective inverse relations. + + + + + + + + + + + + + + + + + + Connects a Record Set to a Record or Record Set which it includes + directly. + + directly includes + inclut directement + incluye directamente + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the labels, description (rdfs:comment). + + + + + 2023-09-08 + Object property added, along with its inverse property, in + order to enable to express current, direct, partitive relations between Record Sets + and their members (the possibly indirect, transitive relation, superproperty of this + one, being also added). + + + + + + + + + + Connects a Thing to a Thing that it precedes directly in some non + chronological sequence. + + directly precedes in sequence + précède directement dans la séquence + precede directamente en la secuencia + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the description (rdfs:comment) and labels. + + + + + 2023-09-22 + Renamed the property and modified its definition (rdfs:comment) + in order to better distinguish it from precedesInTime. + + + + + 2023-09-08 + Object property added, along with its inverse property, in + order to enable to express current, direct, sequential relations between things (the + possibly indirect, transitive relation, superproperty of this one, being also + added). + + + + + + + + + + + + + + + + + + + + + + + Inverse of 'documents' object property. + + documented by + est documenté par + se documenta en + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new + activityDocumentationRelation_role object property. + + + + + 2023-11-07 + Made this property a subproperty of the new + isOrganicOrFunctionalProvenanceOf property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the inverse property IRI, the superproperty IRI and the + corresponding CML component name + + + RiC-R033i ('documented by' + relation) + + + + + + + + + + + + + + + + + + + + + Connects a Record Resource or an Instantiation to the Activity + that generates the Record Resource or Instantiation. + + documents + documente + documenta + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the + skos:scopeNote. + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new + activityDocumentationRelation_role object property. + + + + + 2023-11-07 + Made this property a subproperty of the new + hasOrganicOrFunctionalProvenance property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, superproperty IRI, corresponding CM + component name (changed made in order to make RiC-O compliant with RiC-CM 0.2; the + name of this property in RiC-O 0.1 was "isDocumentationOf"). + + + To be used to describe the functional provenance of a Record + Resource or Instantiation. + RiC-R033 ('documents' + relation) + + + + + + + + Connects a EventRelation to itself. It is a reflexive property, + that can stand for an instance of the class when necessary, e.g. when you explore a + knowledge graph. + + has the role of the Event Relation + a le rôle de la Relation impliquant un événement + desempeña el papel de la Relación con un evento + + + 2023-11-08 + In order to get a system of rolified Relation classes: created + the object property, with domain and range the EventRelation rolified class. Declared + it as reflexive. Declared it(s) superproperty(ies). + + + This property "rolifies" the EventRelation class. It should be + used only when you have to manage instances of the EventRelation class, to connect each + instance to itself, in order to be able to infer, using OWL-RL and property paths, the two + shortcuts corresponding to this n-ary class. + + + + + + + + Connects a Record Resource to a Relation, when the first is used + for proving the existence of the second one, or for describing it. + + evidences + atteste de + evidencia + + + 2023-12-27 + Renamed the object property (was 'is source of') and reduced + its domain to Record Resource (the domain was the union of Record Resource and Agent) + and its range to Relation (the range was the union of Record Resource and Relation). + Consequently updated the superproperty, the labels, and added a + rico:RiCCMCorrespondingComponent. Same for the inverse object property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + Inverse of 'is evidenced by' object + property. + + + + + + + + + + + + + Connects a Position to a Group in which that Position exists or + existed, or that is defined by that Group�s organizational structure. + + exists or existed in + existe ou a existé dans + existe o existía en + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new positionToGroupRelation_role + object property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition, + corresponding CM component name (changed made in order to make RiC-O compliant with + RiC-CM 0.2; the name of this property in RiC-O 0.1 was "existsIn"). + + + RiC-R056 ('exists or existed in' + relation) + + + + + + + + Inverse of 'is or was expressed by' object + property. + + expresses or expressed + exprime ou a exprimé + expresa o expresaba + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition, + corresponding CM component name (changed made in order to make RiC-O compliant with + RiC-CM 0.2; the name of this property in RiC-O 0.1 was "expresses"). + + + RiC-R064i ('expresses or expressed' + relation) + + + + + + + + Connects a FamilyRelation to itself. It is a reflexive property, + that can stand for an instance of the class when necessary, e.g. when you explore a + knowledge graph. + + has the role of the Family Relation + a le rôle de la Relation familiale + desempeña el papel de la Relación familiar + + + 2023-11-08 + In order to get a system of rolified Relation classes: created + the object property, with domain and range the FamilyRelation rolified class. + Declared it as reflexive. Declared it(s) superproperty(ies). + + + This property "rolifies" the FamilyRelation class. It should be + used only when you have to manage instances of the FamilyRelation class, to connect each + instance to itself, in order to be able to infer, using OWL-RL and property paths, the two + shortcuts corresponding to this n-ary class. + + + + + + + + Connects a Thing to a Thing that it followed in some non + chronological sequence in the past. + + followed in sequence + a suivi dans la séquence + seguía en la secuencia transitivo + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the description (rdfs:comment) and labels. + + + + + 2023-09-22 + Renamed the property and modified its definition (rdfs:comment) + in order to better distinguish it from followsInTime. + + + + + 2023-09-08 + Added transitive super-property and both present direct and + past sequential relations as well as their respective inverse relations. + + + + + + + + + + + Connects a Thing to a Thing that it directly or indirectly follows + in some non chronological sequence. + + follows in sequence transitive + suit dans la séquence transitif + sigue en la secuencia transitivo + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the description (rdfs:comment) and labels. + + + + + 2023-09-22 + Renamed the property and modified its definition (rdfs:comment) + in order to better distinguish it from followsInTime. + + + + + 2023-09-08 + Added transitive super-property and both present direct and + past sequential relations as well as their respective inverse relations. + + + + + + + + + + + + + + + + Inverse of 'precedes in time' object property. This is a + transitive relation. + + follows in time + suit dans le temps + sigue en el tiempo a + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new temporalRelation_role object + property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-09-22 + Property made transitive. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the superproperty IRI. + + + RiC-R009i ('follows in time' + relation) + + + + + + + + + + + + + Inverse of 'precedesOrPreceded' object property. + + follows or followed + suit ou a suivi + sigue o seguía a + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new sequentialRelation_role + object property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition, + corresponding CM component name (changed made in order to make RiC-O compliant with + RiC-CM 0.2; the name of this property in RiC-O 0.1 was "follows"). + + + RiC-R008i ('follows or followed' + relation) + + + + + + + + Connects a FunctionalEquivalenceRelation to itself. It is a + reflexive property, that can stand for an instance of the class when necessary, e.g. when + you explore a knowledge graph. + + has the role of the Functional Equivalence Relation + a le rôle de la Relation d’équivalence fonctionnelle + desempeña el papel de la Relación de equivalencia + funcional + + + 2023-11-08 + In order to get a system of rolified Relation classes: created + the object property, with domain and range the FunctionalEquivalenceRelation rolified + class. Declared it as reflexive. Declared it(s) superproperty(ies). + + + This property "rolifies" the FunctionalEquivalenceRelation + class. It should be used only when you have to manage instances of the + FunctionalEquivalenceRelation class, to connect each instance to itself, in order to be + able to infer, using OWL-RL and property paths, the two shortcuts corresponding to this + n-ary class. + + + + + + + + + Connects a GroupSubdivisionRelation to itself. It is a reflexive + property, that can stand for an instance of the class when necessary, e.g. when you explore + a knowledge graph. + + has the role of the Group Subdivision Relation + a le rôle de la Relation de subdivision entre groupes + d’agents + desempeña el papel de la Relación de subdivisión entre grupos de + agentes + + + 2023-11-08 + In order to get a system of rolified Relation classes: created + the object property, with domain and range the GroupSubdivisionRelation rolified + class. Declared it as reflexive. Declared it(s) superproperty(ies). + + + This property "rolifies" the GroupSubdivisionRelation class. It + should be used only when you have to manage instances of the GroupSubdivisionRelation + class, to connect each instance to itself, in order to be able to infer, using OWL-RL and + property paths, the two shortcuts corresponding to this n-ary class. + + + + + + + + + Connects an Instantiation to another Instantiation that was its + component in the past. + + had component + a eu pour composant + tenía como componente + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the description (rdfs:comment) and labels. + + + + + 2023-09-08 + Object property added, along with its inverse property, in + order to enable to express past partitive relations between instantiations (the + current partitive relations being also added, including a transitive + one). + + + + + + + + + + + + + + + + + + + + + + + + + Connects a Record or Record Part to another Record or Record Part + that was its constituent in the past. + + had constituent + a eu pour constituant + tenía como elemento constitutivo + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the labels. + + + + + 2023-10-26 + Added RecordPart to the domain. + + + + + 2023-09-08 + Object property added, along with its inverse property, in + order to enable to express past partitive relations between Record and Record or + Record Part (the current partitive relations being also added, including a transitive + one). + + + + + + + + + + Connects a Thing to a Thing that was a constitutive or component + part of that Thing in the past. + + had part + a eu pour partie + tenía como parte + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the labels. + + + + + 2023-07-12 + Object property added, along with its inverse property, in + order to enable to express past partitive relations between things (the current + partitive relations being also added, including a transitive one). + + + + + + + + + + + + Connects a Group to one of its past subdivisions. + + had subdivision + a eu pour subdivision + tenía como subdivisión + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the labels. + + + + + 2023-09-08 + Object property added, along with its inverse property, in + order to enable to express past partitive relations between groups (the current + partitive relations being also added, including a transitive one). + + + + + + + + + + + Connects a past Event to one of a series of past Events that + constituted that original, broader, past Event. + + had subevent + a été constitué de l’événement + tenía como parte de evento + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the labels. + + + + + 2023-09-08 + Object property added, along with its inverse property, in + order to enable to express partitive relations between past Events (the partitive + relations between ongoing events being also added, including a transitive + one). + + + + + + + + + + Connects an Agent to an Agent that was hierarchically inferior in + the past. + + had subordinate + a eu pour subalterne + tenía como subordinado o subordinada a + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the labels. + + + + + 2023-09-08 + Object property added, along with its inverse property, in + order to enable to express past subordination relations between Agents (the current + subordination relations being also added, including a transitive one). + + + + + + + + + + + + + + + + + + + + + + Connects a Record Resource or an Instantiation to the Agent that + accumulates it, be it intentionally (collecting) or not (receiving in the course of its + activities). + + has accumulator + est accumulé par + tiene como acumulador a + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new accumulationRelation_role + object property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition + and corresponding CM component (changed made in order to make RiC-O compliant with + RiC-CM 0.2; the name of this property in RiC-O 0.1 was "accumulatedBy"). + + + RiC-R028 ('has accumulator' + relation) + + + + + + + + Connects an Activity to an Activity Type that categorizes + it. + + has activity type + a pour type d’activité + tiene como tipo de actividad a + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the superproperty IRI. + + + + + + + + + + + + + + + + + Connects a Record Resource or an Instantiation to the Agent that + it is addressed to. + + has addressee + a pour destinataire + se dirige a + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + added a scope note + + + The identity of the addressee is (usually) evidenced by the + Record Resource or Instantiation itself. + RiC-R032 ('has addressee' + relation) + + + + + + + + + + + + + + + Inverse of 'has descendant' object property. This is a transitive + relation. + + has ancestor + a pour ancêtre + tiene como ancestro a + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new descendanceRelation_role + object property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-09-08 + made property transitive + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the superproperty IRIs. + + + RiC-R017i (has ancestor + relation) + + + + + + + + + + + + + + + + + + + + + Connects a Record to the Group, Person or Position that is + responsible for conceiving and formulating the information contained in the + Record. + + has author + a pour responsable intellectuel + tiene como autor a + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the + skos:scopeNote. + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new authorshipRelation_role + object property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2020-12-29 + Created following the addition of RiC-R079 relation in RiC-CM + 0.2 + + + To be used for a Person, Group or Position that makes any + contribution to the content of a record. Includes the Person, Group or Position in whose + name or by whose command the content may have been formulated and first instantiated (for + example the Person who signed the Record). + RiC-R079 ('has author' + relation) + + + + + + + + Inverse of 'is beginning date of' object property + + has beginning date + a pour date de début + tiene como fecha de inicio + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + RiC-R069i ('has beginning date' + relation) + + + + + + + + Inverse of 'is birth date of' object property + + has birth date + a pour date de naissance + tiene como fecha de nacimiento + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + RiC-R070i ('has birth date' + relation) + + + + + + + + Inverse of 'is birth place of' object property + + has birth place + a pour lieu de naissance + tiene como lugar de nacimiento + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the description (rdfs:comment). + + + + + 2023-10-26 + Fixed the domain of the property. + + + + + 2023-10-19 + Added for RiC-O 1.0. + + + + + + + + + + Connects an Instantiation to a Carrier Type which categorizes its + carrier. + + has carrier type + a pour type de support + tiene como tipo de soporte + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the superproperty IRI. + + + + + + + + + + + + + + + Connects a Person to one of their children. + + has child + a pour enfant + tiene como hijo o hija a + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new childRelation_role object + property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the inverse property IRI. + + + RiC-R018 ('has child' + relation) + + + + + + + + + + + + + + + Connects a Record Resource or an Instantiation to the Agent that + collects it intentionally, i.e., the Agent is a collector. + + has collector + est collecté par + tiene como coleccionista a + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment). + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property and super property + IRI, text definition, domain (changed made in order to make RiC-O compliant with + RiC-CM 0.2; the name of this property in RiC-O 0.1 was "collectedBy"). + + + RiC-R030 ('has collector' + relation) + + + + + + + + + + Connects an Instantiation to another Instantiation that is, + directly or indirectly, a component of that Instantiation. This is a transitive + relation. + + has component transitive + a pour composant transitif + tiene como componente transitivo + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the description (rdfs:comment) and labels. + + + + + 2023-09-08 + Object property added, along with its inverse property, in + order to enable to express current partitive relations between instantiations (the + past partitive relation also being added). + + + + + + + + + + + + + + + + + + + + + + + + + + Connects a Record or Record Part to another Record or Record Part + that is its constituent, directly or indirectly. This is a transitive + relation. + + has constituent transitive + a pour constituant transitif + tiene como elemento constitutivo transitivo + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the description (rdfs:comment) and labels. + + + + + 2023-10-26 + Added RecordPart to the domain. + + + + + 2023-09-08 + Object property added, along with its inverse property, in + order to enable to express current partitive relations between records and other + records or record parts (the past partitive relation also being added). + + + + + + + + + + + + + + + + + Connects a Record or a Record Part to a Content Type which + categorizes its content. + + has content of type + a pour type de contenu + tiene como tipo de contenido + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the text definition and superproperty IRI. + + + + + + + + + + + Connects a Record Resource to a copy of that Record + Resource. + + has copy + a pour copie + tiene como copia + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the + skos:scopeNote. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + Is both a temporal and genetic relation between the two Record + Resources. + RiC-R012 ('has copy' + relation) + + + + + + + + + + + + + + + Inverse of 'is creation date of' object property + + has creation date + a pour date de création + tiene como fecha de creación + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-09-22 + Added in RiC-O 1.0. + + + RiC-R080i + + + + + + + + + + + + + + + + + + + + Connects a Record Resource or an Instantiation to an Agent that is + either responsible for all or some of the content of the Record Resource or is a + contributor to the genesis or production of an Instantiation. + + has creator + a pour créateur + tiene como creador a + + + 2023-12-29 + Added the property chain axiom, that had been forgotten. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI and label (changed made in order to make RiC-O + compliant with RiC-CM 0.2; the name of this property in RiC-O 0.1 was + "createdBy"). + + + Covers the definition of author in diplomatics, and any + contribution to the intellectual content of a Record Resource. + RiC-R027 ('has creator' + relation) + + + + + + + + Connects a Date to its Date Type. + + has date type + a pour type de date + tiene como tipo de fecha + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-10-10 + Added a rdfs:comment and a French rdfs:label. + + + + + 2023-09-22 + Added in RiC-O 1.0. + + + + + + + + + + Inverse of 'is death date of' object property + + has death date + a pour date de décès + tiene como fecha de muerte + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + RiC-R072i ('has death date' + relation) + + + + + + + Inverse of 'is death place of' object property + + + has death place + a pour lieu de décès + tiene como lugar de muerte + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-13 + Added a rdfs:comment. + + + + + 2023-10-26 + Fixed the domain of the property. + + + + + 2023-10-19 + Added for RiC-O v1.0. + + + + + + + + + + + + + + + + + Connects a Person to one of their descendants. This is a + transitive relation. + + has descendant + a pour descendant + tiene como descendiente a + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the + skos:scopeNote. + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new descendanceRelation_role + object property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-09-08 + made property transitive + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the superproperties IRIs. + + + There may be zero to many intermediate persons, ignored or + unknown, between the two connected persons. + RiC-R017 ('has descendant' + relation) + + + + + + + + Inverse of 'is destruction date of' object + property. + + has destruction date + a pour date de destruction + tiene como fecha de destrucción + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-10-14 + Added a rdfs:comment; same to the inverse property. + + + + + 2023-10-12 + Renamed deletion into destruction + + + + + 2023-09-22 + Added in RiC-O 1.0. + + + + + + + + + + + Connects an Instantiation to another Instantiation that is its + direct component. + + has direct component + a directement pour composant + tiene directamente como componente + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the labels. + + + + + 2023-09-08 + Object property added, along with its inverse property, in + order to enable to express current, direct, partitive relations between + instantiations (the possibly indirect, transitive relation, superproperty of this + one, being also added). + + + + + + + + + + + + + + + + + + + + + + + + + Connects a Record to another Record or Record Part that is its + direct constituent. + + has direct constituent + a directement pour constituant + tiene directamente como elemento constitutivo + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the labels. + + + + + 2023-10-26 + Added RecordPart to the domain. + + + + + 2023-09-08 + Object property added, along with its inverse property, in + order to enable to express current, direct, partitive relations between records and + other records or record parts (the possibly indirect, transitive relation, + superproperty of this one, being also added). + + + + + + + + + + Connects a Thing to a Thing that is a direct constitutive or + component part of that Thing. + + has direct part + a directement pour partie + tiene directamente como parte + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the labels. + + + + + 2023-07-12 + Object property added, along with its inverse property, in + order to enable to express current, direct, partitive relations between things (the + possibly indirect, transitive relation, superproperty of this one, being also + added). + + + To be used only when the current partitive relation is direct, + without any intermediate node between the related things. + + + + + + + + + + Connects a Group to one of its direct subdivisions. + + has direct subdivision + a directement pour subdivision + tiene directamente como subdivisión + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the labels. + + + + + 2023-09-08 + Object property added, along with its inverse property, in + order to enable to express current, direct, partitive relations between groups (the + possibly indirect, transitive relation, superproperty of this one, being also + added). + + + + + + + + + + + Connects an ongoing Event to one of a series of Events that + directly constitute that broader, ongoing Event. + + has direct subevent + est directement constitué de l’événement + tiene directamente como parte de evento + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the labels. + + + + + 2023-09-08 + Object property added, along with its inverse property, in + order to enable to express current, direct, partitive relations between ongoing + events (the possibly indirect, transitive relation, superproperty of this one, being + also added). + + + + + + + + + + Connects an Agent to an Agent that is its direct + subordinate. + + has direct subordinate + a directement pour subalterne + tiene directamente como subordinado o subordinada a + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the labels. + + + + + 2023-09-08 + Object property added, along with its inverse property, in + order to enable to express current, direct, subordination relations between agents + (the possibly indirect, transitive relation, superproperty of this one, being also + added). + + + + + + + + + + + + + + + + + Connects a Record or Record Part to its Documentary Form + Type. + + has documentary form type + a pour type d’objet informationnel + tiene como tipo documental + + + 2023-12-30 + Fixed a typo in the French label. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the superproperty IRI. + + + + + + + + + + + + + + + + + + + + + + + + + Inverse of 'is draft of' object property. + + has draft + a pour ébauche + tiene como borrador + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + RiC-011i ('has draft' + relation) + + + + + + + + Inverse of 'is end date of' object property. + + has end date + a pour date de fin + tiene como fecha final + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + RiC-R071i ('has end date' + relation) + + + + + + + + Connects an Event to an Event Type which categorizes + it. + + has event type + a pour type d’événement + tiene como tipo de evento + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the superproperty IRI. + + + + + + + + + + Connects a Record Resource or Instantiation to an + Extent + + has extent + a pour mesure + tiene como extensión + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Changed the domain (was Instantiation or RecordResource) to + Thing; changed the definition accordingly. + + + + + 2023-08-28 + Added a new rdfs:label in French; added an xml:lang attribute + to the rdfs:comment. + + + + + 2020-10-28 + Object property created along with the Extent class and its + subclasses, in order to provide methods for handling extent accurately. + + + + + + + + + + Connects an Extent to an Extent Type that categorizes what is + being measured. + + has extent type + a pour type de mesure + tiene como tipo de extensión + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French; added an xml:lang attribute + to the rdfs:comment. + + + + + 2020-11-01 + Object property added along with the Extent Type + class. + + + + + + + + + + + + + + + Connects two Persons that have some type of family link, i.e. + belong to the same family. This relation is symmetric. + + has family association with + a une relation familiale avec + tiene asociación familiar con + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the + skos:scopeNote. + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new familyRelation_role object + property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, textual definition (changed made in + order to make RiC-O compliant with RiC-CM 0.2; the name of this property in RiC-O 0.1 + was "hasFamilyLinkWith"). + + + Use hasOrHadMember for connecting a Family and a + Person. + RiC-R047 ('has family association with' + relation) + + + + + + + + Connects a Family to a Family Type that categorizes + it. + + has family type + a pour type de famille + tiene como tipo de familia + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the superproperty IRI. + + + + + + + + + + + + + + + Connects two Record Resources when there is a genetic link between + them. Genetic in this sense is as defined by diplomatics, i.e. the process by which a + Record Resource is developed. This relation is symmetric. + + has genetic link to record resource + a une relation génétique avec la ressource + archivistique + tiene vínculo de origen con recurso documental + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the + skos:scopeNote. + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new + recordResourceGeneticRelation_role object property. + + + + + 2023-11-07 + Added the property chain axiom so that this property is + formally defined as a shortcut. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + Use to connect two Record Resources only if it is not possible + to use a narrower, more specific, asymmetric Record Resource to Record Resource relation, + for example is original of. + RiC-R023 ('has genetic link to record resource' + relation) + + + + + + + + Connects an Identifier and an Identifier Type that categorizes + it. + + has identifier type + a pour type d’identifiant + tiene como tipo de identificador + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the superproperty IRI. + + + + + 2020-10-19 + Object property added along with IdentifierType class and + isIdentifierTypeOf object property. + + + + + + + + + + Inverse of 'is modification date of' object + property. + + has modification date + a pour date de modification + tiene como fecha de modificación + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + RiC-R073i ('has modification date' + relation) + + + + + + + + Connects an Agent and (one of) its present or past Agent + Name. + + has or had agent name + a ou a eu pour nom d’agent + tiene o tenía como nombre de agente + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, textual + definition (the name of this property in RiC-O 0.1 was "hasAgentName"). + + + + + + + + + + Connects a Record Set and a Category (Type) to which all the + Records or Record Parts that are or were included in the Record Set belong. + + has or had all members with category + inclut ou a inclus des membres ayant tous pour + catégorie + tienen o tenían todos sus miembros como categoría + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2020-12-28 + Object property added for handling the case where a Record Set + is described as having all or some members that belong to some category (see RiC-CM + 0.2 attributes section, #4.4 on Record Set, Record and Record Part + attributes). + + + + + + + + + + Connects a Record Set and a Content Type that categorizes all the + Records or Record Parts that are or were included in the Record Set. + + has or had all members with content type + inclut ou a inclus des membres ayant tous pour type de + contenu + tienen o tenían todos sus miembros como tipo de + contenido + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2020-12-28 + Object property added for handling the case where a Record Set + is described as having all or some members that belong to some category (see RiC-CM + 0.2 attributes section, #4.4 on Record Set, Record and Record Part + attributes). + + + + + + + + + + Inverse of 'is or was creation date of all members of' object + property + + has or had all members with creation date + inclut ou a inclus des membres ayant tous pour date de + création + tienen o tenían todos sus miembros como fecha de + creación + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-10-13 + Renamed the property in order to take the past members of the + record set into account. Adjusted the annotations accordingly. + + + + + 2023-10-12 + Added the French label + + + + + 2023-09-22 + Added in RiC-O 1.0. + + + RiC-R081i ('has or had all members with creation + date' relation) + + + + + + + + Connects a Record Set and a Documentary Form Type that categorizes + all the Records or Record Parts that are or were included in the Record Set. + + has or had all members with documentary form type + inclut ou a inclus des membres ayant tous pour type + tienen o tenían todos sus miembros como tipo documental + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2020-12-28 + Object property added for handling the case where a Record Set + is described as having all or some members that belong to some category (see RiC-CM + 0.2 attributes section, #4.4 on Record Set, Record and Record Part + attributes). + + + + + + + + + + Connects a Record Set and a Language used by all the Records or + Record Parts that are or were included in the Record Set. + + has or had all members with language + inclut ou a inclus des membres ayant tous pour langue + tienen o tenían todos sus miembros como lengua + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2020-12-28 + Object property added for handling the case where a Record Set + is described as having all or some members that belong to some category (see RiC-CM + 0.2 attributes section, #4.4 on Record Set, Record and Record Part + attributes). + + + + + + + + + + Connects a Record Set and a Legal Status that categorizes all the + Records or Record Parts that are or were included in the Record Set. + + has or had all members with legal status + inclut ou a inclus des membres ayant tous pour statut + légal + tienen o tenían todos sus miembros como status jurídico + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2020-12-28 + Object property added for handling the case where a Record Set + is described as having all or some members that belong to some category (see RiC-CM + 0.2 attributes section, #4.4 on Record Set, Record and Record Part + attributes). + + + + + + + + + + Connects a Record Set and a Record State that categorizes all the + Records or Record Parts that are or were included in the Record Set. + + has or had all members with record state + inclut ou a inclus des membres ayant tous pour état + tiene o tenían todos sus miembros como estado de + documento + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2020-12-28 + Object property added for handling the case where a Record Set + is described as having all or some members that belong to some category (see RiC-CM + 0.2 attributes section, #4.4 on Record Set, Record and Record Part + attributes). + + + + + + + + + + Connects a record resource to one of its analogue instantiations, + whether it exists or has been lost or destroyed. + + has or had analogue instantiation + a ou a eu pour instanciation analogique + tiene o tenía como instanciación analogica + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-08-29 + Added the property. + + + In some situations, it may be useful or necessary to connect a + record resource to an analogue instantiation that no longer exists or has been + lost. + + + + + + + + + + + + + Connects a Thing to an Appellation that is or was used for + designating it. + + has or had appellation + a ou a eu pour appellation + tiene o tenía como denominación + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new appellationRelation_role + object property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, textual + definition (the name of this property in RiC-O 0.1 was "hasAppellation"). + + + + + + + + + + + + + + + Connects an Agent to a Thing over which the Agent has or had some + kind of authority. + + has or had authority over + a ou a eu autorité sur + tiene o tenía control sobre + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment), skos:scopeNote. + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new authorityRelation_role + object property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, textual + definition (changed made in order to make RiC-O compliant with RiC-CM 0.2; the name + of this property in RiC-O 0.1 was "hasAuthorityOver"). + + + Use only if it is not possible to specify a narrower authority + relation, for example is or was owner of. + RiC-R036 ('has or had authority over' + relation) + + + + + + + + + + + + + Connects a Thing to a Type that categorizes or categorized + it. + + has or had category + a ou a eu pour catégorie + tiene o tenía como categoría + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new typeRelation_role object + property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition + (the name of this property in RiC-O 0.1 was "belongsToCategory"). + + + + + + + + + + + Connects an Instantiation to one of its present or past component + instantiations. + + has or had component + a ou a eu pour composant + tiene o tenía como componente + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, textual + definition (changed made in order to make RiC-O compliant with RiC-CM 0.2; the name + of this property in RiC-O 0.1 was "hasComponent"). + + + RiC-R004 ('has or had component' + relation) + + + + + + + + + + + + + + + + + + + + + + + Connects a Record or Record Part to a Record or Record part that + is or was a constituent of that Record or Record Part. + + has or had constituent + a ou a eu pour constituant + tiene o tenía como elemento constitutivo + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment). + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-10-19 + Added Record Part to the domain. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, textual + definition (changed made in order to make RiC-O compliant with RiC-CM 0.2; the name + of this property in RiC-O 0.1 was "hasConstituent"). + + + RiC-R003 ('has or had constituent' + relation) + + + + + + + + + + + + + + Inverse of 'is or was controller of' object + property. + + has or had controller + a ou a été contrôlé par + tiene o tenía como controlador + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new agentControlRelation_role + object property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition, + corresponding CM component name (changed made in order to make RiC-O compliant with + RiC-CM 0.2; the name of this property in RiC-O 0.1 was "controlledBy"). + + + RiC-R041i ('has or had controller' + relation) + + + + + + + + Connects a Physical Location to its past or present coordinates in + a reference system. + + has or had coordinates + a ou a eu pour coordonnées + tiene como coordenadas de lugar + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-29 + fixed the English label (added the past tense.) + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, textual + definition (the name of this property in RiC-O 0.1 was "hasCoordinates"). + + + + + + + + + + Connects a Corporate Body to a Corporate Body Type which + categorizes or categorized it. + + has or had corporate body type + a ou a eu pour type de collectivité + tiene o tenía como tipo de institucion + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, textual + definition (the name of this property in RiC-O 0.1 was + "hasCorporateBodyType"). + + + + + + + + + + + + + + + Connects two Persons that correspond or have corresponded with + each other. This relation is symmetric. + + has or had correspondent + a ou a eu pour correspondant + tiene o tenía como correspondiente + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new correspondenceRelation_role + object property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, textual definition (changed made in + order to make RiC-O compliant with RiC-CM 0.2; the name of this property in RiC-O 0.1 + was "hasCorrespondent"). + + + RiC-R052 ('has or had correspondent' + relation) + + + + + + + + + + + + + + + Connects a Person or a Group to a Demographic Group to which it + belongs or belonged. + + has or had demographic group + a ou a eu pour catégorie démographique + tiene o tenía como categoría demográfica + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition, + domain (the name of this property in RiC-O 0.1 was + "belongsToDemographicGroup"). + + + + + + + + + + + + + + + + Connects an instantiation to an instantiation that is derived from + it, whether it exists or has been lost or destroyed. + + has or had derived instantiation + a ou a eu pour instanciation dérivée + tiene o tenía como instanciación derivada + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new derivationRelation_role + object property. + + + + + 2023-08-29 + Updated the IRI, inverse property, definition, labels and + RiCMCorrespondingComponent, and added a skos:scopeNote; this in order to make the + specification compliant with RiC-CM 1.0. The name of the property in RiC-O 0.2 was + 'has derived instantiation'. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + In some situations, it may be useful or necessary to connect an + instantiation to an instantiation that was derived from it but no longer exists or or has + been lost. + RiC-R014 ('has or had derived instantiation' + relation) + + + + + + + + Connects a record resource to one of its digital instantiations, + whether it exists or has been lost or destroyed. + + has or had digital instantiation + a ou a eu pour instanciation numérique + tiene o tenía como instanciación digital + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-08-29 + Added the property. + + + This property can be used, among other cases, when you want to + convert findings aids encoded in EAD/XML and need a simple and accurate migration path to + process dao or daogrp EAD elements. Also, in some situations, it may be useful or necessary + to connect a record resource to a digital instantiation that no longer exists or or has + been lost. + + + + + + + + + + + + + + + Inverse of 'is or was employer of' object property. + + a ou a eu pour employeur + has or had employer + tiene o tenía como empleador + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-10-13 + Fixed the lang of the French label. + + + + + 2023-10-26 + Changed the domain and range of the property. Added a + rdfs:comment. Removed the isOrWasMemberOf super-property. + + + + + 2023-10-19 + Added for RiC-O 1.0. + + + + + + + + + + + + + + + + + + + + + + Inverse of 'is or was holder of' object property. + + has or had holder + est ou a été détenu par + tiene o tenía como conservador a + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new + recordResourceHoldingRelation_role object property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition, + super property IRI (changed made in order to make RiC-O compliant with RiC-CM 0.2; + the name of this property in RiC-O 0.1 was "heldBy"). + + + RiC-R039i ('has or had holder' + relation) + + + + + + + + Connects a Thing to one of its past or present + Identifiers. + + has or had identifier + a ou a eu pour identifiant + tiene o tenía como identificador + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition, + super property IRI (the name of this property in RiC-O 0.1 was + "identifiedBy"). + + + + + + + + + + + + + + + Connects a Record Resource to an Instantiation, which either may + exist or may have been lost or destroyed. + + has or had instantiation + a ou a eu pour instanciation + tiene o tenía como instanciación + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment). + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new + recordResourceToInstantiationRelation_role object property. + + + + + 2023-08-29 + Updated the IRI, inverse property, definition, labels and + RiCMCorrespondingComponent, and added a skos:scopeNote; this in order to make the + specification compliant with RiC-CM 1.0. The name of the property in RiC-O 0.2 was + 'has instantiation'. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the inverse property IRI. + + + In some situations, it may be useful or necessary to connect a + record resource to an instantiation that no longer exists or or has been lost, when some of + its characteristics are known from some source, like an old finding aid. + RiC-R025 ('has or had instantiation' + relation) + + + + + + + + + + + + + + + + + + + + + + + + + + + + Inverse of 'is or was holder of intellectual property rights of' + object property. + + has or had intellectual property rights holder + a ou a détenu les droits de propriété intellectuelle + sur + tiene o tenía como titular de derechos de propiedad intelectual + a + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new + intellectualPropertyRightsRelation_role object property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, textual + definition (changed made in order to make RiC-O compliant with RiC-CM 0.2; the name + of this property in RiC-O 0.1 was "intellectualPropertyRightsHeldBy"). + + + RiC-R040i ('has or had intellectual property rights + holder ' relation) + + + + + + + + Inverse of 'is or was jurisdiction of' object + property. + + has or had jurisdiction + a ou a eu pour ressort + tiene o tenía como jurisdicción + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-10-19 + Made subproperty of new property isAgentAssociatedWithPlace + instead of its parent isAssociatedWithPlace. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI and textual + definition (changed made in order to make RiC-O compliant with RiC-CM 0.2; the name + of this property in RiC-O 0.1 was "hasJurisdiction"). + + + RiC-R076i ('has or had jurisdiction' + relation) + + + + + + + + + + + + + + + + Connects an Agent, Record or Record Part to a Language that uses + or used it. + + has or had language + a ou a eu pour langue + tiene o tenía como lengua + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2023-07-25 + changed the definition to be consistent with the inverse + relation. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI and textual + definition (the name of this property in RiC-O 0.1 was "hasLanguage"). + + + + + + + + + + + + + + + Inverse of 'is or was leader of' object property. + + has or had leader + a ou a eu pour dirigeant + tiene o tenía como líder a + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new leadershipRelation_role + object property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition, + super property IRI (changed made in order to make RiC-O compliant with RiC-CM 0.2; + the name of this property in RiC-O 0.1 was "ledBy"). + + + RiC-R042i ('has or had leader' + relation) + + + + + + + + + + + + + + + + Connects an Agent or Record Resource to a Legal Status which + categorized or categorizes it. + + has or had legal status + a ou a eu pour statut légal + tiene o tenía como status jurídico + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI and textual + definition (the name of this property in RiC-O 0.1 was "hasLegalStatus"). + + + + + + + + + + Inverse of 'is or was location of' object property. + + has or had location + a ou a eu pour localisation + tiene o tenía como localización + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI and textual + definition (changed made in order to make RiC-O compliant with RiC-CM 0.2; the name + of this property in RiC-O 0.1 was "hasLocation"). + + + RiC-R075i ('has or had location' + relation) + + + + + + + + Connects a Record Resource to a Thing that is or was its main + subject. + + has or had main subject + a ou a eu pour sujet principal + tiene o tenía como matería principal + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI and textual + definition (changed made in order to make RiC-O compliant with RiC-CM 0.2; the name + of this property in RiC-O 0.1 was "hasMainSubject"). + + + Use for specifying, for example, that a Record Set of type + personal file has main subject some person, which would help end users to retrieve the main + archival resources about this person. + RiC-R020 ('has or had main subject' + relation) + + + + + + + + + + + + + + + + + + + + Inverse of 'is or was manager of' object property. + + has or had manager + a ou a eu pour gestionnaire + tiene o tenía como gestor a + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new managementRelation_role + object property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition, + super property IRI (changed made in order to make RiC-O compliant with RiC-CM 0.2; + the name of this property in RiC-O 0.1 was "managedBy"). + + + RiC-R038i ('is or was managed by' + relation) + + + + + + + + Connects a Mandate to a Mandate Type that categorized or + categorizes it. + + has or had mandate type + a ou a eu pour type de mandat + tiene o tenía como tipo de norma + + + 2023-11-13 + Added the property, and its inverse one, following the creation + of the MandateType class, that corresponds to the new Mandate Type attribute in + RiC-CM 1.0. + + + + + + + + + + + + + + + Connects a Group to a Person that is or was a member of that + Group. + + has or had member + a ou a eu pour membre + tiene o tenía como miembro a + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new membershipRelation_role + object property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI and textual + definition (changed made in order to make RiC-O compliant with RiC-CM 0.2; the name + of this property in RiC-O 0.1 was "hasMember"). + + + RiC-R055 ('has or had member' + relation) + + + + + + + + Inverse of 'is or was creation date of most members of' object + property + + has or had most members with creation date + inclut ou a inclus des membres dont la plupart ont pour date de + création + tienen o tenían la mayoría de sus miembros como fecha de + creación + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-10-13 + Renamed the property in order to take the past members of the + record set into account. Adjusted the annotations accordingly. + + + + + 2023-10-12 + Added the French label + + + + + 2023-10-10 + Made this property a subproperty of + hasSomeMembersWithCreationDate. + + + + + 2023-09-22 + Added in RiC-O 1.0. + + + RiC-R083i ('has or had most members with creation + date' relation) + + + + + + + + Connects a Thing to one of its past or present + Names. + + has or had name + a ou a eu pour nom + tiene o tenía como nombre + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, textual + definition, super property IRI (the name of this property in RiC-O 0.1 was + "hasName"). + + + + + + + + + + Connects a Person to an Occupation Type that categorized or + categorizes his/her occupation (profession, trade or craft). + + has or had occupation of type + a ou a eu pour type d’occupation + tiene o tenía como tipo de ocupación + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, textual + definition, super property IRI (the name of this property in RiC-O 0.1 was + "hasOccupationOfType"). + + + + + + + + + + + + + + + + + + + + + + + Inverse of 'is or was owner of' object property. + + has or had owner + a ou a eu pour propriétaire + tiene o tenía como poseedor a + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new ownershipRelation_role + object property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition, + super property IRI (changed made in order to make RiC-O compliant with RiC-CM 0.2; + the name of this property in RiC-O 0.1 was "ownedBy"). + + + RiC-R037i ('has or had owner' + relation) + + + + + + + + + + + + + Connects a Thing to a constitutive or component part of that + Thing. + + has or had part + a ou a eu pour partie + tiene o tenía como parte + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the + skos:scopeNote. + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new wholePartRelation_role + object property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, textual + definition (changed made in order to make RiC-O compliant with RiC-CM 0.2; the name + of this property in RiC-O 0.1 was "hasPart"). + + + Use to connect a Thing to another Thing that is or was a part of + the whole Thing only if it is not possible to use a narrower, more specific whole/part + relation, for example has or had constituent. The end of existence of a whole/part relation + may affect the integrity or nature of the domain entity. + RiC-R002 (has or had part + relation) + + + + + + + + Connects an Event to a Thing that is or was actively or passively + involved in it. + + has or had participant + a ou a eu pour participant + tiene o tenía como participante + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, textual + definition (changed made in order to make RiC-O compliant with RiC-CM 0.2; the name + of this property in RiC-O 0.1 was "involves"). + + + RiC-R058 ('has or had participant' + relation) + + + + + + + + Connects a Place to one of its past or present Physical + Location. + + has or had physical location + a ou a eu pour localisation physique + tiene o tenía como localización física + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-02-01 + Property made a subproperty of + 'isPlaceAssociatedWith". + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, textual + definition (the name of this property in RiC-O 0.1 was + "hasPhysicalLocation"). + + + + + + + + + + Connects a Place to one of its past or present + names. + + has or had place name + a ou a eu pour nom de lieu + tiene o tenía como nombre de lugar + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition, + super property IRI (the name of this property in RiC-O 0.1 was + "hasPlaceName"). + + + + + + + + + + Connects a Place to a Place Type that categorized or categorizes + it. + + has or had place type + a ou a eu pour type de lieu + tiene o tenía como tipo de lugar + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition, + super property IRI (the name of this property in RiC-O 0.1 was + "hasPlaceType"). + + + + + + + + + + + + + + + Inverse of 'exists or existed in' object property. + + has or had position + occupe ou a occupé le poste + tiene o tenía como puesto + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new positionToGroupRelation_role + object property. + + + + + 2023-11-07 + Added the property chain axiom so that this property is + formally defined as a shortcut (the inverse property already was). + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition, + corresponding CM component name (changed made in order to make RiC-O compliant with + RiC-CM 0.2; the name of this property in RiC-O 0.1 was "hasPosition"). + + + RiC-R056i ('has or had position' + relation) + + + + + + + + Connects a Rule to a Rule Type that categorized or categorizes + it. + + has or had rule type + a ou a eu pour type de règle + tiene o tenía como tipo de regla + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition, + super property IRI (the name of this property in RiC-O 0.1 was + "hasRuleType"). + + + + + 2020-10-19 + Object property added along with RuleType class and + isRuleTypeOf object property. + + + + + + + + + + Connects a Record Set and a Category (Type) to which some of the + Records or Record Parts that are or were included in the Record Set belong. + + has or had some members with category + inclut ou a inclus des membres ayant pour type + tienen o tenían algunos de sus miembros como categoría + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2020-12-28 + Object property added for handling the case where a Record Set + is described as having all or some members that belong to some category (see RiC-CM + 0.2 attributes section, #4.4 on Record Set, Record and Record Part + attributes). + + + + + + + + + + Connects a Record Set and a Content Type that categorizes some of + the Records or Record Parts that are or were included in the Record Set. + + has or had some members with content type + inclut ou a inclus des membres ayant pour type de + contenu + tienen o tenían algunos de sus miembros como tipo de + contenido + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2020-12-28 + Object property added for handling the case where a Record Set + is described as having all or some members that belong to some category (see RiC-CM + 0.2 attributes section, #4.4 on Record Set, Record and Record Part + attributes). + + + + + + + + + + Inverse of 'is or was creation date of some members of' object + property + + has or had some members with creation date + inclut ou a inclus des membres ayant pour date de + création + tienen o tenían algunos de sus miembros como fecha de + creación + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-10-13 + Renamed the property in order to take the past members of the + record set into account. Adjusted the annotations accordingly. + + + + + 2023-10-12 + Added the French label + + + + + 2023-09-22 + Added in RiC-O 1.0. + + + RiC-R082i ('has or had some members with creation + date' relation) + + + + + + + + Connects a Record Set and a Language used by some of the Records + or Record Parts that are or were included in the Record Set. + + has or had some members with language + inclut ou a inclus des membres ayant pour langue + tienen o tenían algunos de sus miembros como lengua + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2020-12-28 + Object property added for handling the case where a Record Set + is described as having all or some members that belong to some category (see RiC-CM + 0.2 attributes section, #4.4 on Record Set, Record and Record Part + attributes). + + + + + + + + + + Connects a Record Set and a Legal Status that categorizes some of + the Records or Record Parts that are or were included in the Record Set. + + has or had some members with legal status + inclut ou a inclus des membres ayant pour statut légal + tienen o tenían algunos de sus miembros como status + jurídico + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2020-12-28 + Object property added for handling the case where a Record Set + is described as having all or some members that belong to some category (see RiC-CM + 0.2 attributes section, #4.4 on Record Set, Record and Record Part + attributes). + + + + + + + + + + Connects a Record Set and a Record State that categorizes some of + the Records or Record Parts that are or were included in the Record Set. + + has or had some members with record state + inclut ou a inclus des membres ayant pour état + tienen o tenía algunos de sus miembros como estado de + documento + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2020-12-28 + Object property added for handling the case where a Record Set + is described as having all or some members that belong to some category (see RiC-CM + 0.2 attributes section, #4.4 on Record Set, Record and Record Part + attributes). + + + + + + + + + + Connects a Record Set and a Documentary Form Type that categorizes + some of the Records or Record Parts that are or were included in the Record + Set. + + has or had some members with documentary form type + inclut ou a inclus des membres ayant pour type de + document + tienen o tenía algunos de sus miembros como tipo + documental + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2020-12-28 + Object property added for handling the case where a Record Set + is described as having all or some members that belong to some category (see RiC-CM + 0.2 attributes section, #4.4 on Record Set, Record and Record Part + attributes). + + + + + + + + + + + + + + + Connects two Persons who are or were married. This relation is + symmetric. + + has or had spouse + a ou a eu pour conjoint + tiene o tenía como cónyuge a + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment). + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new spouseRelation_role object + property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition, + super property IRI (changed made in order to make RiC-O compliant with RiC-CM 0.2; + the name of this property in RiC-O 0.1 was "hasSpouse"). + + + RiC-R049 ('has or had spouse' + relation) + + + + + + + + + + + + + Inverse of 'has or had teacher' object property. + + has or had student + a ou a eu pour étudiant + tiene o tenía como estudiante a + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new teachingRelation_role object + property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition + (changed made in order to make RiC-O compliant with RiC-CM 0.2; the name of this + property in RiC-O 0.1 was "hasStudent"). + + + RiC-R053i ('has or had student' + relation) + + + + + + + + + + + + + + Connects a Group to one of its present or past + subdivisions. + + has or had subdivision + a ou a eu pour subdivision + tiene o tenía como subdivisión + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new + groupSubdivisionRelation_role object property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition, + super property IRIs (changed made in order to make RiC-O compliant with RiC-CM 0.2; + the name of this property in RiC-O 0.1 was "hasSubdivision"). + + + RiC-R005 ('has or hadsubdivision' + relation) + + + + + + + + + + Connects an Event to one of a series of Events that constitute the + original, broader, past or ongoing Event. + + has or had subevent + est ou a été constitué de l’événement + tiene o tenía como parte de evento + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition, + super property IRI (changed made in order to make RiC-O compliant with RiC-CM 0.2; + the name of this property in RiC-O 0.1 was "hasSubEvent"). + + + Since an Activity is a kind of Event, this Relation can also be + used for Activity. + RiC-R006 ('has or had subevent' + relation) + + + + + + + + Connects a Record Resource to a Thing that is or was its + subject. + + has or had subject + a ou a eu pour sujet + tiene o tenía como materia + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the + skos:scopeNote. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition + (changed made in order to make RiC-O compliant with RiC-CM 0.2; the name of this + property in RiC-O 0.1 was "hasSubject"). + + + The subject of a Record Set may be affected if the Record Set + loses some of the Records. + RiC-R019 ('has or had subject' + relation) + + + + + + + + + + + + + Connects an Agent to an Agent that is hierarchically + inferior. + + has or had subordinate + a ou a eu pour subalterne + tiene o tenía como subordinado o subordinada a + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the + skos:scopeNote. + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new + agentHierarchicalRelation_role object property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI (changed made in + order to make RiC-O compliant with RiC-CM 0.2; the name of this property in RiC-O 0.1 + was "isHierarchicallySuperiorTo"). + + + The hierarchical relation can be an authority relation, or a + whole/part relation between two Agents. + RiC-R045 ('has or had subordinate ' + relation) + + + + + + + + + + + + + Connects a Person to another Person who is or was their + teacher. + + has or had teacher + a ou a eu pour enseignant + tiene o tenía como profesor(a) a + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment). + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new teachingRelation_role object + property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition + (changed made in order to make RiC-O compliant with RiC-CM 0.2; the name of this + property in RiC-O 0.1 was "hasTeacher"). + + + RiC-R053 ('has or had teacher' + relation) + + + + + + + + + + + + + + + + Connects a Record Resource, Instantiation or Rule to a title that + is or was used for designating it. + + has or had title + a ou a eu pour intitulé + tiene o tenía como título + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition, + super property IRI (the name of this property in RiC-O 0.1 was + "hasTitle"). + + + + + + + + + + + + + + + Connects two Agents that have or had some type of work relation in + the course of their activities. This relation is symmetric. + + has or had work relation with + a ou a eu une relation professionnelle avec + tiene o tenía relación profesional con + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new workRelation_role object + property. + + + + + 2023-11-07 + Added the property chain axiom so that this property is + formally defined as a shortcut. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, text definition (changed made in order + to make RiC-O compliant with RiC-CM 0.2; the name of this property in RiC-O 0.1 was + "hasWorkRelationWith"). + + + RiC-R046 ('has or had work relation with' + relation) + + + + + + + + + + + + + + + + + + + + + + + + + + + Connects a Record Resource or an Instantiation to an Agent that + creates or accumulates it, receives it, or sends it, or to an Activity that generates + it. + + has organic or functional provenance + a pour provenance organique ou fonctionnelle + tiene como procedencia orgánica o funcional + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new + organicOrFunctionalProvenanceRelation_role object property. + + + + + 2023-11-07 + Property added as a superproperty of hasProvenance and + documents, along with its inverse property. Shortcut also added. + + + + + + + + + + + + + + + + + + + + + + Connects a Record Resource or an Instantiation to an Agent that + creates or accumulates the Record Resource, receives it, or sends it. + + has organic provenance + a pour provenance organique + tiene como procedencia orgánica + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the + skos:scopeNote. + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new + organicProvenanceRelation_role object property. + + + + + 2023-11-07 + Made this property a subproperty of the new + hasOrganicOrFunctionalProvenance property. Renamed it to make things clearer. + Adjusted its labels. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + This is the most general organic provenance relation. Use it to + connect a Record Resource or Instantiation with an Agent only if it is not possible to use + a narrower, more specific relation, for example has creator. + RiC-R026 ('has provenance' + relation) + + + + + + + + + + + + + + + + + + + + + + + Inverse of 'is original of' object property. + + has original + a pour original + tiene como original + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + RiC-R010i (is original of + relation) + + + + + + + + + Connects a Thing to a Thing that is, directly or indirectly, a + constitutive or component part of that Thing. This is a transitive relation. + + has part transitive + a pour partie transitif + tiene como parte transitivo + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the labels. + + + + + 2023-07-12 + Object property added, along with its inverse property, in + order to enable to express current partitive relations between things (the past + partitive relation also being added). + + + To be used, either to infer, then query or browse, relations + from existing direct 'hasDirectPart' relations between things, or to record a current + partitive relation when you do not know if there are intermediate nodes between the related + things. + + + + + + + + Connects an Instantiation to a Production Technique Type that + categorizes its production technique. + + has production technique type + a pour type de technique de production + tiene como técnica de producción + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the super property IRI. + + + + + + + + + + Inverse of 'is publication date of' object property + + has publication date + a pour date de publication + tiene como fecha de publicación + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-10-12 + Added the French label + + + + + 2023-09-22 + Added in RiC-O 1.0. + + + + + + + + + + Connects a Record resource to an Agent who published + it. + + has publisher + a pour éditeur + tiene como editor(a) a + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI (the name of this + property in RiC-O 0.1 was "publishedBy"). + + + + + + + + + + + + + + + + + Connects a Record Resource or an Instantiation to the Agent that + receives it in the course of the Agent's activities. + + has receiver + est reçu par + tiene como receptor(a) a + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment). + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, super property + IRI (changed made in order to make RiC-O compliant with RiC-CM 0.2; the name of this + property in RiC-O 0.1 was "receivedBy"). + + + RiC-R029 ('has receiver' + relation) + + + + + + + + Connects a Record Set to a Record Set Type that categorizes + it. + + has record set type + a pour type d’ensemble d’objets informationnels + tiene como tipo de agrupación documental + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the super property IRI. + + + + + + + + + + + + + + + + + Connects a Record or Record Part to a Record State that + categorizes its state. + + has record state + a pour état + tiene como estado de documento + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2020-12-28 + Changed the IRI (hasRecordResourceState changed to + hasRecordState), label, textual definition and domain (RecordResource replaced by + Record or Record Part). + + + + + + + + + + + Connects a Record Resource to a reply, usually in the form of + correspondence. + + has reply + a pour réponse + tiene como contestación + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition + (changed made in order to make RiC-O compliant with RiC-CM 0.2; the name of this + property in RiC-O 0.1 was "isRepliedToBy"). + + + RiC-R013 ('has reply' + relation) + + + + + + + + Connects an Instantiation to a Representation Type that + categorizes its representation type. + + has representation type + a pour type de représentation + tiene como tipo de grabación + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the super property IRI. + + + + + + + + + + + + + + + + + Connects a Record Resource or an Instantiation to the Agent that + sends it + + has sender + a pour expéditeur + tiene como remitente a + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the + skos:scopeNote. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + The identity of the sender is (usually) evidenced by the Record + Resource or Instantiation itself. + RiC-R031 ('has sender' + relation) + + + + + + + + + + + + + Connects two Persons who are siblings. This relation is + symmetric. + + has sibling + a pour frère ou sœur + tiene como hermano o hermana a + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment). + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new siblingRelation_role object + property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the super property IRI. + + + RiC-R048 ('has sibling' + relation) + + + + + + + + + + + Connects a Group to another Group that is one of its direct or + indirect subdivisions. This is a transitive relation. + + has subdivision transitive + a pour subdivision transitif + tiene como subdivisión transitivo + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-25 + Fixed the French label. + + + + + 2023-11-12 + Updated the labels. + + + + + 2023-09-08 + Object property added, along with its inverse property, in + order to enable to express current partitive relations between groups (the past + partitive relation also being added). + + + + + + + + + + + + Connects an ongoing Event to one of a series of Events that + directly or indirectly constitute that broader, ongoing Event. This is a transitive + relation. + + has subevent transitive + est constitué de l’événement transitif + como parte de evento transitivo + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the labels. + + + + + 2023-09-08 + Object property added, along with its inverse property, in + order to enable to express partitive relations between ongoing events (the past + partitive relation also being added). + + + + + + + + + + + Connects an Agent to an Agent that is directly or indirectly + hierarchically inferior. This is a transitive relation. + + has subordinate transitive + a pour subalterne transitif + tiene como subordinado o subordinada a transitivo + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the labels. + + + + + 2023-09-08 + Object property added, along with its inverse property, in + order to enable to express current subordination relations between agents (the past + subordination relation also being added). + + + + + + + + + + + + + + + + Connects an Agent to another Agent that succeeds it + chronologically. + + has successor + a pour successeur + tiene como sucesor(a) a + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new agentTemporalRelation_role + object property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI and label (changed made in order to make RiC-O + compliant with RiC-CM 0.2; the name of this property in RiC-O 0.1 was + "isAntecedentOf"). + + + There may be zero to many intermediate Agents, ignored or + unknown, between the two connected Agents. Can be used when there is a transfer of function + from the first Agent to the second Agent. + RIC-R016 ('has successor' + relation) + + + + + + + + + + + + + Connects an Extent to a Unit Of Measurement + + has unit of measurement + a pour unité de mesure + tiene como unidad de medida + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French; added an xml:lang attribute + to the rdfs:comment. + + + + + 2020-10-28 + Object property created along with Extent and UnitOfMeasurement + classes, in order to provide methods for handling extent accurately. + + + + + + + + + + + + Inverse of 'is within' object property + + has within + contient + tiene dentro + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-10-13 + made this property a subproperty of both isDateAssociatedWith + and isAssociatedWithdate, and of hasOrHadPart. + + + + + 2023-10-12 + Added the property + + + RiC-R085i ('has within' + relation) + + + + + + + + + + + + + + + + Connects a Record Set to a Record or Record Set which it included + in the past. + + included + a inclus + incluía + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-13 + Added a French label. + + + + + 2023-09-08 + Object property added, along with its inverse property, in + order to enable to express past partitive relations between Record Sets and their + members (the current partitive relations being also added, including a transitive + one). + + + + + + + + + + + + + + + + + + Connects a Record Set to a Record or Record Set it aggregates, or + aggregated in the past. + + includes or included + inclut ou a inclus + incluye o incluía + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2023-06-05 + Made this object property a subproperty of + hasOrHadPart. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition + (changed made in order to make RiC-O compliant with RiC-CM 0.2; the name of this + property in RiC-O 0.1 was "includes"). + + + A Record or Record Set can be aggregated in one or many Record + Sets simultaneously or through time. + RiC-R024 ('includes or included' + relation) + + + + + + + + + + + + + + + + + Connects a Record Set to a Record or Record Set which it includes + directly or indirectly. This is a transitive relation. + + includes transitive + inclut transitif + incluye transitivo + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-13 + Added two labels. + + + + + 2023-09-08 + Object property added, along with its inverse property, in + order to enable to express current partitive relations between Record Sets and their + members (the past partitive relation also being added). + + + + + + + + + + + + + + Connects a InstantiationToInstantiationRelation to itself. It is a + reflexive property, that can stand for an instance of the class when necessary, e.g. when + you explore a knowledge graph. + + has the role of the Instantiation to Instantiation + Relation + a le rôle de la Relation entre instanciations + desempeña el papel de la Relación entre instanciaciones + + + 2023-11-08 + In order to get a system of rolified Relation classes: created + the object property, with domain and range the InstantiationToInstantiationRelation + rolified class. Declared it as reflexive. Declared it(s) + superproperty(ies). + + + This property "rolifies" the + InstantiationToInstantiationRelation class. It should be used only when you have to manage + instances of the InstantiationToInstantiationRelation class, to connect each instance to + itself, in order to be able to infer, using OWL-RL and property paths, the two shortcuts + corresponding to this n-ary class. + + + + + + + + Connects a IntellectualPropertyRightsRelation to itself. It is a + reflexive property, that can stand for an instance of the class when necessary, e.g. when + you explore a knowledge graph. + + has the role of the Intellectual Property Rights + Relation + a le rôle de la Relation de propriété intellectuelle + desempeña el papel de la Relación de propiedad + intelectual + + + 2023-11-08 + In order to get a system of rolified Relation classes: created + the object property, with domain and range the IntellectualPropertyRightsRelation + rolified class. Declared it as reflexive. Declared it(s) + superproperty(ies). + + + This property "rolifies" the IntellectualPropertyRightsRelation + class. It should be used only when you have to manage instances of the + IntellectualPropertyRightsRelation class, to connect each instance to itself, in order to + be able to infer, using OWL-RL and property paths, the two shortcuts corresponding to this + n-ary class. + + + + + + + + + Connects two Dates that overlap. This relation is + symmetric. + + intersects + intersecte + cruza + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-10-13 + made this property a subproperty of + isAssociatedWithdate. + + + + + 2023-10-12 + Added the property + + + RiC-R086 ('intersects' + relation) + + + + + + + + + + + + + + + + + + + + Inverse of 'has accumulator' object property. + + is accumulator of + accumule + es acumulador(a) de + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new accumulationRelation_role + object property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition + and corresponding CM component (changed made in order to make RiC-O compliant with + RiC-CM 0.2; the name of this property in RiC-O 0.1 was "accumulates"). + + + RiC-R028i ('is accumulator of' + relation) + + + + + + + + Connects an Activity Type to an Activity that it + categorizes. + + is activity type of + est le type d’activité de + es tipo de actividad de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the super property IRI. + + + + + + + + + + + + + + + + + Inverse of 'has addressee' object property. + + is addressee of + est le destinataire de + es destino de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + RiC-032i ('is addressee of' + relation) + + + + + + + + + + + + + Connects two Agents. This object property is + symmetric. + + is agent associated with agent + est un agent associé à l’agent + agente está asociado con agente + + + 2023-11-25 + Fixed the French label. + + + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the + skos:scopeNote. + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new agentToAgentRelation_role + object property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + Use only if it is not possible to specify a narrower Agent to + Agent relation, for example has or had work relation with. + RiC-R044 ('is agent associated with agent' + relation) + + + + + + + + Inverse of 'is place associated with agent' object + property. + + is agent associated with place + est un agent associé au lieu + agente está asociado con lugar + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-10-26 + Added a rdfs:comment. + + + + + 2023-10-19 + Added for RiC-O v1.0. + + + + + + + + + + Inverse of 'is date associated with' object + property. + + is associated with date + est associé à la date + está asociado con fecha + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + RiC-R068i ('is associated with date' + relation) + + + + + + + + + + + + + Inverse of 'is event associated with' object + property. + + is associated with event + est associé à l’événement + está asociado con evento + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new eventRelation_role object + property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + RiC-R057i ('is associated with event' + relation) + + + + + + + + + + + + + Inverse of 'is place associated with' object + property. + + is associated with place + est associé au lieu + está asociado con lugar + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new placeRelation_role object + property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + RiC-R074i ('is associated with place' + relation) + + + + + + + + + + + + + Inverse of 'is rule associated with' object + property. + + is associated with rule + est associé à la règle + está asociado con regla + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new ruleRelation_role object + property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + RiC-R062i ('is associated with rule' + relation) + + + + + + + + + + + + + + + + + + + + + Inverse of 'has author' object property. + + is author of + est le responsable intellectuel de + es autor(a) de + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new authorshipRelation_role + object property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2020-12-29 + Created following the addition of RiC-R079 relation in RiC-CM + 0.2 + + + RiC-R079i ('is author of' + relation) + + + + + + + + Connects an Agent that assigns the Mandate, to a Mandate + Relation. + + is authorizing agent in mandate relation + est l’agent donnant l’autorisation dans la relation impliquant un + mandat + es el agente autorizador en la relación normativa + + + 2023-11-13 + Added a new rdfs:label in French and fixed the Spanish + label. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + + + + + + Connects a Date to a Thing that came into existence on that + Date. + + is beginning date of + est la date de début de + es fecha de inicio de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + RiC-R069 ('is beginning date of' + relation) + + + + + + + + Connects a Date to a Person that was born on that + Date. + + is birth date of + est la date de naissance de + es fecha de nacimiento de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + RiC-R070 ('is birth date of' + relation) + + + + + + + + Connects a Place to a Person who was born in that + Place. + + is birth place of + est le lieu de naissance de + es lugar de nacimiento de + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the description (rdfs:comment). + + + + + 2023-10-26 + Fixed the range. + + + + + 2023-10-19 + Added for RiC-O v1.0. + + + + + + + + + + Connects a Carrier Type to an Instantiation whose carrier it + categorizes. + + is carrier type of + est le type de support de + es tipo de soporte de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + Changed the super property IRI. + + + + + + + + + + + + + + + Inverse of 'has child' object property. + + is child of + est l’enfant de + es hijo o hija de + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new childRelation_role object + property. + + + + + 2023-11-07 + Added the property chain axiom so that this property is + formally defined as a shortcut (the inverse property already was). + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI and label (changed made in order to make RiC-O + compliant with RiC-CM 0.2; the name of this property in RiC-O 0.1 was + "hasParent"). + + + RiC-R018i ('is child of' + relation) + + + + + + + + + + + + + + + Inverse of 'has collector' object property. + + is collector of + collecte + es coleccionista de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property and super property + IRI, text definition, domain (changed made in order to make RiC-O compliant with + RiC-CM 0.2; the name of this property in RiC-O 0.1 was "collects"). + + + RiC-R030i ('is collector of' + relation) + + + + + + + + + + Connects an Instantiation to another Instantiation of which it is, + directly or indirectly, a component. This is a transitive relation. + + is component of transitive + est un composant de transitif + es componente de transitivo + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the labels. + + + + + 2023-09-08 + Object property added, along with its inverse property, in + order to enable to express current partitive relations between instantiations (the + past partitive relation also being added). + + + + + + + + + + + + + + + + + + + + + + + + + + Connects a Record or Record Part to another Record or Record Part + of which it is a constituent, directly or indirectly. This is a transitive + relation. + + is constituent of transitive + est le constituant de transitif + es elemento constitutivo de transitivo + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the labels. + + + + + 2023-10-26 + Added RecordPart to the range. + + + + + 2023-09-08 + Object property added, along with its inverse property, in + order to enable to express current partitive relations between records and other + records or record parts (the past partitive relation also being added). + + + + + + + + + + + + Connects a Place to a Place that is, directly or indirectly, + contained by it. This is a transitive relation. + + is contained by transitive + est contenu par transitif + está contenido en transitivo + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the labels. + + + + + 2023-09-08 + Object property added, along with its inverse property, in + order to enable to express current partitive relations between places (the past + partitive relation also being added). + + + + + + + + + + + + + + + + + Connects a Content Type to a Record or Record Part whose content + it categorizes. + + is content type of + est le type de contenu de + es tipo de contenido de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the text definition and super property IRI. + + + + + + + + + + + Inverse of 'has copy' object property. + + is copy of + est la copie de + es copia de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + RiC-R012i ('is copy of' + relation) + + + + + + + + + + + + + + + Connects a Date to a Record Resource or Instantiation that was + created at this Date. + + is creation date of + est la date de création de + es fecha de creación de + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the + skos:scopeNote. + + + + + 2023-10-12 + Added the French label + + + + + 2023-09-22 + Added in RiC-O 1.0. + + + When used for a Record Set (e.g. a file), it is the creation + date of the Record Set itself rather than the creation date of the members of the Record + Set. To record the creation date of members of the Record Set, use 'is or was creation date + of all members of', 'is or was creation date of most members of’ or 'is or was creation + date of some members of’. + RiC-R080 ('is creation date of' + relation) + + + + + + + + + + + + + + + + + + + + Inverse of 'has creator' object property. + + is creator of + est le créateur de + es creador(a) de + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new creationRelation_role object + property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + change the inverse property IRI. + + + RiC-R027i ('is creator of + 'relation') + + + + + + + + Connects a Date to a Thing with whose existence and lifecycle the + Date is associated. + + is date associated with + est une date associée a + es fecha asociada con + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment), skos:scopeNote. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + Use to connect a date and an entity only if it is not possible + to specify a narrower date relation, for example, is beginning date of. + RiC-R068 ('is date associated with' + relation) + + + + + + + + + Connects a Date to an Event that occurred at this Date. An event + or activity can be recurrent, which implies that one single event can be related to several + dates. + + is date of occurrence of + est la date d'occurrence de + es fecha de ocurrencia de + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-10-17 + Made this property a subproperty of + isAssociatedWithEvent + + + + + 2023-10-13 + Renamed the property to correct a spelling mistake. Also + corrected the annotations when necessary. + + + + + 2023-10-12 + Added the property + + + RiC-R084 ('is date of occurrence of' + relation) + + + + + + + + Connects a Date Type to a Date that it categorizes. + + is date type of + est le type de date de + es tipo de fecha de + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-10-10 + Added a rdfs:comment and a French rdfs:label. + + + + + 2023-09-22 + Added in RiC-O 1.0. + + + + + + + + + + Connects a Date to a Person who died on that Date. + + is death date of + est la date de décès de + es fecha de muerte de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + RiC-R072 ('is death date of' + relation) + + + + + + + + Connects a Place to a Person who died in that + Place. + + is death place of + est le lieu de décès de + es lugar de muerte de + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the description (rdfs:comment). + + + + + 2023-10-26 + Fixed the range and the French label of the + property. + + + + + 2023-10-19 + Property added to RiC-0 1.0 + + + + + + + + + + Connects a Date to a Thing that was destructed at that + Date. + + is destruction date of + est la date de destruction de + es fecha de destrucción de + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-10-14 + Added a rdfs:comment; same to the inverse property. + + + + + 2023-10-12 + Renamed deletion into destruction. + + + + + 2023-09-22 + Added in RiC-O 1.0. + + + + + + + + + + + Connects an Instantiation to another Instantiation of which it is + a direct component. + + is direct component of + est le composant direct de + es componente directo de + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the labels. + + + + + 2023-09-08 + Object property added, along with its inverse property, + in order to enable to express current, direct, partitive relations between + instantiations (the possibly indirect, transitive relation, superproperty of this + one, being also added). + + + + + + + + + + + + + + + + + + + + + + + + + Connects a Record or Record Part to another Record or Record Part + of which it is a direct constituent. + + is direct constituent of + est un constituant direct de + es elemento constitutivo directo de + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the labels. + + + + + 2023-10-26 + Added RecordPart to the range. + + + + + 2023-09-08 + Object property added, along with its inverse property, in + order to enable to express current, direct, partitive relations between records and + other records or record parts (the possibly indirect, transitive relation, + superproperty of this one, being also added). + + + + + + + + + + Connects a Thing to a Thing of which it is direct constitutive or + component part. + + is direct part of + fait directement partie de + es parte directa de + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the labels. + + + + + 2023-07-12 + Object property added, along with its inverse property, in + order to enable to express current, direct, partitive relations between things (the + possibly indirect, transitive relation, superproperty of this one, being also + added). + + + To be used only when the current partitive relation is direct, + without any intermediate node between the related things. + + + + + + + + + + Connects a Group to the Group it is a direct subdivision + of. + + is direct subdivision of + est la subdivision directe de + es subdivisión directa de + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the labels. + + + + + 2023-09-08 + Object property added, along with its inverse property, in + order to enable to express current, direct, partitive relations between groups (the + possibly indirect, transitive relation, superproperty of this one, being also + added). + + + + + + + + + + + Connects an ongoing Event to the Event it is a direct part + of. + + is direct subevent of + est un événement constituant directement l’événement + es parte directa de evento de + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the labels. + + + + + 2023-09-08 + Object property added, along with its inverse property, in + order to enable to express current, direct, partitive relations between ongoing + events (the possibly indirect, transitive relation, superproperty of this one, being + also added). + + + + + + + + + + Connects an Agent to an Agent that is directly hierarchically + superior. + + is direct subordinate to + est directement subalterne de + está directamente subordinado(a) a + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the labels. + + + + + 2023-09-08 + Object property added, along with its inverse property, in + order to enable to express current, direct, subordination relations between agents + (the possibly indirect, transitive relation, superproperty of this one, being also + added). + + + + + + + + + + + Connects a Place to a Place that directly contains + it. + + is directly contained by + est directement contenu par + está directamente contenido en + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the labels. + + + + + 2023-09-08 + Object property added, along with its inverse property, in + order to enable to express current, direct, partitive relations between places (the + possibly indirect, transitive relation, superproperty of this one, being also + added). + + + + + + + + + + + + + + + + + + Connects a Record to a Record or Record Set in which it is + directly included. + + is directly included in + est directement inclus dans + está directamente incluido en + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the labels. + + + + + 2023-09-08 + Object property added, along with its inverse property, in + order to enable to express current, direct, partitive relations between Record Sets + and their members (the possibly indirect, transitive relation, superproperty of this + one, being also added). + + + + + + + + + + + + + + + + + Connects a Documentary Form Type to a Record or Record Part that + it categorizes. + + is documentary form type of + est le type de document de + es tipo documental de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the superproperty IRI. + + + + + + + + + + + + + + + + + + + + + + + + + Connects a draft to the final version of a Record. + + is draft of + est l’ébauche de + es borrador de + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the + skos:scopeNote. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + There may be zero to many intermediate records, ignored or + unknown, between the two connected Records. + RiC-R011 (is draft of + relation) + + + + + + + + Connects a Date to a Thing whose existence ended on that + Date. + + is end date of + est la date de fin de + es fecha final de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + RiC-R071 ('is end date of' + relation) + + + + + + + + Connects two Things that are considered equivalent. + + is equivalent to + est l’équivalent de + equivale a + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + + + + + + + + + + + Connects an Event to a Thing that is associated with the existence + and lifecycle of the Event. + + is event associated with + est un événement associé a + es evento asociado con + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the + skos:scopeNote. + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new eventRelation_role object + property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + Use to connect an Event and an entity only if it is not possible + to specify a narrower Event relation, for example has or had participant. + RiC-R057 ('is event associated with' + relation) + + + + + + + + Connects an Event Type to an Event that is + categorizes. + + is event type of + est le type d’événement de + es tipo de evento de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the superproperty IRI. + + + + + + + + + + Connects a Relation to a Record Resource that is used for proving + is existence or describing it. + + is evidenced by + est attestée par + se evidencia en + + + 2023-12-27 + Renamed the object property (was 'has source') and reduced its + domain to Relation (the domain was the union of Record Resource and Relation) and its + range to Record Resource (the range was the union of Agent and Record Resource). + Consequently updated the superproperty, the labels, and added a + rico:RiCCMCorrespondingComponent. Same for the inverse object property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + Object property implementation of RiC-RA05 (Source + of Relation attribute). + + + + + + + + Connects an Extent to a Thing + + is extent of + est la mesure de + es extensión de + + + 2023-11-08 + Fixed the range. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French; added an xml:lang attribute + to the rdfs:comment. + + + + + 2023-08-28 + Changed the range (was Instantiation or RecordResource) to + Thing ; changed the definition accordingly + + + + + 2020-10-28 + Object property created along with the Extent class and its + subclasses, in order to provide methods for handling extent accurately. + + + + + + + + + + Connects an Extent Type to an Extent that it + categorizes. + + is extent type of + est le type de mesure de + es tipo de extensión de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2020-11-21 + Added a rdfs:comment. + + + + + 2020-11-01 + Object property added along with the Extent Type + class. + + + + + + + + + + Connects a Family Type to a Family that is + categorizes. + + is family type of + est le type de famille de + es tipo de familia de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the superproperty IRI. + + + + + + + + + + Connects a Date to an Appellation, when it is the date at which + the Appellation was first used. + + is from use date of + est la date à partir de laquelle est utilisé + es fecha desde la que se usa de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-10-19 + Made this property subPropertyOf isBeginningDateOf. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + + + + + + + + + + + + Connects two Instantiations which may be considered as equivalent. + This relation is symmetric. + + is functionally equivalent to + est fonctionnellement équivalente à + equivale funcionalmente a + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new + functionalEquivalenceRelation_role object property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the scope note. + + + Two Instantiations, from some point of view, may be considered + as equivalent. This equivalence is usually based upon the fact that the Instantiations have + at least the same intellectual content (they instantiate the same Record + Resource). + RiC-R035 ('is functionally equivalent to' + relation) + + + + + + + + Connects an Identifier Type and an Identifier that it + categorizes. + + is identifier type of + est le type d’identifiant de + es tipo de identificador de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the superproperty IRI. + + + + + 2020-10-19 + Object property added along with IdentifierType class and + hasIdentifierType object property. + + + + + + + + + + + + + + + + + + + Connects a Record to a Record or Record Set in which it is + directly or indirectly included. This is a transitive relation. + + is included in transitive + est inclus dans transitif + está incluido en transitivo + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-13 + Added a French label. + + + + + 2023-09-08 + Object property added, along with its inverse property, in + order to enable to express current partitive relations between Record Sets and their + members (the past partitive relation also being added). + + + + + + + + + + + + + + + Connects two Instantiations. This relation is + symmetric. + + is instantiation associated with instantiation + est associée à l’instanciation + se asocia con la instanciación + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment), skos:scopeNote. + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new + instantiationToInstantiationRelation_role object property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + Use only if it is not possible to specify a narrower + Instantiation to Instantiation relation, for example is functionally equivalent + to. + RiC-R034 ('is instantiation associated with + instantiation' relation) + + + + + + + + Connects a Date and a Thing that was last modified at this + Date. + + is last update date of + est la date de dernière mise à jour de + es fecha de última actualización de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + + + + + + Connects a Date to a Thing that was modified on that + Date. + + is modification date of + est une date de modification de + es fecha de modificación de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + RiC-R073 ('is modification date of' + relation) + + + + + + + + + Connects two Places that are or were geographically adjacent. This + relation is symmetric. + + is or was adjacent to + est ou a été adjacent à + es o era un lugar contiguo a + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment), skos:scopeNote. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, textual definition (changed made in + order to make RiC-O compliant with RiC-CM 0.2; the name of this property in RiC-O 0.1 + was "isAdjacentTo"). + + + Use for connecting two adjacent geographical or administrative + regions. + RiC-R077 ('is or was adjacent to' + relation) + + + + + + + + Inverse of 'affects or affected' object property. + + is or was affected by + est ou a été affecté par + es o era afectado por + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition + and corresponding CM component (changed made in order to make RiC-O compliant with + RiC-CM 0.2; the name of this property in RiC-O 0.1 was "affectedBy"). + + + RiC-R059i ('is or was affected by' + relation) + + + + + + + + Connects an Agent Name to an Agent it designates or + designated. + + is or was agent name of + est ou a été le nom de + es o era el nombre de agente de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, textual + definition (the name of this property in RiC-O 0.1 was "isAgentNameOf"). + + + + + + + + + + Inverse of 'has or had analogue instantiation' object + property. + + is or was analogue instantiation of + est ou a été une instanciation analogique de + es or era instanciación analogica de + + + 2023-12-30 + Fixed a typo in the French label. + + + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-08-29 + Added the property. + + + + + + + + + + + + + + + Connects an Appellation to a Thing that it designates or + designated. + + is or was appellation of + est ou a été l’appellation de + es o era la denominación de + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new appellationRelation_role + object property. + + + + + 2023-11-07 + Added the property chain axiom so that this property is + formally defined as a shortcut (the inverse property already was). + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition + (the name of this property in RiC-O 0.1 was "isAppellationOf"). + + + + + + + + + + + + + + + Connects a Type (a category) to a Thing that it categorizes or + categorized. + + is or was category of + est ou a été la catégorie de + es o era la categoría de + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new typeRelation_role object + property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition + (the name of this property in RiC-O 0.1 was "isCategoryOf"). + + + + + + + + + + Connects a Category (Type) and a Record Set whose all present or + past Record or Record Part members belong to that Category. + + is or was category of all members of + est ou a été la catégorie de tous les membres de + es o era la categoría de todos los miembros de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2020-12-28 + Object property added for handling the case where a Record Set + is described as having all or some members that belong to some category (see RiC-CM + 0.2 attributes section, #4.4 on Record Set, Record and Record Part + attributes). + + + + + + + + + + Connects a Category (Type) and a Record Set whose some present or + past Record or Record Part members belong to that Category. + + is or was category of some members of + est ou a été la catégorie de certains membres de + es o era la categoría de algunos miembros de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2020-12-28 + Object property added for handling the case where a Record Set + is described as having all or some members that belong to some category (see RiC-CM + 0.2 attributes section, #4.4 on Record Set, Record and Record Part + attributes). + + + + + + + + + + + Inverse of 'has or had component' object property. + + is or was component of + est ou a été un composant de + es o era componente de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition + (changed made in order to make RiC-O compliant with RiC-CM 0.2; the name of this + property in RiC-O 0.1 was "isComponentOf"). + + + RiC-R004i ('is or was component of' + relation) + + + + + + + + + + + + + + + + + + + + + + + Inverse of 'has or had constituent' object + property. + + is or was constituent of + est ou a été un constituant de + es o era elemento constitutivo de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-10-26 + Added RecordPart to the range. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition + (changed made in order to make RiC-O compliant with RiC-CM 0.2; the name of this + property in RiC-O 0.1 was "isConstituentOf"). + + + RiC-R003i ('is or was constituent of' + relation) + + + + + + + + + + Inverse of 'contains or contained' object property. + + is or was contained by + est ou a été contenu par + está o estaba contenido en + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition, + corresponding CM component name (changed made in order to make RiC-O compliant with + RiC-CM 0.2; the name of this property in RiC-O 0.1 was "containedBy"). + + + RiC-R007i ('is or was contained by' + relation) + + + + + + + + Connects a Content Type and a Record Set whose all past or present + Record or Record Part members have that Content Type. + + is or was content type of all members of + est ou a été le type de contenu de tous les membres de + es o era tipo de contenido de todos los miembros de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2020-12-28 + Object property added for handling the case where a Record Set + is described as having all or some members that belong to some category (see RiC-CM + 0.2 attributes section, #4.4 on Record Set, Record and Record Part + attributes). + + + + + + + + + + Connects a Content Type and a Record Set whose some past or + present Record or Record Part members have that Content Type. + + is or was content type of some members of + est ou a été le type de contenu de certains membres de + es o era tipo de contenido de algunos miembros de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2020-12-28 + Object property added for handling the case where a Record Set + is described as having all or some members that belong to some category (see RiC-CM + 0.2 attributes section, #4.4 on Record Set, Record and Record Part + attributes). + + + + + + + + + + + + + + + + Connects an Agent to another Agent it controls or + controlled. + + is or was controller of + a contrôlé ou contrôle + es o era controlador de + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment). + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new agentControlRelation_role + object property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition, + corresponding CM component name (changed made in order to make RiC-O compliant with + RiC-CM 0.2; the name of this property in RiC-O 0.1 was "controls"). + + + RiC-R041 ('is or was controller of' + relation) + + + + + + + + Connects an instance of Coordinates to a Physical Location it + locates or located on earth, according to some reference system. + + is or was coordinates of + ont ou ont été les coordonnées de + son o eran coordenadas de lugar de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition + (the name of this property in RiC-O 0.1 was "isCoordinatesOf"). + + + + + + + + + + Connects a Corporate Body Type to a Corporate Body that it + categorizes or categorized. + + is or was corporate body type of + est ou a été le type de collectivité de + es o era tipo de institución de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition + (the name of this property in RiC-O 0.1 was "isCorporateBodyTypeOf"). + + + + + + + + + + Connects a Date to a Record Set all of whose present or past + members were created at this Date. + + is or was creation date of all members of + est ou a été la date de création de tous les membres de + es o era fecha de creación de todos los miembros de + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-10-13 + renamed the property in order to take the past members of the + record set into account. Adjusted the annotations accordingly. + + + + + 2023-10-12 + Added the French label + + + + + 2023-09-22 + Added in RiC-O 1.0. + + + RiC-R081 ('is or was creation date of all members + of' relation) + + + + + + + + Connects a Date to a Record Set most of whose present or past + members were created at this Date. + + is or was creation date of most members of + est ou a été la date de création de la plupart des membres + de + es o era fecha de creación de la mayoría de los miembros + de + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-10-13 + Renamed the property in order to take the past members of the + record set into account. Adjusted the annotations accordingly. + + + + + 2023-10-12 + Added the French label + + + + + 2023-10-10 + Made this property a subproperty of + isCreationDateOfSomeMembersOf. + + + + + 2023-09-22 + Added in RiC-O 1.0. + + + To be used for specifying a bulk date, i.e. the predominant date + of the members of the record set. + RiC-R083 ('is or was creation date of most members + of' relation) + + + + + + + + Connects a Date to a Record Set some of whose present or past + members were created at this Date. + + is or was creation date of some members of + est ou a été la date de création de certains membres de + es o era fecha de creación de algunos miembros de + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-10-13 + Renamed the property in order to take the past members of the + record set into account. Adjusted the annotations accordingly. + + + + + 2023-10-12 + Added the French label and the rdfs:comment + + + + + 2023-09-22 + Added in RiC-O 1.0. + + + RiC-R082 ('is or was creation date of some members + of' relation) + + + + + + + + + + + + + + + Connects a Demographic Group to a Person or Group which belongs or + belonged to it. + + is or was demographic group of + est ou a été la catégorie démographique de + es o era grupo demográfico de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition, + range (the name of this property in RiC-O 0.1 was + "isDemographicGroupOf"). + + + + + + + + + + + + + + + + Inverse of 'has or had derived instantiation' object + property. + + is or was derived from instantiation + est ou a été une instanciation dérivée de + es o era un derivado de instanciación + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new derivationRelation_role + object property. + + + + + 2023-11-07 + Added the property chain axiom so that this property is + formally defined as a shortcut (the inverse property already was). + + + + + 2023-08-29 + Updated the IRI, inverse property, definition, labels and + RiCMCorrespondingComponent; this in order to make the specification compliant with + RiC-CM 1.0. The name of the property in RiC-O 0.2 was 'is derived from + instantiation'. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + RiC-R014i ('is or was derived from instantiation' + relation) + + + + + + + + Inverse of 'describes or described' object + property. + + is or was described by + est ou a été décrit par + es o fue descrito por + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition, + corresponding CM component name (changed made in order to make RiC-O compliant with + RiC-CM 0.2; the name of this property in RiC-O 0.1 was "describedBy"). + + + RiC-R021i ('is or was described by' + relation) + + + + + + + + Inverse of 'has or had digital instantiation' object + property. + + is or was digital instantiation of + est ou a été une instanciation numérique de + es o era instanciación digital de + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-08-29 + Added the property. + + + + + + + + + + Connects a Documentary Form Type and a Record Set whose all past + or present Record or Record Part members have that Documentary Form Type. + + is or was documentary form type of all members of + est ou a été le type de document de tous les membres de + es o era tipo documental de todos los miembros de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2020-12-28 + Object property added for handling the case where a Record Set + is described as having all or some members that belong to some category (see RiC-CM + 0.2 attributes section, #4.4 on Record Set, Record and Record Part + attributes). + + + + + + + + + + Connects a Documentary Form Type and a Record Set whose some past + or present Record or Record Part members have that Documentary Form Type. + + is or was documentary form type of some members of + est ou a été le type de document de certains membres de + es o era tipo documental de algunos miembros de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2020-12-28 + Object property added for handling the case where a Record Set + is described as having all or some members that belong to some category (see RiC-CM + 0.2 attributes section, #4.4 on Record Set, Record and Record Part + attributes). + + + + + + + + + + + + + + + + + Connects a Corporate Body or a Person to a Person who is or was + their employee. + + is or was employer of + a ou a été l'employeur de + es o era empleador(a) de + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-10-26 + Changed the domain and range of the property. Added a + rdfs:comment. Removed the 'has or had member' super-property. + + + + + 2023-10-19 + Adder for RiC-O v1.0. + + + + + + + + + + Connects a Rule to an Agent that enforces or enforced the + Rule. + + is or was enforced by + est ou a été fait appliquer par + es o era una regla aplicada por + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition, + corresponding CM component name (changed made in order to make RiC-O compliant with + RiC-CM 0.2; the name of this property in RiC-O 0.1 was "enforcedBy"). + + + RiC-R066 ('is or was enforced by' + relation) + + + + + + + + Connects a Rule to a Record Resource that expresses or expressed + the Rule. + + is or was expressed by + est ou a été exprimé par + es o era una regla expresada en + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition, + corresponding CM component name (changed made in order to make RiC-O compliant with + RiC-CM 0.2; the name of this property in RiC-O 0.1 was "expressedBy"). + + + RiC-R064 ('is or was expressed by' + relation) + + + + + + + + + + + + + + + + + + + + Connects an Agent to a Record Resource or Instantiation that the + Agent holds or held. + + is or was holder of + détient ou a détenu + es o era conservador de + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new + recordResourceHoldingRelation_role object property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, super = property + IRI and text definition (changed made in order to make RiC-O compliant with RiC-CM + 0.2; the name of this property in RiC-O 0.1 was "isHolderOf"). + + + RiC-R039 ('is or was holder of' + relation) + + + + + + + + + + + + + + + + + + + + + + + + + + + + Connects an Agent to a Record Resource or Instantiation on which + the Agent has or had some intellectual property rights. + + is or was holder of intellectual property rights of + détient ou a détenu les droits de propriété intellectuelle + sur + es o era conservador de derechos de propiedad intelectual + de + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new + intellectualPropertyRightsRelation_role object property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI and textual + definition (changed made in order to make RiC-O compliant with RiC-CM 0.2; the name + of this property in RiC-O 0.1 was "hasIntellectualPropertyRightsOn"). + + + RiC-R040 ('is or was holder of intellectual + property rights of' relation) + + + + + + + + Connects an Identifier to a Thing that it identified or + identifies. + + is or was identifier of + est ou a été l’identifiant de + es o era identificador de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition, + super property IRI (the name of this property in RiC-O 0.1 was + "identifies"). + + + + + + + + + + + + + + + + + + Inverse of 'includes or included' object property. + + is or was included in + est ou a été inclus dans + está o estaba incluido en + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2023-06-05 + Made this object property a subproperty of + isOrWasPartOf. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition + (changed made in order to make RiC-O compliant with RiC-CM 0.2; the name of this + property in RiC-O 0.1 was "includedIn"). + + + RiC-R024i ('is or was included in' + relation) + + + + + + + + + + + + + Inverse of 'has or had instantiation' object + property. + + is or was instantiation of + est ou a été une instanciation de + es o era instanciación de + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new + recordResourceToInstantiationRelation_role object property. + + + + + 2023-08-29 + Updated the IRI, inverse property, definition, labels and + RiCMCorrespondingComponent; this in order to make the specification compliant with + RiC-CM 1.0. The name of the property in RiC-O 0.2 was 'is instantiation + of'. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI and label (changed made in order to make RiC-O + compliant with RiC-CM 0.2; the name of this property in RiC-O 0.1 was + "instantiates"). + + + RiC-R025i ('is or was instantiation of' + relation) + + + + + + + + Connects a Place to an Agent that has or had jurisdiction over the + Place. + + is or was jurisdiction of + a ou a été le ressort de + es o era jurisdicción de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-10-19 + Made subproperty of new property isPlaceAssociatedWithAgent + instead of its parent isPlaceAssociatedWith. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, textual + definition (changed made in order to make RiC-O compliant with RiC-CM 0.2; the name + of this property in RiC-O 0.1 was "isJurisdictionOf"). + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, textual + definition (changed made in order to make RiC-O compliant with RiC-CM 0.2; the name + of this property in RiC-O 0.1 was "isJurisdictionOf"). + + + RiC-R076 ('is or was jurisdiction of' + relation) + + + + + + + + + + + + + + + + Connects a Language to an Agent, Record or Record Part that uses + or used it. + + is or was language of + est ou a été la langue de + es o era lengua de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, textual + definition (the name of this property in RiC-O 0.1 was "isLanguageOf"). + + + + + + + + + + Connects a Language and a Record Set whose all present or past + Record or Record Part members use that Language. + + is or was language of all members of + est ou a été la langue de tous les membres de + es o era lengua de todos los miembros de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2020-12-28 + Object property added for handling the case where a Record Set + is described as having all or some members that belong to some category (see RiC-CM + 0.2 attributes section, #4.4 on Record Set, Record and Record Part + attributes). + + + + + + + + + + Connects a Language and a Record Set whose some present or past + Record or Record Part members use that Language. + + is or was language of some members of + est ou a été la langue de certains membres de + es o era lengua de algunos miembros de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2020-12-28 + Object property added for handling the case where a Record Set + is described as having all or some members that belong to some category (see RiC-CM + 0.2 attributes section, #4.4 on Record Set, Record and Record Part + attributes). + + + + + + + + + + + + + + + Connects a Person to the Group that Person leads or led in the + past. + + is or was leader of + est ou a été le dirigeant de + es o era líder de + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new leadershipRelation_role + object property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, super property + IRI, textual definition (changed made in order to make RiC-O compliant with RiC-CM + 0.2; the name of this property in RiC-O 0.1 was "isLeaderOf"). + + + RiC-R042 ('is or was leader of' + relation) + + + + + + + + + + + + + + + + Connects a Legal Status to an Agent or Record Resource that it + categorizes. + + is or was legal status of + est ou a été le statut légal de + es o era status jurídico de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, textual + definition (the name of this property in RiC-O 0.1 was + "isLegalStatusOf"). + + + Connects a Legal Status to an Agent, Record or Record Part that + it categorized or categorizes. + + + + + + + + Connects a Legal Status and a Record Set whose all past or present + Record or Record Part members have that Legal Status. + + is or was legal status of all members of + est ou a été le statut légal de tous les membres de + es o era status jurídico de todos los miembros de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2020-12-28 + Object property added for handling the case where a Record Set + is described as having all or some members that belong to some category (see RiC-CM + 0.2 attributes section, #4.4 on Record Set, Record and Record Part + attributes). + + + + + + + + + + Connects a Legal Status and a Record Set whose some past or + present Record or Record Part members have that Legal Status. + + is or was legal status of some members of + est ou a été le statut légal de certains membres de + es o era status jurídico de algunos miembros de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2020-12-28 + Object property added for handling the case where a Record Set + is described as having all or some members that belong to some category (see RiC-CM + 0.2 attributes section, #4.4 on Record Set, Record and Record Part + attributes). + + + + + + + + + + Connects a Place to a Thing that is or was located in the + Place. + + is or was location of + est ou a été la localisation de + es o era localización de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, textual + definition (changed made in order to make RiC-O compliant with RiC-CM 0.2; the name + of this property in RiC-O 0.1 was "isLocationOf"). + + + RiC-R075 ('is or was location of' + relation) + + + + + + + + + Connects a Place to an Agent that is or was located in this + Place. + + is or was location of agent + est ou a été la localisation de l'agent + es o era localización de agente + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-10-26 + Renamed the property and added an rdfs:comment. + + + + + 2023-10-20 + Added for RiC-O 1.0. + + + + + + + + + + Inverse of 'has or had main subject' object + property. + + is or was main subject of + est ou a été le sujet principal de + es o era la materia principal de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, super property + IRI, textual definition (changed made in order to make RiC-O compliant with RiC-CM + 0.2; the name of this property in RiC-O 0.1 was "isMainSubjectOf"). + + + RiC-R020i (is or was main subject + of) + + + + + + + + + + + + + + + + + + + + Connects an Agent to a Record Resource or Instantiation that the + Agent managed or manages. + + is or was manager of + est ou a été le gestionnaire de + es o era gestor de + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new managementRelation_role + object property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, super property + IRI, textual definition (changed made in order to make RiC-O compliant with RiC-CM + 0.2; the name of this property in RiC-O 0.1 was "isManagerOf"). + + + RiC-R038 ('is or was manager of' + relation) + + + + + + + + connects a Mandate Type to a Mandate that it categorized or + categorizes. + + is or was mandate type of + est ou a été le type de mandat de + es o era tipo de norma de + + + 2023-11-13 + Added the property, and its inverse one, following the creation + of the MandateType class, that corresponds to the new Mandate Type attribute in + RiC-CM 1.0. + + + + + + + + + + + + + + + Inverse of 'has or had member' object property. + + is or was member of + est ou a été membre de + es o era miembro de + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new membershipRelation_role + object property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, textual + definition (changed made in order to make RiC-O compliant with RiC-CM 0.2; the name + of this property in RiC-O 0.1 was "isMemberOf"). + + + RiC-R055i ('is or was member of' + relation) + + + + + + + + Connects a Name to a Thing that it designated or + designates. + + is or was name of + est ou a été le nom de + es o era nombre de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, textual + definition, super property IRI (the name of this property in RiC-O 0.1 was + "isNameOf"). + + + + + + + + + + Connects an Occupation Type to a Person whose occupation is or was + categorized by it. + + is or was occupation type of + est ou a été le type d’occupation de + es o era tipo de ocupación de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, textual + definition, super property IRI (the name of this property in RiC-O 0.1 was + "isOccupationTypeOf"). + + + + + + + + + + + + + + + Inverse of 'occupies or occupied' object property. + + is or was occupied by + est ou a été occupé par + está o estaba ocupado por + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new positionHoldingRelation_role + object property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition + (changed made in order to make RiC-O compliant with RiC-CM 0.2; the name of this + property in RiC-O 0.1 was "occupiedBy"). + + + RiC-R054i ('is or was occupied by' + relation) + + + + + + + + + + + + + + + + + + + + + Connects a Group, Person or Position to a Thing that this Agent + owns or owned. + + is or was owner of + est ou a été propriétaire de + es o era poseedor(a) de + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new ownershipRelation_role + object property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, textual + definition, super property IRI (changed made in order to make RiC-O compliant with + RiC-CM 0.2; the name of this property in RiC-O 0.1 was "isOwnerOf"). + + + RiC-R037 ('is or was owner of' + relation) + + + + + + + + + + + + + Inverse of 'has or had part' relation. + + is or was part of + est ou a été une partie de + es o era parte de + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new wholePartRelation_role + object property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, textual + definition (changed made in order to make RiC-O compliant with RiC-CM 0.2; the name + of this property in RiC-O 0.1 was "isPartOf"). + + + RiC-R002i (is or was part of + relation) + + + + + + + + Inverse of 'has or had participant' object + property. + + is or was participant in + participe ou a participé à + es o era participante de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, textual + definition (changed made in order to make RiC-O compliant with RiC-CM 0.2; the name + of this property in RiC-O 0.1 was "involvedIn"). + + + RiC-R058i ('is or was participant in' + relation) + + + + + + + + + + + + + Connects an Activity to an Agent that performed or performs the + Activity. + + is or was performed by + est ou a été réalisée par + es o fue desarrollado por + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new performanceRelation_role + object property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition, + super property IRI (changed made in order to make RiC-O compliant with RiC-CM 0.2; + the name of this property in RiC-O 0.1 was "performedBy"). + + + RiC-R060 ('is or was performed by' + relation) + + + + + + + + Connects a Physical Location to a Place, when it is or was its + location. + + is or was physical location of + a ou a été la localisation physique de + es o era localización física de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-02-01 + Property made a subproperty of + 'isAssociatedWithPlace". + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, textual + definition (the name of this property in RiC-O 0.1 was + "isPhysicalLocationOf"). + + + + + + + + + + Connects a Place Name to a Place that was or is designated by + it. + + is or was place name of + a ou a été le nom de lieu de + es o era nombre de lugar de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition, + super property IRI (the name of this property in RiC-O 0.1 was + "isPlaceNameOf"). + + + + + + + + + + Connects a Place Type to a Place that is or was categorized by + it. + + is or was place type of + a ou a été le type de lieu de + es o era tipo de lugar de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition, + super property IRI (the name of this property in RiC-O 0.1 was + "isPlaceTypeOf"). + + + + + + + + + + Connects a Record State and a Record Set whose all past or present + Record or Record Part members have that Record State. + + is or was record state of all members of + a ou a été l’état de tous les membres de + es o era estado de documento de todos los miembros de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2020-12-28 + Object property added for handling the case where a Record Set + is described as having all or some members that belong to some category (see RiC-CM + 0.2 attributes section, #4.4 on Record Set, Record and Record Part + attributes). + + + + + + + + + + Connects a Record State and a Record Set whose some past or + present Record or Record Part members have that Record State. + + is or was record state of some members of + a ou a été l’état de certains membres de + es o era estado de documento de algunos miembros de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2020-12-28 + Object property added for handling the case where a Record Set + is described as having all or some members that belong to some category (see RiC-CM + 0.2 attributes section, #4.4 on Record Set, Record and Record Part + attributes). + + + + + + + + + + Inverse of the 'regulates or regulated' object + property. + + is or was regulated by + est ou a été régulé par + está o estaba regulado por + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI (changed made in + order to make RiC-O compliant with RiC-CM 0.2; the name of this property in RiC-O 0.1 + was "regulatedBy"). + + + RiC-R063i ('is or was regulated by' + relation) + + + + + + + + Inverse of 'is or was enforced by' object property. + + is or was responsible for enforcing + a fait ou fait appliquer + es o era responsable de aplicar + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition, + corresponding CM component name (changed made in order to make RiC-O compliant with + RiC-CM 0.2; the name of this property in RiC-O 0.1 was + "isResponsibleForEnforcing"). + + + RiC-R066i ('is or was responsible for enforcing' + relation) + + + + + + + + connects a Rule Type to a Rule that it categorized or + categorizes. + + is or was rule type of + est ou a été le type de règle de + es o era tipo de regla de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition, + super property URI (the name of this property in RiC-O 0.1 was + "isRuleTypeOf"). + + + + + 2020-10-19 + Object property added along with RuleType class and hasRuleType + object property. + + + + + + + + + + + + + + + + Inverse of 'has or had subdivision' object + property. + + is or was subdivision of + est ou a été une subdivision de + es o era subdivisión de + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new + groupSubdivisionRelation_role object property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition, + super property IRIs (changed made in order to make RiC-O compliant with RiC-CM 0.2; + the name of this property in RiC-O 0.1 was "isSubdivisionOf"). + + + RiC-R005i ('is or was subdivision' + relation) + + + + + + + + + + Inverse of 'has or had subevent' object property. + + is or was subevent of + est ou a été un événement constituant de + es o era parte de evento de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition, + super property URI (changed made in order to make RiC-O compliant with RiC-CM 0.2; + the name of this property in RiC-O 0.1 was "isSubEventOf"). + + + RiC-R006i ('is or was subevent of' + relation) + + + + + + + + Inverse of 'has or had subject' object property. + + is or was subject of + est ou a été le sujet de + es o era materia de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition + (changed made in order to make RiC-O compliant with RiC-CM 0.2; the name of this + property in RiC-O 0.1 was "isSubjectOf"). + + + RIc-R019i ('is or was subject of' + relation) + + + + + + + + + + + + + Inverse of 'has or had subordinate' object + property. + + is or was subordinate to + est ou a été le subalterne de + está o estaba subordinado(a) a + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new + agentHierarchicalRelation_role object property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI (changed made in + order to make RiC-O compliant with RiC-CM 0.2; the name of this property in RiC-O 0.1 + was "isHierarchicallyInferiorTo"). + + + RiC-R045i ('is or was subordinate to' + relation) + + + + + + + + + + + + + + + + Connects a Title to a Record Resource, Instantiation or Rule that + it designated or designates. + + is or was title of + est ou a été l’intitulé de + es o era título de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition, + super property IRI (the name of this property in RiC-O 0.1 was + "isTitleOf"). + + + + + + + + + + + + + + + Inverse of 'has or had authority over' object + property. + + is or was under authority of + est ou a été sous l’autorité de + está o estaba bajo control de + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new authorityRelation_role + object property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition + (changed made in order to make RiC-O compliant with RiC-CM 0.2; the name of this + property in RiC-O 0.1 was "isUnderAuthorityOf"). + + + RiC-R036i ('is or was under authority of' + relation) + + + + + + + + + + + + + + + + + + + + + + + + + + + Inverse of 'has organic or functional provenance' object + property. + + is organic or functional provenance of + est la provenance organique ou fonctionnelle de + es procedencia orgánica o funcional de + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new + organicOrFunctionalProvenanceRelation_role object property. + + + + + 2023-11-07 + Property added as a superproperty of isProvenance and + documentedBy, along with its inverse property. Shortcut also added. + + + + + + + + + + + + + + + + + + + + + + inverse of 'has organic provenance' object + property. + + is organic provenance of + est la provenance organique de + es procedencia orgánica de + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new + organicProvenanceRelation_role object property. + + + + + 2023-11-07 + Made this property a subproperty of the new + isOrganicOrFunctionalProvenanceOf property. Renamed it to make things clearer. + Adjusted its labels. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + RiC-R026i ('is provenance of' + relation) + + + + + + + + + + + + + + + + + + + + + + + Connects the original version of a Record to a copy or a later + version. + + is original of + est l’original de + es original de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + There may be zero to many intermediate Records, ignored or + unknown, between the two connected Records + RiC-R010 (is original of + relation) + + + + + + + + + Connects a Thing to a Thing of which it is a a constitutive or + component part, directly or indirectly. This is a transitive relation. + + is part of transitive + est une partie de transitif + es parte de transitivo + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-13 + Added a French label. + + + + + 2023-07-12 + Object property added, along with its inverse property, in + order to enable to express current partitive relations between things (the past + partitive relation also being added). + + + To be used, either to infer, then query or browse, relations + from existing direct 'isDirectPartOf' relations between things, or to record a current + partitive relation when you do not know if there are intermediate nodes between the related + things. + + + + + + + + + + + + + Connects a Place to a Thing with whose existence and lifecycle the + Place is associated. + + is place associated with + est un lieu associé à + es lugar asociado con + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment), skos:scopeNote. + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new placeRelation_role object + property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + Use to connect a Place to an entity only if it is not possible + to specify a narrower spatial relation, for example, is or was location + of. + RiC-R074 ('is place associated with' + relation) + + + + + + + + Connects a Place to an Agent which is related to that + Place. + + is place associated with agent + est un lieu associé à l'agent + es lugar asociado con agente + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-10-26 + fixed the domain and range, added a rdfs:comment and English + and French labels. + + + + + 2023-10-19 + Added for RiC-O v1.0. + + + + + + + + + + Connects a Production Technique Type to an Instantiation whose + production technique is categorized by it. + + is production technique type of + est le type de technique de production de + es tipo de técnica de producción de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the super property IRI. + + + + + + + + + + Connects a Date to a Record Resource that was made public at this + Date. + + is publication date of + est la date de publication de + es fecha de publicación de + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-10-12 + Added the French label + + + + + 2023-09-22 + Added in RiC-O 1.0. + + + + + + + + + + Connects an Agent to a Record Resource that it + published. + + is publisher of + est l’éditeur de + es editor(a) de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI (the name of this + property in RiC-O 0.1 was "publishes"). + + + + + + + + + + + + + + + + + Inverse of 'received by' object property. + + is receiver of + reçoit + es receptor(a) de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, super property + IRI (changed made in order to make RiC-O compliant with RiC-CM 0.2; the name of this + property in RiC-O 0.1 was "receives"). + + + RiC-R029i ('is receiver of' + relation) + + + + + + + + + + + + + Connects two Record Resources. This relation is + symmetric. + + is record resource associated with record resource + est une ressource archivistique associée avec la ressource + archivistique + es recurso documental asociado con + + + 2023-11-25 + Fixed the French label. + + + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment), skos:scopeNote. + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new + recordResourceToRecordResourceRelation_role object property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + Use to connect two Record Resources only if it is not possible + to use a narrower, more specific relation, for example has genetic link + to. + RiC-R022 ('is record resource associated with + record resource' relation) + + + + + + + + Connects a Record Set Type to a Record Set that it + categorizes. + + is record set type of + est le type d’ensemble d’objets informationnels de + es tipo de agrupación documental de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the super property IRI. + + + + + + + + + + + + + + + + + Connects a Record State to a Record or Record Part whose state it + categorizes. + + is record state of + est l’état de + es estado de documento de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2020-12-28 + Changed the IRI, label, textual definition and range (Record + Resource removed, replaced by Record or Record Part). + + + + + + + + + + + + + + The most generic relation, is related to, connects any Thing to + any other Thing. This relation is symmetric. + + is related to + est relié à + está relacionado con + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment). + + + + + 2023-11-08 + Added the chain property axiom in order to make this property a + shortcut. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + RiC-R001 (is related to + relation) + + + + + + + + + Inverse of 'has reply' object property. + + is reply to + est une réponse à + es contestación de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition + (changed made in order to make RiC-O compliant with RiC-CM 0.2; the name of this + property in RiC-O 0.1 was "repliesTo"). + + + RiC-R013i ('is reply to' + relation) + + + + + + + + Connects a Representation Type to an Instantiation that it + categorizes. + + is representation type of + est le type de représentation de + es tipo de grabación de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the super property IRI. + + + + + + + + + + Inverse of 'issued by' object property. + + is responsible for issuing + est chargé de rendre publique + es responsable de emisión de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + RiC-R065i ('is responsible for issuing' + relation) + + + + + + + + + + + + + Connects a Rule to a Thing that is associated with the + Rule. + + is rule associated with + est une règle associée à + es regla asociada con + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment), skos:scopeNote. + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new ruleRelation_role object + property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + Use only if it is not possible to specify a narrower Rule + relation, for example, regulates or regulated. + RiC-R062 ('is rule associated with' + relation) + + + + + + + + + + + + + + + Inverse of 'has sender' object property. + + is sender of + est l’expéditeur de + es remitente de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + RiC-R031i ('is sender of' + relation) + + + + + + + + + + + Connects a Group to the Group it is a direct or indirect + subdivision of. This is a transitive relation. + + is subdivision of transitive + est une subdivision de transitif + es subdivisión de transitivo + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the labels. + + + + + 2023-09-08 + Object property added, along with its inverse property, in + order to enable to express current partitive relations between groups (the past + partitive relation also being added). + + + + + + + + + + + + Connects an ongoing Event to an Event of which it is a direct or + indirect part. This is a transitive relation. + + is subevent of transitive + est un événement constituant de transitif + es elemento constitutivo de transitivo + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the labels. + + + + + 2023-09-08 + Object property added, along with its inverse property, in + order to enable to express partitive relations between ongoing events (the past + partitive relation also being added). + + + + + + + + + + + Connects an Agent to an Agent that is directly or indirectly + hierarchically superior. This is a transitive relation. + + is subordinate to transitive + est subalterne de transitif + está subordinado(a) a transitivo + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the labels. + + + + + 2023-09-08 + Object property added, along with its inverse property, in + order to enable to express current subordination relations between agents (the past + subordination relation also being added). + + + + + + + + + + + + + + + + Inverse of 'has successor' object property. + + is successor of + est le successeur de + es sucesor(a) de + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new agentTemporalRelation_role + object property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the inverse property IRI and the text + definition. + + + RiC-R016i ('is successor of' + relation) + + + + + + + + Connects a Date to an Appellation, when it is the date till which + the Appellation was used. + + is to use date of + est la date jusqu’à laquelle est utilisé + es fecha hasta la que se usa + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-10-19 + Made this property a subPropertyOf isEndDateOf. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + + + + + + Inverse of 'has unit of measurement' object + property + + is unit of measurement of + est l’unité de mesure de + es unidad de medida de + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French; added an xml:lang attribute + to the rdfs:comment. + + + + + 2020-10-28 + Object property created along with Extent and UnitOfMeasurement + classes, in order to provide methods for handling extent accurately. + + + + + + + + + + + + Connects a Date to a Date in which it is contained. + + is within + est contenu dans + está dentro + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-10-13 + made this property a subproperty of both isDateAssociatedWith + and isAssociatedWithdate, and of isOrWasPartOf. + + + + + 2023-10-12 + Added the property + + + RiC-R085 ('is within' + relation) + + + + + + + + Connects a Rule to the Agent that issued or published the + Rule. + + issued by + rendue publique par + emitido por + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + RiC-R065 ('issued by' + relation) + + + + + + + + Connects a KnowingOfRelation to itself. It is a reflexive + property, that can stand for an instance of the class when necessary, e.g. when you explore + a knowledge graph. + + has the role of the Knowing Of Relation + a le rôle de la Relation de connaissance à propos d’une + personne + desempeña el papel de la Relación de conocimieto indirecto entre + personas + + + 2023-11-08 + In order to get a system of rolified Relation classes: created + the object property, with domain and range the KnowingOfRelation rolified class. + Declared it as reflexive. Declared it(s) superproperty(ies). + + + This property "rolifies" the KnowingOfRelation class. It should + be used only when you have to manage instances of the KnowingOfRelation class, to connect + each instance to itself, in order to be able to infer, using OWL-RL and property paths, the + two shortcuts corresponding to this n-ary class. + + + + + + + + Connects a KnowingRelation to itself. It is a reflexive property, + that can stand for an instance of the class when necessary, e.g. when you explore a + knowledge graph. + + has the role of the Knowing Relation + a le rôle de la Relation de connaissance entre + personnes + desempeña el papel de la Relación de conocimiento directo entre + personas + + + 2023-11-08 + In order to get a system of rolified Relation classes: created + the object property, with domain and range the KnowingRelation rolified class. + Declared it as reflexive. Declared it(s) superproperty(ies). + + + This property "rolifies" the KnowingRelation class. It should be + used only when you have to manage instances of the KnowingRelation class, to connect each + instance to itself, in order to be able to infer, using OWL-RL and property paths, the two + shortcuts corresponding to this n-ary class. + + + + + + + + + + + + + Inverse of 'knows of' object property. + + known by + est connue par + conocido por + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new knowingOfRelation_role + object property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + RiC-R050i ('known by' + relation) + + + + + + + + + + + + + Connects two Persons that directly know each other during their + existence. This relation is symmetric. + + knows + connaît + conoce a + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment), skos:scopeNote. + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new knowingRelation_role object + property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + The relation implies that the two Persons met or at least + corresponded with each other. + RiC-R051 ('knows' + relation) + + + + + + + + + + + + + Connects a Person to another Person they have some knowledge of + through time or space. + + knows of + a connaissance de la personne + conoce indirectamente a + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new knowingOfRelation_role + object property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + RiC-R050 ('knows of' + relation) + + + + + + + + Connects a LeadershipRelation to itself. It is a reflexive + property, that can stand for an instance of the class when necessary, e.g. when you explore + a knowledge graph. + + has the role of the Leadership Relation + a le rôle de la Relation de direction + desempeña el papel de la Relación de liderazgo + + + 2023-11-08 + In order to get a system of rolified Relation classes: created + the object property, with domain and range the LeadershipRelation rolified class. + Declared it as reflexive. Declared it(s) superproperty(ies). + + + This property "rolifies" the LeadershipRelation class. It should + be used only when you have to manage instances of the LeadershipRelation class, to connect + each instance to itself, in order to be able to infer, using OWL-RL and property paths, the + two shortcuts corresponding to this n-ary class. + + + + + + + + Connects a Leadership Relation to the Position occupied by the + leading Person. + + leadership with position + relation de direction dans le cadre du poste + liderazgo en puesto + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + + + + + + Connects a ManagementRelation to itself. It is a reflexive + property, that can stand for an instance of the class when necessary, e.g. when you explore + a knowledge graph. + + has the role of the Management Relation + a le rôle de la Relation de gestion + desempeña el papel de la Relación de gestión + + + 2023-11-08 + In order to get a system of rolified Relation classes: created + the object property, with domain and range the ManagementRelation rolified class. + Declared it as reflexive. Declared it(s) superproperty(ies). + + + This property "rolifies" the ManagementRelation class. It should + be used only when you have to manage instances of the ManagementRelation class, to connect + each instance to itself, in order to be able to infer, using OWL-RL and property paths, the + two shortcuts corresponding to this n-ary class. + + + + + + + + Connects a MandateRelation to itself. It is a reflexive property, + that can stand for an instance of the class when necessary, e.g. when you explore a + knowledge graph. + + has the role of the Mandate Relation + a le rôle de la Relation impliquant un mandat + desempeña el papel de la Relación normativa + + + 2023-11-08 + In order to get a system of rolified Relation classes: created + the object property, with domain and range the MandateRelation rolified class. + Declared it as reflexive. Declared it(s) superproperty(ies). + + + This property "rolifies" the MandateRelation class. It should be + used only when you have to manage instances of the MandateRelation class, to connect each + instance to itself, in order to be able to infer, using OWL-RL and property paths, the two + shortcuts corresponding to this n-ary class. + + + + + + + + Connects a MembershipRelation to itself. It is a reflexive + property, that can stand for an instance of the class when necessary, e.g. when you explore + a knowledge graph. + + has the role of the Membership Relation + a le rôle de la Relation d’appartenance + desempeña el papel de la Relación de membresía + + + 2023-11-08 + In order to get a system of rolified Relation classes: created + the object property, with domain and range the MembershipRelation rolified class. + Declared it as reflexive. Declared it(s) superproperty(ies). + + + This property "rolifies" the MembershipRelation class. It should + be used only when you have to manage instances of the MembershipRelation class, to connect + each instance to itself, in order to be able to infer, using OWL-RL and property paths, the + two shortcuts corresponding to this n-ary class. + + + + + + + + Connects a Membership Relation to the Position occupied by the + member Person(s). + + membership with position + relation d’appartenance dans le cadre du poste + membresía en puesto + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + + + + + + + + + + + Inverse of 'migrated into' object property. + + migrated from + a été produite par migration de + migrado desde + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new migrationRelation_role + object property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-29 + Updated subpropertyOf; this in order to make the specification + compliant with RiC-CM 1.0. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition, + corresponding CM component name (changed made in order to make RiC-O compliant with + RiC-CM 0.2; the name of this property in RiC-O 0.1 was + "createdByMigrationFromInstantiation"). + + + RiC-R015i ('migrated from' + relation) + + + + + + + + + + + + + Connects an Instantiation to a version it has been migrated + into. + + migrated into + a été migrée vers + migrado a + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment). + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new migrationRelation_role + object property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-29 + Updated subpropertyOf; this in order to make the specification + compliant with RiC-CM 1.0. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label and inverse property IRI (changed made + in order to make RiC-O compliant with RiC-CM 0.2; the name of this property in RiC-O + 0.1 was "isMigratedIntoInstantiation"). + + + Use for digital instantiations. + RiC-R015 ('migrated into' + relation) + + + + + + + + Connects a MigrationRelation to itself. It is a reflexive + property, that can stand for an instance of the class when necessary, e.g. when you explore + a knowledge graph. + + has the role of the Migration Relation + a le rôle de la Relation de migration + desempeña el papel de la Relación de migración entre + instanciaciones + + + 2023-11-08 + In order to get a system of rolified Relation classes: created + the object property, with domain and range the MigrationRelation rolified class. + Declared it as reflexive. Declared it(s) superproperty(ies). + + + This property "rolifies" the MigrationRelation class. It should + be used only when you have to manage instances of the MigrationRelation class, to connect + each instance to itself, in order to be able to infer, using OWL-RL and property paths, the + two shortcuts corresponding to this n-ary class. + + + + + + + + + + + + + Connects a Person to a Position they occupy or + occupied. + + occupies or occupied + occupe ou a occupé + ocupa u ocupaba + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new positionHoldingRelation_role + object property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition + (changed made in order to make RiC-O compliant with RiC-CM 0.2; the name of this + property in RiC-O 0.1 was "occupies"). + + + RiC-R054 ('occupies or occupied' + relation) + + + + + + + + + Inverse of 'is date of occurrence of' object + property + + occurred at date + a pour date d'occurrence + tiene como fecha de ocurrencia + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-10-17 + Made this property a subproperty of + isEventAssociatedWith + + + + + 2023-10-13 + Renamed the property to correct a spelling mistake. Also + corrected the annotations when necessary. + + + RiC-R084i ('occurred at date' + relation) + + + + + + + + Connects a OrganicOrFunctionalProvenanceRelation to itself. It is + a reflexive property, that can stand for an instance of the class when necessary, e.g. when + you explore a knowledge graph. + + has the role of the Organic or functional provenance + Relation + a le rôle de la Relation de provenance organique ou + fonctionnelle + desempeña el papel de la Relación de procedencia orgánica or + funcional + + + 2023-11-08 + In order to get a system of rolified Relation classes: created + the object property, with domain and range the OrganicOrFunctionalProvenanceRelation + rolified class. Declared it as reflexive. Declared it(s) + superproperty(ies). + + + This property "rolifies" the + OrganicOrFunctionalProvenanceRelation class. It should be used only when you have to manage + instances of the OrganicOrFunctionalProvenanceRelation class, to connect each instance to + itself, in order to be able to infer, using OWL-RL and property paths, the two shortcuts + corresponding to this n-ary class. + + + + + + + + Connects a OrganicProvenanceRelation to itself. It is a reflexive + property, that can stand for an instance of the class when necessary, e.g. when you explore + a knowledge graph. + + has the role of the Organic Provenance Relation + a le rôle de la Relation de provenance organique + desempeña el papel de la Relación de procedencia + orgánica + + + 2023-11-08 + In order to get a system of rolified Relation classes: created + the object property, with domain and range the OrganicProvenanceRelation rolified + class. Declared it as reflexive. Declared it(s) superproperty(ies). + + + This property "rolifies" the OrganicProvenanceRelation class. It + should be used only when you have to manage instances of the OrganicProvenanceRelation + class, to connect each instance to itself, in order to be able to infer, using OWL-RL and + property paths, the two shortcuts corresponding to this n-ary class. + + + + + + + + + Connects two Places that geographically overlap or overlapped. + This relation is symmetric. + + overlaps or overlapped + chevauche ou a chevauché + se superpone o superponía con + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment). + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, text definition (changed made in order + to make RiC-O compliant with RiC-CM 0.2; the name of this property in RiC-O 0.1 was + "overlaps"). + + + RiC-R078 ('overlaps or overlapped' + relation) + + + + + + + + Connects a OwnershipRelation to itself. It is a reflexive + property, that can stand for an instance of the class when necessary, e.g. when you explore + a knowledge graph. + + has the role of the Ownership Relation + a le rôle de la Relation de propriété + desempeña el papel de la Relación de posesión + + + 2023-11-08 + In order to get a system of rolified Relation classes: created + the object property, with domain and range the OwnershipRelation rolified class. + Declared it as reflexive. Declared it(s) superproperty(ies). + + + This property "rolifies" the OwnershipRelation class. It should + be used only when you have to manage instances of the OwnershipRelation class, to connect + each instance to itself, in order to be able to infer, using OWL-RL and property paths, the + two shortcuts corresponding to this n-ary class. + + + + + + + + Connects a PerformanceRelation to itself. It is a reflexive + property, that can stand for an instance of the class when necessary, e.g. when you explore + a knowledge graph. + + has the role of the Performance Relation + a le rôle de la Relation entre activités et agents + desempeña el papel de la Relación de desarrollo + funcional + + + 2023-11-08 + In order to get a system of rolified Relation classes: created + the object property, with domain and range the PerformanceRelation rolified class. + Declared it as reflexive. Declared it(s) superproperty(ies). + + + This property "rolifies" the PerformanceRelation class. It + should be used only when you have to manage instances of the PerformanceRelation class, to + connect each instance to itself, in order to be able to infer, using OWL-RL and property + paths, the two shortcuts corresponding to this n-ary class. + + + + + + + + + + + + + Inverse of 'is or was performed by' object + property. + + performs or performed + exerce ou a exercé + desarrolla o desarrollaba + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new performanceRelation_role + object property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition, + super property IRI (changed made in order to make RiC-O compliant with RiC-CM 0.2; + the name of this property in RiC-O 0.1 was "performs"). + + + RiC-R060i ('performs or performed' + relation) + + + + + + + + Connects a PlaceRelation to itself. It is a reflexive property, + that can stand for an instance of the class when necessary, e.g. when you explore a + knowledge graph. + + has the role of the Place Relation + a le rôle de la Relation impliquant un lieu + desempeña el papel de la Relación con lugar + + + 2023-11-08 + In order to get a system of rolified Relation classes: created + the object property, with domain and range the PlaceRelation rolified class. Declared + it as reflexive. Declared it(s) superproperty(ies). + + + This property "rolifies" the PlaceRelation class. It should be + used only when you have to manage instances of the PlaceRelation class, to connect each + instance to itself, in order to be able to infer, using OWL-RL and property paths, the two + shortcuts corresponding to this n-ary class. + + + + + + + + Connects a PositionHoldingRelation to itself. It is a reflexive + property, that can stand for an instance of the class when necessary, e.g. when you explore + a knowledge graph. + + has the role of the Position Holding Relation + a le rôle de la Relation entre une personne et un poste + desempeña el papel de la Relación de ocupación entre una persona y + un puesto + + + 2023-11-08 + In order to get a system of rolified Relation classes: created + the object property, with domain and range the PositionHoldingRelation rolified + class. Declared it as reflexive. Declared it(s) superproperty(ies). + + + This property "rolifies" the PositionHoldingRelation class. It + should be used only when you have to manage instances of the PositionHoldingRelation class, + to connect each instance to itself, in order to be able to infer, using OWL-RL and property + paths, the two shortcuts corresponding to this n-ary class. + + + + + + + + Connects a Position to a Leadership Relation (the leading Person + occupies that Position). + + position is context of leadership relation + puesto es contexto de relación de liderazgo + poste est le contexte de la relation de direction + + + 2023-11-12 + Updated the labels. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + + + + + + Connects a Position to a Membership Relation (the member Person + occupies that Position). + + position is context of membership relation + puesto es contexto de relación de membresía + poste est le contexte de la relation d'appartenance + + + 2023-11-12 + Updated the labels. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + + + + + + Connects a PositionToGroupRelation to itself. It is a reflexive + property, that can stand for an instance of the class when necessary, e.g. when you explore + a knowledge graph. + + has the role of the Position to Group Relation + a le rôle de la Relation entre un poste et un groupe + desempeña el papel de la Relación de ocupación entre un grupo y un + puesto + + + 2023-11-08 + In order to get a system of rolified Relation classes: created + the object property, with domain and range the PositionToGroupRelation rolified + class. Declared it as reflexive. Declared it(s) superproperty(ies). + + + This property "rolifies" the PositionToGroupRelation class. It + should be used only when you have to manage instances of the PositionToGroupRelation class, + to connect each instance to itself, in order to be able to infer, using OWL-RL and property + paths, the two shortcuts corresponding to this n-ary class. + + + + + + + + Connects a Thing to a Thing that followed it in some non + chronological sequence in the past. + + preceded in sequence + a précédé dans la séquence + precedía secuencialmente a + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the labels. + + + + + 2023-09-22 + Renamed the property and modified its definition (rdfs:comment) + in order to better distinguish it from precedesInTime. + + + + + 2023-09-08 + Object property added, along with its inverse property, in + order to enable to express past sequential relations between things (the current + sequential relations being also added, including a transitive one). + + + + + + + + + + + Connects a Thing to a Thing that follows it directly or indirectly + in some non chronological sequence. This is a transitive relation. + + precedes in sequence transitive + précède dans la séquence transitif + precede secuencialmente a transitivo + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the labels. + + + + + 2023-09-22 + Renamed the property and modified its definition (rdfs:comment) + in order to better distinguish it from precedesInTime. + + + + + 2023-09-08 + Object property added, along with its inverse property, in + order to enable to express current, direct or indirect, sequential relations between + things (the past sequential relation also being added). + + + + + + + + + + + + + + + + Connects a Thing to a Thing that follows it in chronological + order. This is a transitive relation. + + precedes in time + précède dans le temps + precede en el tiempo a + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new temporalRelation_role object + property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-09-21 + Property made transitive. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the superproperty IRI + + + There may actually be zero to many intermediate Entities, + ignored or unknown, in the chronological sequence between the two connected + Entities. + RiC-R009 ('precedes in time' + relation) + + + + + + + + + + + + + Connects a Thing to a Thing that follows or followed it in some + sequence. + + precedes or preceded + précède ou a précédé + precede o precedía secuencialmente a + + + 2023-11-08 + In order to get a system of rolified Relation classes: modified + the property chain axiom so that it now involves the new sequentialRelation_role + object property. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition, + corresponding CM component name (changed made in order to make RiC-O compliant with + RiC-CM 0.2; the name of this property in RiC-O 0.1 was "precedes"). + + + The relation does not specify by itself what criteria are used + for ordering the sequence. There may actually be zero to many intermediate Entities, + ignored or unkown, in the sequence between the two connected Things. Can be used, for + example, for specifying that some Record 'precedes' (has next) some Record within a Record + Set. + RiC-R008 ('precedes or preceded' + relation) + + + + + + + Connects a Proxy to the Record Resource it stands for in the + specific context of a Record Set. + + proxy for + proxy pour + es proxy para + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + + + + + Connects a Proxy to the Record Set in which it stands for + (represents) another Record Resource. + + proxy in + proxy dans + es proxy en + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + + + + + + Connects a RecordResourceGeneticRelation to itself. It is a + reflexive property, that can stand for an instance of the class when necessary, e.g. when + you explore a knowledge graph. + + has the role of the Record Resource Genetic Relation + a le rôle de la Relation génétique entre des ressources + archivistiques + desempeña el papel de la Relación genética entre recursos + documentales + + + 2023-11-08 + In order to get a system of rolified Relation classes: created + the object property, with domain and range the RecordResourceGeneticRelation rolified + class. Declared it as reflexive. Declared it(s) superproperty(ies). + + + This property "rolifies" the RecordResourceGeneticRelation + class. It should be used only when you have to manage instances of the + RecordResourceGeneticRelation class, to connect each instance to itself, in order to be + able to infer, using OWL-RL and property paths, the two shortcuts corresponding to this + n-ary class. + + + + + + + + Connects a RecordResourceHoldingRelation to itself. It is a + reflexive property, that can stand for an instance of the class when necessary, e.g. when + you explore a knowledge graph. + + has the role of the Record Resource Holding Relation + a le rôle de la Relation entre agents et ressources archivistiques + ou instanciations conservées + desempeña el papel de la Relación entre agentes y recursos + documentales que conservan + + + 2023-12-30 + Fixed a typo in the French label. + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: created + the object property, with domain and range the RecordResourceHoldingRelation rolified + class. Declared it as reflexive. Declared it(s) superproperty(ies). + + + This property "rolifies" the RecordResourceHoldingRelation + class. It should be used only when you have to manage instances of the + RecordResourceHoldingRelation class, to connect each instance to itself, in order to be + able to infer, using OWL-RL and property paths, the two shortcuts corresponding to this + n-ary class. + + + + + + + + Connects a RecordResourceToInstantiationRelation to itself. It is + a reflexive property, that can stand for an instance of the class when necessary, e.g. when + you explore a knowledge graph. + + has the role of the Record Resource to Instantiation + Relation + a le rôle de la Relation d’instanciation + desempeña el papel de la Relación de recurso documental a + instanciación + + + 2023-11-08 + In order to get a system of rolified Relation classes: created + the object property, with domain and range the RecordResourceToInstantiationRelation + rolified class. Declared it as reflexive. Declared it(s) + superproperty(ies). + + + This property "rolifies" the + RecordResourceToInstantiationRelation class. It should be used only when you have to manage + instances of the RecordResourceToInstantiationRelation class, to connect each instance to + itself, in order to be able to infer, using OWL-RL and property paths, the two shortcuts + corresponding to this n-ary class. + + + + + + + + Connects a RecordResourceToRecordResourceRelation to itself. It is + a reflexive property, that can stand for an instance of the class when necessary, e.g. when + you explore a knowledge graph. + + has the role of the Record Resource to Record Resource + Relation + a le rôle de la Relation entre ressources + archivistiques + desempeña el papel de la Relación entre recursos + documentales + + + 2023-11-08 + In order to get a system of rolified Relation classes: created + the object property, with domain and range the RecordResourceToRecordResourceRelation + rolified class. Declared it as reflexive. Declared it(s) + superproperty(ies). + + + This property "rolifies" the + RecordResourceToRecordResourceRelation class. It should be used only when you have to + manage instances of the RecordResourceToRecordResourceRelation class, to connect each + instance to itself, in order to be able to infer, using OWL-RL and property paths, the two + shortcuts corresponding to this n-ary class. + + + + + + + + Connects a Rule to a Thing that it regulates or + regulated. + + regulates or regulated + régule ou a régulé + regula o regulaba + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI (changed made in + order to make RiC-O compliant with RiC-CM 0.2; the name of this property in RiC-O 0.1 + was "regulates"). + + + RiC-R063 ('regulates or regulated' + relation) + + + + + + + + Connects an n-ary Relation to any of the Things + involved. + + relation connects + relation connecte + relación conecta + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + + + + + + Connects an n-ary Relation to a Thing that is a secondary, + contextual entity during the existence of the Relation. + + relation has context + relation a pour contexte + relación tiene como contexto + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + The secondary entity may be, for instance, a Position or a Role + Type. + + + + + + + + Connects an n-ary Relation to a Thing that is its + source. + + relation has source + relation a pour source + relación tiene como fuente + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + + + + + + Connects an n-ary Relation to a Thing that is its + target. + + relation has target + relation a pour cible + relación tiene como objetivo + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + + + + + Connects a Relation to itself. It is a reflexive property, that + can stand for an instance of the class when necessary, e.g. when you explore a knowledge + graph. + + has the role of the Relation + a le rôle de la Relation + desempeña el papel de la Relación + + + 2023-11-08 + In order to get a system of rolified Relation classes: created + the object property, with domain and range the Relation rolified class. Declared it + as reflexive. + + + This property "rolifies" the generic Relation class. It should + be used only when you have to manage instances of this Relation class, to connect each + instance to itself, in order to be able to infer, using OWL-RL and property paths, the two + shortcuts corresponding to this n-ary class. + + + + + + + + inverse of 'was merged into' object property. + + resulted from the merger of + resultado de la fusión de + résulte de la fusion de + + + 2023-11-12 + Updated the labels. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-06-21 + Object property created in order to enable an accurate + representation of mergers between corporate bodies. + + + + + + + + + + Inverse of 'was split into' object property. + + resulted from the split of + resultado de la separación de + résulte de la séparation de + + + 2023-11-12 + Updated the labels. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-06-21 + Object property created in order to enable an accurate + representation of the split of a corporate body into two or more new corporate + bodies. + + + + + + + + + + Inverse of 'results or resulted in' object + property. + + results or resulted from + résulte ou a résulté de + resulta o resultaba + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition + (changed made in order to make RiC-O compliant with RiC-CM 0.2; the name of this + property in RiC-O 0.1 was "resultsFrom"). + + + RiC-R061i ('results or resulted from' + relation) + + + + + + + + Connects an Event to a Thing that results or resulted from the + Event. + + results or resulted in + a ou a eu pour résultat + tiene o tenía como resultado a + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + 2021-01-22 + changed the IRI, label, inverse property IRI, text definition + (changed made in order to make RiC-O compliant with RiC-CM 0.2; the name of this + property in RiC-O 0.1 was "resultsIn"). + + + RiC-R061 ('results or resulted in' + relation) + + + + + + + + Connects a Role Type to a Creation Relation (this Role Type being + the specific role played by the creating Person in the context of this + Relation). + + role is context of creation relation + rôle est le contexte de la relation de création + rol es contexto de relación de creación + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + + + + + + Connects a RuleRelation to itself. It is a reflexive property, + that can stand for an instance of the class when necessary, e.g. when you explore a + knowledge graph. + + has the role of the Rule Relation + a le rôle de la Relation impliquant une règle + desempeña el papel de la Relación con regla + + + 2023-11-08 + In order to get a system of rolified Relation classes: created + the object property, with domain and range the RuleRelation rolified class. Declared + it as reflexive. Declared it(s) superproperty(ies). + + + This property "rolifies" the RuleRelation class. It should be + used only when you have to manage instances of the RuleRelation class, to connect each + instance to itself, in order to be able to infer, using OWL-RL and property paths, the two + shortcuts corresponding to this n-ary class. + + + + + + + + Connects a SequentialRelation to itself. It is a reflexive + property, that can stand for an instance of the class when necessary, e.g. when you explore + a knowledge graph. + + has the role of the Sequential Relation + a le rôle de la Relation séquentielle + desempeña el papel de la Relación secuencial + + + 2023-11-08 + In order to get a system of rolified Relation classes: created + the object property, with domain and range the SequentialRelation rolified class. + Declared it as reflexive. Declared it(s) superproperty(ies). + + + This property "rolifies" the SequentialRelation class. It should + be used only when you have to manage instances of the SequentialRelation class, to connect + each instance to itself, in order to be able to infer, using OWL-RL and property paths, the + two shortcuts corresponding to this n-ary class. + + + + + + + + Connects a SiblingRelation to itself. It is a reflexive property, + that can stand for an instance of the class when necessary, e.g. when you explore a + knowledge graph. + + has the role of the Sibling Relation + a le rôle de la Relation de fratrie + desempeña el papel de la Relación familiar entre + hermanos + + + 2023-11-08 + In order to get a system of rolified Relation classes: created + the object property, with domain and range the SiblingRelation rolified class. + Declared it as reflexive. Declared it(s) superproperty(ies). + + + This property "rolifies" the SiblingRelation class. It should be + used only when you have to manage instances of the SiblingRelation class, to connect each + instance to itself, in order to be able to infer, using OWL-RL and property paths, the two + shortcuts corresponding to this n-ary class. + + + + + + + + Connects a SpouseRelation to itself. It is a reflexive property, + that can stand for an instance of the class when necessary, e.g. when you explore a + knowledge graph. + + has the role of the Spouse Relation + a le rôle de la Relation matrimoniale + desempeña el papel de la Relación matrimonial entre + personas + + + 2023-11-08 + In order to get a system of rolified Relation classes: created + the object property, with domain and range the SpouseRelation rolified class. + Declared it as reflexive. Declared it(s) superproperty(ies). + + + This property "rolifies" the SpouseRelation class. It should be + used only when you have to manage instances of the SpouseRelation class, to connect each + instance to itself, in order to be able to infer, using OWL-RL and property paths, the two + shortcuts corresponding to this n-ary class. + + + + + + + + Connects a TeachingRelation to itself. It is a reflexive property, + that can stand for an instance of the class when necessary, e.g. when you explore a + knowledge graph. + + has the role of the Teaching Relation + a le rôle de la Relation entre enseignants et étudiants + desempeña el papel de la Relación académica entre profesor y + alumno + + + 2023-11-08 + In order to get a system of rolified Relation classes: created + the object property, with domain and range the TeachingRelation rolified class. + Declared it as reflexive. Declared it(s) superproperty(ies). + + + This property "rolifies" the TeachingRelation class. It should + be used only when you have to manage instances of the TeachingRelation class, to connect + each instance to itself, in order to be able to infer, using OWL-RL and property paths, the + two shortcuts corresponding to this n-ary class. + + + + + + + + Connects a TemporalRelation to itself. It is a reflexive property, + that can stand for an instance of the class when necessary, e.g. when you explore a + knowledge graph. + + has the role of the Temporal Relation + a le rôle de la Relation temporelle + desempeña el papel de la Relación temporal + + + 2023-11-08 + In order to get a system of rolified Relation classes: created + the object property, with domain and range the TemporalRelation rolified class. + Declared it as reflexive. Declared it(s) superproperty(ies). + + + This property "rolifies" the TemporalRelation class. It should + be used only when you have to manage instances of the TemporalRelation class, to connect + each instance to itself, in order to be able to infer, using OWL-RL and property paths, the + two shortcuts corresponding to this n-ary class. + + + + + + + + Connects a Thing to a n-ary Relation. + + thing is connected to relation + cosa está conectada con relación + chose est connectée à la relation + + + 2023-12-30 + Fixed a typo in the French label. + + + + + 2023-11-12 + Updated the labels. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + + + + + + Connects a Thing (that is a secondary, contextual entity during + the existence of the Relation) to a n-ary Relation. + + thing is context of relation + cosa es contexto de relación + chose est le contexte de la relation + + + 2023-11-12 + Updated the labels. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + + + + + + Connects a Thing (that is the source of a Relation) to a + Relation. + + thing is source of relation + chose est la source de la relation + cosa es fuente de relación + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the labels. + + + + + + + + + + Connects a Thing (that is the target of a Relation) to a n-ary + Relation. + + thing is target of relation + chose est la cible de la relation + cosa es objetivo de relación + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the description (rdfs:comment) and labels. + + + + + + + + + + + + + + + Connects a TypeRelation to itself. It is a reflexive property, + that can stand for an instance of the class when necessary, e.g. when you explore a + knowledge graph. + + has the role of the Type Relation + a le rôle de la Relation de catégorisation + desempeña el papel de la Tipo de relación + + + 2023-11-08 + In order to get a system of rolified Relation classes: created + the object property, with domain and range the TypeRelation rolified class. Declared + it as reflexive. Declared it(s) superproperty(ies). + + + This property "rolifies" the TypeRelation class. It should be + used only when you have to manage instances of the TypeRelation class, to connect each + instance to itself, in order to be able to infer, using OWL-RL and property paths, the two + shortcuts corresponding to this n-ary class. + + + + + + + + + Connects an Instantiation to another Instantiation of which it was + a component in the past. + + was component of + a été le composant de + era componente de + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the description (rdfs:comment) and labels. + + + + + 2023-09-08 + Object property added, along with its inverse property, in + order to enable to express past partitive relations between instantiations (the + current partitive relations being also added, including a transitive + one). + + + + + + + + + + + + + + + + + + + + + + + + + Connects a Record or Record Part to another Record or Record Part + of which it was a constituent in the past. + + was constituent of + a été un constituant de + era elemento constitutivo de + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the labels. + + + + + 2023-10-26 + Added RecordPart to the range. + + + + + 2023-09-08 + Object property added, along with its inverse property, in + order to enable to express past partitive relations between Record and Record or + Record Part (the current partitive relations being also added, including a transitive + one). + + + + + + + + + + + Connects a Place to a Place within which it was + contained. + + was contained by + a été contenu par + estaba contenido en + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the description (rdfs:comment) and labels. + + + + + 2023-09-08 + Object property added, along with its inverse property, in + order to enable to express past partitive relations between places (the current + partitive relations being also added, including a transitive one). + + + + + + + + + + + + + + + + + + Connects a Record to a Record or Record Set in which it was + included in the past. + + was included in + a été inclus dans + estaba incluido en + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the labels. + + + + + 2023-09-08 + Object property added, along with its inverse property, in + order to enable to express past partitive relations between Record Sets and their + members (the current partitive relations being also added, including a transitive + one). + + + + + + + + + + Connects a Thing to the Date when it was last + modified. + + was last updated at date + a pour date de dernière mise à jour + fue actualizado por última vez en fecha + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + + + + + + Connects a Corporate Body to another Corporate Body that is the + result of a merger of the previous one with one to many other corporate + bodies. + + was merged into + se fusionó en + a été fusionné dans + + + 2023-11-12 + Updated the labels. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-06-21 + Object property created in order to enable an accurate + representation of mergers between corporate bodies. + + + + + + + + + + Connects a Thing to a Thing of which it was a constitutive or + component part in the past. + + was part of + a fait partie de + era parte de + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the labels. + + + + + 2023-07-12 + Object property added, along with its inverse property, in + order to enable to express past partitive relations between things (the current + partitive relations being also added, including a transitive one). + + + + + + + + + + Connects a Corporate Body to one of the Corporate Bodies that + results from the split of the previous one into two to many corporate + bodies. + + was split into + se separó en + a été séparé en + + + 2023-11-12 + Updated the labels. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-06-21 + Object property created in order to enable an accurate + representation of the split of a corporate body into two or more new corporate + bodies. + + + + + + + + + + + + Connects a subdivision to the Group it was a part of in the + past. + + was subdivision of + a été une subdivision de + era subdivisión de + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the labels. + + + + + 2023-09-08 + Object property added, along with its inverse property, in + order to enable to express past partitive relations between Groups (the current + partitive relations being also added, including a transitive one). + + + + + + + + + + + Connects a past Event to the broader Event of which it was a + part. + + was subevent of + a été un événement constitutif de l'événement + era parte de evento de + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the labels. + + + + + 2023-09-08 + Object property added, along with its inverse property, in + order to enable to express partitive relations between past Events (the partitive + relations between ongoing events being also added, including a transitive + one). + + + + + + + + + + Connects an Agent to an Agent that was hierarchically superior in + the past. + + was subordinate to + a été subalterne de + estaba subordinado(a) a + + + 2023-11-27 + Added a new rdfs:label in Spanish. + + + + + 2023-11-12 + Updated the labels. + + + + + 2023-09-08 + Object property added, along with its inverse property, in + order to enable to express past subordination relations between Agents (the current + subordination relations being also added, including a transitive one). + + + + + + + + + + Connects an Appellation to the Date from which it was + used. + + was used from date + a été utilisé à partir de la date + fue usado desde + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-10-19 + Made this property subPropertyOf hasBeginningDate. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + + + + + + Connects an Appellation to the Date till when it was + used. + + was used to date + a été utilisé jusqu’à la date + fue usado hasta + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-10-19 + Made this property subPropertyOf hasEndDate. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + + + + + + + + Connects a WholePartRelation to itself. It is a reflexive + property, that can stand for an instance of the class when necessary, e.g. when you explore + a knowledge graph. + + has the role of the Whole Part Relation + a le rôle de la Relation partitive + desempeña el papel de la Relación entre todo y parte + + + 2023-11-08 + In order to get a system of rolified Relation classes: created + the object property, with domain and range the WholePartRelation rolified class. + Declared it as reflexive. Declared it(s) superproperty(ies). + + + This property "rolifies" the WholePartRelation class. It should + be used only when you have to manage instances of the WholePartRelation class, to connect + each instance to itself, in order to be able to infer, using OWL-RL and property paths, the + two shortcuts corresponding to this n-ary class. + + + + + + + + Connects a WorkRelation to itself. It is a reflexive property, + that can stand for an instance of the class when necessary, e.g. when you explore a + knowledge graph. + + has the role of the Work Relation + a le rôle de la Relation de travail + desempeña el papel de la Relación profesional + + + 2023-11-08 + In order to get a system of rolified Relation classes: created + the object property, with domain and range the WorkRelation rolified class. Declared + it as reflexive. Declared it(s) superproperty(ies). + + + This property "rolifies" the WorkRelation class. It should be + used only when you have to manage instances of the WorkRelation class, to connect each + instance to itself, in order to be able to infer, using OWL-RL and property paths, the two + shortcuts corresponding to this n-ary class. + + + + + + + Information on the anticipated accession(s) to the Record + Set. + + accruals + accroissements + ingresos + + + 2023-11-11 + Aligned with RiC-CM 1.0: updated the IRI, mapping to RiC-CM + (rico:RiCCMCorrespondingComponent), labels, skos:scopeNote, examples + (skos:example). + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Accruing - there is an agreement with the creator that additional + snapshots of their email directory will be accessioned at yearly intervals + Non-accruing + Unknown + See also accrualsStatus + corresponds to RiC-A01 (Accruals + attribute) + + + + + + Information on the status of possible accruals + + accruals status + statut des accroissements + estado de los ingresos + + + 2023-11-11 + Aligned with RiC-CM 1.0: updated the IRI, mapping to RiC-CM + (rico:RiCCMCorrespondingComponent), labels, description (rdfs:comment), + skos:scopeNote. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2020-11-01 + scope note : updated. Objective: to make RiC-O compliant with + RiC-CM v0.2. + + + A text statement or single words such as “Closed” to indicate + that no additional Record Resource will (or is anticipated to) be added to the Record Set; + “Open” to indicate that additional records or record sets will (or are expected to) be + added to the Record Set; or “Unknown” to indicate that this information is not available, + for example. See also accruals + specialization of RiC-A01 (Accruals + attribute) + + + + + + + Reference system used for altitude + + altimetric system + système altimétrique + sistema altimétrico + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + + + + + The height of a Place above a reference level, especially above + sea level. + + altitude + altitude + altitud + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Property of the Coordinates class. If you don't use this class, + use geographicalCoordinates property, a property of Place class. + + + + + + + + + + + + + Description of the evidence that a Record Resource or + Instantiation is what it purports to be, was created or sent by the said Agent at the said + time, and has not been tampered with, corrupted, or forged. + + authenticity note + note sur l’authenticité + nota de autenticidad + + + 2023-11-11 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment), skos:scopeNote, examples (skos:example). + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2020-11-01 + examples added. Objective: to make RiC-O compliant with RiC-CM + v0.2. + + + The letter is unsigned. + The deed is digitally signed by the Notary. The electronic + signature validity cannot be assessed, but the content was not modified from the moment of + signing. + The timestamp exists but cannot be verified. + The record bears signatures. + May be used in a Record Set description when its value is shared + by some or all members of the Record Set. For digital records, it may include results from + automated means of checking the validity of signatures and timestamp. In particular cases + it may be contextually related to the state attribute, for example, a document can be an + original or a copy, either of which can be authentic or a forgery. + Corresponds to RiC-A03 (Authenticity Note + attribute) + + + + + + + Information on a Mandate that authorizes an Agent to perform an + Activity. + + authorizing mandate + mandat + norma de control + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Provided for usability reasons. May be deprecated and removed + later on. Use only if you don't use the Mandate class for handling + mandates. + + + + + + + Date at which something began. + + beginning date + date de début + fecha de inicio + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Provided for usability reasons. May be deprecated and removed + later on. Use only if you don't use Date classes for handling dates. + Datatype property specialized implementation of + RiC-E18 (Date entity) + + + + + + + Date at which a Person was born. + + birth date + date de naissance + fecha de nacimiento + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Provided for usability reasons. May be deprecated and removed + later on. Use only if you don't use Date classes for handling dates. + Datatype property specialized implementation of + RiC-E18 (Date entity) + + + + + + + Number of physical units and/or physical dimensions of the carrier + of an Instantiation. In order to manage an Instantiation of a record resource it is + necessary to note the extent of the carrier as well as that of the Instantiation itself. + Whether it is necessary to note dimensions, the number of relevant units, or both, depends + on the nature of the carrier and particular business needs. + + carrier extent + mesure du support + extensión del soporte + + + 2023-11-11 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment), skos:scopeNote, examples (skos:example). + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2020-11-01 + Text definition and scope note updated. Examples added. + Objective: to make RiC-O compliant with RiC-CM v0.2. + + + 1 page + 32.5 x 49 cm (piece of parchment) + 3 GB (1 USB key) + For digital resources, it may be used to indicate the size of + storage capacity (disk, tape, film, etc.). Carrier extent should not be confused with + instantiation extent or record resource extent. For a given Record Resource, the + instantiation extent may vary, based on format, density of information on the carrier, etc. + For example, a CD with a storage capacity of 700 MB (carrier extent) might hold a record of + 1500 words (record resource extent) represented in two versions, one a Word document with + an instantiation extent of 3 KB and the other a PDF file with an instantiation extent of 5 + KB. + Corresponds to RiC-A04 (Carrier Extent + attribute) + + + + + + A term, number or alphanumeric string that is usually taken from + an external classification vocabulary or scheme that qualifies a Record Resource. + + classification + classification + clasificación + + + 2023-11-11 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment), skos:scopeNote, examples (skos:example). + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2020-11-01 + Text definition and scope note updated. Examples added. + Objective: to make RiC-O compliant with RiC-CM v0.2. + + + BUD-01-F002 (classification number from a corporate file + plan) + human resource management + student registration + financial affairs + digitized items + May be used in a Record Set description when its value is shared + by some or all members of the record set. This datatype property is not to be confused with + Identifier although, in some cases, the information may be the same. + Corresponds to RiC-A07 (Classification + attribute) + + + + + + + + + + + + + Terms and circumstances affecting the availability of a Record + Resource or an Instantiation for consultation. + + conditions of access + conditions d’accès + condiciones de acceso + + + 2023-11-11 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment), skos:scopeNote, examples (skos:example). + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2020-11-01 + Text definition and scope note updated. Examples added. + Objective: to make RiC-O compliant with RiC-CM v0.2. + + + Open + Closed under data protection legislation + Closed as awaiting conservation treatment + Acceso libre a través de los terminales de consulta + The Archives cannot provide VHS reader to access the content of + the tape + Recognita software, min. version 3.0, is needed in order to open + the file + Closed for 30 years + May be used in a Record Set description when its value is shared + by some or all members of the Record Set. The attribute provides information about the + accessibility of a Record Resource, as well as the physical, technical or legal limitations + that exist for providing access to it. + Corresponds to RiC-A08 (Conditions of Access + attribute) + + + + + + + + + + + + + Terms and circumstances affecting the use of a Record Resource or + an Instantiation after access has been provided. Includes conditions governing reproduction + of the Record Resource under applicable copyright (intellectual property) and/or property + legislation or due to conservation status. + + conditions of use + conditions d’utilisation + condiciones de uso + + + 2023-11-11 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment), skos:scopeNote, examples (skos:example). + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2020-11-01 + Text definition updated. Examples added. Objective: to make + RiC-O compliant with RiC-CM v0.2. + + + Permission of the copyright owner must be obtained before + use + Cannot be copied using warm light copying machines or photographed + using flashlight + May be used in a Record Set description when its value is shared + by some or all members of the Record Set. + Corresponds to RiC-A09 (Conditions of Use + attribute) + + + + + + + Date at which an entity was created. + + creation date + date de création + fecha de creación + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Provided for usability reasons. May be deprecated and removed + later on. Use only if you don't use Date classes for handling dates. + Datatype property specialized implementation of + RiC-E18 (Date entity) + + + + + + Chronological information associated with an entity that + contributes to its identification and contextualization. + + date + date + fecha + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Provided for usability reasons, like its subproperties. May be + deprecated and removed later on. Use only if you don't use Date classes for handling + dates. + Datatype property implementation of RiC-E18 (Date + entity) + + + + + + A human readable qualification of a Date to indicate the level of + precision or certainty. + + date qualifier + qualificatif de la date + calificador de fecha + + + 2023-11-11 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment), skos:scopeNote. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-10-10 + Updated the rdfs:comment, skos:scopeNote and examples, in order + to make this datatype property fully compliant with RiC-CM 1.0 + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2020-11-01 + examples added. Objective: to make RiC-O compliant with RiC-CM + v0.2. + + + approximate + circa + end unknown + Most often, this human readable expression of the accuracy of + the date is used along with an ISO 8601 representation of the date. The qualifier can also + be expressed as a machine-readable value, using the EDTF standard (thus, a specialization + of the normalizedDateValue datatype property). + Corresponds to RiC-A13 (Date Qualifier + attribute) + + + + + + + Date at which a Person died. + + death date + date de décès + fecha de muerte + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Provided for usability reasons. May be deprecated and removed + later on. Use only if you don't use Date classes for handling dates. + Datatype property specialized implementation of + RiC-E18 (Date entity) + + + + + + General information about an entity. General description may be + used to describe any entity. There are different appropriate uses for general description. + First, while it is recommended that more specific properties be used in describing an + entity, it may be desirable, for economic or other reasons, to describe two or more + specific properties together. Second, general description may be used to describe one or + more characteristics that are not otherwise accommodated in RiC-O. Third, it may be used to + provide a succinct summary or abstract description in addition to more detailed specific + description. + + general description + description générale + descripción general + + + 2023-11-11 + Aligned with RiC-CM 1.0: updated the IRI, mapping to RiC-CM + (rico:RiCCMCorrespondingComponent), labels, description (rdfs:comment), examples + (skos:example). + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Le massif du Mont-Blanc est un massif des Alpes partagé entre la + France, l'Italie et la Suisse. Il abrite le mont Blanc, plus haut sommet d'Europe + occidentale qui culmine à 4 809 mètres (altitude relevée en 2015). Il est traversé par le + tunnel du Mont-Blanc, entre Chamonix dans la vallée de l'Arve et Courmayeur dans la vallée + d'Aoste. + Thomas Blaikie (1750-1838) est un botaniste et jardinier écossais. + Il a dessiné notamment les jardins de Malmaison et Bagatelle. + The Senate is the academic governing body of the University of + Strathclyde and is responsible for all academic matters including academic standards and + quality. Meetings of the Senate are chaired by the Principal and the membership is drawn + entirely from within the University, comprising academic and research staff. (about a + corporate body, University of Strathclyde Senate) + This activity involves regulating the nursing profession by + conducting examinations and on-going education for nurses, maintaining rolls of those + qualified as enrolled or registered nurses, midwives, psychiatric, and other specialised + nurses. It also covers hearing disciplinary charges against nurses (and where necessary, + removing them temporarily or permanently from the registers), as well as promoting the + nursing profession. (about an activity, Nursing Profession Regulation) + Corresponds to RiC-A43 (General Description + attribute) + + + + + + + Date at which an entity was deleted. + + destruction date + date de destruction + fecha de destrucción + + + 2023-11-12 + Added a new rdfs:label in Spanish. + + + + + 2023-10-12 + Renamed deletion into destruction. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Provided for usability reasons. May be deprecated and removed + later on. Use only if you don't use Date classes for handling dates. + Datatype property specialized implementation of + RiC-E18 (Date entity) + + + + + + + Date at which something ended. + + end date + date de fin + fecha final + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Provided for usability reasons. May be deprecated and removed + later on. Use only if you don't use Date classes for handling dates. + Datatype property specialized implementation of + RiC-E18 (Date entity) + + + + + + + + Natural language expression of a date. This property is a + specialization of the name property. In order that the precise meaning of the date can be + understood, information such as the calendar used or other specific context should be + included. + + expressed date + date en langage naturel + fecha expresada + + + 2023-11-11 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment), examples (skos:example). + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-10-10 + Updated the rdfs:comment and skos:examples in order to make + this property fully compliant with RiC-CM 1.0. Made it a subproperty of + rico:name. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2020-11-01 + examples added. Objective: to make RiC-O compliant with RiC-CM + v0.2. + + + October 24, 1999 (month day, year) + 1925-1966 (date range) + 15 thermidor an IV (calendrier révolutionnaire + français) + 8 avril 1258 (a. st., style de Pâques) + XVIIe siècle + The Middle Ages + Die jovis ultima mensis martii anno domini millesimo quingentesimo + quadragesimo ante Pascha + 1550-1553, 1555 (date range) + One of the years 1550, 1551, 1553, 1555 + All of the years 1550, 1551, 1553, 1555 + The second semester of 1951 to 1952 (academic reference + system) + Corresponds to RiC-A19 (Expressed Date + attribute) + + + + + + + Reference system used for geographical coordinates. + + geodesic system + système géodésique + sistema geodésico + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + + + + Longitudinal and latitudinal information about a Place. + + geographical coordinates + coordonnées géographiques + coordenadas geográficas + + + 2023-11-11 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment), examples (skos:example). + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2020-11-01 + Text definition and scope note updated. Examples added. + Objective: to make RiC-O compliant with RiC-CM v0.2. + + + Latitude 50°40′46,461″N, Longitude 95°48′26,533″W, Height 123,45m + (ISO 6709/D) + Latitude 35.89421911, Longitude 139.94637467 (ISO + 6709/F) + Provided for usability reasons. May be deprecated and removed + later on. Use only if you don't use PhysicalLocation and Coordinates classes with Place. + Coordinates may be based on ISO 6709 Standard representation of geographic point location + by coordinates. + Corresponds to RiC-A11 (Coordinates + attribute) + + + + + + + Vertical dimension of an entity. + + height + hauteur + altura + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + + + + + + + + + + + + + + + Summary of the development of an entity throughout its + existence. + + history + histoire + historia + + + 2023-11-11 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment), skos:scopeNote, domain, examples (skos:example). + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2020-11-01 + Domains updated. Examples added. Objective: to make RiC-O + compliant with RiC-CM v0.2. + + + The manuscripts are part of the collections of Robert Harley (d + 1724) and Edward Harley (d 1741), 1st and 2nd Earls of Oxford, that were brought by + Parliament and transferred to the British Museum in 1753. Those materials were then + separated into this collection and those for Harley Charters and Harley Rolls and became + part of the collections of the British Library in 1972. (about a Record Set) + Nacido en Barbastro en 1892, donde realizó sus primeros estudios + con los escolapios. Licenciado en Derecho por la Universidad de Zaragoza, aprobó las + oposiciones al cuerpo nacional de notarios… (sobre una persona) + El primer sorteo de lotería se celebró el 13 de mayo de 1771, + siendo desarrollado por la Real Lotería General de Nueva España… (sobre una + actividad) + For a record set, may be used to summarize the history of the + Record Set itself, or additionally to summarize the history of some or all members of the + Record Set. Should not be confused with the scope and content property. + Corresponds to RiC-A21 (History + attribute) + + + + + + A word, number, letter, symbol, or any combination of these used + to uniquely identify or reference an individual instance of an entity within a specific + information domain. Can include Global Persistent Identifiers (globally unique and + persistently resolvable identifier for the entity) and/or Local Identifiers. Both the + domain within which the identifier is unique, and the rules used in forming the identifier + value should be provided with the identifier value. + + identifier + identifiant + identificador + + + 2023-11-11 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment), skos:scopeNote, examples (skos:example). + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2020-11-01 + Text definition and scope note updated. Examples added. + Objective: to make RiC-O compliant with RiC-CM v0.2. + + + http://n2t.net/ark:/99166/w6v1266v (example of an Archival + Resource Key for a record) + http://n2t.net/ark:/99166/w6tz44ht (example of an Archival + Resource Key for a person) + http://isni.org/0000000073572182 (example of a persistent + International Standard Name Identifier for a person) + BUD-01-F002 (example of a classification number from a corporate + file plan) + NAS1/A/1.1 (example of a local identifier for a + record) + F 1204 (example of a local identifier for a record set assigned by + a repository) + B-000091 (example of a unique identifier for an instantiation + assigned by a repository) + Use only if you don't use Identifier class for handling + identifiers. Within a given domain (a closed system), identifiers are used to uniquely + reference instances of an entity. Identifiers are instruments of control that facilitate + management of the entities within the domain. The formulation of identifiers commonly is + based on rules. In addition to an identifier needing to be unique within a domain, it is + also highly desirable that it be persistent, that is, that the identifier uniquely + identifies the entity over time. A variety of organizations provide rules for the formation + of identifiers, and services designed to facilitate the persistence of identifiers. Such + identifiers are commonly referred to as Persistent Identifiers (or PIDs). PIDs conform to + RFC 3986, but impose additional rules. Common examples are Archival Resource Keys (ARKs) + and Digital Object Identifiers (DOIs). Within the global environment of the Internet, there + are special rules for the formation of identifiers to ensure that they are unique within + the domain of the Internet. Such identifiers must conform to the Internet Engineering Task + Force (IETF) Uniform Resource Identifier rules (RFC 3986). + Corresponds to RiC-A22 (Identifier + attribute) + + + + + + + Countable characteristics of an Instantiation expressed as a + quantity. + + Instantiation extent + mesure de l’instanciation + soporte de instanciación + + + 2023-11-11 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment), skos:scopeNote, examples (skos:example). + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2020-11-01 + Scope note updated. Examples added. Objective: to make RiC-O + compliant with RiC-CM v0.2. + + + The register has 345 written folios + Size of PDF file: 1.5 MB + 234 linear metres + Instantiation extent should not be confused with record resource + extent or carrier extent. For a given Record Resource, the instantiation extent may vary, + based on format, density of information on the carrier, etc. For example, a CD with a + storage capacity of 700 MB (carrier extent) might hold a record of 1500 words (record + resource extent) represented in two versions, one a Word document with an instantiation + extent of 3 KB and the other a PDF file with an instantiation extent of 5 + KB. + Corresponds to RiC-A23 (Instantiation Extent + attribute) + + + + + + + Information about the physical arrangement and composition of an + Instantiation. + + Instantiation structure + structure de l’instanciation + estructura de la instanciación + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2020-11-01 + Text definition fixed. Objective: to make RiC-O compliant with + RiC-CM v0.2. + + + Specialization of RiC-A40 (Structure + attribute) + + + + + + Information about the known intellectual completeness of a Record + Resource. + + integrity note + note sur l'intégrité + nota de integridad + + + 2023-11-11 + Aligned with RiC-CM 1.0: updated the IRI, mapping to RiC-CM + (rico:RiCCMCorrespondingComponent), labels, description (rdfs:comment), + skos:scopeNote, domain, examples (skos:example). + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2020-11-01 + Scope note and examples added. Objective: to make RiC-O + compliant with RiC-CM v0.2. + + + For record set: series of letters, one is missing so the integrity + is compromised. + A web page (HTML, 15 images, 2 CSS, 1 javascript), with 5 images + missing. + Part of the text is missing (because a corner on the instantiation + was cut out, which is a physical characteristic). See also the examples of + physicalCharacteristics. + Line three of a hand-written letter was cut out and a replacement + text was inserted by an unknown person. + May be used in a Record Set description when its value is shared + by some or all members of the Record Set. The information about integrity may be generated + manually or automatically. Not to be confused with the physical completeness of the + instantiation, which is covered by the physical characteristics note attribute. The + integrity of a Record Resource and the physical characteristics note of an Instantiation + may be complementary. This attribute also covers any additions to or removal of original + information. + Corresponds to RiC-A24 (Integrity Note + attribute) + + + + + + + Date at which an entity was last updated. + + last modification date + date de dernière modification + fecha de última modificación + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Provided for usability reasons. May be deprecated and removed + later on. Use only if you don't use Date classes for handling dates. + Datatype property specialized implementation of + RiC-E18 (Date entity) + + + + + + + Distance in degrees north or south of the equator. + + latitude + latitude + latitud + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Property of the Coordinates class. If you don't use this class, + use geographicalCoordinates property, a property of Place class. + + + + + + + Length of an entity. + + length + longueur + longitud + + + 2023-11-12 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added for enabling to describe entities that have such a + dimension. + + + May be used, among other cases, for storing the length of some + places like streets. + + + + + + A delimitation of the physical territory of a Place. Used to + describe basic human-readable text such as an address, a cadastral reference, or less + precise information found in a Record. + + location + localisation + localización + + + 2023-11-11 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment), skos:scopeNote, examples (skos:example). + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2020-11-01 + Text definition and scope note updated. Examples added. + Objective: to make RiC-O compliant with RiC-CM v0.2. + + + 25 rue Saint-Denis à Paris + Montreal (city in Canada) + Use only if you don't use PhysicalLocation class with Place. Use + the geographicalCoordinates property, or the Coordinates class, to record the geographical + coordinates of the Place. Use the spatial relations (particularly 'has or had location') to + capture a relation between two places. + Corresponds to RiC-A27 (Location + attribute) + + + + + + + Distance in degrees east or west of a prime + meridian. + + longitude + longitude + longitud + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Property of the Coordinates class. If you don't use this class, + use geographicalCoordinates property, a property of Place class. + + + + + + The extent, quantity, amount, or degree of an entity, as + determined by measurement or calculation. + + measure + mesure + medida + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + + + + + Date of the modification of an entity. + + modification date + date de modification + fecha de modificación + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Provided for usability reasons. May be deprecated and removed + later on. Use only if you don't use Date classes for handling dates. + Datatype property specialized implementation of + RiC-E18 (Date entity) + + + + + + A label, title or term designating an entity in order to make it + distinguishable from other similar entities. + + name + nom + nombre + + + 2023-11-11 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment), skos:scopeNote, examples (skos:example). + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2020-11-01 + Text definition updated. Examples added. Objective: to make + RiC-O compliant with RiC-CM v0.2. + + + The Letter of Neacsu from Campulung to the Mayor of Brasov (about + a Record) + Digital copy of the Pomarius archival inventory from 1575 (about + an Instantiation) + D-Day (about a Date or Event) + Halloween 2016 (about a Date) + Fundraising, University of Glasgow (about an + Activity) + Providing hearing services (about an Activity) + Nelson Mandela (about a Person) + Papers of the Earls of Liverpool (about a Record + Set) + Paris (about a Place) + Prime Minister (about a Position) + Sketch Map of the Qatar Peninsula (about a Record) + Use only if you don't use Name class for handling names. + Provides brief information about the content or other individual characteristics of the + entity being described, necessary to distinguish it from other perhaps similar + entities. + Corrresponds to RiC-A28 (Name + attribute) + + + + + + + Machine readable representation of the date based on a public + technical standard. + + normalized date value + valeur normalisée de la date + valor normalizado de fecha + + + 2023-11-11 + Aligned with RiC-CM 1.0: updated the examples + (skos:example). + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-10-10 + Updated the rdfs:comment and examples, and added a scopeNote, + in order to make this property fully compliant with RiC-CM 1.0. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2020-11-01 + Examples added. Objective: to make RiC-O compliant with RiC-CM + v0.2. + + + 2012-02-14/2015-03-08 (an ISO 8601 form of a date + range) + 2012/2015-03 (an ISO 8601 form of a date range) + 1948-03 (an ISO 8601 form of a single date) + 1948-03-08 (an ISO 8601 form of a single date) + 1948-03~ (a single date in ETDF, meaning March 1948 + approximately) + 1948/.. (an open date range in EDTF, starting in + 1948) + 1948/ (a date range in EDTF, starting in 1948, end + unknown) + 1550,1551,1553,1555 (a date set in EDTF, meaning one of the years + 1550, 1151, 1553, 1555) + {1550,1151,1553,1555} (a date set in EDTF, meaning all of the + years 1550, 1151, 1553, 1555) + {1805,1815..1820} (a date set in EDTF, meaning all of the years + 1805, 1815, 1816, 1817, 1818, 1819, 1820) + Used to represent the date in a standardized format that can be + processed programmatically. The main standard used today is ISO 8601, which is based on the + Gregorian calendar. See also the Extended Date Time Format (EDTF), which is an extension of + ISO 8601, and enables, among other features, to represent a date set, and to indicate the + date is approximate. + Corresponds to RiC-A29 (Normalized Date + attribute) + + + + + + + + + + + + + + Value representation based on a standard, preferably + machine-readable. + + normalized value + valeur normalisée + valor normalizado + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + + + + Information about the physical features, completeness, or + conservation status of an Instantiation. Includes information about the physical nature and + condition such as conservation status or the deterioration of an Instantiation (for example + its carrier) affecting the ability to recover information. + + physical characteristics note + note sur les caractéristiques physiques + nota sobre las características físicas + + + 2023-11-11 + Aligned with RiC-CM 1.0: updated the IRI, mapping to RiC-CM + (rico:RiCCMCorrespondingComponent), labels, description (rdfs:comment), + skos:scopeNote, examples (skos:example). + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2020-11-01 + Text definition updated. Examples added. Objective: to make + RiC-O compliant with RiC-CM v0.2. + + + carrier heavily foxed + some loss of text due to rodent damage + The charter is missing the seal. + Letter physical characteristics: corner without text missing – the + carrier is damaged, but no information of the content is missing + British Library binding + Watermarked + A web page (HTML, 15 images, 2 CSS, 1 JavaScript), with 1 CSS + missing. + For carrier: hard drives on which the author wrote physically + (using a pen). + Digital file format: JPEG-2000 + Not to be confused with the intellectual completeness of a + Record Resource and its sub-entities, which is covered by the Integrity attribute. May + include digital file fixity. + Corresponds to RiC-A31 (Physical + Characteristics Note attribute) + + + + + + + + + + + + + Countable characteristics of the content of an entity expressed as + a quantity. + + physical or logical extent + importance physique ou logique + soporte físico o lógico + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Provided for usability reasons. Use only if you cannot use the + subproperties (particularly if the same free text is being used in your current metadata + for describing the record resource, carrier and instantiation extent). + + + + + + The method used in the representation of information on an + Instantiation. + + production technique + technique de production + técnica de produccióon + + + 2023-11-11 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment). + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2020-11-01 + Examples added. Objective: to make RiC-O compliant with RiC-CM + v0.2. + + + engraving + handwriting + magnetic recording + optical recording + Use only if you have free text or don't have a controlled + vocabulary for production techniques (in this case, use the ProductionTechniqueType + class) + Corresponds to RiC-A33 (Production Technique + attribute) + + + + + + + Date of the publication of a Record Resource. + + publication date + date de publication + fecha de publicación + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Provided for usability reasons. May be deprecated and removed + later on. Use only if you don't use Date classes for handling dates. + Datatype property specialized implementation of + RiC-E18 (Date entity) + + + + + + + Characteristics of an Instantiation that affect the ability to + recover the intellectual content. Such characteristics may be related to the methods used + in creating the Instantiation or introduced subsequent to the creation through + accident. + + quality of representation note + note sur la qualité de la représentation + nota sobre la calidad de representación + + + 2023-11-11 + Aligned with RiC-CM 1.0: updated the IRI, mapping to RiC-CM + (rico:RiCCMCorrespondingComponent), labels, description (rdfs:comment), + skos:scopeNote, rdfs:subpropertyOf. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2020-11-01 + Text definition updated. Examples added. Objective: to make + RiC-O compliant with RiC-CM v0.2. + + + Black and white digitization may have led to loss of some + information. + some loss of information due to poor quality of image + capture + some loss of text due to rodent damage + Quality of representation note is a specialization of physical + characteristics note. Quality of representation note should be used in conjunction with + physical characteristics note when the physical characteristics impact the ability to + recover the intellectual content. + Corresponds to RiC-A34 (Quality of + Representation Note attribute) + + + + + + + Machine-readable quantity. + + quantity + quantité + cantidad + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added an xml:lang attribute to the rdfs:comment. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2020-11-21 + Added a scope note. + + + + + 2020-10-28 + Datatype property created along with unitOfMeasurement, Extent + and UnitOfMeasurement classes, in order to provide methods for handling extent + accurately. + + + Use if you use the Extent class and its properties for handling + an accurate description of the extent of a resource.. + + + + + + + The quantity of information content, as human experienced, + contained in a Record Resource. The method and precision of expressing the quantity of + information represented in a Record Resource will vary according to the kind of Record + Resource being described, processing economy constraints, etc. For record sets, quantity + may be expressed as number of records, or, for analogue records in particular, by the + physical storage dimensions of the members of the Record Set. For individual records or + record parts, quantity may be expressed in more precise terms. + + Record Resource extent + mesure de la ressource archivistique + soporte de recurso documental + + + 2023-11-11 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment), skos:scopeNote, examples (skos:example). + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2020-11-21 + Updated the scope note, as a RecordResourceExtent class has + been created. + + + + + 2020-11-01 + Text definition and scope note updated. Examples added. + Objective: to make RiC-O compliant with RiC-CM v0.2. + + + 3 minutes and 24 seconds + 6 maps + 6 photographs + 2 films + 1,500 words + 2.065.735 characters + Use if you don't use RecordResourceExtent class and its + properties for handling such information. Record resource extent should not be confused + with instantiation extent or carrier extent. The number, size or duration of the + information content unit(s) remains the same even if the information is instantiated in + various carriers. For example, a CD with a storage capacity of 700 MB (carrier extent) + might hold a record of 1,500 words (record resource extent) represented in two versions, + one a Word document with an instantiation extent of 3 KB and the other a PDF file with an + instantiation extent of 5 KB. + Corresponds to RiC-A35 (Record Resource extent + attribute) + + + + + + + Information about the intellectual arrangement and composition of + a Record Resource. For Record and Record Part, it encompasses information about the + intellectual composition of the record, the presence of record parts and their functions. + For Record Set, it encompasses information about the methodology or criteria used for + arranging the Record Set members or Record members within the containing Record + Set + + Record Resource structure + structure de la ressource archivistique + estructura de recurso documental + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2020-11-01 + Text definition updated. Examples added. Objective: to make + RiC-O compliant with RiC-CM v0.2. + + + Inside each file, the records are arranged + chronologically. + The database has 3 related tables: names, addresses, and passport + numbers. + The record has 2 appendixes, comprising a full account of the + income from car taxes and real estate taxes. + The series have the files arranged according to the alphabetical + order of the places concerned. + Specialization of RiC-A40 (Structure + attribute) + + + + + + Framework or standard used to represent an + information. + + reference system + système de référence + sistema de referencia + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + + + + Qualifies the level of certitude of the accuracy of a + Relation. + + relation certainty + degré de certitude de la relation + certeza de la relación + + + 2023-12-27 + Renamed the datatype property (was 'certainty') and reduced its + domain to Relation (the dmain was the union of Event and Relation). Consequently + updated the labels. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-10-14 + Reintroduced this datatype property, with the definition + assigned to it in RiC-CM 1.0, apart from its domain that also includes + Event. + + + certain + uncertain + unknown + Corresponds to RiC-RA01 (Certainty of Relation + attribute) + + + + + + A source of information used for identifying and describing a + Relation. + + relation source + source de la relation + fuente de la relación + + + 2023-12-27 + Renamed the datatype property (was 'source') and reduced its + domain to Relation (the domain was the union of Record Resource and Relation). + Consequently updated the rdfs:comment, labels and scope note. Added a + rico:RiCCMCorrespondingComponent annotation. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Use only if you don't use the 'isEvidencedBy' object + property. + Corresponds to RiC-RA05 (Source of Relation + attribute). + + + + + + Used to qualify the state of a Relation (e. g. present, past, + ongoing, unknown). + + relation state + statut de la relation + estado de la relación + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + + + + The rule or conditions that govern the existence or lifecycle of a + Thing. + + rule followed + règle suivie + regla aplicada + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Provided for usability reasons. May be deprecated and removed + later on. Use only if you don't use the Rule class for handling rules. + + + + + + + Summary of the scope (such as time periods, geography) and content + (such as subject matter, administrative processes) of a Record Resource. Provides a more + complete summary of the informational content of the Record Resource highlighting the + information conveyed in the Record Resource, why it was created, received, and/or + maintained, and the agents connected to it. It may include description of relations with + agents, activities, dates and places, or with other record resources. + + scope and content + portée et contenu + alcance y contenido + + + 2023-11-11 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment), skos:scopeNote, rdfs:subpropertyOf, examples + (skos:example). + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2020-11-01 + Text definition updated. Examples added. Objective: to make + RiC-O compliant with RiC-CM v0.2. + + + Includes a detailed list of the lands and villages given by the + King to the Abbey. + Among the witnesses, the Duke of Normandy. + The author explains why he does not agree with the decision made + and adds that it cannot be applied. + Letter from Vlad the Impaler (Dracula) to the Council of Kronstadt + asking them to send military support against the Ottomans, within the framework of their + alliance treaty. + Se hace referencia a construcción del Gran Hotel, iniciada en 1899 + bajo el nombre de Casa Celestino. Tras su interrupción en 1902, continuó la obra ya con su + nombre actual. + Scope and content is a specialization of general description. + For a Record Set, may be used to summarize the scope and content of the Record Set itself, + or additionally to summarize the scope and content of some or all members of the Record + Set. It is not to be confused with the history dataytpe property which focuses on the + origination and subsequent changes to a Record Resource. + Corresponds to RiC-A38 (Scope and Content + attribute) + + + + + + + + + + + + + Information about the intellectual arrangement and composition of + a Record Resource or the physical arrangement and composition of an Instantiation. For + Record and Record Part, it encompasses information about the intellectual composition of + the record, the presence of record parts and their functions. For Record Set, it + encompasses information about the methodology or criteria used for arranging the Record Set + members or Record members within the containing Record Set. For Instantiation, it may + comprise information about the composition of the physical elements of the + instantiation + + structure + structure + estructura + + + 2023-11-11 + Aligned with RiC-CM 1.0: updated the skos:scopeNote, examples + (skos:example). + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2020-11-01 + Text definition updated. Objective: to make RiC-O compliant + with RiC-CM v0.2. + + + The record has two appendices, comprising a full account of the + income from car taxes and real estate taxes + The series have the files arranged according to the alphabetical + order of the places concerned + Inside each file, the records are arranged chronologically (about + a record set) + The database has three related tables: names, addresses, and + passport numbers (about a record) + Use only if you cannot use the subproperties (particularly if + the same free text is being used in your current metadata for describing the record + resource and the instantiation structure). For a Record Set, may be used to summarize the + structure of the Record Set itself, or additionally to summarize the structure of some or + all members of the Record Set. Should not be confused with the classification datatype + property, which provides information about the category which the Record Set belongs to + within a classification scheme. + Corresponds to RiC-A40 (Structure + attribute) + + + + + + Describes any relevant physical or software feature of any device + involved in the creation or management of a Record Resource. + + technical characteristics + caractéristiques techniques + características técnicas + + + 2023-11-11 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment), skos:scopeNote. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2020-11-01 + Scope note and examples added. Objective: to make RiC-O + compliant with RiC-CM v0.2. + + + Hubble Space Telescope had until 2002 a flawed mirror that + introduced severe spherical aberration for the images. + Does not include references to the workflow that the Mechanism + is involved in, which is described under the Activity entity. It emphasizes those features + that provide a better understanding of the impact of the Mechanism on the + records. + Corresponds to RiC-A41 (Technical Characteristics + attribute) + + + + + + + + + + + + + + A textual expression of an Appellation or Date. + + textual value + valeur textuelle + valor textual + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + + + + + + + + + + + + + An identifying name of a Record Resource, Instantiation or + Rule. + + title + intitulé + título + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Use only if you don't use Title class for handling + titles. + Specialization of RiC-A28 (Name + attribute) + + + + + + A term used to characterize an entity. + + type + type + tipo + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Provided for usability reasons. May be deprecated and removed + later on. Use only if you don't use Type subclasses for handling + categories. + + + + + + A definite magnitude of a quantity, defined and adopted by + convention or by law, that is used as a standard for measurement of the same kind of + quantity. Can be spacial units (cm, m), weight (g, kg), time (s, h), storage (MB, TB) or + more informal units used in the archival context like number of boxes, pages or + words. + + unit of measurement + unité de mesure + unidad de medida + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added an xml:lang attribute to the rdfs:comment. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2020-11-21 + Added a scope note. + + + + + 2020-10-28 + Datatype property created along with quantity, Extent and + UnitOfMeasurement classes, in order to provide methods for handling extent + accurately. + + + Use if you do not use the UnitOfMeasurement class for handling + units of measurement along with Extent. + + + + + + + Date at which an Appellation was first used. + + used from date + utilisé à partir de + usado desde la fecha + + + 2023-11-12 + Made this property a subproperty of beginningDate. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Provided for usability reasons. May be deprecated and removed + later on. Use only if you don't use Date classes for handling dates. + Datatype property specialized implementation of + RiC-E18 (Date entity) + + + + + + + Date until an Appellation was used. + + used to date + utilisé jusqu’à + usado hasta la fecha + + + 2023-11-12 + Made this property a subproperty of endDate. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Provided for usability reasons. May be deprecated and removed + later on. Use only if you don't use Date classes for handling dates. + Datatype property specialized implementation of + RiC-E18 (Date entity) + + + + + + + Horizontal dimension of an entity. + + width + largeur + anchura + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + + + + + + + + + + + + + + + + + + true + + + + + + + 1 + + + + + + + + + + + + + + 1 + + + + Connects at least one Record Resource or Instantiation to at least + one Agent, when the Record Resource or Instantiation is or was accumulated by the Agent, be + it intentionally (collecting it) or not (receiving it in the course of its activities). The + Record Resource(s) or Instantiation(s) is the source of the Relation, and the Agent(s) is + the target. + + Accumulation Relation + Relation d’accumulation + Relación de acumulación + + + 2023-12-06 + Improved the description of the Relation class (rdfs:comment) + by clearly specifying how it is directed. + + + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment). + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: added an + equivalentClass object property; replaced the specific object properties by the + generic ones in the subClassOf declarations. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Class implementation of RiC-R028 and RiC-R028i + relations + + + + + The doing of something for some human purpose. + + Activity + Activité + Actividad + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2023-04-19 + Removed the 0.2 existing unnecessary restriction. + + + + + 2020-10-23 + Scope note: made separate paragraphs and updated. Objective: to + make RiC-O compliant with RiC-CM v0.2. + + + Activity is a kind of Event. Activity is specifically used to + designate purposeful human activity. Activity may be understood from two perspectives. + First it can be understood as leading to an end. The end is the purpose of the Activity, or + why the Activity is performed. Second, it can be understood in terms of the processes that + lead to achieving the end, how the end is realized through coordinated actions. Purpose and + process are complementary understandings of Activity. Together the two perspectives address + why the Activity is performed, the expected ends or outcomes; and how the Activity fulfills + the purpose. While activity has an intended end, it also has unintended consequences and + results, or side-effects. By and large, these may not be the focus of the description, but + they are, unquestionably, context. |In a corporate or government context an Activity may + also be called a 'function'. An Activity exists in a specific social and cultural context, + and within that context is subject to change over time. An Activity may be composed of + other Activities. + Corresponds to RiC-E15 (Activity + entity) + + + + + + + true + + + + + + + + 1 + + + + + + + + + + + + + + 1 + + + + Connects at least one Record Resource or Instantiation to at least + one Activity, when the Record Resource or Instantiation results from the Activity. The + Record Resource(s) or Instantiation(s) is the source of the Relation, and the + Activity(-ies) is the target. + + Activity Documentation Relation + Relation entre activités et ressources archivistiques + Relación de procedencia funcional + + + 2023-12-06 + Improved the description of the Relation class (rdfs:comment) + by clearly specifying how it is directed. + + + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the . + + + + + 2023-11-08 + Made this relation a subclass of EventRelation. + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: added an + equivalentClass object property; replaced the specific object properties by the + generic ones in the subClassOf declarations. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Class implementation of RiC-R033 and RiC-R033 + relations + + + + + Categorization of an Activity. + + Activity Type + Type d’activité + Tipo de actividad + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2023-04-19 + Removed the 0.2 existing unnecessary restriction. + + + + + 2020-10-23 + Scope note: updated (different from RiC-CM scope note). + Objective: to make RiC-O compliant with RiC-CM v0.2. + + + Can be extended with any number of subclasses, e.g. + “function/action” and “activity domain”. This allows for a faceted approach that enables an + Activity to be categorized using a combination of components, general or more specific. For + example, “monitoring” can be used in combination with “election polls” or “water + resources”. + Corresponds to RiC-A02 (Activity Type + attribute) + + + + + A Person, or Group, or an entity created by a Person or Group + (Mechanism), or a Position, that acts in the world. + + Agent + Agent + Agente + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2021-02-08 + removed the Restrictions + + + + + 2020-10-23 + Comment: updated. Scope note: updated and made several + paragraphs. Objective: to make RiC-O compliant with RiC-CM v0.2. + + + An Agent may have one or more identities; an identity is a + constellation of properties or relations that together “identify” the Agent. A Person or + Group commonly has one identity, though each also may have one or more alternative + identities. Such alternative identities may be shared by more than one Person or Group. + Alternative identities include but are not limited to pseudonyms, heteronyms, DBA (Doing + Business As), and trade identities. An alternative identity should not be confused with a + Position in a Group, for example, presidents, prime ministers, governors, popes, royalty, + or bishops. Nor should an alternative identity be confused with a variant name or + identifier of the same identity. Agent also includes entities created by a Person or Group + that act on behalf of the creating Agent in an autonomous or semi-autonomous manner. + Examples of a Mechanism include software agents, robots, and space and underwater probes + that generate data (records) in the course of Activity assigned to and in conformance with + the instructions given to them by the creating Person or Group. + Corresponds to RiC-E07 (Agent + entity) + + + + + + + true + + + + + + + + 1 + + + + + + + 1 + + + + Connects at least one Agent, to at least another Agent, when the + first one(s) control(s) or controlled in a way the activities of the second one(s). The + Relation is oriented from the controlling agent to the controlled one: the controlling + Agent(s) is the source of the Relation, and the controlled Agent(s) is the + target. + + Agent Control Relation + Relation de contrôle entre agents + Relación de control entre agentes + + + 2023-12-06 + Improved the description of the Relation class (rdfs:comment) + by clearly specifying how it is directed. + + + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment). + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: added an + equivalentClass object property; replaced the specific object properties by the + generic ones in the subClassOf declarations. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Class implementation of RiC-R041 and RiC-R041i + relations + + + + + + + true + + + + + + + 1 + + + + + + + 1 + + + + Connects at least one Agent to at least another Agent, when the + first one is or was hierarchically superior to the second one. The Relation is oriented + towards the 'bottom' of the hierarchical tree: the superior Agent(s) is the source of the + Relation, and the inferior Agent(s) is the target. + + Agent Hierarchical Relation + Relation hiérarchique entre agents + Relación jerárquica entre agentes + + + 2023-12-06 + Improved the description of the Relation class (rdfs:comment) + by clearly specifying how it is directed. + + + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment), skos:scopeNote. + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: added an + equivalentClass object property; replaced the specific object properties by the + generic ones in the subClassOf declarations. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + The hierarchical relation can be an authority relation, or a + whole/part relation between two agents. + Class implementation of RiC-R045 and RiC-R045i + relations + + + + + A label, title or term designating an Agent in order to make it + distinguishable from other similar entities. + + Agent Name + Nom d’agent + Nombre de Agente + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Class implementation of a specialization of RiC-A28 + (Name attribute) + + + + + + + true + + + + + + + + 1 + + + + + + + 1 + + + + Connects at least one Agent to at least another Agent that + succeeds it chronologically for, for instance, fullfilling some functions or performing + some activities. The Relation is oriented chronologically, from the predecessor to the + successor: the predecessor Agent(s) is the source of the Relation, and the successor + Agent(s) is the target. + + Agent Temporal Relation + Relation temporelle entre agents + Relación temporal entre agentes + + + 2023-12-06 + Improved the description of the Relation class (rdfs:comment) + by clearly specifying how it is directed. + + + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the + skos:scopeNote. + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: added an + equivalentClass object property; replaced the specific object properties by the + generic ones in the subClassOf declarations. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2023-04-19 + Removed the 0.2 existing unnecessary restriction. + + + There may be zero to many intermediate agents, ignored or + unknown, between the two connected agents. Can be used when there is a transfer of function + from the first agent to the second agent. + Class implementation of RiC-R016 and RiC-016i + relations + + + + + + + true + + + + + + + 2 + + + + Connects at least two Agents. This Relation is a generic, not + oriented one. + + Agent Relation + Relation entre agents + Relación entre agentes + + + 2023-12-06 + Improved the description of the Relation class (rdfs:comment) + by clearly specifying how it is directed. + + + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the + skos:scopeNote. + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: added an + equivalentClass object property; replaced the specific object properties by the + generic ones in the subClassOf declarations. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Use only if it is not possible to specify a narrower agent to + agent relation, for example a WorkRelation. + Class implementation of RiC-R044 and RiC-044i + relations + + + + + A concept of any kind that is used for designating an Entity and + referring to it. + + Appellation + Appellation + Denominación + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + + + + + true + + + + + + + 1 + + + + + + + 1 + + + + Connects an Appellation and at least one Thing that the + Appellation designates or designated. The Appellation is the source of the Relation and the + Thing(s) is the target. + + Appellation Relation + Relation d’appellation + Relación de denominación + + + 2023-12-06 + Improved the description of the Relation class (rdfs:comment) + by clearly specifying how it is directed. + + + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment). + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: added an + equivalentClass object property; replaced the specific object properties by the + generic ones in the subClassOf declarations. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + + + + + true + + + + + + + 1 + + + + + + + 1 + + + + Connects at least one Agent and at least one Thing over which the + Agent has or had some authority. The Agent(s) is the source of the relation, and the + Thing(s) is the target. + + Authority Relation + Relation d’autorité + Relación de control por parte de agentes + + + 2023-12-06 + Improved the description of the Relation class (rdfs:comment) + by clearly specifying how it is directed. + + + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment), skos:scopeNote. + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: added an + equivalentClass object property; replaced the specific object properties by the + generic ones in the subClassOf declarations. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Use only if it is not possible to specify a narrower authority + relation, for example OwnershipRelation. + Class implementation of RiC-R036 and RiC-R036i + relations + + + + + + + true + + + + + + + 1 + + + + + + + 1 + + + + + + + + + + + + Connects at least one Record to at least one Person, Group or + Position that is or was responsible for conceiving and formulating the information + contained in the Record. The Record is the source of the Relation and the Person(s), + Group(s) or Position(s) is the target. + + Authorship Relation + Relation de responsabilité intellectuelle + Relación de autoría + + + 2023-12-06 + Improved the description of the Relation class (rdfs:comment) + by clearly specifying how it is directed. + + + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment), skos:scopeNote. + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: added an + equivalentClass object property; replaced the specific object properties by the + generic ones in the subClassOf declarations. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2020-12-29 + Created following the addition of RiC-R079 relation in RiC-CM + 0.2 + + + To be used for a person, group or position that makes any + contribution to the content of a record. Includes the person, group or position in whose + name or by whose command the content may have been formulated and first instantiated (for + example the person who signed the record). + Class implementation of RiC-R079 and RiC-R079i + relations + + + + + Number of physical units and/or physical dimensions of the carrier + of an Instantiation. + + Carrier Extent + Mesure d’un support + Extensión del soporte + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment), skos:scopeNote. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2020-11-21 + Changed a bit the definition and added change + notes. + + + + + 2020-10-28 + Class added in order to handle an accurate description of a + carrier extent + + + In order to manage an instantiation of a record resource it is + necessary to note the extent of the carrier as well as that of the instantiation itself. + Whether it is necessary to note dimensions, the number of relevant units or both depends on + the nature of the carrier and particular business needs. + Class implementation of RiC-A04 (Carrier Extent) + attribute + + + + + Categorization of physical material on which information is + represented. + + Carrier Type + Type de support + Tipo de soporte + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment), skos:scopeNote. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2023-04-19 + Removed the 0.2 existing unnecessary restriction. + + + + + 2020-10-23 + Scope note: updated (quite the same as RiC-CM definition). + Objective: to make RiC-O compliant with RiC-CM v0.2. + + + In order to manage an instantiation of a record resource, it is + necessary to note the type of carrier on which the record resource is instantiated as its + nature will determine the environmental storage conditions and the prerequisites for and + possible ways of accessing and using the record resource. + Corresponds to RiC-A05 (Carrier Type + attribute) + + + + + + + true + + + + + + + 1 + + + + + + + 1 + + + + Connects at least one Person to at least another Person, when the + first has(ave) child(s) the second one(s). The Relation is oriented from the parent to the + child: the parent is the source of the relation, and the child(ren) is the + target. + + Child Relation + Relation de filiation + Relación de filiación + + + 2023-12-06 + Improved the description of the Relation class (rdfs:comment) + by clearly specifying how it is directed. + + + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment). + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: added an + equivalentClass object property; replaced the specific object properties by the + generic ones in the subClassOf declarations. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Class implementation of RiC-R018 and RiC-R018i + relations + + + + + An idea, unit of thought, abstract cultural object or + category + + Concept + Concept + Concepto + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + + + The fundamental form of communication in which a Record or Record + Part is expressed. + + Content Type + Type de contenu + Tipo de contenido + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment), skos:scopeNote. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2023-04-19 + Removed the 0.2 existing unnecessary restriction. + + + + + 2020-10-23 + Scope note: added (quite the same as RiC-CM + definition). + + + Content Type should not be confused with Representation Type or + Carrier Type that would concern a related Instantiation since the form of communication can + be independent of the representation or carrier, for example a map (content type + "cartographic image") may be represented as a sketch (representation type "visual") + recorded as a physical document (carrier type "paper"). It also should not be confused with + the Documentary Form Type of a Record, or Record Part, which describes a specific document + form (for example a deed of sale). + Corresponds to RiC-A10 (Content Type + attribute) + + + + + Longitudinal and latitudinal information about a + Place. + + Coordinates + Coordonnées géographiques + Coordenadas de lugar + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment). + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2023-04-19 + Removed the 0.2 existing unnecessary restriction. + + + + + 2021-02-08 + Removed the cardinality Restrictions when the range is a + datatype property + + + Class implementation of RiC-A11 (Coordinates + attribute) + + + + + An organized group of persons that act together as an Agent, and + that has a recognized legal or social status. + + Corporate Body + Collectivité + Institución + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment), skos:scopeNote. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2020-10-23 + scope note: updated. Objective: to make RiC-O compliant with + RiC-CM v0.2. + + + Corporate body is a kind of Group (RiC-E09). By exception, + within some legal contexts, a sole trader or sole proprietor may be recognized as a + corporate body, even when the economic enterprise does not have additional members. + Corporate bodies often have a mandate giving them the authority to act within their area(s) + of competence. They will also usually act within a particular jurisdiction being governed + by legal and other rule-based frameworks. A corporate body though may be constituted in a + more informal manner and exist as an entity by virtue of its recognition as such by its + members. + Corresponds to RiC-E11 (Corporate Body + entity) + + + + + Categorization of a Corporate Body. + + Corporate Body Type + Type de collectivité + Tipo de institución + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2023-04-19 + Removed the 0.2 existing unnecessary restriction. + + + Corresponds to RiC-A12 (Corporate Body Type + attribute) + + + + + + + true + + + + + + + 2 + + + + Connects at least two Persons, when they correspond or + corresponded to each other. This Relation is not oriented. + + Correspondence Relation + Relation épistolaire + Relación entre personas por correspondencia + + + 2023-12-06 + Improved the description of the Relation class (rdfs:comment) + by clearly specifying how it is directed. + + + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment). + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: added an + equivalentClass object property; replaced the specific object properties by the + generic ones in the subClassOf declarations. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Class implementation of RiC-R052 and Ri052i + relations + + + + + + + true + + + + + + + 1 + + + + + + + + + + + + + + 1 + + + + Connects at least one Record Resource or Instantiation to at least + one Agent, when the Agent is either responsible for all or some of the content of the + Record Resource, or is a contributor to the genesis or production of the Instantiation. The + Record Resource or Instantiation is the source of the Relation, and the Agent(s) is the + target. + + Creation Relation + Relation de création + Relación de creación + + + 2023-12-06 + Improved the description of the Relation class (rdfs:comment) + by clearly specifying how it is directed. + + + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the + skos:scopeNote. + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: added an + equivalentClass object property; replaced the specific object properties by the + generic ones in the subClassOf declarations. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2023-04-19 + Removed a 0.2 existing unnecessary restriction. + + + Covers the definition of "author" in diplomatics, and any agent + that makes a contribution to the intellectual content of a record resource. Can also be + used for any agent that was involved in the genesis (e.g. with the role of witness, + representative of the author etc.) or in the production (e.g. with the role of scribe, + secretary, notary, printer etc.) of the record resource or instantiation. + Class implementation of RiC-R027 and RiC-R027i + relations + + + + + Chronological information associated with an entity that + contributes to its identification and contextualization. + + Date + Date + Fecha + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the + skos:scopeNote. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2020-10-23 + Scope note: made separate paragraphs. + + + A Date may be represented in natural language, based on a + digital standard, or both. Digital standard dates will typically be based on ISO 8601, or + Extended Date-Time Format (EDTF) + Corresponds to RiC-E18 (Date + entity) + + + + + Categorization of a Date. + + Date Type + Type de date + Tipo de fecha + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment), skos:scopeNote. Added a label in Spanish. + + + + + 2023-10-10 + Added the rdfs:comment, a French rdfs:label, and adjusted the + rico:RiCCMCorrespondingComponent annotation. + + + + + 2023-09-22 + Added in RiC-O 1.0. + + + May be used to categorize a Date as a single date, a date range + or a date set or sub-categories of these broad types. This attribute should not be confused + with the date relations defined to connect a Date entity and any other entity (such as + RiC-R069 ‘is beginning date of’). + Corresponds to RiC-A42 (Date Type attribute) (new + in RiC-CM 1.0). + + + + + Categorization of a Person or Group based on shared + characteristics. + + Demographic Group + Catégorie démographique + Categoría demográfica + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment), skos:scopeNote. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2021-02-08 + Removed the Restriction. + + + + + 2020-10-23 + Comment: updated. Scope note: updated and made several + paragraphs. Objective: to make RiC-O compliant with RiC-CM v0.2. + + + Can be extended with any number of specific subclasses. Among + possible specific demographic groups are gender, (biological) sex, education, identity, + place, ancestry, ethnic/cultural identification, and religion. + Corresponds to RiC-A15 (Demographic Group + attribute) + + + + + + + true + + + + + + + + 1 + + + + + + + 1 + + + + Connects an Instantiation to at least one Instantiation that is + derived from it, whether it exists or has been lost or destroyed. The Relation is oriented + chronologically, from the first Instantiation in time to the derived Instantiation: the + first Instantiation is the source of the Relation, and the derived Instantiation(s) is the + target. + + Derivation Relation + Relation de dérivation + Relación de derivación + + + 2023-12-06 + Improved the description of the Relation class (rdfs:comment) + by clearly specifying how it is directed. + + + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment), skos:scopeNote. + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: added an + equivalentClass object property; replaced the specific object properties by the + generic ones in the subClassOf declarations. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + In some situations, it may be useful or necessary to connect an + instantiation to an instantiation that was derived from it but no longer exists or has been + lost. + Class implementation of RiC-R014 and RiR014i + relations + + + + + + + true + + + + + + + + 1 + + + + + + + 1 + + + + Connects at least one Person to at least another Person, when the + first has/have descendant the second one(s). The Relation is oriented from the ascendant to + the descendant: the ascendant Person(s) is the source of the Relation, and the descendant + Person(s) is the target. + + Descendance Relation + Relation de descendance + Relación de descendencia + + + 2023-12-06 + Improved the description of the Relation class (rdfs:comment) + by clearly specifying how it is directed. + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: added an + equivalentClass object property; replaced the specific object properties by the + generic ones in the subClassOf declarations. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Class implementation of RiC-R017 and RiC-R017i + relations + + + + + Categorization of a Record or Record Part with respect to its + extrinsic and intrinsic elements that together communicate its content, administrative and + documentary context, and authority. + + Documentary Form Type + Type de document + Tipo documental + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment). + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2023-04-19 + Removed the 0.2 existing unnecessary restriction. + + + + + 2020-10-23 + Comment: updated. Scope note: made several paragraphs. + Objective: to make RiC-O compliant with RiC-CM v0.2. + + + Documentary Form Type plays an important role in determining the + type of information a Record may comprise, its status of perfection, and its authenticity + and reliability. Documentary form types exist in a specific social and cultural context, + and within that context, are subject to change over time. + Corresponds to RiC-A17 (Documentary Form Type + attribute) + + + + + Something that happens or occurs in time and space. + + Event + Événement + Evento + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment), skos:scopeNote. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2023-04-19 + Removed the 0.2 existing unnecessary restriction. + + + + + 2020-10-23 + Scope note: made separate paragraphs and some + changes. + + + An event may be caused by nature, an agent, or a combination of + nature and agent. Events have temporal and spatial boundaries. An event may actively + involve some agent(s) and affect any entity. An event may be discrete, happening at a + specific moment in time, or may occur over an extended period of time. Events may have + events as parts, and events may precede or follow one another. Multiple agents may + participate in the same event, and in different roles. + Corresponds to RiC-E14 (Event + entity) + LODE Event class (http://linkedevents.org/ontology/#Event) + + + + + + + true + + + + + + + 1 + + + + + + + 1 + + + + Connects at least one Event to at least one Thing, when the first + is associated with the existence and lifecycle of the second one. The Event(s) is the + source of the Relation, and the Thing(s) is the target. + + Event Relation + Relation impliquant un événement + Relación con un evento + + + 2023-12-06 + Improved the description of the Relation class (rdfs:comment) + by clearly specifying how it is directed. + + + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the + skos:scopeNote. + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: added an + equivalentClass object property; replaced the specific object properties by the + generic ones in the subClassOf declarations. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Use to connect an event and an entity only if it is not possible + to specify a narrower event relation, for example a PerformanceRelation. + Class implementation of RiC-R057 and RiC-R057i + relations + + + + + Categorization of an Event. + + Event Type + Type d’événement + Tipo de evento + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the + skos:scopeNote. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2023-04-19 + Removed the 0.2 existing unnecessary restriction. + + + + + 2020-10-23 + Scope note: updated and made several paragraphs. Objective: to + make RiC-O compliant with RiC-CM v0.2. + + + Events of all kinds can be categorized. Curation event types + include creation; acquisition; transfer; arrangement; description; digitization, etc. + Biographical event types include birth, marriage, death, etc. + Corresponds to RiC-A18 (Event Type + attribute) + + + + + Countable characteristics of the content of an entity expressed as + a quantity. + + Extent + Mesure + Extensión + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2020-10-28 + Class added together with three subclasses and hasExtent and + isExtentOf Object properties + + + Physical or logical extent of a resource + + + + + Categorization of the extent that is being + measured. + + Extent Type + Type de mesure + Tipo de Extensión + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added an xml:lang attribute to the rdfs:comment. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2020-11-01 + Added to specify the dimension that is being + measured + + + + + + + Two or more persons related by birth, or through marriage, + adoption, civil union, or other social conventions that bind them together as a socially + recognized familial group. + + Family + Famille + Familia + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2020-10-23 + Scope note: made separate paragraphs and some + changes. + + + Family is a kind of Group. “Family” is used here as a general + term that encompasses a wide variety of familial groups. Other types of familial groups + include Dynasty, Clan, House, Tribe and others. Though family may be a recognized legal + group in specific contexts, the term may also be used for groups that are socially + recognized as families. A family may be a group of persons related either by consanguinity + or affinity or cohabitation or other social conventions. In some context, a Family may be + legally recognized as Corporate Body. For example, certain North American peoples (tribes) + retain self-government rights and have jurisdiction over defined tribal + lands. + Corresponds to RiC-E10 (Family + entity) + + + + + + + true + + + + + + + 2 + + + + Connects at least two Persons, when they have some family link, + i.e. belong to the same family. This Relation is a generic, not oriented + one. + + Family Relation + Relation familiale + Relación familiar + + + 2023-12-06 + Improved the description of the Relation class (rdfs:comment) + by clearly specifying how it is directed. + + + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the + skos:scopeNote. + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: added an + equivalentClass object property; replaced the specific object properties by the + generic ones in the subClassOf declarations. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Use the MembershipRelation class for connecting a family and a + person. + Class implementation of RiC-R047 and RiC-R047i + relations + + + + + Categorization of a Family. + + Family Type + Type de famille + Tipo de familia + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the + skos:scopeNote. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2023-04-19 + Removed the 0.2 existing unnecessary restriction. + + + + + 2020-10-23 + Comment: slighty changed. + + + Encompasses a wide variety of familial groups related by + consanguinity, affinity, cohabitation, or other social conventions. + Corresponds to RiC-A20 (Family Type + attribute) + + + + + + + true + + + + + + + 2 + + + + Connects at least two Instantiations which may be considered as + equivalent. This Relation is not oriented. + + Functional Equivalence Relation + Relation d’équivalence fonctionnelle + Relación de equivalencia funcional + + + 2023-12-06 + Improved the description of the Relation class (rdfs:comment) + by clearly specifying how it is directed. + + + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the + skos:scopeNote. + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: added an + equivalentClass object property; replaced the specific object properties by the + generic ones in the subClassOf declarations. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Two instantiations, from some point of view, may be considered + as equivalent. This equivalence is usually based upon the fact that the instantiations have + at least the same intellectual content (they instantiate the same record + resource). + Class implementation of RiC-R035 and RiC-R035i + relations + + + + + + + + Two or more Agents that act together as an Agent. + + Group + Groupe d’agents + Grupo de agentes + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2020-10-23 + Scope note: made separate paragraphs plus very few changes. + Disjoint with: enriched. + + + Group is a kind of Agent. A Group has a socially recognized + identity. Each member of the Group plays a particular role or roles (that is has a + particular Position) in the coordinated activity of the Group. Corporate bodies and + families are kinds of groups, though other kinds of groups are possible. For example, the + “electorate” -- all of the voters in a given election. Complex, large groups may be + subdivided into other groups. + Corresponds to RiC-E09 (Group + Entity) + + + + + + + true + + + + + + + + 1 + + + + + + + 1 + + + + Connects a Group and at least another Group, when the first one + has or had the second one(s) among its subdivisions. The Relation is oriented from the + Group to its subdivision(s): the parent Group is the source and the subdivision Group(s) is + the target. + + Group Subdivision Relation + Relation de subdivision entre groupes d’agents + Relación de subdivisión entre grupos de agentes + + + 2023-12-06 + Improved the description of the Relation class (rdfs:comment) + by clearly specifying how it is directed. + + + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment). + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: added an + equivalentClass object property; replaced the specific object properties by the + generic ones in the subClassOf declarations. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Class implementation of RiC-R005 and RiC-R005i + relations + + + + + A word, number, letter, symbol, or any combination of these used + to uniquely identify or reference an individual instance of an entity within a specific + information domain. + + Identifier + Identifiant + Identificador + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the + skos:scopeNote. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2023-04-19 + Removed the 0.2 existing unnecessary restriction. + + + Can include Global Persistent Identifiers (globally unique and + persistently resolvable identifier for the entity) and/or Local Identifiers. Both the + domain within which the identifier is unique, and the rules used in forming the identifier + value should be provided with the identifier value. + Class implementation of RiC-A22 (Identifier + attribute) (see also the identifier datatype property) + + + + + Categorization of an Identifier. + + Identifier Type + Type d’identifiant + Tipo de identificador + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2023-04-19 + Removed the 0.2 existing unnecessary restriction. + + + + + 2020-10-19 + Class added along with hasIdentifierType and isIdentifierTypeOf + object properties. + + + For example, 'old identifier' ; 'ISNI' (for a person or + corporate body), etc. + + + + + The inscription of information made by an Agent on a physical + carrier in any persistent, recoverable form as a means of communicating information through + time and space. + + Instantiation + Instanciation + Instanciación + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2023-04-19 + Removed the 0.2 existing unnecessary restrictions. + + + + + 2020-10-23 + Comment: updated. Scope note: updated and made several + paragraphs. Objective: to make RiC-O compliant with RiC-CM v0.2. + + + A Record or Record Part must have been instantiated at least + once, though this instantiation may no longer exist at the moment of description. An + instantiation might also exist at the moment of description, but be destroyed at a later + moment in time, when, for example, a derived instantiation might become the only remaining + instantiation. A Record Set may have an instantiation, which is to say that it is not a + necessary condition. An Instantiation may be derived from another Instantiation. A Record + Resource may have many Instantiations simultaneously (for instance, a record printed and + saved in the same time as DOCX and PDF/A would have 3 concurrent instantiations) or through + time (for example, copy of a record). Depending on the context, a new instantiation may be + seen as a new or as the same record resource. During in the process of re-instantiation + something is lost and something is preserved, but it is up to the context and the Agent + that produces or uses that Instantiation to assess whether the two instantiations are + functionally equivalent or not. For instance, a postcard representing a town map from 1874 + (Instantiation 1) is digitized and kept as a JPEG file (Instantiation 2). The digital copy + may be considered as instantiating the "same" Record by an Agent considering the + information transmitted by the Record (e.g., the urban landscape displayed), but as a" + different" Record by an antiquarian more focused on the materiality of the carrier. + Successive instantiations may change the perceivable boundaries of a Record Resource. For + instance, a case file comprising many records may be digitized and saved as one single PDF + file, which, from management perspective, may be treated as one Record. Similarly, a large + Record Set (a fonds or a series) may be maintained as one database. On the other hand, one + record (main document and its annexes) may be digitized in separate files and each one may + be managed as a discrete “physical” item. Instantiations may require mediation to + communicate the information in the Record Resource. While a traditional Record on paper can + simply be read by an Agent in order to understand the information, a vinyl recording, a + video cassette or a digital file needs a device (mediator) to codify or decodify the + information conveyed. This mediator may imply simple physical components (a turntable + needle, for example), or a complex gallery of software and hardware elements. + Instantiations are more than the mere informational content of Record Resource and may be + the focus of preservation and physical management of records. The use of particular + document types for records, such as a medieval charter, may have implications for the + authenticity of the records. Hence, the way a Record Resource is instantiated contributes + to the contextualizing of the content.record resource is instantiated contributes to the + contextualizing the content. Distinguishing the message conveyed (Record Resource) and its + physical representations (Instantiation) allows for the efficient management of their + descriptions, and preserve information about a Record Resource even when no physical + representation of it exists or is known to exist anymore. The relations between distinct + instantiations can then be expressed wherever they coexist, and they can be related to the + Record Resource they instantiate. + Corresponds to RiC-E06 (Instantiation + entity) + PREMIS Representation + + + + + Countable characteristics of an Instantiation expressed as a + quantity. + + Instantiation Extent + Mesure d’une instanciation + Extensión de la instanciación + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment). + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2020-11-21 + Changed a bit the definition and added change + notes. + + + + + 2020-10-28 + Class added in order to handle an accurate description of an + instantiation extent + + + Class implementation of RiC-A23 (Instantiation + Extent attribute) + + + + + + + true + + + + + + + 2 + + + + Connects at least two instantiations. This Relation is a generic, + not oriented one. + + Instantiation to Instantiation Relation + Relation entre instanciations + Relación entre instanciaciones + + + 2023-12-06 + Improved the description of the Relation class (rdfs:comment) + by clearly specifying how it is directed. + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: added an + equivalentClass object property; replaced the specific object properties by the + generic ones in the subClassOf declarations. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + + + + + true + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + + + + + + + + Connects at least one Agent and one Record Resource or + Instantiation on which the Agent has or had some intellectual property rights. The Agent(s) + is the source of the Relation and the Record Resource(s) or Instantiation(s) is the + target. + + Intellectual Property Rights Relation + Relation de propriété intellectuelle + Relación de propiedad intelectual + + + 2023-12-06 + Improved the description of the Relation class (rdfs:comment) + by clearly specifying how it is directed. + + + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment). + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: added an + equivalentClass object property; replaced the specific object properties by the + generic ones in the subClassOf declarations. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Can be used, when the record resource is a work, for specifying + the connection between the record resource and its author(s). + Class implementation of RiC-R040 and RiC-R040i + relations + + + + + + + true + + + + + + + 1 + + + + + + + 1 + + + + Connects at least one Person to at least another one, when the + first one has some knowledge of the second one through time or space. The first Person is + the source of the Relation, and the second one is the target. + + Knowing Of Relation + Relation de connaissance à propos d’une personne + Relación de conocimieto indirecto entre personas + + + 2023-12-06 + Improved the description of the Relation class (rdfs:comment) + by clearly specifying how it is directed. + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: added an + equivalentClass object property; replaced the specific object properties by the + generic ones in the subClassOf declarations. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Class implementation of RiC-R050 and RiC-R050i + relationsi + + + + + + + true + + + + + + + 2 + + + + Connects at least two Persons who directly know each other during + their existence. This Relation is not oriented. + + Knowing Relation + Relation de connaissance entre personnes + Relación de conocimiento directo entre personas + + + 2023-12-06 + Improved the description of the Relation class (rdfs:comment) + by clearly specifying how it is directed. + + + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment), skos:scopeNote. + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: added an + equivalentClass object property; replaced the specific object properties by the + generic ones in the subClassOf declarations. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + The relation implies that the two persons met or at least + corresponded with each other. + Cass implementation of RiC-R051 and RiC—R051i + relations + + + + + A spoken or written human language represented in a Record + Resource or used by an Agent. + + Language + Langue + Lengua + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment). + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2020-12-28 + Changed the definition (skos:comment annotation); so that it + conforms to the RiC-CM one. + + + + + 2020-10-23 + Scope note from RiC-CM : deleted. + + + Corresponds to RiC-A25 (Language + attribute) + + + + + + + true + + + + + + + 1 + + + + + + + 1 + + + + + + + 1 + + + + Connects at least one Person and at least one Group, when the + first one(s) lead(s) or led the second one(s). The Relation is oriented from the leading + Person to the Group: the leading Person(s) is the source of the Relation, and the Group(s) + is the target. + + Leadership Relation + Relation de direction + Relación de liderazgo + + + 2023-12-06 + Improved the description of the Relation class (rdfs:comment) + by clearly specifying how it is directed. + + + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment). + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: added an + equivalentClass object property; replaced the specific object properties by the + generic ones in the subClassOf declarations. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Class implementation of RiC-R042 and RiC-R042i + relations + + + + + A status defined by law. + + Legal Status + Statut légal + Status jurídico + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Corresponds to RiC-A26 (Legal Status + attribute) + + + + + + + true + + + + + + + 1 + + + + + + + 1 + + + + + + + + + + + Connects at least one Agent and at least one Record Resource or + Instantiation that the Agent manages or managed. The Agent(s) is the source of the + Relation, and the Record Resource(s) or Instantiation(s) is the target. + + Management Relation + Relation de gestion + Relación de gestión + + + 2023-12-06 + Improved the description of the Relation class (rdfs:comment) + by clearly specifying how it is directed. + + + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment). + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: added an + equivalentClass object property; replaced the specific object properties by the + generic ones in the subClassOf declarations. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Class implementation of RiC-R038 and RiC-R038i + relations + + + + + Delegation of responsibility or authority by an Agent to another + Agent to perform an Activity. + + Mandate + Mandat + Norma + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment), skos:scopeNote. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2023-04-21 + Removed the 0.2 existing unnecessary restriction. + + + + + 2020-10-23 + Scope note: made separate paragraphs and updated. Objective: to + make RiC-O compliant with RiC-CM v0.2. + + + Mandate is a kind of Rule. A mandate confers the responsibility + or authority of an agent to perform a specified activity. In addition to assigning an + activity and delegating responsibility or authority to perform the activity to an agent, a + mandate commonly limits the place (jurisdiction) and date (time period) within which an + agent may perform the activity (where and when). Mandates exist in a specific social and + cultural context, and within that context are subject to change over time. While a mandate + may be tacit, in whole or part, it may be explicitly expressed in a variety of documentary + sources (for example, constitutions, legislation, (legal) acts, statutes, legal codes, + ordinances, charges, charters, or mission statements). The evidence for identifying a + mandate may be found in its entirety in one documentary source (for example, a law or + regulation), or may be found in two or more sources. A mandate should not be confused with + the one or more documentary sources that serve as evidence of its identity. A documentary + source is a record. + Corresponds to RiC-E17 (Mandate + entity) + + + + + + + true + + + + + + + 1 + + + + + + + 1 + + + + + + + 1 + + + + Connects at least one Mandate and at least one Agent, when the + first gives or gave the second one the authority or competencies to act. May also involve + one to many Activities that the Mandate(s) assign(s) or assigned to the Agent(s). The + Mandate(s) is the source of the Relation and the Agent(s) is the target. + + Mandate Relation + Relation impliquant un mandat + Relación normativa + + + 2023-12-06 + Improved the description of the Relation class (rdfs:comment) + by clearly specifying how it is directed. + + + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment). + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: added an + equivalentClass object property; replaced the specific object properties by the + generic ones in the subClassOf declarations. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2023-04-19 + Removed a 0.2 existing unnecessary restriction. + + + Class implementation of RiC-R067 and RiC-R067i + relations + + + + + Categorization of a Mandate. + + Mandate Type + Type de mandat + Tipo de norma + + + 2023-11-12 + Added in RiC-0 1.0 as it has been added to RiC-CM + 1.0. + + + For example : charter, treaty, contract, letter of appointment, + papal mandate, episcopal mandate, ciurt mandate, election mandate, popular mandate, federal + mandate, etc. + Corresponds to RiC-A44 (Mandate Type + attribute). + + + + + + + A process or system created by a Person or Group that performs an + Activity. + + Mechanism + Système + Mecanismo + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the + skos:scopeNote. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2020-10-23 + scope note: made separate paragraphs. Disjoint with: + enriched. + + + Mechanism is a kind of Agent. A mechanism may have both + mechanical and software components or may be exclusively software. A mechanism acts in the + world producing physical or social effects and may generate or modify records. A mechanism + performs activities based on rules determined by the agent that designed and created it. A + mechanism has an essential, derivative relation with the designing and creating + agent. + Corresponds to RiC-E13 (Mechanism + entity) + + + + + + + true + + + + + + + 1 + + + + + + + 1 + + + + + + + 1 + + + + Connects a Group and at least one Person, when the first one has + or had the second one(s) among its members. The Relation is oriented from the Group to its + members: the Group(s) is the source of the Relation, and the Person(s) is the + target. + + Membership Relation + Relation d’appartenance + Relación de membresía + + + 2023-12-06 + Improved the description of the Relation class (rdfs:comment) + by clearly specifying how it is directed. + + + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment). + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: added an + equivalentClass object property; replaced the specific object properties by the + generic ones in the subClassOf declarations. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Class implementation of RiC-R055 and RiC-R055i + relations + + + + + + + true + + + + + + + 1 + + + + + + + 1 + + + + Connects an Instantiation and at least another Instantiation it + has been migrated into. The Relation is oriented chronologically, from the first + Instantiation in time (the migrated one) to the one which results from its migration: the + first Instantiation in time is the source of the Relation, and the resulting Instantiation + is the target. + + Migration Relation + Relation de migration + Relación de migración entre instanciaciones + + + 2023-12-06 + Improved the description of the Relation class (rdfs:comment) + by clearly specifying how it is directed. + + + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment), skos:scopeNote. + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: added an + equivalentClass object property; replaced the specific object properties by the + generic ones in the subClassOf declarations. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Use for digital instantiations. + Class implementation of RiC-R015 and RiC-R015i + relations + + + + + A label, title or term designating an entity in order to make it + distinguishable from other similar entities. + + Name + Nom + Nombre + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment), skos:scopeNote. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Provides brief information about the content or other individual + characteristics of the entity being described, necessary to distinguish it from other + perhaps similar entities. + Class implementation of RiC-A28 (Name attribute) + (see also the name datatype property) + + + + + + Categorization of a profession, trade, or craft pursued by a + Person in fulfilment of an Activity. + + Occupation Type + Type d’occupation + Tipo de ocupación + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment), skos:scopeNote. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2023-04-19 + Removed the 0.2 existing unnecessary restriction. + + + + + 2020-10-23 + scope note: added. + + + The pursuit of an occupation involves the performance of an + Activity. Successful performance of the Activity is based on the ability to perform related + competencies successfully. Such competencies may be acquired through education or + experience, or a combination of both. The authority of the Person to pursue the occupation + may be derived tacitly or explicitly from an external Agent, based on a demonstrated + mastery of the competency. An occupation may be pursued independently by a Person or a + Group, thereby contributing to the fulfilment of the function (activity) of the group. + Should not be confused with Position where, for example, an agent with the occupation type + "lawyer" holds the position of "legal counsel" in an agency. Related to but should not be + confused with the domain or field of activity, such as an archivist who works in the domain + of archival science. + Corresponds to RiC-A30 (Occupation Type + attribute) + + + + + + + true + + + + + + + 1 + + + + + + + + + + + + + + 1 + + + + + + + + + + + Connects at least one Record Resource or Instantiation to at least + one Agent or Activity, when the Agent or Activity is the provenance of the Record Resource + or Instantiation (i.e. when the Agent created, accumulated or maintained the Record + Resource or Instantiation, or when the Activity resulted into them). The Record Resource(s) + or Instantiation(s) is the source of the Relation, and the Agent(s) or Activity(-ies) is + the target. + + Organic or functional provenance Relation + Relation de provenance organique ou fonctionnelle + Relación de procedencia orgánica or funcional + + + 2023-12-06 + Improved the description of the Relation class (rdfs:comment) + by clearly specifying how it is directed. + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: added an + equivalentClass object property; replaced the specific object properties by the + generic ones in the subClassOf declarations. + + + + + 2023-11-07 + Renamed the relation (its name was + ProvenanceRelation). + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + This relation stands for organic and for functional + provenance. + + + + + + + true + + + + + + + 1 + + + + + + + + + + + + + + 1 + + + + Connects at least one Record Resource or an Instantiation to at + least one Agent that creates or accumulates the Record Resource, receives it, or sends it. + The Record Resource(s) or Instantiation(s) is the source of the Relation, and the Agent(s) + is the target. + + Organic Provenance Relation + Relation de provenance organique + Relación de procedencia orgánica + + + 2023-12-06 + Improved the description of the Relation class (rdfs:comment) + by clearly specifying how it is directed. + + + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment), skos:scopeNote. + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: added an + equivalentClass object property; replaced the specific object properties by the + generic ones in the subClassOf declarations. + + + + + 2023-11-07 + Renamed the relation in order to make it clearer (its name was + AgentOriginationRelation). + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + This is the most general organic provenance relation. Use it to + connect a record resource or instantiation with an agent only if it is not possible to use + a narrower, more specific relation, for example Creation Relation. + Class implementation of RiC-R026 and RiC-R026i + relations + + + + + + + true + + + + + + + 1 + + + + + + + + + + + + + + + 1 + + + + Connects at least one Group, Person or Position and at least a + Thing that these Agent(s) own(s) or owned. The Group(s), Person(s) or Position(s) is the + source of the Relation, and the Agent(s) is the target. + + Ownership Relation + Relation de propriété + Relación de posesión + + + 2023-12-06 + Improved the description of the Relation class (rdfs:comment) + by clearly specifying how it is directed. + + + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment), skos:scopeNote. + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: added an + equivalentClass object property; replaced the specific object properties by the + generic ones in the subClassOf declarations. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Among other probably more rare use cases for archival + description, can be used between agents (a person owns a corporate body, a corporate body + owns a mechanism), or between agents and record resources. + Class implementation of RiC-R037 and RiC-R037i + relations + + + + + + + true + + + + + + + 1 + + + + + + + 1 + + + + Connects at least one Activity to at least one Agent that performs + or performed the activity. The Activity(-ies) is the source of the Relation and the + Agent(s) is the target. + + Performance Relation + Relation entre activités et agents + Relación de desarrollo funcional + + + 2023-12-06 + Improved the description of the Relation class (rdfs:comment) + by clearly specifying how it is directed. + + + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment). + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: added an + equivalentClass object property; replaced the specific object properties by the + generic ones in the subClassOf declarations. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Class implementation of RiC-R060 and RiC-R060i + relations + + + + + + An individual human being. + + Person + Personne + Persona + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment), skos:scopeNote. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2023-04-19 + Removed the 0.2 existing unnecessary restriction. + + + + + 2021-02-08 + Removed one Restriction. + + + + + 2020-10-23 + Scope note: made separate paragraphs and updated. Disjoint + with: enriched. Objective: to make RiC-O compliant with RiC-CM v0.2. + + + + + 2020-10-23 + Scope note: made separate paragraphs and updated. Disjoint + with: enriched. Objective: to make RiC-O compliant with RiC-CM v0.2. + + + Person is a kind of Agent. Most commonly, a human being + (biological person) has a single socially constructed identity or persona. Less common + though not rare, one or more personae in addition to the original persona which emerges at + or near birth may be associated with the human being over the course of that human being’s + lifetime. Such "alternative personae" are most often created by the original person for + specific purposes. The original persona may, in everyday discourse, be regarded as “the + real person”. Under some circumstances, an alternative persona might eclipse or replace the + original person (Mark Twain eclipsing Samuel Clemens; John Wayne eclipsing Marion Mitchell + Morrison), that is, the alternative identity becomes the predominant identity. Less common + is when two or more persons collaborate to create a shared persona. A persona shared by two + or more persons constitutes a kind of group. Within the archival context, the description + of a person commonly will focus on the original associated persona, with alternative + personae noted. Exceptionally, an alternative persona may displace the original persona as + the focus of the description. Under some circumstances, for example, when record resources + are associated with two or more different personae of one person, describing the different + personae as separate though related persons may be desirable. Alternatively, a person may + change their identity over the course of their lifetime. + Corresponds to RiC-E08 (Person + entity) + + + + + A delimitation of the physical territory of a + Place. + + Physical Location + Localisation physique + Localización física de lugar + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the + skos:scopeNote. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2023-04-19 + Removed the two 0.2 existing unnecessary + restrictions. + + + Used to describe basic human-readable text such as an address, a + cadastral reference, or less precise information found in a record. Use the coordinates + datatype property, or the Coordinates class to capture the geographical coordinates of the + Place. Use spatial relations (particularly 'has or had location') to capture a relation + between two places. + Class implementation of RiC-A27 (Location + attribute) + + + + + Bounded, named geographic area or region. + + Place + Lieu + Lugar + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the + skos:scopeNote. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2023-04-19 + Removed the 0.2 existing unnecessary restriction. + + + + + 2020-10-23 + Comment: updated. Scope note: updated and made several + paragraphs. Objective: to make RiC-O compliant with RiC-CM v0.2. + + + A jurisdiction is the bounded geographic area within which an + Agent has the authority to perform specified activities constrained by rules. + Jurisdictions, man-made structures, and natural features are historical entities. A Place + thus may have a beginning date and ending date and changing boundaries that result from + human or natural events. A Place may be systematically referenced to a location on the + earth (geographic coordinates). + Corresponds to RiC-E22 (Place + entity) + + + + + A label, title or term designating a Place in order to make it + distinguishable from other similar entities. + + Place Name + Nom de lieu + Nombre de lugar + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Class implementation of a specialization of RiC-A28 + (Name attribute) + + + + + + + true + + + + + + + 1 + + + + + + + 1 + + + + Connects a Place and at least one Thing when the first is + associated with the existence and lifecycle of the second one. The Place is the source of + the Relation and the Thing(s) is the target. + + Place Relation + Relation impliquant un lieu + Relación con lugar + + + 2023-12-06 + Improved the description of the Relation class (rdfs:comment) + by clearly specifying how it is directed. + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: added an + equivalentClass object property; replaced the specific object properties by the + generic ones in the subClassOf declarations. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Class implementation of RiC-R074 and RiC-R074i + relations + + + + + Categorization of a Place. + + Place Type + Type de lieu + Tipo de lugar + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2023-04-19 + Removed the 0.2 existing unnecessary restriction. + + + Broadly, a Place may be a member of three broad categories: + jurisdiction, manmade structure, or a natural feature. Each of these three categories can + subdivided into narrower categories. + Corresponds to RiC-A32 (Place Type + attribute) + + + + + The functional role of a Person within a Group. + + Position + Poste occupé + Puesto + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2020-10-23 + Scope note: made separate paragraphs and updated. Disjoint + with: enriched. Objective: to make RiC-O compliant with RiC-CM v0.2. + + + Position is a kind of Agent. Position is the intersection of a + Person and a Group. Position exists independently of the Person that holds the Position + within a Group. More than one Person may hold a Position. Position is commonly defined in a + Mandate, often called a position description or job description. The Mandate may specify + the work to be performed (Activity) as well as the competencies for performing the + Activity. A Position is often given a Name. A Position may be tied to a project or to a set + of tasks and thus have a defined duration. A Position may change over time, as the Group + that establishes it changes over time. Position is not to be confused with Occupation or + Activity. Within the records created by a Corporate Body, a Position may be used to + identify the record sets resulting from activities performed by one or more persons holding + the Position over time, without necessarily identifying or describing the Person or + persons, or identifying which records were created by each Person. + Corresponds to RiC-E12 (Position + entity) + + + + + + + true + + + + + + + 1 + + + + + + + 1 + + + + Connects at least one Person and at least one Position that the + Person(s) occupies or occupied. The Person is the source of the Relation and the Position + is the target. + + Position Holding Relation + Relation entre une personne et un poste + Relación de ocupación entre una persona y un puesto + + + 2023-12-06 + Improved the description of the Relation class (rdfs:comment) + by clearly specifying how it is directed. + + + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment). + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: added an + equivalentClass object property; replaced the specific object properties by the + generic ones in the subClassOf declarations. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Class implementation of RiC-R054 and RiC-R054i + relations + + + + + + + true + + + + + + + 1 + + + + + + + 1 + + + + Connects at least one Position and a Group in which the + position(s) exist(s) or existed, or that is (are) defined by that group's organizational + structure. The Position(s) is the source of the Relation and the Group is the + target. + + Position to Group Relation + Relation entre un poste et un groupe + Relación de ocupación entre un grupo y un puesto + + + 2023-12-06 + Improved the description of the Relation class (rdfs:comment) + by clearly specifying how it is directed. + + + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment). + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: added an + equivalentClass object property; replaced the specific object properties by the + generic ones in the subClassOf declarations. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Class implementation of RiC-R056 and RiC-R056i + relations + + + + + The method used in the representation of information on an + instantiation. + + Production Technique Type + Type de technique de production + Tipo de técnica de producción + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment). + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2023-04-19 + Removed the 0.2 existing unnecessary restriction. + + + + + 2020-10-23 + Comment: updated. Objective: to make RiC-O compliant with + RiC-CM v0.2. + + + Class implementation of RiC-A33 (Production + Technique attribute) + + + + + + + + 1 + + + + + + + 1 + + + + A Proxy represents (stands for) a Record Resource as it exists in + a specific Record Set. + + Proxy + Proxy + Proxy + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Useful for handling in RDF the sequencing of records or records + sets in the context of a Record set. A Record Resource has only one Proxy in the context of + one specific Record Set. It may have many Proxies simultaneously or through + time. + ORE Proxy (http://www.openarchives.org/ore/terms/Proxy) + + + + + Discrete information content formed and inscribed, at least once, + by any method on any carrier in any persistent, recoverable form by an Agent in the course + of life or work activity. + + Record + Objet informationnel + Documento + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment), skos:scopeNote. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2021-02-08 + Removed the Restriction. + + + + + 2020-10-23 + Scope note: updated and made several paragraphs. Objective: to + make RiC-O compliant with RiC-CM v0.2. + + + Record is a kind of Record Resource. A Record may itself contain + one or more Records, or may consist of one or more Record Parts. A Record must have or have + had at least one Instantiation. A Record may have more than one Instantiation. An + Instantiation derived from another Instantiation of a Record may be considered the + instantiation of the same Record or an instantiation of a new Record, depending on the + context. A Record may serve a variety of purposes, though it always documents or is + evidence of Activity. + Corresponds to RiC-E04 (Record + entity) + + + + + Component of a Record with independent information content that + contributes to the intellectual completeness of the Record. + + Record Part + Partie d’objet informationnel + Componente documental + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment). + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2021-02-08 + Removed the Restriction. + + + + + 2020-10-23 + comment: updated. Scope note: made several paragraphs. + Objective: to make RiC-O compliant with RiC-CM v0.2. + + + Record Part is a kind of Record Resource. A Record Part may + itself have Record Parts. + Corresponds to RiC-E05 (Record Part + entity) + + + + + Information produced or acquired and retained by an Agent in the + course of life or work activity. + + Record Resource + Ressource archivistique + Recurso documental + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment), skos:scopeNote. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2023-04-19 + Removed the 0.2 existing unnecessary restriction. + + + + + 2021-02-08 + Removed one Restriction. + + + + + 2020-10-23 + Scope note: made separate paragraphs plus very few + changes. + + + Record resource is a kind of Thing. Producing a record resource + may imply either its initial creation or a reuse of previous existing information by + combination, rearrangement, selecting, reformatting, etc. Record set, record, and record + part are kinds of record resource. A record resource is evidence of the activity of an + agent. More than one agent may be involved in the creation of a record resource. The role + of the agent in creating the record resource may take different forms, for example, + authoring of an individual record, accumulating a record set, or arranging a record set. + Though a record, record set, and record part, under most circumstances, may be easily + distinguished from one another, identifying the boundary of each may frequently present + particular challenges. Documentary forms provide the rules governing the structure of many + types of records, providing criteria for identifying a record's boundary, and identifying + its essential parts. Many records, though, do not have well-established documentary forms, + particularly in the case of digital records, where it may be difficult to determine whether + individual elements represented in separate bitstreams are record parts, records, or record + sets. For example, is photographic information represented independently in a bitstream + embedded in a text document a record or a record part? Or is the same photographic + information attached to an email that maintains its independent representation, a record or + a record part? Information grouped for some purpose, for example, ZIP or TAR "file + compression" for saving storage space, presents a further challenge. One file comprises + multiple bitstreams subjected to techniques that remove bits that can be losslessly + recovered when decompressed. Under what circumstances is such a compressed bitstream a + record or a record set? Determining when an information object is a record, record set, or + record part is based on perspective and judgement exercised in a particular context. In one + context, the agent describing an information object may designate it a record, while + another agent in a different context may designate it a record part. Both designations are + supported by RiC-CM, and the significance of the difference for users of the records is + ameliorated by the fact that all of the attributes and relations employed in describing + record and record part are shared, as are many of the attributes and relations employed in + describing a record set. + Corresponds to RiC-E02 (Record Resource + entity) + + + + + The quantity of information content, as human experienced, + contained in a Record Resource. + + Record Resource Extent + Mesure d’une ressource archivistique + Extensión de recurso documental + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment), skos:scopeNote. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2020-11-21 + Changed a bit the definition and added change + notes. + + + + + 2020-10-28 + Class added in order to handle an accurate description of a + record resource extent + + + The method and precision of expressing the quantity of + information represented in a Record Resource will vary according to the kind of record + resource being described, processing economy constraints, etc. For Record Sets, quantity + may be expressed as number of records, or, for analogue records in particular, by the + physical storage dimensions of the members of the Record Set. For individual Records or + Record Parts, quantity may be expressed in more precise terms. + Class implementation of RiC-A35 (Record Resource + extent attribute) + + + + + + + true + + + + + + + 2 + + + + Connects two or more record resources when there is a genetic link + between them. Genetic in this sense is as defined by diplomatics, i.e., the process by + which a record resource is developed. This Relation is a generic, not oriented + one. + + Record Resource Genetic Relation + Relation génétique entre des ressources archivistiques + Relación genética entre recursos documentales + + + 2023-12-06 + Improved the description of the Relation class (rdfs:comment) + by clearly specifying how it is directed. + + + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment). + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: added an + equivalentClass object property; replaced the specific object properties by the + generic ones in the subClassOf declarations. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Class implementation of RiC-R023 and RiC-023i + relations + + + + + + + true + + + + + + + 1 + + + + + + + 1 + + + + + + + + + + + Connects at least one Agent and one or more Record Resource or + Instantiation that the Agent(s) hold(s) or held. The Agent(s) is the source of the Relation + and the Record Resource(s) or Instantiation is the target. + + Record Resource Holding Relation + Relation entre agents et ressources archivistiques ou instanciations + conservées + Relación entre agentes y recursos documentales que + conservan + + + 2023-12-30 + Fixed a typo in the French label. + + + + + 2023-12-06 + Improved the description of the Relation class (rdfs:comment) + by clearly specifying how it is directed. + + + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment). + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: added an + equivalentClass object property; replaced the specific object properties by the + generic ones in the subClassOf declarations. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Class implementation of RiC-R039 and RiC-039i + relations + + + + + + + true + + + + + + + 1 + + + + + + + 1 + + + + Connects a Record Resource to one or more Instantiations that + instantiate it, and which either may exist or may have been lost or destroyed. The Record + Resource is the source of the Relation and the Instantiation(s) is the + target. + + Record Resource to Instantiation Relation + Relation d’instanciation + Relación de recurso documental a instanciación + + + 2023-12-06 + Improved the description of the Relation class (rdfs:comment) + by clearly specifying how it is directed. + + + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment), skos:scopeNote. + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: added an + equivalentClass object property; replaced the specific object properties by the + generic ones in the subClassOf declarations. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + In some situations, it may be useful or necessary to connect a + record resource to an instantiation that no longer exists or has been lost, when some of + its characteristics are known from a source, such as an old finding aid. + Class implementation of RiC-R025 and RiC-R025i + relations + + + + + + + true + + + + + + + 2 + + + + Connects at least two Record Resources. This Relation is a + generic, not oriented one. + + Record Resource to Record Resource Relation + Relation entre ressources archivistiques + Relación entre recursos documentales + + + 2023-12-06 + Improved the description of the Relation class (rdfs:comment) + by clearly specifying how it is directed. + + + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the + skos:scopeNote. + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: added an + equivalentClass object property; replaced the specific object properties by the + generic ones in the subClassOf declarations. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Use to connect two record resources only if it is not possible + to use a narrower, more specific relation, for example + RecordResourceGeneticRelation. + Class implementation of RiC-R022 and RiC-022i + relations + + + + + One or more records that are grouped together by an Agent based on + the records sharing one or more attributes or relations. + + Record Set + Ensemble d’objets informationnels + Agrupación documental + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment), skos:scopeNote. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2023-04-19 + Removed the 0.2 existing unnecessary restriction. + + + + + 2020-10-23 + comment: updated. Scope note: updated and made several + paragraphs. Objective: to make RiC-O compliant with RiC-CM v0.2. + + + Record set is a kind of Record Resource. The member records in a + Record Set may physically reside together, though physical proximity is not essential. In a + particular context, an Agent (for example, administrator, records manager, archivist, + end-user, etc.) may select the member records of a Record Set based on any shared attribute + or attributes, or any shared relation or relations. The grouping of the records serves a + purpose or purposes specific to the context of the Agent. For example, all member records + of a Record Set have been accumulated by the same Agent; have the same Documentary Form + Type; or are related to and document the same Activity. A Record Set may represent the act + of classifying the records in accordance with a formal classification scheme that may be + based on activity, subject, organizational structure, or other criteria; an act of archival + arrangement (for example, based on common provenance); or some other selection and grouping + that fulfils a particular purpose or purposes (for example, a classification that reflects + or supports the purposes of a researcher). By exception, some records are brought together + based on their not belonging in the context of selection to other designated groups: a + 'Miscellaneous' series, for example. A Record Sset accumulated by an Agent in the course of + life or work activity should be described in a manner that preserves context and evidential + value. Record Sets may also contain other Record Sets. A Record Set or Record may + simultaneously be a member of more than one Record Set, and over the course of its + existence, a Record Set or Record may be a member of an indeterminate number of Record Sets + in an indeterminate number of contexts. Record Sets and Records contained within a Record + Set may be ordered into a sequence based on a common property or relation, or common + properties or relations (for example, alphabetical by agent or related place); + chronological order by creation date; or some other criterion (for example, an imposed + order by relevance). + Corresponds to RiC-E03 (Record Set + entity) + + + + + A broad categorization of the type of Record Set. + + Record Set Type + Type d’ensemble d’objets informationnels + Tipo de agrupación documental + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the + skos:scopeNote. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2023-04-19 + Removed the 0.2 existing unnecessary restriction. + + + + + 2020-10-23 + scope note: updated. Objective: to make RiC-O compliant with + RiC-CM v0.2. + + + Four instances of Record Set Type are included for now in RiC-O; + they also are instances of skos:Concept and, as such, part of a SKOS vocabulary. Record Set + Type may also be used (or extended) to categorize types of Record Set that have not + traditionally been considered archival, e.g. search result list. + Corresponds to RiC-A36 (Record Set Type + attribute) + + + + + Description of the production or reproduction status of a Record + or Record Part. + + Record State + État d’un objet informationnel + Estado de documento + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment), skos:scopeNote. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2020-12-28 + IRI and label changed (RecordResourceState to RecordState), as + well as textual definition. + + + + + 2020-10-23 + scope note: updated. Objective: to make RiC-O compliant with + RiC-CM v0.2. + + + Can refer both to a record's stage of creation (for example + "draft") and its form of transmission when the record was received (for example + "copy"). + Corresponds to RiC-A39 (State + attribute) + + + + + + + true + + + + The top level relation class. It connects at least two Things. An + instance of a Relation may have some datatype and object properties: a general description + (datatype property) like any Thing; a certainty (for 'certain', 'quite probable', + 'uncertain','unknown'); a date (use either the date datatype property or the Date class and + isAssociatedWithDate object property); a state (relationState); a location (use the Place + class and isAssociatedWithPlace object property); a source of information that can be used + as an evidence for it (use either source datatype property or hasSource object property). + This Relation is the most generic one; it is not oriented. + + Relation + Relation + Relación + + + 2023-12-06 + Improved the description of the Relation class (rdfs:comment) + by clearly specifying how it is directed. + + + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment). + + + + + 2023-11-08 + added the equivalence to relation_role. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2021-02-08 + Removed the restrictions; completed the definition and scope + note. + + + Use when direct, binary object properties are not enough, e.g. + when you need to record a date, a location or any other descriptive element for a relation + (till RDF-Star becomes a W3C recommendation and provides a lighter method for doing so); or + when the relation invloves more than two entities (n-ary relation). It is recommended to + use the subclasses of the Relation class. + + + + + Method of recording the content type of an + Instantiation + + Representation Type + Type de représentation + Tipo de grabación + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment), skos:scopeNote. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2023-04-19 + Removed the 0.2 existing unnecessary restriction. + + + + + 2020-10-23 + Comment and scope note: updated. Objective: to make RiC-O + compliant with RiC-CM v0.2. + + + Can be unmediated (which allows humans to receive the message + communicated without an intermediation of a device) and mediated (which needs a device to + decode the message). A lot of contemporary mediated types are digital. Each representation + type may present specific features: bit rate for audio, resolution for digital images, + encoding format for video etc. Depending on the type, specific attributes may be added to + describe their characteristics. + Corresponds to RiC-A37 (Representation Type + attribute) + + + + + The role an Agent plays in some context (usually in some creation + relation). Not to be confused with a Position (position of an agent in some group). For + example, a Person who is the head of some Corporate bBdy may play the role of annotator (of + a record) in a creation relation. + + Role Type + Type de rôle + Tipo de rol + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + + + Conditions that govern the existence, responsibility, or authority + of an Agent; or the performance of an Activity by an Agent; or that contribute to the + distinct characteristics of things created or managed by an Agent. + + Rule + Règle + Regla + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment), skos:scopeNote. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2023-04-19 + Removed the 0.2 existing unnecessary restriction. + + + + + 2021-02-11 + Updated the definition (rdfs:comment) and scope note, as they + were recently changed in RiC-CM 0.2 full draft. + + + + + 2020-10-23 + Scope note: made separate paragraphs and updated. Objective: to + make RiC-O compliant with RiC-CM v0.2. + + + Rule is a kind of Thing. Rule can be related directly to agent, + activity, or anything created or managed by agents, such as a record resource or + instantiation. A rule may be unwritten or written or otherwise documented. Unwritten rules + may include though are not limited to the following: social mores, customs, or community + expectations. Written rules may include though are not limited to the following: + constitutions, legislation, acts (legal), statutes, legal codes, ordinances, charters, + mission statements, regulations, policies, procedures, instructions, codes of conduct or + ethics, professional standards, work assignments, or work plans. The source or sources of + some rules governing the existence or activity of an agent may be external (for example, + expressed in elections, social mores, customs, community expectations, laws, regulations, + standards, and best practice codes), while others may be expressed within the immediate + context of an agent (for example, policies, or written or verbal instructions). The + evidence for identifying rules may be found in their entirety in one documentary source + (for example, a law or regulation) or may be found in two or more sources. Rule should not + be confused with the one or more documentary sources that serve as evidence of its + identity. A documentary source is a record. + Corresponds to RiC-E16 (Rule + entity) + + + + + + + true + + + + + + + 1 + + + + + + + 1 + + + + Connects at least one Rule to at least one Thing when it is + associated with existence and lifecycle of the Thing. The Rule(s) is the source of the + Relation, and the Thing(s) is the target. + + Rule Relation + Relation impliquant une règle + Relación con regla + + + 2023-12-06 + Improved the description of the Relation class (rdfs:comment) + by clearly specifying how it is directed. + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: added an + equivalentClass object property; replaced the specific object properties by the + generic ones in the subClassOf declarations. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Class implementation of RiC-R062 and RiC-R062i + relations + + + + + Categorization of a Rule. + + Rule Type + Type de règle + Tipo de regla + + + 2023-11-12 + Aligned with RiC-CM 1.0: added a + rico:RiCCMCorrespondingComponent. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2023-04-19 + Removed the 0.2 existing unnecessary restriction. + + + + + 2020-10-19 + Class added along with hasRuleType and isRuleTypeOf object + properties. + + + For example, for rules that can be applied to record resources : + access rule, use rule, etc. + Corresponds to RiC-A45 (Rule Type + attribute). + + + + + + + true + + + + + + + 1 + + + + + + + 1 + + + + Connects at least one Thing to at least one other Thing that + follows or followed it in some sequence. The Relation is oriented from the first Thing(s) + in the sequence to the following one(s): the first Thing(s) is the source, and the + following Thing(s) is the target. + + Sequential Relation + Relation séquentielle + Relación secuencial + + + 2023-12-06 + Improved the description of the Relation class (rdfs:comment) + by clearly specifying how it is directed. + + + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment), skos:scopeNote. + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: added an + equivalentClass object property; replaced the specific object properties by the + generic ones in the subClassOf declarations. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + The relation does not specify the criteria used for ordering the + sequence. There may be zero to many intermediate entities, ignored or unknown, in the + sequence between the two connected things. Can be used, for example, for specifying that a + record "has next" another record within a record set. + Class implementation of RiC-R008 and RiC-R008i + relations + + + + + + + true + + + + + + + 2 + + + + Connects at least two Persons, when they are siblings. This + Relation is not oriented. + + Sibling Relation + Relation de fratrie + Relación familiar entre hermanos + + + 2023-12-06 + Improved the description of the Relation class (rdfs:comment) + by clearly specifying how it is directed. + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: added an + equivalentClass object property; replaced the specific object properties by the + generic ones in the subClassOf declarations. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Class implementation of RiC-R048 and RiC-R048i + relations + + + + + + + true + + + + + + + 2 + + + + Connects at least two Persons, when they are spouses. This + Relation is not oriented. + + Spouse Relation + Relation matrimoniale + Relación matrimonial entre personas + + + 2023-12-06 + Improved the description of the Relation class (rdfs:comment) + by clearly specifying how it is directed. + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: added an + equivalentClass object property; replaced the specific object properties by the + generic ones in the subClassOf declarations. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Class implementation of RiC-R049 and RiC-R049i + relations + + + + + + + true + + + + + + + 1 + + + + + + + 1 + + + + Connects at least one Person to at least another Person who is or + was their student. The Relation is oriented from the teacher(s) to the student(s): the + teacher Person(s) is the source of the Relation, and the student Person(s) is the + target. + + Teaching Relation + Relation entre enseignants et étudiants + Relación académica entre profesor y alumno + + + 2023-12-06 + Improved the description of the Relation class (rdfs:comment) + by clearly specifying how it is directed. + + + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment). + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: added an + equivalentClass object property; replaced the specific object properties by the + generic ones in the subClassOf declarations. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Class implementation of RiC-R053 and RiC-R053i + relations + + + + + + + true + + + + + + + 1 + + + + + + + 1 + + + + Connects at least one Thing to at least one other Thing that + follows it in chronological order. The Relation is oriented chronologically: the preceding + Thing(s) is the source of the Relation, the following Thing(s) is the + target. + + Temporal Relation + Relation temporelle + Relación temporal + + + 2023-12-06 + Improved the description of the Relation class (rdfs:comment) + by clearly specifying how it is directed. + + + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the + skos:scopeNote. + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: added an + equivalentClass object property; replaced the specific object properties by the + generic ones in the subClassOf declarations. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + There may be zero to many intermediate entities, ignored or + unknown, in the chronological sequence between the connected entities. + Class implementation of RiC-R009 and RiC-R009i + relations + + + + Any idea, material thing, or event within the realm of human + experience. + + Thing + Chose + Cosa + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2020-10-23 + made separate paragraphs in the scope note. + + + Includes all RiC entities as well as any concept, material + thing, or event that may be the subject of a Record Resource or associated with an + Activity. Examples of entities not explicitly addressed in RiC includes but is not limited + to the following: abstract concepts; cultural movements, named periods and events; named + things, objects and works; legendary, mythical or fictitious figures, characters or + beings. + Corresponds to RiC-E01 (Thing + entity) + + + + + A name that is used for a Record Resource or a Rule + + Title + Intitulé + Título + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Class implementation of a specialization of RiC-A28 + (Name attribute) + + + + + A superclass for any category of some thing. A type characterizes + an entity. + + Type + Type + Tipo + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + + + + + true + + + + + + + 1 + + + + + + + 1 + + + + Connects a category (a Type) and at least one Thing that belongs + to this category. The Type(s) is the source of the Relation, and the Thing(s) is the + target. + + Type Relation + Relation de catégorisation + Tipo de relación + + + 2023-12-06 + Improved the description of the Relation class (rdfs:comment) + by clearly specifying how it is directed. + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: added an + equivalentClass object property; replaced the specific object properties by the + generic ones in the subClassOf declarations. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + may be useful at least for some types (e.g. demographic + group) + + + + + A definite magnitude of a quantity, defined and adopted by + convention or by law, that is used as a standard for measurement of the same kind of + quantity. Can be spacial units (cm, m), weight (g, kg), time (s, h), storage (MB, TB) or + more informal units used in the archival context like number of boxes, pages or + words. + + Unit Of Measurement + Unité de mesure + Unidad de medida + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added an xml:lang attribute to the rdfs:comment. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + + + 2020-10-28 + Class added in order to be able to handle units of measurement + as full entities. + + + + + + + + + true + + + + + + + 1 + + + + + + + 1 + + + + Connects a Thing to at least one other Thing that is or was a + portion or division of the whole Thing. The Relation is oriented from the Thing to its + part(s): the Thing is the source of the Relation, and the part Thing(s) is the + target. + + Whole Part Relation + Relation partitive + Relación entre todo y parte + + + 2023-12-06 + Improved the description of the Relation class (rdfs:comment) + by clearly specifying how it is directed. + + + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment). + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: added an + equivalentClass object property; replaced the specific object properties by the + generic ones in the subClassOf declarations. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Class implementation of RiC-R002 and RiC-R002i + relations + + + + + + + true + + + + + + + 2 + + + + Connects at least two Agents that have or had some type of work + relation in the course of their activities. This Relation is not oriented. + + Work Relation + Relation de travail + Relación profesional + + + 2023-12-06 + Improved the description of the Relation class (rdfs:comment) + by clearly specifying how it is directed. + + + + + 2023-11-12 + Aligned with RiC-CM 1.0: updated the description + (rdfs:comment). + + + + + 2023-11-08 + In order to get a system of rolified Relation classes: added an + equivalentClass object property; replaced the specific object properties by the + generic ones in the subClassOf declarations. + + + + + 2023-11-02 + Added a new rdfs:label in Spanish. + + + + + 2023-08-25 + Added a new rdfs:label in French. + + + Class implementation of RiC-R046 and RiR046i + relations- + + + + + + + + + + International Coucil on Archives Expert Group on Archival + Description (ICA EGAD) + International Council on Archives Records in Contexts Vocabulary for + Documentary Form Types + Documentary Form Types + Types de documents + Tipos documentales + en + fr + es + + + 2023-12-13 + Completed the metadata of the vocabulary: added dc:language, a + history note and a scope note. + + + + + 2023-11-25 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + A vocabulary that provides URIs for describing documentary + form types of RiC Records and Record Parts. + This vocabulary was created within the Records in Contexts + Ontology. When the ICA/EGAD developed RiC-O 1.0, it was decided that two versions of RiC-O + would be released. The first one, consisting of a unique large OWL file, would remain the + reference one. RiC-0 1.0 would also be provided as a set of files, in order to address + specific needs, e.g. using only the core of the ontology, or using only the individuals it + defined and defining new individuals. So from December 2023, you can find the vocabulary on + Documentary Form Types, either in the unique large OWL RiC-O file, or as a separate file. + For now this vocabulary only defines two top concepts; it should + hopefully be completed later. The concepts defined in this vocabulary can be used in + combination with RiC-O classes and properties, whenever necessary and appropriate, to + assign a documentary form type to a Record or a Record Part, using the + rico:hasDocumentaryFormType object property, or its inverse one. They also can be used to + specify that a rico:RecordSet included or includes members whose some + (rico:hasOrHadSomeMemberswithDocumentaryFormType) or all + (rico:hasOrHadAllMembersWithDocumentaryFormType) have some Documentary Form Type. Each + concept is both defined as a skos:Concept and a rico:DocumentaryFormType, so that it is + possible to extend the classic definition of such concepts using RiC-O properties. For + example, you can use rico:history, rico:date, or rico:isAssociatedWithPlace, + rico:precedesInTime, if you consider a documentary form type as being a historical entity, + known and used in some known space or time region. + + + + + + + International Coucil on Archives Expert Group on Archival + Description (ICA EGAD) + International Council on Archives Records in Contexts Vocabulary for + Record Set Types + Record Set Types + Types d’ensembles d’objets informationnels + Tipos de agrupación documental + en + fr + es + + + 2023-12-13 + Completed the metadata of the vocabulary: added dc:language, a + history note and a scope note. + + + + + 2023-11-25 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + This vocabulary was created within the Records in Contexts + Ontology. When the ICA/EGAD developed RiC-O 1.0, it was decided that two versions of RiC-O + would be released. The first one, consisting of a unique large OWL file, would remain the + reference one. RiC-0 1.0 would also be provided as a set of files, in order to address + specific needs, e.g. using only the core of the ontology, or using only the individuals it + defined and defining new individuals. So from December 2023, you can find the vocabulary on + Record Set Types, either in the unique large OWL RiC-O file, or as a separate file. + A vocabulary that provides URIs for describing types of RiC Record Sets. + For now this vocabulary only defines four top concepts; it + should hopefully be completed later. The concepts defined in this vocabulary can be used in + combination with RiC-O classes and properties, whenever necessary and appropriate, to + assign a record set type to a Record Set, using the rico:hasRecordSetType object property, + or its inverse one. Each concept is both defined as a skos:Concept and a + rico:RecordSetType, so that it is possible to extend the classic definition of such + concepts using RiC-O properties. For example, you can use rico:history, rico:date, or + rico:isAssociatedWithPlace, rico:precedesInTime, if you consider a record set type as being + a historical entity, known and used in some known space or time region. + + + + + + + + + + authority record + notice d’autorité + registro de autoridad + + + 2023-11-25 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + This category can be used for records that describe an + entity. + + + + + + + + finding aid + instrument de recherche + instrumento de descripción + + + 2023-11-25 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + This documentary form type can be used for records that + aggregate and organizes metadata on some record(s) or record set(s). + + + + + + + + collection + collection + colección + + + 2023-11-25 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + An artificial assemblage of documents accumulated on the basis + of some common characteristic without regard to the provenance of those documents. Not to + be confused with an archival fonds. (From ICA ISAD(G)) + + + + + + + + dossier + file + expediente + + + 2023-11-25 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + An organized unit of documents grouped together either for + current use by the creator or in the process of archival arrangement, because they relate + to the same subject, activity, or transaction. A file is usually the basic unit within a + record series. (From ICA ISAD(G)) + + + + + + + + fonds + fonds + fondo + + + 2023-11-25 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + The whole of the records, regardless of form or medium, + organically created and/or accumulated and used by a particular person, family, or + corporate body in the course of that creator's activities and functions. (From ICA + ISAD(G)) + + + + + + + + series + série organique + serie + + + 2023-11-25 + Added a new rdfs:label in Spanish. + + + + + 2023-08-28 + Added a new rdfs:label in French. + + + Documents arranged in accordance with a filing system or + maintained as a unit because they result from the same accumulation or filing process, or + the same activity; have a particular form; or because of some other relationship arising + out of their creation, receipt, or use. A series is also known as a records series. (From + ICA ISAD(G)) + + + + + diff --git a/dev-page/configs/sparnatural-hierarchy-config.ttl b/dev-page/configs/sparnatural-hierarchy-config.ttl index a1535e65..cb2e85f6 100644 --- a/dev-page/configs/sparnatural-hierarchy-config.ttl +++ b/dev-page/configs/sparnatural-hierarchy-config.ttl @@ -29,7 +29,10 @@ @prefix skos: . @prefix skosxl: . - a owl:Ontology . + a owl:Ontology, skos:ConceptScheme; + skos:hasTopConcept this:Place_hasOrHadPlaceType, this:Adresse_hasOrHadLocation, this:Adresse_inversePath_hasOrHadLocation, + this:EtudeNotaire_hasOrHadLocation_hasOrHadLocation, this:Personne_Organization_agentIsTargetOfPerformanceRelation_beginningDate, + this:Personne_beginningDate, this:Personne_birthDate . this:Lieu a sh:NodeShape; sh:order "1"^^xsd:integer; @@ -112,7 +115,8 @@ this:Personne a sh:NodeShape; rdfs:label "Person"@en, "Personne"@fr; sh:description "Any person. It includes notaries, and any person mentioned in notarial records."@en, "Toute personne physique. Inclut les notaires, et surtout toute personne mentionnée dans les archives notariales."@fr; - sh:property this:Personne_Organization_agentIsTargetOfPerformanceRelation_beginningDate . + sh:property this:Personne_Organization_agentIsTargetOfPerformanceRelation_beginningDate, + this:Personne_beginningDate, this:Personne_birthDate . this:Notaire a sh:NodeShape; sh:order "7"^^xsd:integer; @@ -140,95 +144,127 @@ this:PersonneEtOrganisation a sh:NodeShape; rdfs:label "A person and an organisation at the same time"@en, "En même temps une personne et une organisation"@fr; sh:node this:Personne, this:Organization . -this:Place_hasOrHadPlaceType sh:path rico:hasOrHadPlaceType; +this:Place_hasOrHadPlaceType a skos:Concept; + sh:path rico:hasOrHadPlaceType; sh:order "1"; sh:name "has place type"@en, "a pour type de lieu"@fr; sh:maxCount "1"^^xsd:integer; sh:nodeKind sh:IRI; sh:node this:TypeDeLieu; dash:searchWidget core:ListProperty; - dash:propertyRole dash:LabelRole . + dash:propertyRole dash:LabelRole; + skos:inScheme ; + skos:topConceptOf . this:Place sh:property this:Place_hasOrHadPlaceType . -this:Adresse_hasOrHadLocation sh:path rico:hasOrHadLocation; +this:Adresse_hasOrHadLocation a skos:Concept; + sh:path rico:hasOrHadLocation; sh:order "1"; sh:name "has location"@en, "est située dans"@fr; sh:nodeKind sh:IRI; - sh:or _:e99289c33b654f7e8ebf0bfbdc55b464173; + sh:or _:e99289c33b654f7e8ebf0bfbdc55b4643011; dash:searchWidget core:ListProperty; dash:propertyRole dash:LabelRole; - datasources:datasource this:list_rdfslabel_with_range_count_langfr . + datasources:datasource this:list_rdfslabel_with_range_count_langfr; + skos:inScheme ; + skos:topConceptOf . -_:e99289c33b654f7e8ebf0bfbdc55b464173 rdf:first _:e99289c33b654f7e8ebf0bfbdc55b464174; - rdf:rest _:e99289c33b654f7e8ebf0bfbdc55b464175 . +_:e99289c33b654f7e8ebf0bfbdc55b4643011 rdf:first _:e99289c33b654f7e8ebf0bfbdc55b4643012; + rdf:rest _:e99289c33b654f7e8ebf0bfbdc55b4643013 . -_:e99289c33b654f7e8ebf0bfbdc55b464174 sh:node this:Voie . +_:e99289c33b654f7e8ebf0bfbdc55b4643012 sh:node this:Voie . -_:e99289c33b654f7e8ebf0bfbdc55b464175 rdf:first _:e99289c33b654f7e8ebf0bfbdc55b464176; +_:e99289c33b654f7e8ebf0bfbdc55b4643013 rdf:first _:e99289c33b654f7e8ebf0bfbdc55b4643014; rdf:rest rdf:nil . -_:e99289c33b654f7e8ebf0bfbdc55b464176 sh:node this:QuartierOuParoisse . +_:e99289c33b654f7e8ebf0bfbdc55b4643014 sh:node this:QuartierOuParoisse . -this:Adresse_inversePath_hasOrHadLocation sh:path _:e99289c33b654f7e8ebf0bfbdc55b464177; +this:Adresse_inversePath_hasOrHadLocation a skos:Concept; + sh:path _:e99289c33b654f7e8ebf0bfbdc55b4643015; sh:order "2"; sh:name "is address of"@en, "est l'adresse de"@fr; sh:nodeKind sh:IRI; - sh:or _:e99289c33b654f7e8ebf0bfbdc55b464178; + sh:or _:e99289c33b654f7e8ebf0bfbdc55b4643016; dash:searchWidget core:ListProperty; dash:propertyRole dash:LabelRole; - datasources:datasource this:list_rdfslabel_with_range_count_langfr . + datasources:datasource this:list_rdfslabel_with_range_count_langfr; + skos:inScheme ; + skos:topConceptOf . -_:e99289c33b654f7e8ebf0bfbdc55b464177 sh:inversePath rico:hasOrHadLocation . +_:e99289c33b654f7e8ebf0bfbdc55b4643015 sh:inversePath rico:hasOrHadLocation . -_:e99289c33b654f7e8ebf0bfbdc55b464178 rdf:first _:e99289c33b654f7e8ebf0bfbdc55b464179; - rdf:rest _:e99289c33b654f7e8ebf0bfbdc55b464180 . +_:e99289c33b654f7e8ebf0bfbdc55b4643016 rdf:first _:e99289c33b654f7e8ebf0bfbdc55b4643017; + rdf:rest _:e99289c33b654f7e8ebf0bfbdc55b4643018 . -_:e99289c33b654f7e8ebf0bfbdc55b464179 sh:node this:Etude . +_:e99289c33b654f7e8ebf0bfbdc55b4643017 sh:node this:Etude . -_:e99289c33b654f7e8ebf0bfbdc55b464180 rdf:first _:e99289c33b654f7e8ebf0bfbdc55b464181; +_:e99289c33b654f7e8ebf0bfbdc55b4643018 rdf:first _:e99289c33b654f7e8ebf0bfbdc55b4643019; rdf:rest rdf:nil . -_:e99289c33b654f7e8ebf0bfbdc55b464181 sh:node this:Notaire . +_:e99289c33b654f7e8ebf0bfbdc55b4643019 sh:node this:Notaire . -this:EtudeNotaire_hasOrHadLocation_hasOrHadLocation sh:path _:e99289c33b654f7e8ebf0bfbdc55b464182; +this:EtudeNotaire_hasOrHadLocation_hasOrHadLocation a skos:Concept; + sh:path _:e99289c33b654f7e8ebf0bfbdc55b4643020; sh:order "1"; sh:name "performs an activity in the district or street"@en, "exerce dans le quartier ou la voie"@fr; sh:nodeKind sh:IRI; - sh:or _:e99289c33b654f7e8ebf0bfbdc55b464184; + sh:or _:e99289c33b654f7e8ebf0bfbdc55b4643022; dash:searchWidget core:ListProperty; dash:propertyRole dash:LabelRole; - datasources:datasource this:list_rdfslabel_with_range_count_langfr . + datasources:datasource this:list_rdfslabel_with_range_count_langfr; + skos:inScheme ; + skos:topConceptOf . -_:e99289c33b654f7e8ebf0bfbdc55b464182 rdf:first rico:hasOrHadLocation; - rdf:rest _:e99289c33b654f7e8ebf0bfbdc55b464183 . +_:e99289c33b654f7e8ebf0bfbdc55b4643020 rdf:first rico:hasOrHadLocation; + rdf:rest _:e99289c33b654f7e8ebf0bfbdc55b4643021 . -_:e99289c33b654f7e8ebf0bfbdc55b464183 rdf:first rico:hasOrHadLocation; +_:e99289c33b654f7e8ebf0bfbdc55b4643021 rdf:first rico:hasOrHadLocation; rdf:rest rdf:nil . -_:e99289c33b654f7e8ebf0bfbdc55b464184 rdf:first _:e99289c33b654f7e8ebf0bfbdc55b464185; - rdf:rest _:e99289c33b654f7e8ebf0bfbdc55b464186 . +_:e99289c33b654f7e8ebf0bfbdc55b4643022 rdf:first _:e99289c33b654f7e8ebf0bfbdc55b4643023; + rdf:rest _:e99289c33b654f7e8ebf0bfbdc55b4643024 . -_:e99289c33b654f7e8ebf0bfbdc55b464185 sh:node this:Voie . +_:e99289c33b654f7e8ebf0bfbdc55b4643023 sh:node this:Voie . -_:e99289c33b654f7e8ebf0bfbdc55b464186 rdf:first _:e99289c33b654f7e8ebf0bfbdc55b464187; +_:e99289c33b654f7e8ebf0bfbdc55b4643024 rdf:first _:e99289c33b654f7e8ebf0bfbdc55b4643025; rdf:rest rdf:nil . -_:e99289c33b654f7e8ebf0bfbdc55b464187 sh:node this:QuartierOuParoisse . +_:e99289c33b654f7e8ebf0bfbdc55b4643025 sh:node this:QuartierOuParoisse . -this:Personne_Organization_agentIsTargetOfPerformanceRelation_beginningDate sh:path - _:e99289c33b654f7e8ebf0bfbdc55b464188; +this:Personne_Organization_agentIsTargetOfPerformanceRelation_beginningDate a skos:Concept; + sh:path _:e99289c33b654f7e8ebf0bfbdc55b4643026; sh:name "has beginning date of occupation"@en, "a pour date de début d'exercice"@fr; sh:nodeKind sh:Literal; sh:datatype xsd:date; - dash:searchWidget core:TimeProperty-Date . + dash:searchWidget core:TimeProperty-Date; + skos:inScheme ; + skos:topConceptOf . -_:e99289c33b654f7e8ebf0bfbdc55b464188 rdf:first rico:agentIsTargetOfPerformanceRelation; - rdf:rest _:e99289c33b654f7e8ebf0bfbdc55b464189 . +_:e99289c33b654f7e8ebf0bfbdc55b4643026 rdf:first rico:agentIsTargetOfPerformanceRelation; + rdf:rest _:e99289c33b654f7e8ebf0bfbdc55b4643027 . -_:e99289c33b654f7e8ebf0bfbdc55b464189 rdf:first rico:beginningDate; +_:e99289c33b654f7e8ebf0bfbdc55b4643027 rdf:first rico:beginningDate; rdf:rest rdf:nil . +this:Personne_beginningDate a skos:Concept; + sh:path rico:beginningDate; + sh:name "has beginning date"@en, "a pour date de début"@fr; + sh:nodeKind sh:Literal; + sh:datatype xsd:date; + dash:searchWidget core:TimeProperty-Date; + skos:inScheme ; + skos:topConceptOf . + +this:Personne_birthDate a skos:Concept; + sh:path rico:birthDate; + sh:name "has birth date"@en, "date de naissance"@fr; + sh:nodeKind sh:Literal; + sh:datatype xsd:date; + dash:searchWidget core:TimeProperty-Date; + skos:inScheme ; + skos:topConceptOf . + this:list_rdfslabel_with_range_count_langfr a datasources:SparqlDatasource; datasources:queryTemplate this:query_list_label_with_range_count_langfr; datasources:labelProperty rdfs:label . diff --git a/dev-page/configs/sparnatural-hierarchy-config.xlsx b/dev-page/configs/sparnatural-hierarchy-config.xlsx index 24cd71d55a8045b76c5a5137e371e902de520942..170af72c329c8b51b95744ee5911fd86744f3118 100644 GIT binary patch delta 24461 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 L9Q!87S;Kz;(x4uV delta 23711 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

            Eu!j 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 diff --git a/dev-page/index.html b/dev-page/index.html index 91fc452f..6a6f4225 100644 --- a/dev-page/index.html +++ b/dev-page/index.html @@ -62,7 +62,8 @@ - + + { let prop = new SHACLSpecificationProperty(ps, this.provider, this.store, this.lang); @@ -99,6 +96,12 @@ export class SHACLSpecificationEntity extends SHACLSpecificationEntry implements } }); + // add properties available from parents - recursively + let parents = this.provider.getEntity(range).getParents(); + parents.forEach(aParent => { + items = [...items, ...this.getConnectingProperties(aParent)]; + }) + // dedup, although probably dedup is not necessary here var dedupItems = [...new Set(items)]; // sort dedups From a72739b87fdc0ecf5b5193134e4f5dc813bbecff Mon Sep 17 00:00:00 2001 From: antoine37120 Date: Wed, 11 Sep 2024 16:47:07 +0200 Subject: [PATCH 46/55] #351 Reload query support --- .../objectpropertygroup/ObjectPropertyTypeId.ts | 4 ++++ .../criteriagroup/startendclassgroup/ClassTypeId.ts | 4 ++++ .../startendclassgroup/HierarchicalClassSelectBuilder.ts | 6 ++++++ src/sparnatural/querypreloading/QueryLoader.ts | 9 +++------ 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/objectpropertygroup/ObjectPropertyTypeId.ts b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/objectpropertygroup/ObjectPropertyTypeId.ts index 1a569cce..5c5b5608 100644 --- a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/objectpropertygroup/ObjectPropertyTypeId.ts +++ b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/objectpropertygroup/ObjectPropertyTypeId.ts @@ -95,6 +95,10 @@ class ObjectPropertyTypeId extends HTMLComponent { return this; } + setSelected($value:string) { + this.selectBuilder.selectWidget.setValue($value) ; + } + submitSelected() { this.selectBuilder.selectWidget.submitSelectedValue() ; diff --git a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/ClassTypeId.ts b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/ClassTypeId.ts index 2272a5d6..59a09f88 100644 --- a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/ClassTypeId.ts +++ b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/ClassTypeId.ts @@ -101,6 +101,10 @@ class ClassTypeId extends HTMLComponent { return this; } + setSelected($value:string) { + this.selectBuilder.selectWidget.setValue($value) ; + } + submitSelected() { this.selectBuilder.selectWidget.submitSelectedValue() ; } diff --git a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts index 31e68455..af918d12 100644 --- a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts +++ b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts @@ -431,6 +431,12 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { this.ParentComponent.html[0].classList.remove('focus') ; this.htmlSelectUiUx.removeClass('open') ; } + setValue(selectedValue:string) { + this.defaultValue = { + value: selectedValue, + path: '', + } + } submitSelectedValue() { if (this.defaultValue.value != '') { diff --git a/src/sparnatural/querypreloading/QueryLoader.ts b/src/sparnatural/querypreloading/QueryLoader.ts index a8066b85..3131d045 100644 --- a/src/sparnatural/querypreloading/QueryLoader.ts +++ b/src/sparnatural/querypreloading/QueryLoader.ts @@ -158,12 +158,9 @@ export default class QueryLoader{ component: StartClassGroup | EndClassGroup | ObjectPropertyGroup, value: string ) { - // set the values to the ClassTypeId component - component.inputSelector.oldWidget.val(value).niceSelect("update"); - let niceSelect = component.inputSelector.html[0].querySelectorAll('.nice-select') - if (niceSelect.length > 1) console.warn('More than one nice-select found!') - niceSelect[0].classList.add("disabled") - + // set the values to the ClassTypeId | ObjectPropertyTypeId component + component.inputSelector.setSelected(value) ; + component.inputSelector.submitSelected() ; } // this method checks if the eye btn was enabled in the loaded query From ee5229ef3046abe5526b4f129bf968c33040d167 Mon Sep 17 00:00:00 2001 From: antoine37120 Date: Wed, 11 Sep 2024 17:07:49 +0200 Subject: [PATCH 47/55] #351 fix placeholder objectProperty algnement --- .../citeriagroup/objectpropertygroup/objectpropertygroup.scss | 2 +- .../citeriagroup/objectpropertygroup/objectpropertytypeid.scss | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/assets/stylesheets/components/citeriagroup/objectpropertygroup/objectpropertygroup.scss b/src/assets/stylesheets/components/citeriagroup/objectpropertygroup/objectpropertygroup.scss index eb55eafb..58545d77 100644 --- a/src/assets/stylesheets/components/citeriagroup/objectpropertygroup/objectpropertygroup.scss +++ b/src/assets/stylesheets/components/citeriagroup/objectpropertygroup/objectpropertygroup.scss @@ -14,7 +14,7 @@ font-size: 14px; height: 42px; padding-left: 20px; - padding-right: 25px; + padding-right: 20px; display: inline-block; color: var(--default-text-color); background-color: #fff; diff --git a/src/assets/stylesheets/components/citeriagroup/objectpropertygroup/objectpropertytypeid.scss b/src/assets/stylesheets/components/citeriagroup/objectpropertygroup/objectpropertytypeid.scss index d4d8a0ea..8ec12521 100644 --- a/src/assets/stylesheets/components/citeriagroup/objectpropertygroup/objectpropertytypeid.scss +++ b/src/assets/stylesheets/components/citeriagroup/objectpropertygroup/objectpropertytypeid.scss @@ -4,6 +4,8 @@ .currentWrapper { padding-left: 15px; + padding-right: 15px; + } span.current { From 67cc03900955dfd1f22e464d1a93e02e5c84ec4e Mon Sep 17 00:00:00 2001 From: antoine37120 Date: Wed, 11 Sep 2024 17:13:09 +0200 Subject: [PATCH 48/55] #351 ObjectProperty placeholder textSize and vertical align --- .../citeriagroup/objectpropertygroup/objectpropertygroup.scss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/assets/stylesheets/components/citeriagroup/objectpropertygroup/objectpropertygroup.scss b/src/assets/stylesheets/components/citeriagroup/objectpropertygroup/objectpropertygroup.scss index 58545d77..f26998c1 100644 --- a/src/assets/stylesheets/components/citeriagroup/objectpropertygroup/objectpropertygroup.scss +++ b/src/assets/stylesheets/components/citeriagroup/objectpropertygroup/objectpropertygroup.scss @@ -10,8 +10,8 @@ font-style: italic; } .currentWrapper span.current.temporary-label { - line-height: base.$height-components-under - 2; - font-size: 14px; + line-height: base.$height-components-under - 6; + font-size: 16px; height: 42px; padding-left: 20px; padding-right: 20px; From 96b81ba402b3d1b1c11d3a006ffcd75c534a8c8f Mon Sep 17 00:00:00 2001 From: antoine37120 Date: Wed, 11 Sep 2024 17:24:16 +0200 Subject: [PATCH 49/55] #351 fix margin current values --- .../stylesheets/components/citeriagroup/criteriagroup.scss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/assets/stylesheets/components/citeriagroup/criteriagroup.scss b/src/assets/stylesheets/components/citeriagroup/criteriagroup.scss index 1606eb10..c62919ad 100644 --- a/src/assets/stylesheets/components/citeriagroup/criteriagroup.scss +++ b/src/assets/stylesheets/components/citeriagroup/criteriagroup.scss @@ -85,8 +85,8 @@ height: 48px; background: rgba(0, 0, 0, 0); border-color: rgba(0, 0, 0, 0); - padding-left: 10px; - padding-right: 26px; + padding-left: 8px; + padding-right: 12px; border-width: 0; border-top-width: 3px; border-bottom-width: 3px; From f04d0a4fbf824d397b3ba26e9391a41ea0aaf0ea Mon Sep 17 00:00:00 2001 From: antoine37120 Date: Thu, 12 Sep 2024 10:42:33 +0200 Subject: [PATCH 50/55] #351 fix icons on variablesSelection --- src/assets/stylesheets/layout/variablesSelection.scss | 3 +++ .../variables-section/variableorder/DraggableComponent.ts | 7 ++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/assets/stylesheets/layout/variablesSelection.scss b/src/assets/stylesheets/layout/variablesSelection.scss index 6a203055..20180126 100644 --- a/src/assets/stylesheets/layout/variablesSelection.scss +++ b/src/assets/stylesheets/layout/variablesSelection.scss @@ -134,6 +134,9 @@ } } + .tmpicon { + font-size: 22px; + } input { line-height: 30px; padding: 1px; diff --git a/src/sparnatural/components/variables-section/variableorder/DraggableComponent.ts b/src/sparnatural/components/variables-section/variableorder/DraggableComponent.ts index 25d5f94b..f59dc8da 100644 --- a/src/sparnatural/components/variables-section/variableorder/DraggableComponent.ts +++ b/src/sparnatural/components/variables-section/variableorder/DraggableComponent.ts @@ -35,6 +35,11 @@ export class DraggableComponent extends HTMLComponent { let varName = selected_val.variable; let icon = specProvider.getEntity(selected_val.type).getIcon(); + + let icon_display = `` ; + if (icon != undefined ) { + icon_display = `

            ` ; + } let editVar = $(` @@ -74,7 +79,7 @@ export class DraggableComponent extends HTMLComponent { ${UiuxConfig.COMPONENT_DRAG_HANDLE} -
            ${icon}
            + ${icon_display} `).append(editVar) ; let aggrBadgeValue = $(` From 5515d0a8630f570367cb2818eedd981a086a206a Mon Sep 17 00:00:00 2001 From: antoine37120 Date: Thu, 12 Sep 2024 10:46:00 +0200 Subject: [PATCH 51/55] #351 remove ObjectPropertyTypeId placeholder on select --- .../criteriagroup/objectpropertygroup/ObjectPropertyTypeId.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/objectpropertygroup/ObjectPropertyTypeId.ts b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/objectpropertygroup/ObjectPropertyTypeId.ts index 5c5b5608..5fccd510 100644 --- a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/objectpropertygroup/ObjectPropertyTypeId.ts +++ b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/objectpropertygroup/ObjectPropertyTypeId.ts @@ -45,7 +45,7 @@ class ObjectPropertyTypeId extends HTMLComponent { render() { super.render(); - this.htmlCurentValue = $(`${this.temporaryLabel}`) ; + this.htmlCurentValue = $(``) ; let currentWrapper = $('
            ') ; currentWrapper.append(this.htmlCurentValue) ; this.html.append(currentWrapper); From 1191bbf41781f867d568359a4905ff97d88a98d4 Mon Sep 17 00:00:00 2001 From: antoine37120 Date: Thu, 12 Sep 2024 15:31:16 +0200 Subject: [PATCH 52/55] #351 add count display + dev random values for count --- .../hierarchicalclassselectbuilder.scss | 94 ++++++++++++++++++- .../ObjectPropertyTypeId.ts | 2 +- .../startendclassgroup/ClassTypeId.ts | 2 +- .../HierarchicalClassSelectBuilder.ts | 55 ++++++++++- 4 files changed, 147 insertions(+), 6 deletions(-) diff --git a/src/assets/stylesheets/components/citeriagroup/startendclassgroup/hierarchicalclassselectbuilder.scss b/src/assets/stylesheets/components/citeriagroup/startendclassgroup/hierarchicalclassselectbuilder.scss index 69bb7dfe..aa915826 100644 --- a/src/assets/stylesheets/components/citeriagroup/startendclassgroup/hierarchicalclassselectbuilder.scss +++ b/src/assets/stylesheets/components/citeriagroup/startendclassgroup/hierarchicalclassselectbuilder.scss @@ -315,9 +315,42 @@ height: 40px; display: flex; background: #fff; + position: relative; + z-index: 11; + + .item-count { + position: absolute; + display: block; + left: 0; + top:0; + width: calc(100% - 29px); + height: 39px; + z-index: -1; + &>span { + display: block; + height: 39px; + background-color: var(--primary-color-medium) ; + } + } + .item-count-number { + position: absolute; + display: none; + right: 0; + top:0; + height: 40px; + font-size: 12px; + font-weight: 700; + line-height: 16.34px; + text-align: right; + line-height: 21.79px; + color: #000; + padding: 11px 5px; + z-index: 1; + } span.item-sel { display: inline-block; + position: relative; width: 100%; padding: 9px 9px; height: 40px; @@ -336,6 +369,9 @@ text-align: center; /*text-indent: -4px;*/ } + .item-label { + vertical-align: top; + } } &.disabled span.item-traverse { border-left: 1px solid transparent; @@ -353,8 +389,16 @@ span.item-sel { width: 315px; } + /*.item-count { + width: 100%; + }*/ + + .item-count-number { + right: 31px; + } span.item-traverse { display: inline-block; + position: relative; } } img { @@ -365,19 +409,63 @@ } &.selected, &.focus, - &>span:hover { - background-color: var(--primary-color-light) ; - /*color: #fff;*/ + &>span.item-traverse:hover, + &>span.item-sel:hover { + /*background-color: var(--primary-color-light) ; + color: #fff; + opacity: 0.7;*/ img { display: none; &.highlited { display: inline; } } + &:after { + content: ''; + position: absolute; + width: 100%; + height: 100%; + top:0; + left: 0; + background-color: var(--primary-color-light) ; + z-index: -2; + } } &.disabled:hover { background-color: var(--primary-color-light) ; } + &:hover { + .item-count-number { + display: block; + } + } + } + + &.hasTraverseItem.hasNoEnabledWithChilds { + li { + .item-count { + width: 100%; + } + &.have-childs { + .item-count { + width: 100%; + } + } + + } + } + &.hasNoEnabledWithChilds { + li { + .item-count { + width: 100%; + } + &.have-childs { + .item-count { + width: 100%; + } + } + + } } } } diff --git a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/objectpropertygroup/ObjectPropertyTypeId.ts b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/objectpropertygroup/ObjectPropertyTypeId.ts index 5fccd510..58b958b6 100644 --- a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/objectpropertygroup/ObjectPropertyTypeId.ts +++ b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/objectpropertygroup/ObjectPropertyTypeId.ts @@ -215,7 +215,7 @@ class PropertySelectBuilder extends HTMLComponent { color: element.payload.getColor(), icon: icon, highlightedIcon: element.payload.getHighlightedIcon(), - count: 50, + count: Math.floor(Math.random() * 1000), disabled: disabled, childs: Array() } diff --git a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/ClassTypeId.ts b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/ClassTypeId.ts index 59a09f88..2755ec4d 100644 --- a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/ClassTypeId.ts +++ b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/ClassTypeId.ts @@ -313,7 +313,7 @@ class ClassSelectBuilder extends HTMLComponent { color: element.payload.getColor(), icon: icon, highlightedIcon: element.payload.getHighlightedIcon(), - count: 50, + count: Math.floor(Math.random() * 10000000), disabled: disabled, childs: Array() } diff --git a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts index af918d12..66924fcf 100644 --- a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts +++ b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts @@ -367,6 +367,9 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { if(arrayNode.length > 0) { let Ul = $(`
              `) ; let i = 0 ; + let total_count = 0; + let hasTraverseItem = false ; + let hasNoEnabledWithChilds = true ; arrayNode.forEach(element => { let htmlItem = this.buildClassSelectItem(element, path) ; let child_path = path+'$'+element.id ; @@ -374,14 +377,27 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { i++ ; if (element.childs.length > 0) { let element_breadCrumData = null ; + hasTraverseItem = true ; + if (element.disabled == false) { + hasNoEnabledWithChilds = false ; + } element_breadCrumData = JSON.parse(JSON.stringify(breadCrumData)); element_breadCrumData.parentsLabels.push(element.label) ; element_breadCrumData.returnPath = path ; this.buildClassSelectList(element.childs, 'root-child', child_path, element_breadCrumData) ; htmlItem.attr('list-child-id', path+'$'+element.id) ; } + if (element.count != undefined) { + total_count += element.count ; + } }); let breadcrumHeight = 55; + if (hasTraverseItem) { + Ul[0].classList.add('hasTraverseItem') ; + } + if (hasNoEnabledWithChilds) { + Ul[0].classList.add('hasNoEnabledWithChilds') ; + } if (Ul[0].classList.contains('root')) { breadcrumHeight = 0 ; this.htmlSelectUiUxLists[0].style.height = (40*i)+'px' ; @@ -391,6 +407,19 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { } else { Ul[0].style.height = (40*i + breadcrumHeight)+'px' ; } + if (total_count > 0) { + let li_count = Ul[0].querySelectorAll('li') ; + let prop_coef = 100 / total_count ; + li_count.forEach(element => { + let count = parseInt(element.getAttribute('data-count')) ; + let span_gradiant = element.querySelector('.item-count>span') ; + let span_number = element.querySelector('.item-count-number') ; + let pourcent = prop_coef * count ; + span_gradiant.style.width = pourcent + '%'; + span_number.innerHTML = ''+this.getCountDisplay(count);+ ' %'; + }); + } + this.htmlSelectUiUxLists.append(Ul); } } @@ -416,10 +445,17 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { if (tooltip != '') { tooltip = `data-tippy-content="${tooltip}"` ; } + // set count attribute + let count = element.count ; + if (element.count == undefined) { + count = 0 ; + } + let count_attr = `data-count="${count}"` ; + let countUiUX = ``; let color = element.color != undefined ? `data-color="${element.color}"` : ""; - let item = $(`
            • ${icon}${element.label}${UiuxConfig.ICON_DAG_ARROW_RIGHT}
            • `) ; + let item = $(`
            • ${countUiUX}${icon}${element.label}${UiuxConfig.ICON_DAG_ARROW_RIGHT}
            • `) ; return item ; } @@ -479,6 +515,7 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { this.initBreadCrum() ; this.htmlSelectUiUxLists.append(this.htmlSelectUiUxBreadCrum) ; + console.log(this.hierarchyData) ; this.buildClassSelectList(this.hierarchyData, 'root active-pane', '', initBreadcrumData) ; this.html = $('
              '); @@ -524,5 +561,21 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { return this.html.children(); } + getCountDisplay(count:number) { + let countToDiplay = '' ; + switch (true) { + case count >= 1000000: + countToDiplay = '~'+Math.round(count / 1000000)+ 'M' ; + break; + case count >= 1000: + countToDiplay = '~'+Math.round(count / 1000)+ 'K' ; + break; + default: + countToDiplay = count+'' ; + } + return countToDiplay ; + } + + } export default HierarchicalClassSelectBuilder; From dc20e9263d16e0c202164bd13288f1d1b2c67624 Mon Sep 17 00:00:00 2001 From: Thomas Francart Date: Wed, 18 Sep 2024 11:29:41 +0200 Subject: [PATCH 53/55] Add the count to Dag --- .../ObjectPropertyTypeId.ts | 8 ++-- .../startendclassgroup/ClassTypeId.ts | 8 ++-- .../HierarchicalClassSelectBuilder.ts | 8 ++++ src/sparnatural/dag/Dag.ts | 40 +++++++++++++++++++ .../shacl/SHACLSpecificationProvider.ts | 16 +++++++- 5 files changed, 72 insertions(+), 8 deletions(-) diff --git a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/objectpropertygroup/ObjectPropertyTypeId.ts b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/objectpropertygroup/ObjectPropertyTypeId.ts index 58b958b6..5193b1ca 100644 --- a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/objectpropertygroup/ObjectPropertyTypeId.ts +++ b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/objectpropertygroup/ObjectPropertyTypeId.ts @@ -7,6 +7,7 @@ import CriteriaGroup from "../CriteriaGroup"; import {HierarchicalClassSelectBuilder, JsonDagRow, DagWidgetDefaultValue} from "../startendclassgroup/HierarchicalClassSelectBuilder"; import { DagIfc, DagNodeIfc, DagNode} from "../../../../../dag/Dag"; import ISpecificationProperty from "../../../../../spec-providers/ISpecificationProperty"; +import ISpecificationEntry from "../../../../../spec-providers/ISpecificationEntry"; /** * The property selector @@ -184,7 +185,7 @@ class PropertySelectBuilder extends HTMLComponent { return this; } - convertToJsonDag(rootNodes:any[]) { + convertToJsonDag(rootNodes:DagNodeIfc[]) { console.log('rootNodes') ; console.log(rootNodes) ; let arrayToJson: Array = []; @@ -193,7 +194,7 @@ class PropertySelectBuilder extends HTMLComponent { return JSON.parse(JSON.stringify(arrayToJson)); } - getRecursiveDagElements(elements: Array, default_icon:string) { + getRecursiveDagElements(elements: Array>, default_icon:string) { let arrayToJson: Array = []; elements.forEach(element => { let disabled = false ; @@ -215,7 +216,8 @@ class PropertySelectBuilder extends HTMLComponent { color: element.payload.getColor(), icon: icon, highlightedIcon: element.payload.getHighlightedIcon(), - count: Math.floor(Math.random() * 1000), + // read the count from the node + count: element.count, disabled: disabled, childs: Array() } diff --git a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/ClassTypeId.ts b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/ClassTypeId.ts index 2755ec4d..9a43d68e 100644 --- a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/ClassTypeId.ts +++ b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/ClassTypeId.ts @@ -10,6 +10,7 @@ import SelectViewVariableBtn from "../../../../buttons/SelectViewVariableBtn"; import HTMLComponent from "../../../../HtmlComponent"; import { DagIfc, DagNodeIfc, DagNode} from "../../../../../dag/Dag"; import ISpecificationEntity from "../../../../../spec-providers/ISpecificationEntity"; +import ISpecificationEntry from "../../../../../spec-providers/ISpecificationEntry"; /** * Handles the selection of a Class, either in the DOMAIN selection or the RANGE selection. * The DOMAIN selection happens only for the very first line/criteria. @@ -286,7 +287,7 @@ class ClassSelectBuilder extends HTMLComponent { }*/ - convertToJsonDag(rootNodes:any[]) { + convertToJsonDag(rootNodes:DagNodeIfc[]) { console.log('rootNodes') ; console.log(rootNodes) ; let arrayToJson: Array = []; @@ -294,7 +295,7 @@ class ClassSelectBuilder extends HTMLComponent { return JSON.parse(JSON.stringify(arrayToJson)); } - getRecursiveDagElements(elements: Array, default_icon:string) { + getRecursiveDagElements(elements: Array>, default_icon:string) { let arrayToJson: Array = []; elements.forEach(element => { let disabled = false ; @@ -313,7 +314,8 @@ class ClassSelectBuilder extends HTMLComponent { color: element.payload.getColor(), icon: icon, highlightedIcon: element.payload.getHighlightedIcon(), - count: Math.floor(Math.random() * 10000000), + // read the count from the node + count: element.count, disabled: disabled, childs: Array() } diff --git a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts index 66924fcf..b1287ef4 100644 --- a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts +++ b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/HierarchicalClassSelectBuilder.ts @@ -418,6 +418,14 @@ export class HierarchicalClassSelectBuilder extends HTMLComponent { span_gradiant.style.width = pourcent + '%'; span_number.innerHTML = ''+this.getCountDisplay(count);+ ' %'; }); + } else { + // explicitely set te width of the gradient to 0% if there is no count + // so that it is invisible + let li_count = Ul[0].querySelectorAll('li') ; + li_count.forEach(element => { + let span_gradiant = element.querySelector('.item-count>span') ; + span_gradiant.style.width = '0%'; + }); } this.htmlSelectUiUxLists.append(Ul); diff --git a/src/sparnatural/dag/Dag.ts b/src/sparnatural/dag/Dag.ts index 97cd86db..b7b19da5 100644 --- a/src/sparnatural/dag/Dag.ts +++ b/src/sparnatural/dag/Dag.ts @@ -107,6 +107,23 @@ export class Dag implements DagIfc { this.initFromFlatList(hierarchyMap, dataMap, new Array()); } + + public traverseBreadthFirst(processor: (node: DagNodeIfc) => void) { + this.roots.forEach(root => { + processor(root); + }) + this.roots.forEach(root => { + root.traverseBreadthFirst(processor); + }) + } + + public traverseDepthFirst(processor: (node: DagNodeIfc) => void) { + this.roots.forEach(root => { + processor(root); + root.traverseBreadthFirst(processor); + }) + } + } export class DagNode implements DagNodeIfc { @@ -177,6 +194,22 @@ export class DagNode implements DagNodeIfc { }) return result; } + + public traverseBreadthFirst(processor: (node: DagNodeIfc) => void) { + this.children.forEach(c => { + processor(c); + }) + this.children.forEach(c => { + c.traverseBreadthFirst(processor); + }) + } + + public traverseDepthFirst(processor: (node: DagNodeIfc) => void) { + this.children.forEach(c => { + processor(c); + c.traverseBreadthFirst(processor); + }) + } } /** @@ -188,11 +221,15 @@ export interface DagNodeIfc { children:DagNodeIfc[]; disabled:boolean; payload:Payload; + count?:number; toDebugString(depth:number):string; sort: (compareFn:(a:Payload, b:Payload)=> number) => void; + traverseBreadthFirst: (processor:(node:DagNodeIfc) => void) => void; + traverseDepthFirst: (processor:(node:DagNodeIfc) => void) => void; + // TODO ajouter un fonction qui ramène le/les chemins depuis le haut de l'arbre pour arriver jusqu'à un certain noeud // findPaths(id:string):Array> } @@ -204,4 +241,7 @@ export interface DagIfc { roots:DagNodeIfc[]; toDebugString():string; + + traverseBreadthFirst: (processor:(node:DagNodeIfc) => void) => void; + traverseDepthFirst: (processor:(node:DagNodeIfc) => void) => void; } \ No newline at end of file diff --git a/src/sparnatural/spec-providers/shacl/SHACLSpecificationProvider.ts b/src/sparnatural/spec-providers/shacl/SHACLSpecificationProvider.ts index a874994f..5be7ddf0 100644 --- a/src/sparnatural/spec-providers/shacl/SHACLSpecificationProvider.ts +++ b/src/sparnatural/spec-providers/shacl/SHACLSpecificationProvider.ts @@ -18,7 +18,7 @@ import { RdfStore } from "rdf-stores"; import { NamedNode, Quad, Quad_Object, Quad_Subject } from '@rdfjs/types/data-model'; import { Term } from "@rdfjs/types"; import { StoreModel } from '../StoreModel'; -import { DagIfc, Dag } from '../../dag/Dag'; +import { DagIfc, Dag, DagNodeIfc } from '../../dag/Dag'; const factory = new DataFactory(); @@ -239,7 +239,19 @@ export class SHACLSpecificationProvider extends BaseRDFReader implements ISparna let dag:Dag = new Dag(); // for the moment : no disabled entries dag.initFromParentableAndIdAbleEntity(entities, []); - console.log(dag.toDebugString()) + + // add count + dag.traverseBreadthFirst((node:DagNodeIfc) => { + if(node.parents.length == 0) { + // if this is a root + // add a count to it + node.count = Math.floor(Math.random() * 10000000) + } else { + // otherwise make absolutely sure the count is undefined + node.count = undefined + } + }) + return dag; } From cbbeeb755f8fd468d4c538011a634c998118ec3e Mon Sep 17 00:00:00 2001 From: Thomas Francart Date: Wed, 18 Sep 2024 12:05:45 +0200 Subject: [PATCH 54/55] Added StatisticsReader + test file --- .../instantiation_statistics_sparnatural.ttl | 1472 +++++++++++++++++ dev-page/index.html | 2 +- .../spec-providers/StatisticsReader.ts | 55 + src/sparnatural/spec-providers/StoreModel.ts | 18 +- .../shacl/SHACLSearchWidgets.ts | 148 +- .../shacl/SHACLSpecificationProperty.ts | 6 +- .../shacl/SHACLSpecificationProvider.ts | 6 +- 7 files changed, 1597 insertions(+), 110 deletions(-) create mode 100644 dev-page/configs/instantiation_statistics_sparnatural.ttl create mode 100644 src/sparnatural/spec-providers/StatisticsReader.ts diff --git a/dev-page/configs/instantiation_statistics_sparnatural.ttl b/dev-page/configs/instantiation_statistics_sparnatural.ttl new file mode 100644 index 00000000..f1775edc --- /dev/null +++ b/dev-page/configs/instantiation_statistics_sparnatural.ttl @@ -0,0 +1,1472 @@ +@prefix dcat: . +@prefix dct: . +@prefix sh: . +@prefix void: . +@prefix xsd: . + + + dct:conformsTo ; + void:distinctObjects "126"^^xsd:int ; + void:property ; + void:triples "175"^^xsd:int . + + + dct:conformsTo ; + void:distinctObjects "3573"^^xsd:int ; + void:property ; + void:triples "6717"^^xsd:int . + + + dct:conformsTo ; + void:distinctObjects "34"^^xsd:int ; + void:property ; + void:triples "4408"^^xsd:int . + + + dct:conformsTo ; + void:distinctObjects "10"^^xsd:int ; + void:property ; + void:triples "405"^^xsd:int . + + + dct:conformsTo ; + void:distinctObjects "3672"^^xsd:int ; + void:property ; + void:triples "64663"^^xsd:int . + + + dct:conformsTo ; + void:distinctObjects "2279"^^xsd:int ; + void:property ; + void:triples "2316"^^xsd:int . + + + dct:conformsTo ; + void:distinctObjects "4"^^xsd:int ; + void:property ; + void:triples "2050"^^xsd:int ; + + [ void:distinctSubjects "3"^^xsd:int ; + + "4" + ] ; + + [ void:distinctSubjects "112"^^xsd:int ; + + "1" + ] ; + + [ void:distinctSubjects "76"^^xsd:int ; + + "0" + ] ; + + [ void:distinctSubjects "1859"^^xsd:int ; + + "2" + ] . + + + dct:conformsTo ; + void:distinctObjects "18"^^xsd:int ; + void:property ; + void:triples "4989"^^xsd:int . + + + dct:conformsTo ; + void:class ; + void:entities "5"^^xsd:int ; + void:propertyPartition . + + + dct:conformsTo ; + void:distinctObjects "754"^^xsd:int ; + void:property ; + void:triples "3760"^^xsd:int . + + + dct:conformsTo ; + void:distinctObjects "2994"^^xsd:int ; + void:property ; + void:triples "2994"^^xsd:int . + + + dct:conformsTo ; + void:distinctObjects "8778"^^xsd:int ; + void:property ; + void:triples "11099"^^xsd:int . + + + dct:conformsTo ; + void:distinctObjects "2143"^^xsd:int ; + void:property ; + void:triples "2143"^^xsd:int . + + + dct:conformsTo ; + void:distinctObjects "2"^^xsd:int ; + void:property ; + void:triples "1209"^^xsd:int ; + + [ void:distinctSubjects "177"^^xsd:int ; + + + ] ; + + [ void:distinctSubjects "1032"^^xsd:int ; + + + ] . + + + dct:conformsTo ; + void:distinctObjects "7"^^xsd:int ; + void:property ; + void:triples "10"^^xsd:int . + + + dct:conformsTo ; + void:distinctObjects "218"^^xsd:int ; + void:property ; + void:triples "261"^^xsd:int . + + + dct:conformsTo ; + void:class ; + void:entities "18723"^^xsd:int ; + void:propertyPartition , . + + + dct:conformsTo ; + void:distinctObjects "9"^^xsd:int ; + void:property ; + void:triples "1483"^^xsd:int ; + + [ void:distinctSubjects "1"^^xsd:int ; + + "4500" + ] ; + + [ void:distinctSubjects "9"^^xsd:int ; + + "960" + ] ; + + [ void:distinctSubjects "1"^^xsd:int ; + + "2048" + ] ; + + [ void:distinctSubjects "37"^^xsd:int ; + + "1440" + ] ; + + [ void:distinctSubjects "1"^^xsd:int ; + + "576" + ] ; + + [ void:distinctSubjects "32"^^xsd:int ; + + "1280" + ] ; + + [ void:distinctSubjects "160"^^xsd:int ; + + "1920" + ] ; + + [ void:distinctSubjects "8"^^xsd:int ; + + "1024" + ] ; + + [ void:distinctSubjects "1234"^^xsd:int ; + + "720" + ] . + + + dct:conformsTo ; + void:propertyPartition . + + + dct:conformsTo ; + void:distinctObjects "1042"^^xsd:int ; + void:property ; + void:triples "5540"^^xsd:int . + + + dct:conformsTo ; + void:distinctObjects "3718"^^xsd:int ; + void:property ; + void:triples "69484"^^xsd:int . + + + dct:conformsTo ; + void:distinctObjects "1302"^^xsd:int ; + void:property ; + void:triples "1303"^^xsd:int . + + + dct:conformsTo ; + void:distinctObjects "2"^^xsd:int ; + void:property ; + void:triples "1006"^^xsd:int ; + + [ void:distinctSubjects "494"^^xsd:int ; + + + ] ; + + [ void:distinctSubjects "512"^^xsd:int ; + + + ] . + + + dct:conformsTo ; + void:distinctObjects "7"^^xsd:int ; + void:property ; + void:triples "19163"^^xsd:int ; + + [ void:distinctSubjects "868"^^xsd:int ; + + + ] ; + + [ void:distinctSubjects "3626"^^xsd:int ; + + + ] ; + + [ void:distinctSubjects "1270"^^xsd:int ; + + + ] ; + + [ void:distinctSubjects "784"^^xsd:int ; + + + ] ; + + [ void:distinctSubjects "3596"^^xsd:int ; + + + ] ; + + [ void:distinctSubjects "8375"^^xsd:int ; + + + ] ; + + [ void:distinctSubjects "644"^^xsd:int ; + + + ] . + + + dct:conformsTo ; + void:property . + + + dct:conformsTo ; + void:distinctObjects "14578"^^xsd:int ; + void:property ; + void:triples "27718"^^xsd:int . + + + dct:conformsTo ; + void:propertyPartition . + + + dct:conformsTo ; + void:class ; + void:entities "0"^^xsd:int ; + void:propertyPartition . + + + dct:conformsTo ; + void:distinctObjects "9"^^xsd:int ; + void:property ; + void:triples "14"^^xsd:int . + + + dct:conformsTo ; + void:distinctObjects "1105"^^xsd:int ; + void:property ; + void:triples "1490"^^xsd:int . + + + dct:conformsTo ; + void:property . + + + dct:conformsTo ; + void:property . + + + dct:conformsTo ; + void:property . + + + dct:conformsTo ; + void:distinctObjects "7789"^^xsd:int ; + void:property ; + void:triples "7789"^^xsd:int . + + + dct:conformsTo ; + void:distinctObjects "774"^^xsd:int ; + void:property ; + void:triples "2745"^^xsd:int . + + + dct:conformsTo ; + void:class ; + void:entities "93"^^xsd:int ; + void:propertyPartition . + + + dct:conformsTo ; + void:class ; + void:entities "16"^^xsd:int ; + void:propertyPartition . + + + dct:conformsTo ; + void:distinctObjects "5"^^xsd:int ; + void:property ; + void:triples "11099"^^xsd:int ; + + [ void:distinctSubjects "2400"^^xsd:int ; + + + ] ; + + [ void:distinctSubjects "44"^^xsd:int ; + + + ] ; + + [ void:distinctSubjects "259"^^xsd:int ; + + + ] ; + + [ void:distinctSubjects "2013"^^xsd:int ; + + + ] ; + + [ void:distinctSubjects "6383"^^xsd:int ; + + + ] . + + + dct:conformsTo ; + void:distinctObjects "1180"^^xsd:int ; + void:property ; + void:triples "1180"^^xsd:int . + + + dct:conformsTo ; + void:property . + + + dct:conformsTo ; + void:distinctObjects "1237"^^xsd:int ; + void:property ; + void:triples "1237"^^xsd:int . + + + dct:conformsTo ; + void:propertyPartition . + + + dct:conformsTo ; + void:distinctObjects "12833"^^xsd:int ; + void:property ; + void:triples "12833"^^xsd:int . + + + dct:conformsTo ; + void:class ; + void:entities "70118"^^xsd:int ; + void:propertyPartition , , , , . + + + dct:conformsTo ; + void:distinctObjects "3"^^xsd:int ; + void:property ; + void:triples "713"^^xsd:int ; + + [ void:distinctSubjects "3"^^xsd:int ; + + + ] ; + + [ void:distinctSubjects "2"^^xsd:int ; + + + ] ; + + [ void:distinctSubjects "708"^^xsd:int ; + + + ] . + + + dct:conformsTo ; + void:property . + + + dct:conformsTo ; + void:propertyPartition . + + + dct:conformsTo ; + void:distinctObjects "0"^^xsd:int ; + void:property ; + void:triples "0"^^xsd:int . + + + dct:conformsTo ; + void:distinctObjects "3"^^xsd:int ; + void:property ; + void:triples "14945"^^xsd:int ; + + [ void:distinctSubjects "1"^^xsd:int ; + + "2 mois" + ] ; + + [ void:distinctSubjects "1"^^xsd:int ; + + "30" + ] ; + + [ void:distinctSubjects "14943"^^xsd:int ; + + "0" + ] . + + + dct:conformsTo ; + void:property . + + + dct:conformsTo ; + void:distinctObjects "1"^^xsd:int ; + void:property ; + void:triples "93"^^xsd:int . + + + dct:conformsTo ; + void:distinctObjects "5558"^^xsd:int ; + void:property ; + void:triples "5558"^^xsd:int . + + + dct:conformsTo ; + void:propertyPartition . + + + dct:conformsTo ; + void:distinctObjects "10"^^xsd:int ; + void:property ; + void:triples "1577"^^xsd:int ; + + [ void:distinctSubjects "6"^^xsd:int ; + + "486" + ] ; + + [ void:distinctSubjects "1326"^^xsd:int ; + + "576" + ] ; + + [ void:distinctSubjects "8"^^xsd:int ; + + "540" + ] ; + + [ void:distinctSubjects "195"^^xsd:int ; + + "1080" + ] ; + + [ void:distinctSubjects "2"^^xsd:int ; + + "1088" + ] ; + + [ void:distinctSubjects "1"^^xsd:int ; + + "1536" + ] ; + + [ void:distinctSubjects "1"^^xsd:int ; + + "3600" + ] ; + + [ void:distinctSubjects "1"^^xsd:int ; + + "12358" + ] ; + + [ void:distinctSubjects "1"^^xsd:int ; + + "480" + ] ; + + [ void:distinctSubjects "36"^^xsd:int ; + + "720" + ] . + + + dct:conformsTo ; + void:propertyPartition . + + + dct:conformsTo ; + void:class ; + void:entities "16820"^^xsd:int ; + void:propertyPartition , , , , , , , , , , , , , , , , , . + + + dct:conformsTo ; + void:distinctObjects "3"^^xsd:int ; + void:property ; + void:triples "109"^^xsd:int . + + + dct:conformsTo ; + void:distinctObjects "2"^^xsd:int ; + void:property ; + void:triples "17"^^xsd:int . + + + dct:conformsTo ; + void:class ; + void:entities "93"^^xsd:int . + + + dct:conformsTo ; + void:distinctObjects "887"^^xsd:int ; + void:property ; + void:triples "1528"^^xsd:int . + + + dct:conformsTo ; + void:distinctObjects "4"^^xsd:int ; + void:property ; + void:triples "10666"^^xsd:int ; + + [ void:distinctSubjects "4"^^xsd:int ; + + + ] ; + + [ void:distinctSubjects "4124"^^xsd:int ; + + + ] ; + + [ void:distinctSubjects "16"^^xsd:int ; + + + ] ; + + [ void:distinctSubjects "6522"^^xsd:int ; + + + ] . + + + dct:conformsTo ; + void:class ; + void:entities "5540"^^xsd:int ; + void:propertyPartition , . + + + dct:conformsTo ; + void:distinctObjects "35"^^xsd:int ; + void:property ; + void:triples "39"^^xsd:int . + + + dct:conformsTo ; + void:distinctObjects "12"^^xsd:int ; + void:property ; + void:triples "152"^^xsd:int . + + + dct:conformsTo ; + void:distinctObjects "1228"^^xsd:int ; + void:property ; + void:triples "1231"^^xsd:int . + + + dct:conformsTo ; + void:distinctObjects "2"^^xsd:int ; + void:property ; + void:triples "15039"^^xsd:int ; + + [ void:distinctSubjects "1162"^^xsd:int ; + + + ] ; + + [ void:distinctSubjects "13877"^^xsd:int ; + + + ] . + + + dct:conformsTo ; + void:distinctObjects "1"^^xsd:int ; + void:property ; + void:triples "5360"^^xsd:int . + + + dct:conformsTo ; + void:distinctObjects "12"^^xsd:int ; + void:property ; + void:triples "46"^^xsd:int . + + + dct:conformsTo ; + void:distinctObjects "0"^^xsd:int ; + void:property ; + void:triples "0"^^xsd:int . + + + dct:conformsTo ; + void:distinctObjects "187"^^xsd:int ; + void:property ; + void:triples "17066"^^xsd:int . + + + dct:conformsTo ; + void:class ; + void:entities "4654"^^xsd:int . + + + dct:conformsTo ; + void:distinctObjects "35"^^xsd:int ; + void:property ; + void:triples "36"^^xsd:int . + + + dct:conformsTo ; + void:distinctObjects "57"^^xsd:int ; + void:property ; + void:triples "807"^^xsd:int . + + + dct:conformsTo ; + void:distinctObjects "4"^^xsd:int ; + void:property ; + void:triples "12238"^^xsd:int ; + + [ void:distinctSubjects "42"^^xsd:int ; + + + ] ; + + [ void:distinctSubjects "295"^^xsd:int ; + + + ] ; + + [ void:distinctSubjects "2659"^^xsd:int ; + + + ] ; + + [ void:distinctSubjects "9242"^^xsd:int ; + + + ] . + + + dct:conformsTo ; + void:property . + + + dct:conformsTo ; + void:distinctObjects "6"^^xsd:int ; + void:property ; + void:triples "113"^^xsd:int . + + + dct:conformsTo ; + void:propertyPartition . + + + dct:conformsTo ; + void:property . + + + dct:conformsTo ; + void:distinctObjects "4"^^xsd:int ; + void:property ; + void:triples "3725"^^xsd:int ; + + [ void:distinctSubjects "4"^^xsd:int ; + + + ] ; + + [ void:distinctSubjects "1"^^xsd:int ; + + + ] ; + + [ void:distinctSubjects "29"^^xsd:int ; + + + ] ; + + [ void:distinctSubjects "3691"^^xsd:int ; + + + ] . + + + dct:conformsTo ; + void:propertyPartition . + + + dct:conformsTo ; + void:propertyPartition . + + + dct:conformsTo ; + void:property . + + + dct:conformsTo ; + void:distinctObjects "3858"^^xsd:int ; + void:property ; + void:triples "9379"^^xsd:int . + + + dct:conformsTo ; + void:distinctObjects "1"^^xsd:int ; + void:property ; + void:triples "4"^^xsd:int . + + + dct:conformsTo ; + void:distinctObjects "1"^^xsd:int ; + void:property ; + void:triples "27655"^^xsd:int . + + + dct:conformsTo ; + void:property . + + + dct:conformsTo ; + void:propertyPartition . + + + dct:conformsTo ; + void:property . + + + dct:conformsTo ; + void:class ; + void:entities "24373"^^xsd:int ; + void:propertyPartition , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , . + + + dct:conformsTo ; + void:distinctObjects "1"^^xsd:int ; + void:property ; + void:triples "16"^^xsd:int . + + + dct:conformsTo ; + void:distinctObjects "1"^^xsd:int ; + void:property ; + void:triples "21"^^xsd:int . + + + dct:conformsTo ; + void:distinctObjects "2"^^xsd:int ; + void:property ; + void:triples "2316"^^xsd:int ; + + [ void:distinctSubjects "4"^^xsd:int ; + + "1" + ] ; + + [ void:distinctSubjects "2312"^^xsd:int ; + + "0" + ] . + + + dct:conformsTo ; + void:property . + + + dct:conformsTo ; + void:distinctObjects "3"^^xsd:int ; + void:property ; + void:triples "15775"^^xsd:int ; + + [ void:distinctSubjects "6"^^xsd:int ; + + + ] ; + + [ void:distinctSubjects "14916"^^xsd:int ; + + + ] ; + + [ void:distinctSubjects "853"^^xsd:int ; + + + ] . + + + dct:conformsTo ; + void:distinctObjects "11"^^xsd:int ; + void:property ; + void:triples "16"^^xsd:int . + + + dct:conformsTo ; + void:distinctObjects "2"^^xsd:int ; + void:property ; + void:triples "1018"^^xsd:int ; + + [ void:distinctSubjects "509"^^xsd:int ; + + + ] ; + + [ void:distinctSubjects "509"^^xsd:int ; + + + ] . + + + dct:conformsTo ; + void:distinctObjects "5"^^xsd:int ; + void:property ; + void:triples "945"^^xsd:int ; + + [ void:distinctSubjects "3"^^xsd:int ; + + "30" + ] ; + + [ void:distinctSubjects "1"^^xsd:int ; + + "29" + ] ; + + [ void:distinctSubjects "11"^^xsd:int ; + + "50" + ] ; + + [ void:distinctSubjects "2"^^xsd:int ; + + "24" + ] ; + + [ void:distinctSubjects "928"^^xsd:int ; + + "25" + ] . + + + dct:conformsTo ; + void:class ; + void:entities "32182"^^xsd:int ; + void:propertyPartition , , . + + + dct:conformsTo ; + void:class ; + void:entities "2316"^^xsd:int ; + void:propertyPartition , , , , , , , , , , , , , , , , , , , , , , . + + + dct:conformsTo ; + void:distinctObjects "1"^^xsd:int ; + void:property ; + void:triples "1834"^^xsd:int . + + + dct:conformsTo ; + void:distinctObjects "4"^^xsd:int ; + void:property ; + void:triples "2825"^^xsd:int ; + + [ void:distinctSubjects "1"^^xsd:int ; + + + ] ; + + [ void:distinctSubjects "240"^^xsd:int ; + + + ] ; + + [ void:distinctSubjects "14"^^xsd:int ; + + + ] ; + + [ void:distinctSubjects "2570"^^xsd:int ; + + + ] . + + + dct:conformsTo ; + void:property . + + + dct:conformsTo ; + void:distinctObjects "8"^^xsd:int ; + void:property ; + void:triples "2208"^^xsd:int ; + + [ void:distinctSubjects "15"^^xsd:int ; + + "96" + ] ; + + [ void:distinctSubjects "15"^^xsd:int ; + + "44000" + ] ; + + [ void:distinctSubjects "4"^^xsd:int ; + + "96000" + ] ; + + [ void:distinctSubjects "41"^^xsd:int ; + + "32000" + ] ; + + [ void:distinctSubjects "1"^^xsd:int ; + + "3" + ] ; + + [ void:distinctSubjects "2092"^^xsd:int ; + + "48000" + ] ; + + [ void:distinctSubjects "21"^^xsd:int ; + + "44100" + ] ; + + [ void:distinctSubjects "19"^^xsd:int ; + + "48" + ] . + + + dct:conformsTo ; + void:distinctObjects "4236"^^xsd:int ; + void:property ; + void:triples "4236"^^xsd:int . + + + dct:conformsTo ; + void:distinctObjects "2"^^xsd:int ; + void:property ; + void:triples "1201"^^xsd:int ; + + [ void:distinctSubjects "179"^^xsd:int ; + + + ] ; + + [ void:distinctSubjects "1022"^^xsd:int ; + + + ] . + + + dct:conformsTo ; + void:propertyPartition . + + + dct:conformsTo ; + void:distinctObjects "9"^^xsd:int ; + void:property ; + void:triples "1483"^^xsd:int ; + + [ void:distinctSubjects "1"^^xsd:int ; + + "1536" + ] ; + + [ void:distinctSubjects "195"^^xsd:int ; + + "1080" + ] ; + + [ void:distinctSubjects "34"^^xsd:int ; + + "720" + ] ; + + [ void:distinctSubjects "1"^^xsd:int ; + + "3600" + ] ; + + [ void:distinctSubjects "6"^^xsd:int ; + + "486" + ] ; + + [ void:distinctSubjects "1235"^^xsd:int ; + + "576" + ] ; + + [ void:distinctSubjects "8"^^xsd:int ; + + "540" + ] ; + + [ void:distinctSubjects "2"^^xsd:int ; + + "1088" + ] ; + + [ void:distinctSubjects "1"^^xsd:int ; + + "480" + ] . + + + dct:conformsTo ; + void:class ; + void:entities "4"^^xsd:int ; + void:propertyPartition . + + + dct:conformsTo ; + void:distinctObjects "2"^^xsd:int ; + void:property ; + void:triples "4518"^^xsd:int ; + + [ void:distinctSubjects "654"^^xsd:int ; + + "N/A" + ] ; + + [ void:distinctSubjects "3864"^^xsd:int ; + + "s.d." + ] . + + + dct:conformsTo ; + void:distinctObjects "4"^^xsd:int ; + void:property ; + void:triples "1149"^^xsd:int ; + + [ void:distinctSubjects "1"^^xsd:int ; + + "4" + ] ; + + [ void:distinctSubjects "35"^^xsd:int ; + + "0" + ] ; + + [ void:distinctSubjects "33"^^xsd:int ; + + "1" + ] ; + + [ void:distinctSubjects "1080"^^xsd:int ; + + "2" + ] . + + + dct:conformsTo ; + void:distinctObjects "1533"^^xsd:int ; + void:property ; + void:triples "2662"^^xsd:int . + + + dct:conformsTo ; + void:distinctObjects "1"^^xsd:int ; + void:property ; + void:triples "69484"^^xsd:int . + + + dct:conformsTo ; + void:property . + + + dct:conformsTo ; + void:distinctObjects "34"^^xsd:int ; + void:property ; + void:triples "4386"^^xsd:int . + + + dct:conformsTo ; + void:distinctObjects "4"^^xsd:int ; + void:property ; + void:triples "1617"^^xsd:int ; + + [ void:distinctSubjects "2"^^xsd:int ; + + + ] ; + + [ void:distinctSubjects "9"^^xsd:int ; + + + ] ; + + [ void:distinctSubjects "97"^^xsd:int ; + + + ] ; + + [ void:distinctSubjects "1509"^^xsd:int ; + + + ] . + + + dct:conformsTo ; + void:distinctObjects "2"^^xsd:int ; + void:property ; + void:triples "10"^^xsd:int . + + + dct:conformsTo ; + void:distinctObjects "11"^^xsd:int ; + void:property ; + void:triples "1577"^^xsd:int ; + + [ void:distinctSubjects "1325"^^xsd:int ; + + "720" + ] ; + + [ void:distinctSubjects "1"^^xsd:int ; + + "2048" + ] ; + + [ void:distinctSubjects "1"^^xsd:int ; + + "12356" + ] ; + + [ void:distinctSubjects "9"^^xsd:int ; + + "960" + ] ; + + [ void:distinctSubjects "1"^^xsd:int ; + + "4500" + ] ; + + [ void:distinctSubjects "1"^^xsd:int ; + + "576" + ] ; + + [ void:distinctSubjects "160"^^xsd:int ; + + "1920" + ] ; + + [ void:distinctSubjects "33"^^xsd:int ; + + "1280" + ] ; + + [ void:distinctSubjects "37"^^xsd:int ; + + "1440" + ] ; + + [ void:distinctSubjects "8"^^xsd:int ; + + "1024" + ] ; + + [ void:distinctSubjects "1"^^xsd:int ; + + "1080" + ] . + + + dct:conformsTo ; + void:propertyPartition . + + + dct:conformsTo ; + void:propertyPartition . + + + dct:conformsTo ; + void:distinctObjects "52"^^xsd:int ; + void:property ; + void:triples "27412"^^xsd:int . + + + dct:conformsTo ; + void:distinctObjects "6549"^^xsd:int ; + void:property ; + void:triples "6559"^^xsd:int . + + + dct:conformsTo ; + void:distinctObjects "8175"^^xsd:int ; + void:property ; + void:triples "8183"^^xsd:int . + + + a void:Dataset ; + void:classPartition , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ; + void:triples "11988902"^^xsd:int ; + sh:suggestedShapesGraph . + + + dct:conformsTo ; + void:distinctObjects "8"^^xsd:int ; + void:property ; + void:triples "1457"^^xsd:int ; + + [ void:distinctSubjects "15"^^xsd:int ; + + "96" + ] ; + + [ void:distinctSubjects "14"^^xsd:int ; + + "48" + ] ; + + [ void:distinctSubjects "1361"^^xsd:int ; + + "48000" + ] ; + + [ void:distinctSubjects "4"^^xsd:int ; + + "96000" + ] ; + + [ void:distinctSubjects "21"^^xsd:int ; + + "44100" + ] ; + + [ void:distinctSubjects "8"^^xsd:int ; + + "44000" + ] ; + + [ void:distinctSubjects "33"^^xsd:int ; + + "32000" + ] ; + + [ void:distinctSubjects "1"^^xsd:int ; + + "3" + ] . + + + dct:conformsTo ; + void:distinctObjects "5"^^xsd:int ; + void:property ; + void:triples "957"^^xsd:int ; + + [ void:distinctSubjects "3"^^xsd:int ; + + "30" + ] ; + + [ void:distinctSubjects "1"^^xsd:int ; + + "29" + ] ; + + [ void:distinctSubjects "11"^^xsd:int ; + + "50" + ] ; + + [ void:distinctSubjects "2"^^xsd:int ; + + "24" + ] ; + + [ void:distinctSubjects "940"^^xsd:int ; + + "25" + ] . + + + dct:conformsTo ; + void:distinctObjects "1"^^xsd:int ; + void:property ; + void:triples "15034"^^xsd:int . + + + dct:conformsTo ; + void:propertyPartition . + + + dct:conformsTo ; + void:distinctObjects "3376"^^xsd:int ; + void:property ; + void:triples "3733"^^xsd:int . + + + dct:conformsTo ; + void:distinctObjects "4"^^xsd:int ; + void:property ; + void:triples "6897"^^xsd:int ; + + [ void:distinctSubjects "1"^^xsd:int ; + + + ] ; + + [ void:distinctSubjects "6108"^^xsd:int ; + + + ] ; + + [ void:distinctSubjects "50"^^xsd:int ; + + + ] ; + + [ void:distinctSubjects "738"^^xsd:int ; + + + ] . + + + dct:conformsTo ; + void:distinctObjects "14044"^^xsd:int ; + void:property ; + void:triples "14044"^^xsd:int . + + + dct:conformsTo ; + void:distinctObjects "1"^^xsd:int ; + void:property ; + void:triples "5"^^xsd:int . + + + dct:conformsTo ; + void:class ; + void:entities "11099"^^xsd:int ; + void:propertyPartition , . + + + dct:conformsTo ; + void:distinctObjects "6"^^xsd:int ; + void:property ; + void:triples "6"^^xsd:int . + + + dct:conformsTo ; + void:distinctObjects "4"^^xsd:int ; + void:property ; + void:triples "1473"^^xsd:int ; + + [ void:distinctSubjects "1"^^xsd:int ; + + + ] ; + + [ void:distinctSubjects "1"^^xsd:int ; + + + ] ; + + [ void:distinctSubjects "9"^^xsd:int ; + + + ] ; + + [ void:distinctSubjects "1462"^^xsd:int ; + + + ] . + + + dct:conformsTo ; + void:distinctObjects "99"^^xsd:int ; + void:property ; + void:triples "2056"^^xsd:int . + + + dct:conformsTo ; + void:distinctObjects "1302"^^xsd:int ; + void:property ; + void:triples "1303"^^xsd:int . + + + dct:conformsTo ; + void:class ; + void:entities "21"^^xsd:int ; + void:propertyPartition . + + + dct:conformsTo ; + void:distinctObjects "3"^^xsd:int ; + void:property ; + void:triples "15041"^^xsd:int ; + + [ void:distinctSubjects "472"^^xsd:int ; + + + ] ; + + [ void:distinctSubjects "7663"^^xsd:int ; + + + ] ; + + [ void:distinctSubjects "6906"^^xsd:int ; + + + ] . + + + dct:conformsTo ; + void:propertyPartition . diff --git a/dev-page/index.html b/dev-page/index.html index 6a6f4225..dc374c4a 100644 --- a/dev-page/index.html +++ b/dev-page/index.html @@ -65,7 +65,7 @@ { + result = this.store.readSinglePropertyAsNumber(partition, VOID.DISTINCT_OBJECTS); + }); + + return result + } + + getTriplesCountForShape(shape:Term) { + let partitions:Quad_Subject[] = this.store + .findSubjectsOf(DCT.CONFORMS_TO, shape); + + let result:number|undefined = undefined + partitions.forEach(partition => { + result = this.store.readSinglePropertyAsNumber(partition, VOID.TRIPLES); + }); + + return result + } + + getEntitiesCountForShape(shape:Term) { + let partitions:Quad_Subject[] = this.store + .findSubjectsOf(DCT.CONFORMS_TO, shape); + + let result:number|undefined = undefined + partitions.forEach(partition => { + result = this.store.readSinglePropertyAsNumber(partition, VOID.ENTITIES); + }); + + return result + } + +} \ No newline at end of file diff --git a/src/sparnatural/spec-providers/StoreModel.ts b/src/sparnatural/spec-providers/StoreModel.ts index d997b6f3..f046c60a 100644 --- a/src/sparnatural/spec-providers/StoreModel.ts +++ b/src/sparnatural/spec-providers/StoreModel.ts @@ -39,6 +39,16 @@ export class StoreModel { } } + /** + * Reads the given property on an entity, and returns the first value found cast to Number + **/ + readSinglePropertyAsNumber(subject: Term, property: Term): number | undefined { + var term = this.readSingleProperty(subject, property); + if(term) { + return Number.parseInt(term.value); + } + } + /** * Finds all subjects having the given property with the given object, or undefined if not found **/ @@ -114,14 +124,6 @@ export class StoreModel { null ).length > 0 ); - /* - return this.store.asDataset().has(DF.quad( - rdfNode, - property, - value, - null - )); - */ } findSubjectsWithPredicate(property: Term, rdfNode: Term): Term[] { diff --git a/src/sparnatural/spec-providers/shacl/SHACLSearchWidgets.ts b/src/sparnatural/spec-providers/shacl/SHACLSearchWidgets.ts index 70a6a44e..11a660c7 100644 --- a/src/sparnatural/spec-providers/shacl/SHACLSearchWidgets.ts +++ b/src/sparnatural/spec-providers/shacl/SHACLSearchWidgets.ts @@ -1,18 +1,17 @@ import { Config } from "../../ontologies/SparnaturalConfig"; import { DataFactory } from 'rdf-data-factory'; -import { DCT, SH, VOID, XSD } from "./SHACLSpecificationProvider"; -import { BaseRDFReader, RDF } from "../BaseRDFReader"; +import { SH, XSD } from "./SHACLSpecificationProvider"; import { GEOSPARQL } from "../../components/widgets/MapWidget"; -import { RdfStore } from "rdf-stores"; -import { Quad_Subject } from "@rdfjs/types/data-model"; import { StoreModel } from "../StoreModel"; +import { StatisticsReader } from "../StatisticsReader"; +import { RDF } from "../BaseRDFReader"; const factory = new DataFactory(); export interface SparnaturalSearchWidget { getUri():string; - score(propertyShape:string, n3store: RdfStore):number; + score(propertyShape:string, store: StoreModel):number; } export class SparnaturalSearchWidgetsRegistry { @@ -35,13 +34,13 @@ export class SparnaturalSearchWidgetsRegistry { } } -export class AutocompleteWidget { +export class AutocompleteWidget implements SparnaturalSearchWidget { getUri():string { return Config.AUTOCOMPLETE_PROPERTY; } - score(propertyShape:string, n3store: RdfStore):number { + score(propertyShape:string, store: StoreModel):number { return 10; } @@ -54,17 +53,15 @@ export class ListWidget implements SparnaturalSearchWidget { return Config.LIST_PROPERTY; } - score(propertyShape:string, n3store: RdfStore):number { - let graph:StoreModel = new StoreModel(n3store); - + score(propertyShape:string, store: StoreModel):number { // if there is a provided list of values, score higher - if(graph.hasTriple(factory.namedNode(propertyShape), SH.IN, null) ) { + if(store.hasTriple(factory.namedNode(propertyShape), SH.IN, null) ) { return 100; } // if there is a distinctObjectsCount and the distinctObjectsCount is < 500, then this will score higher - let count = distinctObjectsCount(n3store, propertyShape); - if(count && count < 500) { + let count = new StatisticsReader(store).getDistinctObjectsCountForShape(factory.namedNode(propertyShape)); + if(count && (count < 500)) { return 20; } else { return -1; @@ -74,33 +71,32 @@ export class ListWidget implements SparnaturalSearchWidget { } SparnaturalSearchWidgetsRegistry.getInstance().getSearchWidgets().push(new ListWidget()); -export class TreeWidget { +export class TreeWidget implements SparnaturalSearchWidget { getUri():string { return Config.TREE_PROPERTY; } - score(propertyShape:string, n3store: RdfStore):number { + score(propertyShape:string, store: StoreModel):number { return -1; } } SparnaturalSearchWidgetsRegistry.getInstance().getSearchWidgets().push(new TreeWidget()); -export class DatePickerWidget { +export class DatePickerWidget implements SparnaturalSearchWidget { getUri():string { return Config.TIME_PROPERTY_DATE; } - score(propertyShape:string, n3store: RdfStore):number { - let graph:StoreModel = new StoreModel(n3store); + score(propertyShape:string, store: StoreModel):number { let hasDateOrDateTimePredicate = function(rdfNode: any) { if( - graph.hasTriple(rdfNode, SH.DATATYPE, XSD.DATE) + store.hasTriple(rdfNode, SH.DATATYPE, XSD.DATE) || - graph.hasTriple(rdfNode, SH.DATATYPE, XSD.DATE_TIME) + store.hasTriple(rdfNode, SH.DATATYPE, XSD.DATE_TIME) ) { return true; } else { @@ -122,16 +118,16 @@ export class DatePickerWidget { } SparnaturalSearchWidgetsRegistry.getInstance().getSearchWidgets().push(new DatePickerWidget()); -export class YearPickerWidget { +export class YearPickerWidget implements SparnaturalSearchWidget { getUri():string { return Config.TIME_PROPERTY_YEAR; } - score(propertyShape:string, n3store: RdfStore):number { + score(propertyShape:string, store: StoreModel):number { // if the datatype is xsd:gYear if( - _hasTriple(n3store, factory.namedNode(propertyShape), SH.DATATYPE, XSD.GYEAR) + store.hasTriple(factory.namedNode(propertyShape), SH.DATATYPE, XSD.GYEAR) ) { return 50; } else { @@ -143,16 +139,16 @@ export class YearPickerWidget { } SparnaturalSearchWidgetsRegistry.getInstance().getSearchWidgets().push(new YearPickerWidget()); -export class MapWidget { +export class MapWidget implements SparnaturalSearchWidget { getUri():string { return Config.MAP_PROPERTY; } - score(propertyShape:string, n3store: RdfStore):number { + score(propertyShape:string, store: StoreModel):number { // if the datatype is geo:wktLiteral if( - _hasTriple(n3store, factory.namedNode(propertyShape), SH.DATATYPE, GEOSPARQL.WKT_LITERAL) + store.hasTriple(factory.namedNode(propertyShape), SH.DATATYPE, GEOSPARQL.WKT_LITERAL) ) { return 50; } else { @@ -164,16 +160,16 @@ export class MapWidget { } SparnaturalSearchWidgetsRegistry.getInstance().getSearchWidgets().push(new MapWidget()); -export class BooleanWidget { +export class BooleanWidget implements SparnaturalSearchWidget { getUri():string { return Config.BOOLEAN_PROPERTY; } - score(propertyShape:string, n3store: RdfStore):number { + score(propertyShape:string, store: StoreModel):number { // if the datatype is xsd:boolean if( - _hasTriple(n3store, factory.namedNode(propertyShape), SH.DATATYPE, XSD.BOOLEAN) + store.hasTriple(factory.namedNode(propertyShape), SH.DATATYPE, XSD.BOOLEAN) ) { return 50; } else { @@ -186,40 +182,40 @@ export class BooleanWidget { SparnaturalSearchWidgetsRegistry.getInstance().getSearchWidgets().push(new BooleanWidget()); -export class NumberWidget { +export class NumberWidget implements SparnaturalSearchWidget { getUri():string { return Config.NUMBER_PROPERTY; } - score(propertyShape:string, n3store: RdfStore):number { + score(propertyShape:string, store: StoreModel):number { // if the datatype is xsd:boolean if( - _hasTriple(n3store, factory.namedNode(propertyShape), SH.DATATYPE, XSD.BYTE) + store.hasTriple(factory.namedNode(propertyShape), SH.DATATYPE, XSD.BYTE) || - _hasTriple(n3store, factory.namedNode(propertyShape), SH.DATATYPE, XSD.DECIMAL) + store.hasTriple(factory.namedNode(propertyShape), SH.DATATYPE, XSD.DECIMAL) || - _hasTriple(n3store, factory.namedNode(propertyShape), SH.DATATYPE, XSD.DOUBLE) + store.hasTriple(factory.namedNode(propertyShape), SH.DATATYPE, XSD.DOUBLE) || - _hasTriple(n3store, factory.namedNode(propertyShape), SH.DATATYPE, XSD.FLOAT) + store.hasTriple(factory.namedNode(propertyShape), SH.DATATYPE, XSD.FLOAT) || - _hasTriple(n3store, factory.namedNode(propertyShape), SH.DATATYPE, XSD.INT) + store.hasTriple(factory.namedNode(propertyShape), SH.DATATYPE, XSD.INT) || - _hasTriple(n3store, factory.namedNode(propertyShape), SH.DATATYPE, XSD.INTEGER) + store.hasTriple(factory.namedNode(propertyShape), SH.DATATYPE, XSD.INTEGER) || - _hasTriple(n3store, factory.namedNode(propertyShape), SH.DATATYPE, XSD.LONG) + store.hasTriple(factory.namedNode(propertyShape), SH.DATATYPE, XSD.LONG) || - _hasTriple(n3store, factory.namedNode(propertyShape), SH.DATATYPE, XSD.NONNEGATIVE_INTEGER) + store.hasTriple(factory.namedNode(propertyShape), SH.DATATYPE, XSD.NONNEGATIVE_INTEGER) || - _hasTriple(n3store, factory.namedNode(propertyShape), SH.DATATYPE, XSD.SHORT) + store.hasTriple(factory.namedNode(propertyShape), SH.DATATYPE, XSD.SHORT) || - _hasTriple(n3store, factory.namedNode(propertyShape), SH.DATATYPE, XSD.UNSIGNED_BYTE) + store.hasTriple(factory.namedNode(propertyShape), SH.DATATYPE, XSD.UNSIGNED_BYTE) || - _hasTriple(n3store, factory.namedNode(propertyShape), SH.DATATYPE, XSD.UNSIGNED_INT) + store.hasTriple(factory.namedNode(propertyShape), SH.DATATYPE, XSD.UNSIGNED_INT) || - _hasTriple(n3store, factory.namedNode(propertyShape), SH.DATATYPE, XSD.UNSIGNED_LONG) + store.hasTriple(factory.namedNode(propertyShape), SH.DATATYPE, XSD.UNSIGNED_LONG) || - _hasTriple(n3store, factory.namedNode(propertyShape), SH.DATATYPE, XSD.UNSIGNED_SHORT) + store.hasTriple(factory.namedNode(propertyShape), SH.DATATYPE, XSD.UNSIGNED_SHORT) ) { return 50; } else { @@ -232,13 +228,13 @@ export class NumberWidget { SparnaturalSearchWidgetsRegistry.getInstance().getSearchWidgets().push(new NumberWidget()); -export class NoWidget { +export class NoWidget implements SparnaturalSearchWidget { getUri():string { return Config.NON_SELECTABLE_PROPERTY; } - score(propertyShape:string, n3store: RdfStore):number { + score(propertyShape:string, store: StoreModel):number { return -1; } @@ -246,20 +242,20 @@ export class NoWidget { SparnaturalSearchWidgetsRegistry.getInstance().getSearchWidgets().push(new NoWidget()); -export class SearchRegexWidget { +export class SearchRegexWidget implements SparnaturalSearchWidget { getUri():string { return Config.SEARCH_PROPERTY; } - score(propertyShape:string, n3store: RdfStore):number { - let count = distinctObjectsCount(n3store, propertyShape); + score(propertyShape:string, store: StoreModel):number { + let count = new StatisticsReader(store).getDistinctObjectsCountForShape(factory.namedNode(propertyShape)); // if the datatype is xsd:string or rdf:langString, and there is a large number, otherwise we stick with list widget if( ( - _hasTriple(n3store, factory.namedNode(propertyShape), SH.DATATYPE, XSD.STRING) + store.hasTriple(factory.namedNode(propertyShape), SH.DATATYPE, XSD.STRING) || - _hasTriple(n3store, factory.namedNode(propertyShape), SH.DATATYPE, RDF.LANG_STRING) + store.hasTriple(factory.namedNode(propertyShape), SH.DATATYPE, RDF.LANG_STRING) ) && // if there is no count, this will always score high @@ -275,62 +271,16 @@ export class SearchRegexWidget { } SparnaturalSearchWidgetsRegistry.getInstance().getSearchWidgets().push(new SearchRegexWidget()); -export class SearchEqualWidget { +export class SearchEqualWidget implements SparnaturalSearchWidget { getUri():string { return Config.STRING_EQUALS_PROPERTY; } - score(propertyShape:string, n3store: RdfStore):number { + score(propertyShape:string, store: StoreModel):number { return -1; } } SparnaturalSearchWidgetsRegistry.getInstance().getSearchWidgets().push(new SearchEqualWidget()); - -function _hasTriple(n3store: RdfStore, rdfNode: any, property: any, value:any) { - return ( - n3store.getQuads( - rdfNode, - property, - value, - null - ).length > 0 - ); -} - -function distinctObjectsCount(n3store: RdfStore, propertyShape:string) { - let partitions:Quad_Subject[] = n3store - .getQuads(null, DCT.CONFORMS_TO, factory.namedNode(propertyShape), null) - .map((quad: { subject: any }) => quad.subject); - - let result:number|undefined = undefined - partitions.forEach(partition => { - result = _readAsSingleInteger(n3store, partition, VOID.DISTINCT_OBJECTS); - }); - - return result -} - -function _readAsSingleInteger(n3store: RdfStore, subject: Quad_Subject, property: any):number|undefined { - var value = _readAsSingleLiteral(n3store, subject, property); - if(value) { - return Number.parseInt(value); - } -} - -function _readAsSingleLiteral(n3store: RdfStore, subject: Quad_Subject, property: any) { - var values = _readAsLiteral(n3store, subject, property); - if (values.length == 0) { - return undefined; - } else { - return values[0]; - } -} - -function _readAsLiteral(n3store: RdfStore, subject: Quad_Subject, property: any) { - return n3store - .getQuads(subject, property, null, null) - .map((quad: { object: { value: any } }) => quad.object.value); - } \ No newline at end of file diff --git a/src/sparnatural/spec-providers/shacl/SHACLSpecificationProperty.ts b/src/sparnatural/spec-providers/shacl/SHACLSpecificationProperty.ts index 5fb279be..8b041fc7 100644 --- a/src/sparnatural/spec-providers/shacl/SHACLSpecificationProperty.ts +++ b/src/sparnatural/spec-providers/shacl/SHACLSpecificationProperty.ts @@ -131,12 +131,16 @@ export class SHACLSpecificationProperty extends SHACLSpecificationEntry implemen } } + /** + * @param shapeUri the shape URI (this property shape or an or member of the range of this shape) from which to compute the default property type (e.g. by reading the associated count) + * @returns the default widget for this property, based on datatype and count + */ getDefaultPropertyType(shapeUri:string): string { let highest:SparnaturalSearchWidget = new ListWidget(); let highestScore:number = 0; for (let index = 0; index < SparnaturalSearchWidgetsRegistry.getInstance().getSearchWidgets().length; index++) { const currentWidget = SparnaturalSearchWidgetsRegistry.getInstance().getSearchWidgets()[index]; - let currentScore = currentWidget.score(shapeUri, this.store) + let currentScore = currentWidget.score(shapeUri, new StoreModel(this.store)) if(currentScore > highestScore) { highestScore = currentScore; highest = currentWidget; diff --git a/src/sparnatural/spec-providers/shacl/SHACLSpecificationProvider.ts b/src/sparnatural/spec-providers/shacl/SHACLSpecificationProvider.ts index 5be7ddf0..815a5e1d 100644 --- a/src/sparnatural/spec-providers/shacl/SHACLSpecificationProvider.ts +++ b/src/sparnatural/spec-providers/shacl/SHACLSpecificationProvider.ts @@ -19,6 +19,7 @@ import { NamedNode, Quad, Quad_Object, Quad_Subject } from '@rdfjs/types/data-mo import { Term } from "@rdfjs/types"; import { StoreModel } from '../StoreModel'; import { DagIfc, Dag, DagNodeIfc } from '../../dag/Dag'; +import { StatisticsReader } from '../StatisticsReader'; const factory = new DataFactory(); @@ -240,12 +241,15 @@ export class SHACLSpecificationProvider extends BaseRDFReader implements ISparna // for the moment : no disabled entries dag.initFromParentableAndIdAbleEntity(entities, []); + let statisticsReader:StatisticsReader = new StatisticsReader(new StoreModel(this.store)); + // add count dag.traverseBreadthFirst((node:DagNodeIfc) => { if(node.parents.length == 0) { // if this is a root // add a count to it - node.count = Math.floor(Math.random() * 10000000) + // node.count = Math.floor(Math.random() * 10000000) + node.count = statisticsReader.getEntitiesCountForShape(factory.namedNode(node.payload.getId())) } else { // otherwise make absolutely sure the count is undefined node.count = undefined From 5ad74af65c187592be2437d65c99f5d15c2661de Mon Sep 17 00:00:00 2001 From: Thomas Francart Date: Sun, 22 Sep 2024 16:41:28 +0200 Subject: [PATCH 55/55] Fix show column name switch --- .../criteriagroup/startendclassgroup/ClassTypeId.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/ClassTypeId.ts b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/ClassTypeId.ts index 9a43d68e..86a777f3 100644 --- a/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/ClassTypeId.ts +++ b/src/sparnatural/components/builder-section/groupwrapper/criteriagroup/startendclassgroup/ClassTypeId.ts @@ -39,6 +39,8 @@ class ClassTypeId extends HTMLComponent { specProvider: ISparnaturalSpecification; htmlCurentValue: JQuery; temporaryLabel: string; + + constructor( ParentComponent: HTMLComponent, specProvider: ISparnaturalSpecification, @@ -127,7 +129,7 @@ class ClassTypeId extends HTMLComponent { if (entity_icon != undefined ) { icon = `` ; } - this.htmlCurentValue.html(`${icon} ${entity.getLabel()} `) ; + this.htmlCurentValue.html(`${icon} ${entity.getLabel()} `) ; this.htmlCurentValue[0].classList.add('selected') ; } @@ -198,14 +200,14 @@ class ClassTypeId extends HTMLComponent { // renders the type label name showTypeName(){ - const currentSpan = this.widgetHtml.first()[0].getElementsByClassName('current').item(0).getElementsByClassName('label').item(0) + const currentSpan = this.htmlCurentValue.first()[0].getElementsByClassName('label').item(0) //display label currentSpan.textContent = this.specProvider.getEntity(this.ParentComponent.getTypeSelected()).getLabel(); } // renders the variable name showVarName(){ - const currentSpan = this.widgetHtml.first()[0].getElementsByClassName('current').item(0).getElementsByClassName('label').item(0) + const currentSpan = this.htmlCurentValue.first()[0].getElementsByClassName('label').item(0) // display variable currentSpan.textContent = this.ParentComponent.getVarName(); }