From 276bf880c94536d38c9c2c109c4d4baa58c2ed7c Mon Sep 17 00:00:00 2001 From: Ahonen Mika J Date: Wed, 4 Aug 2021 13:07:37 +0300 Subject: [PATCH 01/57] Added translations for skos:notation properties --- .../translations/en/LC_MESSAGES/skosmos.mo | Bin 13734 -> 13873 bytes .../translations/fi/LC_MESSAGES/skosmos.mo | Bin 14023 -> 14152 bytes resource/translations/skosmos_en.po | 6 ++++++ resource/translations/skosmos_fi.po | 6 ++++++ resource/translations/skosmos_sv.po | 6 ++++++ .../translations/sv/LC_MESSAGES/skosmos.mo | Bin 13918 -> 14048 bytes 6 files changed, 18 insertions(+) diff --git a/resource/translations/en/LC_MESSAGES/skosmos.mo b/resource/translations/en/LC_MESSAGES/skosmos.mo index f727641b3f341ee656f4c551299edb9210b74a68..fb7139eaf849ac75d332d4094d99f67264c3adc8 100644 GIT binary patch delta 3672 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 delta 3561 zcmXZed2o$a7{~E*C9=A?_afv9Nf45dg)CB16U^9(TFPjQrR``LbTmzk(TusRr5zng zy<;0o5tPP^X(MB+y=qCMhWf*(ZQ9UwOsOS8qx$`MPbP0Z=Y7xioadbP-rRiu`mE6P zmf@=mKXqK~xt2y46YnvmsfC^zGb&(AXB>?MI0wV95}V^5jKOM5z+)JVSFk1ihCXb- zE*QbXD9l9Kg-n54FvS>2#ZZjJ(bx$mA$`p!*a}yoA9tYI?ZZSoX`kOf1$H0#H4XgH z#L;w?IT*xo7|Hx*HU&*E*H$b+MO=YBu?o9lJ;q~;*2ZLEC)7$tVOuOg1yqX4z{u&HSd0f+CG#^fs7?>X3_RSd0ZY4Ks10eSQwRasL2wumhcy!4atO z#-S#hj>`F`B#KdoE$X_Aay1gwWo!cjBj8rmZ4I*1GOcUr~xmc z&cqE=fcJ44Mly>QG#eFQ2({HKQJL5lB>$?|!vhU)0u{(5>n+p@@1gegKUBwE^9Sv;N$pmi|qYX)Wr3u zaUNM;peBeRjmmHvRG`VIc4^33OemLvA{~yJU;-+IQ&E{IM-A{LYQQz9Evi6e>=5cK z)S~*`vNob7@NvM{4U>WDHvoyvOhD>GW)1~Sv>erNE4~~UwO6&)>!_9AN3FngaPMPL z0Vbjrl8VY;E~;Izy?+gLD95AP&qTl8|BonWqQ$5Q)}RLX1~uSbRDdUJ{bkgO>rw5V zq54PiPN{#;nt^K9+upx!?%*nIudn8O03gS^UTGNB40#7uC@(!qEfZbKCeOTO;2h5H*p9uPAj)zAH7wdjjA7l5m<)m|1l~<%dt7GM{UU#RR1b``Tk#|pu=z%)!|>% z2SsGMyVuF6l%=8u=!eSC7*xM^?DJC8N*AKquRx`EH}=7Us0BVo1>S;#6`}XPD+LXh zg_^i8j>U1P%zTSQco=myo}vbLj+(G7%a^IBiF@LF9Dy3Q2DPxOsLb3!WvU6|ncswU zcmMSYqE^%kwbFt1emq8V{~oI22N;WUQK?;M@0XzJSE0t)fEuR~)&H=)KaFa41w$&_ zq@WIWFbW&2FHomCD$`wId(>geK=ms|UJNq`wXzwgl!s95mSH$npfa};b(nYKc|4a% z{v#=@&2k%VMz-Hi*sF;CT!FQ+*XHoBKBgUbxz}@R45L4?dZc(s4csUB*$FCDCNM{%l+pv0b5cr%n5oEJ^P&kZ)eY0r-br( zXO1_|bIRG}E%Kap>b+^6A02Pp;J_hTYp88p4%ZLPyKzOHqt2GNR-PKCI<7o$oTvIx zAS<~JJNnE;e zT*sVhf1dXYCH>6fI_Nz1CwuCg_`opFxvIAVZQ`odCNFR8>F@L_=u=gZ-?!QS>G5*b From faebcea319b824334c45be6ea6ff668441253f27 Mon Sep 17 00:00:00 2001 From: Ahonen Mika J Date: Wed, 4 Aug 2021 14:15:25 +0300 Subject: [PATCH 02/57] Added datatype labels to concept info query --- model/sparql/GenericSparql.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/model/sparql/GenericSparql.php b/model/sparql/GenericSparql.php index 9c58a9a1d..40f61aecc 100644 --- a/model/sparql/GenericSparql.php +++ b/model/sparql/GenericSparql.php @@ -399,6 +399,7 @@ private function generateConceptInfoQuery($uris, $arrayClass, $vocabs) { ?o skos:notation ?on . ?o ?oprop ?oval . ?o ?xlprop ?xlval . + ?dt rdfs:label ?dtlabel . ?directgroup skos:member ?uri . ?parent skos:member ?group . ?group skos:prefLabel ?grouplabel . @@ -429,6 +430,10 @@ private function generateConceptInfoQuery($uris, $arrayClass, $vocabs) { UNION { ?uri ?p ?o . + OPTIONAL { + BIND(datatype(?o) AS ?dt) + ?dt rdfs:label ?dtlabel + } OPTIONAL { ?o rdf:rest* ?b1 . ?b1 rdf:first ?item . From 2725e4931355670c2bd9cc76fb0a8c10b3ae63d7 Mon Sep 17 00:00:00 2001 From: Ahonen Mika J Date: Wed, 4 Aug 2021 14:39:04 +0300 Subject: [PATCH 03/57] Show datatype on concept info page. Uri only for now. --- model/ConceptPropertyValueLiteral.php | 5 +++++ view/concept-shared.twig | 13 ++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/model/ConceptPropertyValueLiteral.php b/model/ConceptPropertyValueLiteral.php index bb4492493..aada49277 100644 --- a/model/ConceptPropertyValueLiteral.php +++ b/model/ConceptPropertyValueLiteral.php @@ -31,6 +31,11 @@ public function getLang() return $this->literal->getLang(); } + public function getDatatype() + { + return $this->literal->getDatatype(); + } + public function getType() { return $this->type; diff --git a/view/concept-shared.twig b/view/concept-shared.twig index 32b8a9d9d..87a4c1a6e 100644 --- a/view/concept-shared.twig +++ b/view/concept-shared.twig @@ -127,7 +127,18 @@ {% endif %} {% elseif property.type == 'rdf:type' %}

{{ propval.label|trans }}

{% else %} {# Literals (no URI), eg. alternative labels as properties #} - {% if propval.lang == request.contentLang or propval.lang == null or not request.contentLang and propval.lang == request.lang %}{% if propval.hasXlProperties %}
{% for key, val in propval.getXlProperties %}{% if key != 'rdf:type' and key != 'skosxl:literalForm' and val != '' %}

{{ key|trans }}: {{ val }}

{% endif %}{% endfor %}
{% endif %}{% if propval.containsHtml %}{{ propval.label|raw }}{% else %}{{ propval.label }}{% endif %}{% if propval.lang and (request.contentLang and propval.lang != request.contentLang or explicit_langcodes) %} ({{ propval.lang }}){% endif %} + {% if propval.lang == request.contentLang or propval.lang == null or not request.contentLang and + propval.lang == request.lang %}{% if propval.hasXlProperties %} +
{% for key, val in + propval.getXlProperties %} {% if key != 'rdf:type' and key != 'skosxl:literalForm' and val != '' %}

+ {{ key|trans }}: + {{ val }}

{% endif %}{% endfor %}
{% endif %} + + {% if propval.containsHtml %}{{ propval.label|raw }}{% else %}{{ propval.label }}{% endif %} + {% if propval.lang and (request.contentLang and propval.lang != request.contentLang or + explicit_langcodes) %}({{ propval.lang }}){% endif %} + {% if propval.datatype %} [ {{ propval.datatype }} ]{% endif %} + {% endif %} {% endif %} From c273b91ded6b0409d8a9a0509f5257df7bb70cee Mon Sep 17 00:00:00 2001 From: Ahonen Mika J Date: Wed, 4 Aug 2021 16:02:17 +0300 Subject: [PATCH 04/57] On the concept page a label for notation is shown --- model/ConceptPropertyValueLiteral.php | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/model/ConceptPropertyValueLiteral.php b/model/ConceptPropertyValueLiteral.php index aada49277..16fba52af 100644 --- a/model/ConceptPropertyValueLiteral.php +++ b/model/ConceptPropertyValueLiteral.php @@ -9,12 +9,15 @@ class ConceptPropertyValueLiteral extends VocabularyDataObject private $literal; /** property type */ private $type; + /** content language */ + private $clang; - public function __construct($model, $vocab, $resource, $literal, $prop) + public function __construct($model, $vocab, $resource, $literal, $prop, $clang = '') { parent::__construct($model, $vocab, $resource); $this->literal = $literal; $this->type = $prop; + $this->clang = $clang; } public function __toString() @@ -33,7 +36,13 @@ public function getLang() public function getDatatype() { - return $this->literal->getDatatype(); + $datatype = $this->literal->getDatatype(); + if ($datatype === null) { + return null; + } + $graph = $this->resource->getGraph(); + $dtLabel = $graph->resource($datatype)->label($this->clang); + return $dtLabel->getValue(); } public function getType() From fcb125f42bb47d9fb758717e288ca0b5d4edc6c7 Mon Sep 17 00:00:00 2001 From: Ahonen Mika J Date: Wed, 4 Aug 2021 16:20:58 +0300 Subject: [PATCH 05/57] On the concept page a label for the datatype is shown --- view/concept-shared.twig | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/view/concept-shared.twig b/view/concept-shared.twig index 87a4c1a6e..6ac71574f 100644 --- a/view/concept-shared.twig +++ b/view/concept-shared.twig @@ -127,17 +127,21 @@ {% endif %} {% elseif property.type == 'rdf:type' %}

{{ propval.label|trans }}

{% else %} {# Literals (no URI), eg. alternative labels as properties #} - {% if propval.lang == request.contentLang or propval.lang == null or not request.contentLang and - propval.lang == request.lang %}{% if propval.hasXlProperties %} -
{% for key, val in - propval.getXlProperties %} {% if key != 'rdf:type' and key != 'skosxl:literalForm' and val != '' %}

- {{ key|trans }}: - {{ val }}

{% endif %}{% endfor %}
{% endif %} - - {% if propval.containsHtml %}{{ propval.label|raw }}{% else %}{{ propval.label }}{% endif %} - {% if propval.lang and (request.contentLang and propval.lang != request.contentLang or - explicit_langcodes) %}({{ propval.lang }}){% endif %} - {% if propval.datatype %} [ {{ propval.datatype }} ]{% endif %} + {% if propval.lang == request.contentLang or propval.lang == null or not request.contentLang and propval.lang == request.lang %} + {% if propval.hasXlProperties %} + +
+ {% for key, val in propval.getXlProperties %} + {% if key != 'rdf:type' and key != 'skosxl:literalForm' and val != '' %} +

{{ key|trans }}: + {{ val }}

+ {% endif %} + {% endfor %}
+ {% endif %} + {% if property.type == 'skos:altLabel' %} class="replaced"{% endif %}> + {% if propval.containsHtml %}{{ propval.label|raw }}{% else %}{{ propval.label }}{% endif %} + {% if propval.lang and (request.contentLang and propval.lang != request.contentLang or explicit_langcodes) %}({{ propval.lang }}){% endif %} + {% if propval.datatype %} [ {{ propval.datatype }} ]{% endif %} {% endif %} {% endif %} From a4c88e67cd86bdabbcf23a2cb4f55e65cdb14862 Mon Sep 17 00:00:00 2001 From: Ahonen Mika J Date: Thu, 5 Aug 2021 18:39:19 +0300 Subject: [PATCH 06/57] Minor changes to improve readability of code --- view/concept-shared.twig | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/view/concept-shared.twig b/view/concept-shared.twig index 6ac71574f..09c9fe55f 100644 --- a/view/concept-shared.twig +++ b/view/concept-shared.twig @@ -45,7 +45,7 @@

{% set subPrefLabelTranslation = concept.preferredSubpropertyLabelTranslation(request.lang) %}{% if subPrefLabelTranslation %}{{ subPrefLabelTranslation|upper }}{% else %}{{ 'skos:prefLabel'|trans|upper }}{% endif %}

{% if concept.foundBy %} {# hit has been found through an alternative label #} - {{ concept.foundBy }} >> + {{ concept.foundBy }} > {% if concept.ExVocab is defined %} @{{ concept.ExVocab }} {% endif %} @@ -130,18 +130,21 @@ {% if propval.lang == request.contentLang or propval.lang == null or not request.contentLang and propval.lang == request.lang %} {% if propval.hasXlProperties %} -
- {% for key, val in propval.getXlProperties %} - {% if key != 'rdf:type' and key != 'skosxl:literalForm' and val != '' %} -

{{ key|trans }}: - {{ val }}

- {% endif %} - {% endfor %}
- {% endif %} - {% if property.type == 'skos:altLabel' %} class="replaced"{% endif %}> - {% if propval.containsHtml %}{{ propval.label|raw }}{% else %}{{ propval.label }}{% endif %} - {% if propval.lang and (request.contentLang and propval.lang != request.contentLang or explicit_langcodes) %}({{ propval.lang }}){% endif %} - {% if propval.datatype %} [ {{ propval.datatype }} ]{% endif %} + + +
+ {% for key, val in propval.getXlProperties %} + {% if key != 'rdf:type' and key != 'skosxl:literalForm' and val != '' %} +

{{ key|trans }}:{{ val }}

+ {% endif %} + {% endfor %} +
+ {% endif %} + + {% if property.type == 'skos:altLabel' %} class="replaced"{% endif %} + {% if propval.containsHtml %}{{ propval.label|raw }}{% else %}{{ propval.label }}{% endif %} + {% if propval.lang and (request.contentLang and propval.lang != request.contentLang or explicit_langcodes) %}({{ propval.lang }}){% endif %} + {% if propval.datatype %} [ {{ propval.datatype }} ]{% endif %} {% endif %} {% endif %} From d7087f36a790df6b8aeeac45a153edfcdc937cb9 Mon Sep 17 00:00:00 2001 From: Ahonen Mika J Date: Fri, 6 Aug 2021 10:56:07 +0300 Subject: [PATCH 07/57] Empty spaces between the data type label and the square brackets on the concept page deleted --- view/concept-shared.twig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/view/concept-shared.twig b/view/concept-shared.twig index 09c9fe55f..05828b05e 100644 --- a/view/concept-shared.twig +++ b/view/concept-shared.twig @@ -144,7 +144,7 @@ {% if property.type == 'skos:altLabel' %} class="replaced"{% endif %} {% if propval.containsHtml %}{{ propval.label|raw }}{% else %}{{ propval.label }}{% endif %} {% if propval.lang and (request.contentLang and propval.lang != request.contentLang or explicit_langcodes) %}({{ propval.lang }}){% endif %} - {% if propval.datatype %} [ {{ propval.datatype }} ]{% endif %} + {% if propval.datatype %} [{{ propval.datatype }}]{% endif %} {% endif %} {% endif %} From 72091cd8d79b59f70e7a37c59721b1370a749b9b Mon Sep 17 00:00:00 2001 From: Ahonen Mika J Date: Tue, 7 Sep 2021 19:43:34 +0300 Subject: [PATCH 08/57] Displays a skos:notation with rdfs:Datatype and label in the properties on the concept page if it is set up to be shown. A default value for showing the notation is 'true' --- model/Concept.php | 12 ++++++++++++ model/VocabularyConfig.php | 18 ++++++++++++++++++ view/concept-shared.twig | 6 ++++-- 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/model/Concept.php b/model/Concept.php index 67c48759b..6645e593b 100644 --- a/model/Concept.php +++ b/model/Concept.php @@ -631,6 +631,7 @@ public function getProperties() $arrayPropObj->addValue($propVal); } } + $ret['skosmos:memberOfArray'] = $arrayPropObj; foreach ($ret as $key => $prop) { @@ -640,6 +641,9 @@ public function getProperties() } $ret = $this->removeDuplicatePropertyValues($ret, $duplicates); + + $ret = $this->vocab->getConfig()->getShowNotationAsProperty() !== null ? $this->removeNotationFromProperties($ret, $this->vocab->getConfig()->getShowNotationAsProperty()) : $ret ; + // sorting the properties to the order preferred in the Skosmos concept page. return $this->arbitrarySort($ret); } @@ -680,6 +684,14 @@ public function removeDuplicatePropertyValues($ret, $duplicates) return $ret; } + public function removeNotationFromProperties($ret, $isShowNotationAsPropertySet = true) + { + if (!$isShowNotationAsPropertySet) { + unset($ret["skos:notation"]); + } + return $ret; + } + /** * @param $lang UI language * @return String|null the translated label of skos:prefLabel subproperty, or null if not available diff --git a/model/VocabularyConfig.php b/model/VocabularyConfig.php index 7297b9f81..ec9bba552 100644 --- a/model/VocabularyConfig.php +++ b/model/VocabularyConfig.php @@ -388,6 +388,24 @@ public function getMarcSourceCode($lang = null) return $this->getLiteral('skosmos:marcSourceCode', false, $lang); } + /** + * Returns a boolean value set in the config.ttl config. + * @return boolean + */ + public function getPrefLabelInTheConceptPageHeaderWithNotation() + { + return $this->getBoolean('skosmos:prefLabelInTheConceptPageHeaderWithNotation'); + } + + /** + * Returns a boolean value set in the config.ttl config. + * @return boolean + */ + public function getShowNotationAsProperty() + { + return $this->getBoolean('skosmos:showNotationAsProperty', true); + } + /** * Returns a boolean value set in the config.ttl config. * @return array array of concept class URIs (can be empty) diff --git a/view/concept-shared.twig b/view/concept-shared.twig index 05828b05e..52bd1e618 100644 --- a/view/concept-shared.twig +++ b/view/concept-shared.twig @@ -85,6 +85,7 @@
{% endspaceless %} + {% for property in concept.properties %} {# loop through ConceptProperty objects #} {% if property.getSubPropertyOf != 'skos:hiddenLabel' %}
@@ -96,7 +97,8 @@ {% for language,labels in concept.allLabels(property.type) %} {% for value in labels %}
-
{% if value.containsHtml %}{{ value.label|raw }}{% else %}{{ value.label }}{% endif %}
{% if loop.first %} {{ language }}{% endif %}
+
{% if value.containsHtml %}{{ value.label|raw }}{% else %}{{ value.label }}{% endif %}
{% if loop.first %} {{ language }}{% endif %}
+
{% endfor %} {% endfor %} {% else %} @@ -144,7 +146,7 @@ {% if property.type == 'skos:altLabel' %} class="replaced"{% endif %} {% if propval.containsHtml %}{{ propval.label|raw }}{% else %}{{ propval.label }}{% endif %} {% if propval.lang and (request.contentLang and propval.lang != request.contentLang or explicit_langcodes) %}({{ propval.lang }}){% endif %} - {% if propval.datatype %} [{{ propval.datatype }}]{% endif %} + {% if propval.datatype %} ({{ propval.datatype }}){% endif %} {% endif %} {% endif %} From 3bee24d414a337e528eb189461e40da9b23b424b Mon Sep 17 00:00:00 2001 From: Ahonen Mika J Date: Wed, 8 Sep 2021 12:17:47 +0300 Subject: [PATCH 09/57] Preparing to the merge: conflicts in the translations aligned with master the master branch --- resource/translations/skosmos_en.po | 6 ++++++ resource/translations/skosmos_fi.po | 6 ++++++ resource/translations/skosmos_sv.po | 6 ++++++ 3 files changed, 18 insertions(+) diff --git a/resource/translations/skosmos_en.po b/resource/translations/skosmos_en.po index 31116ee36..1eef389d3 100644 --- a/resource/translations/skosmos_en.po +++ b/resource/translations/skosmos_en.po @@ -866,3 +866,9 @@ msgstr "Notation" msgid "skos:notation_help" msgstr "Code that uniquely identifies a concept within a concept scheme." + +msgid "Error: Search failed!" +msgstr "Error: Search failed!" + +msgid "Error: Failed to retrieve vocabulary information!" +msgstr "Error: Failed to retrieve vocabulary information!" diff --git a/resource/translations/skosmos_fi.po b/resource/translations/skosmos_fi.po index 09934f0fe..4a38b1a22 100644 --- a/resource/translations/skosmos_fi.po +++ b/resource/translations/skosmos_fi.po @@ -865,3 +865,9 @@ msgstr "Notaatio" msgid "skos:notation_help" msgstr "Tunniste, joka yksilöi käsitteen sanaston sisällä." + +msgid "Error: Search failed!" +msgstr "Virhe: Haku epäonnistui!" + +msgid "Error: Failed to retrieve vocabulary information!" +msgstr "Virhe: Sanaston tietojen haku epäonnistui!" diff --git a/resource/translations/skosmos_sv.po b/resource/translations/skosmos_sv.po index faa0492ad..86b58337b 100644 --- a/resource/translations/skosmos_sv.po +++ b/resource/translations/skosmos_sv.po @@ -863,3 +863,9 @@ msgstr "Notation" msgid "skos:notation_help" msgstr "Kod som unikt identifierar ett begrepp i en vokabulär." + +msgid "Error: Search failed!" +msgstr "Fel: Sökningen misslyckades!" + +msgid "Error: Failed to retrieve vocabulary information!" +msgstr "Fel: Information om vokabulären kunde inte hämtas!" From 790533e4cb728c19e2f86a3a0035b1484b17f96a Mon Sep 17 00:00:00 2001 From: Ahonen Mika J Date: Wed, 8 Sep 2021 12:48:55 +0300 Subject: [PATCH 10/57] An unnecessary method getPrefLabelInTheConceptPageHeaderWithNotation() removed --- model/VocabularyConfig.php | 9 --------- 1 file changed, 9 deletions(-) diff --git a/model/VocabularyConfig.php b/model/VocabularyConfig.php index ec9bba552..d5483f03e 100644 --- a/model/VocabularyConfig.php +++ b/model/VocabularyConfig.php @@ -388,15 +388,6 @@ public function getMarcSourceCode($lang = null) return $this->getLiteral('skosmos:marcSourceCode', false, $lang); } - /** - * Returns a boolean value set in the config.ttl config. - * @return boolean - */ - public function getPrefLabelInTheConceptPageHeaderWithNotation() - { - return $this->getBoolean('skosmos:prefLabelInTheConceptPageHeaderWithNotation'); - } - /** * Returns a boolean value set in the config.ttl config. * @return boolean From fba94659c41bec4a466c182c8713333f2cb4a00d Mon Sep 17 00:00:00 2001 From: Ahonen Mika J Date: Wed, 8 Sep 2021 19:37:18 +0300 Subject: [PATCH 11/57] 2-3 options to choose from in the loop (lines 578 -> 595). This commit only helps keep the code safe. --- model/Concept.php | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/model/Concept.php b/model/Concept.php index 6645e593b..16e3413b4 100644 --- a/model/Concept.php +++ b/model/Concept.php @@ -577,11 +577,21 @@ public function getProperties() // Iterating through every literal and adding these to the data object. foreach ($this->resource->allLiterals($sprop) as $val) { $literal = new ConceptPropertyValueLiteral($this->model, $this->vocab, $this->resource, $val, $prop); - // only add literals when they match the content/hit language or have no language defined OR when they are literals of a multilingual property - if (isset($ret[$prop]) && ($literal->getLang() === $this->clang || $literal->getLang() === null) || $this->vocab->getConfig()->hasMultiLingualProperty($prop)) { +// Option 1: as a part of conditions in the if statement +// https://www.php-fig.org/psr/psr-12/ +// -> Search: Expressions in parentheses MAY be split across multiple lines, where each subsequent line + if ( + !($sprop === 'skos:notation' && $this->vocab->getConfig()->getShowNotationAsProperty() === false) + && isset($ret[$prop]) + && ($literal->getLang() === $this->clang + || $literal->getLang() === null) + || $this->vocab->getConfig()->hasMultiLingualProperty($prop)) { $ret[$prop]->addValue($literal); +// Option 2: In a new if statement +// if ($sprop === 'skos:notation' && $this->vocab->getConfig()->getShowNotationAsProperty() !== false) { +// $ret[$prop]->addValue($literal); +// } } - } // Iterating through every resource and adding these to the data object. @@ -631,7 +641,6 @@ public function getProperties() $arrayPropObj->addValue($propVal); } } - $ret['skosmos:memberOfArray'] = $arrayPropObj; foreach ($ret as $key => $prop) { @@ -642,7 +651,7 @@ public function getProperties() $ret = $this->removeDuplicatePropertyValues($ret, $duplicates); - $ret = $this->vocab->getConfig()->getShowNotationAsProperty() !== null ? $this->removeNotationFromProperties($ret, $this->vocab->getConfig()->getShowNotationAsProperty()) : $ret ; +// $ret = $this->vocab->getConfig()->getShowNotationAsProperty() !== null ? $this->removeNotationFromProperties($ret, $this->vocab->getConfig()->getShowNotationAsProperty()) : $ret ; // sorting the properties to the order preferred in the Skosmos concept page. return $this->arbitrarySort($ret); @@ -684,13 +693,13 @@ public function removeDuplicatePropertyValues($ret, $duplicates) return $ret; } - public function removeNotationFromProperties($ret, $isShowNotationAsPropertySet = true) - { - if (!$isShowNotationAsPropertySet) { - unset($ret["skos:notation"]); - } - return $ret; - } +// public function removeNotationFromProperties($ret, $isShowNotationAsPropertySet = true) +// { +// if (!$isShowNotationAsPropertySet) { +// unset($ret["skos:notation"]); +// } +// return $ret; +// } /** * @param $lang UI language From f0a932db45c114309565e5ba1d25aaaf7a3acc59 Mon Sep 17 00:00:00 2001 From: Ahonen Mika J Date: Thu, 9 Sep 2021 13:18:57 +0300 Subject: [PATCH 12/57] Early check for the skos:notation if it is shown in the properties on the concept page --- model/Concept.php | 34 +++++++++------------------------- 1 file changed, 9 insertions(+), 25 deletions(-) diff --git a/model/Concept.php b/model/Concept.php index 16e3413b4..1dc5c5f9f 100644 --- a/model/Concept.php +++ b/model/Concept.php @@ -508,7 +508,13 @@ public function getProperties() $sprop = "<$prop>"; } - if (!in_array($prop, $this->DELETED_PROPERTIES) || ($this->isGroup() === false && $prop === 'skos:member')) { + // delete notations unless configured to show them + $deleted = $this->DELETED_PROPERTIES; + if ($sprop === 'skos:notation' && !$this->vocab->getConfig()->getShowNotationAsProperty()) { + $deleted[] = 'skos:notation'; + } + + if (!in_array($prop, $deleted) || ($this->isGroup() === false && $prop === 'skos:member')) { // retrieve property label and super properties from the current vocabulary first $propres = new EasyRdf\Resource($prop, $this->graph); $proplabel = $propres->label($this->getEnvLang()) ? $propres->label($this->getEnvLang()) : $propres->label(); @@ -577,20 +583,9 @@ public function getProperties() // Iterating through every literal and adding these to the data object. foreach ($this->resource->allLiterals($sprop) as $val) { $literal = new ConceptPropertyValueLiteral($this->model, $this->vocab, $this->resource, $val, $prop); -// Option 1: as a part of conditions in the if statement -// https://www.php-fig.org/psr/psr-12/ -// -> Search: Expressions in parentheses MAY be split across multiple lines, where each subsequent line - if ( - !($sprop === 'skos:notation' && $this->vocab->getConfig()->getShowNotationAsProperty() === false) - && isset($ret[$prop]) - && ($literal->getLang() === $this->clang - || $literal->getLang() === null) - || $this->vocab->getConfig()->hasMultiLingualProperty($prop)) { + // only add literals when they match the content/hit language or have no language defined OR when they are literals of a multilingual property + if (isset($ret[$prop]) && ($literal->getLang() === $this->clang || $literal->getLang() === null) || $this->vocab->getConfig()->hasMultiLingualProperty($prop)) { $ret[$prop]->addValue($literal); -// Option 2: In a new if statement -// if ($sprop === 'skos:notation' && $this->vocab->getConfig()->getShowNotationAsProperty() !== false) { -// $ret[$prop]->addValue($literal); -// } } } @@ -650,9 +645,6 @@ public function getProperties() } $ret = $this->removeDuplicatePropertyValues($ret, $duplicates); - -// $ret = $this->vocab->getConfig()->getShowNotationAsProperty() !== null ? $this->removeNotationFromProperties($ret, $this->vocab->getConfig()->getShowNotationAsProperty()) : $ret ; - // sorting the properties to the order preferred in the Skosmos concept page. return $this->arbitrarySort($ret); } @@ -693,14 +685,6 @@ public function removeDuplicatePropertyValues($ret, $duplicates) return $ret; } -// public function removeNotationFromProperties($ret, $isShowNotationAsPropertySet = true) -// { -// if (!$isShowNotationAsPropertySet) { -// unset($ret["skos:notation"]); -// } -// return $ret; -// } - /** * @param $lang UI language * @return String|null the translated label of skos:prefLabel subproperty, or null if not available From c6301a0c7798912884a40a50e48d051fec4a9de1 Mon Sep 17 00:00:00 2001 From: Ahonen Mika J Date: Thu, 9 Sep 2021 14:27:51 +0300 Subject: [PATCH 13/57] Vain indentation changes reverted --- view/concept-shared.twig | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/view/concept-shared.twig b/view/concept-shared.twig index 52bd1e618..fbbd35de1 100644 --- a/view/concept-shared.twig +++ b/view/concept-shared.twig @@ -97,8 +97,7 @@ {% for language,labels in concept.allLabels(property.type) %} {% for value in labels %}
-
{% if value.containsHtml %}{{ value.label|raw }}{% else %}{{ value.label }}{% endif %}
{% if loop.first %} {{ language }}{% endif %}
-
+
{% if value.containsHtml %}{{ value.label|raw }}{% else %}{{ value.label }}{% endif %}
{% if loop.first %} {{ language }}{% endif %}
{% endfor %} {% endfor %} {% else %} From 68682d1b061e510b6afd03470ccdf212e093b8d2 Mon Sep 17 00:00:00 2001 From: Ahonen Mika J Date: Thu, 9 Sep 2021 17:02:21 +0300 Subject: [PATCH 14/57] The checking if skos:notation should be shown in the properties was moved to the more reasonable location in the class --- model/Concept.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/model/Concept.php b/model/Concept.php index 1dc5c5f9f..5297774f2 100644 --- a/model/Concept.php +++ b/model/Concept.php @@ -497,6 +497,12 @@ public function getProperties() } } + // delete notations unless configured to show them + $deleted = $this->DELETED_PROPERTIES; + if (!$this->vocab->getConfig()->getShowNotationAsProperty()) { + $deleted[] = 'skos:notation'; + } + foreach ($longUris as &$prop) { // storing full URI without brackets in a separate variable $longUri = $prop; @@ -508,12 +514,6 @@ public function getProperties() $sprop = "<$prop>"; } - // delete notations unless configured to show them - $deleted = $this->DELETED_PROPERTIES; - if ($sprop === 'skos:notation' && !$this->vocab->getConfig()->getShowNotationAsProperty()) { - $deleted[] = 'skos:notation'; - } - if (!in_array($prop, $deleted) || ($this->isGroup() === false && $prop === 'skos:member')) { // retrieve property label and super properties from the current vocabulary first $propres = new EasyRdf\Resource($prop, $this->graph); From 29f3e07d4653be6aef46c762569e17707b7a4f04 Mon Sep 17 00:00:00 2001 From: Ahonen Mika J Date: Thu, 9 Sep 2021 17:09:30 +0300 Subject: [PATCH 15/57] Added a docstring for the method getShowNotationAsProperty() --- model/VocabularyConfig.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/model/VocabularyConfig.php b/model/VocabularyConfig.php index d5483f03e..5880da2f8 100644 --- a/model/VocabularyConfig.php +++ b/model/VocabularyConfig.php @@ -389,7 +389,7 @@ public function getMarcSourceCode($lang = null) } /** - * Returns a boolean value set in the config.ttl config. + * Returns the boolean value of the skosmos:showNotationAsProperty setting. * @return boolean */ public function getShowNotationAsProperty() From 0b28daad29350263592aebbd0f70e023daa99fd7 Mon Sep 17 00:00:00 2001 From: Vainonen Date: Thu, 9 Sep 2021 17:31:40 +0300 Subject: [PATCH 16/57] add order of plugins --- controller/WebController.php | 4 +- model/Concept.php | 2 +- model/Request.php | 2 +- model/VocabularyConfig.php | 120 +++++++++++++++++++++++++-------- tests/VocabularyConfigTest.php | 14 +++- tests/testconfig.ttl | 3 + 6 files changed, 111 insertions(+), 34 deletions(-) diff --git a/controller/WebController.php b/controller/WebController.php index ce1974948..ff652e6ab 100644 --- a/controller/WebController.php +++ b/controller/WebController.php @@ -178,7 +178,7 @@ public function invokeVocabularyConcept(Request $request) if ($this->notModified($results[0])) { return; } - $pluginParameters = $vocab->getConfig()->getPluginParameters(); + $pluginParameters = json_encode($vocab->getConfig()->getPluginParameters(), true); $template = (in_array('skos:Concept', $results[0]->getType()) || in_array('skos:ConceptScheme', $results[0]->getType())) ? $this->twig->loadTemplate('concept-info.twig') : $this->twig->loadTemplate('group-contents.twig'); $crumbs = $vocab->getBreadCrumbs($request->getContentLang(), $uri); @@ -515,7 +515,7 @@ public function invokeVocabularyHome($request) $this->invokeGroupIndex($request, true); return; } - $pluginParameters = $vocab->getConfig()->getPluginParameters(); + $pluginParameters = json_encode($vocab->getConfig()->getPluginParameters(), true); $template = $this->twig->loadTemplate('vocab.twig'); diff --git a/model/Concept.php b/model/Concept.php index 67c48759b..0dceed419 100644 --- a/model/Concept.php +++ b/model/Concept.php @@ -278,7 +278,7 @@ public function processExternalResource($res) $propList = array_unique(array_merge( $this->DEFAULT_EXT_PROPERTIES, $this->getVocab()->getConfig()->getExtProperties(), - $this->getVocab()->getConfig()->getPlugins()->getExtProperties() + $this->getVocab()->getConfig()->getPluginRegister()->getExtProperties() )); $seen = array(); diff --git a/model/Request.php b/model/Request.php index 000ce384f..4111bd310 100644 --- a/model/Request.php +++ b/model/Request.php @@ -262,7 +262,7 @@ public function getVocabList() { public function getPlugins() { if ($this->vocab) { - return $this->vocab->getConfig()->getPlugins(); + return $this->vocab->getConfig()->getPluginRegister(); } return new PluginRegister($this->model->getConfig()->getGlobalPlugins()); } diff --git a/model/VocabularyConfig.php b/model/VocabularyConfig.php index 7297b9f81..375dabd0c 100644 --- a/model/VocabularyConfig.php +++ b/model/VocabularyConfig.php @@ -5,8 +5,8 @@ */ class VocabularyConfig extends BaseConfig { - private $plugins; - private $pluginParameters; + private $pluginRegister; + private $pluginParameters = array(); private $languageOrderCache = array(); const DEFAULT_PROPERTY_ORDER = array("rdf:type", "dc:isReplacedBy", @@ -31,41 +31,97 @@ class VocabularyConfig extends BaseConfig public function __construct($resource, $globalPlugins=array()) { $this->resource = $resource; - $plugins = $this->resource->allLiterals('skosmos:usePlugin'); + $this->globalPlugins = $globalPlugins; + $this->setParametrizedPlugins(); + $pluginArray = $this->getPluginArray(); + $this->pluginRegister = new PluginRegister($pluginArray); + } + + /** + * Get an ordered array of plugin names with order configured in skosmos:vocabularyPlugins + * @return array|null of plugin names + */ + public function getPluginArray() { + $pluginArray = array(); + + $vocabularyPlugins = $this->resource->getResource('skosmos:vocabularyPlugins'); + if ($vocabularyPlugins) { + // $vocabularyPlugins has all resources + foreach ($vocabularyPlugins as $plugin) { + if ($plugin instanceof EasyRdf\Literal) { + $pluginName = $plugin->getValue(); + array_push($pluginArray, $pluginName); + } + else { + array_push($pluginArray, $plugin->getLiteral('skosmos:usePlugin')->getValue()); + } + } + } + $pluginArray = array_merge($pluginArray, $this->globalPlugins); + + $plugins = $this->resource->allLiterals('skosmos:usePlugin'); if ($plugins) { foreach ($plugins as $pluginlit) { - $pluginArray[] = $pluginlit->getValue(); + $pluginName = $pluginlit->getValue(); + array_push($pluginArray, $pluginName); } } - $this->plugins = new PluginRegister(array_merge($globalPlugins, $pluginArray)); - // Get parameterized plugins defined as resources and their respective parameters - $pluginResources = $this->resource->allResources('skosmos:useParamPlugin'); + + $pluginArray = array_values(array_unique(array_merge($pluginArray, array_keys($this->pluginParameters)))); + + return $pluginArray; + + } + + /** + * Sets array of parameterized plugins + * @param Easyrdf\Resource $pluginResource + */ + private function setParametrizedPlugins() { + $this->pluginParameters = array(); + + $vocabularyPlugins = $this->resource->getResource('skosmos:vocabularyPlugins'); + if ($vocabularyPlugins) { + // $vocabularyPlugins has all resources + foreach ($vocabularyPlugins as $plugin) { + if (!$plugin instanceof EasyRdf\Literal) { + $this->setPluginParameters($plugin); + } + } + } + $pluginResources = $this->resource->allResources('skosmos:useParamPlugin'); if ($pluginResources) { foreach ($pluginResources as $pluginResource) { - $pluginName = $pluginResource->getLiteral('skosmos:usePlugin')->getValue(); - $this->pluginParameters[$pluginName] = array(); - - $pluginParams = $pluginResource->allResources('skosmos:parameters'); - foreach ($pluginParams as $parameter) { - - $paramLiterals = $parameter->allLiterals('schema:value'); - foreach ($paramLiterals as $paramLiteral) { - $paramName = $parameter->getLiteral('schema:propertyID')->getValue(); - $paramValue = $paramLiteral->getValue(); - $paramLang = $paramLiteral->getLang(); - if ($paramLang) { - $paramName .= '_' . $paramLang; - } - $this->pluginParameters[$pluginName][$paramName] = $paramValue; - } - } - $pluginArray[] = $pluginName; + $this->setPluginParameters($pluginResource); } - $this->plugins = new PluginRegister(array_merge($globalPlugins, $pluginArray)); } + } + + /** + * Updates array of parameterized plugins adding parameter values + * @param Easyrdf\Resource $pluginResource + */ + private function setPluginParameters(Easyrdf\Resource $pluginResource) : void + { + $pluginName = $pluginResource->getLiteral('skosmos:usePlugin')->getValue(); + $this->pluginParameters[$pluginName] = array(); + $pluginParams = $pluginResource->allResources('skosmos:parameters'); + foreach ($pluginParams as $parameter) { + + $paramLiterals = $parameter->allLiterals('schema:value'); + foreach ($paramLiterals as $paramLiteral) { + $paramName = $parameter->getLiteral('schema:propertyID')->getValue(); + $paramValue = $paramLiteral->getValue(); + $paramLang = $paramLiteral->getLang(); + if ($paramLang) { + $paramName .= '_' . $paramLang; + } + $this->pluginParameters[$pluginName][$paramName] = $paramValue; + } + } } /** @@ -428,6 +484,14 @@ public function getLanguages() * @return string plugin parameters or null */ public function getPluginParameters() { + return $this->pluginParameters; + } + + /** + * Returns the plugin parameters + * @return string plugin parameters or null + */ + public function getEncodedPluginParameters() { return json_encode($this->pluginParameters, true); } @@ -478,9 +542,9 @@ public function getShowStatistics() { return $this->getBoolean('skosmos:showStatistics', true); } - public function getPlugins() + public function getPluginRegister() { - return $this->plugins; + return $this->pluginRegister; } /** diff --git a/tests/VocabularyConfigTest.php b/tests/VocabularyConfigTest.php index 1afe7800e..a1ed4273b 100644 --- a/tests/VocabularyConfigTest.php +++ b/tests/VocabularyConfigTest.php @@ -15,7 +15,7 @@ protected function setUp() : void putenv("LC_ALL=en_GB.utf8"); setlocale(LC_ALL, 'en_GB.utf8'); $this->model = new Model(new GlobalConfig('/../tests/testconfig.ttl')); - $this->assertNotNull($this->model->getVocabulary('test')->getConfig()->getPlugins(), "The PluginRegister of the model was not initialized!"); + $this->assertNotNull($this->model->getVocabulary('test')->getConfig()->getPluginRegister(), "The PluginRegister of the model was not initialized!"); } /** @@ -503,7 +503,17 @@ public function testGetVocabularyUseModifiedDate() { public function testGetPluginParameters() { $vocab = $this->model->getVocabulary('paramPluginTest'); $params = $vocab->getConfig()->getPluginParameters(); - $this->assertEquals(json_encode(array('imaginaryPlugin' => array('poem_fi' => "Roses are red", 'poem' => "Violets are blue", 'color' => "#800000")),true), $params); + //$this->assertEquals(json_encode(array('imaginaryPlugin' => array('poem_fi' => "Roses are red", 'poem' => "Violets are blue", 'color' => "#800000")),true), $params); + $this->assertEquals(array('imaginaryPlugin' => array('poem_fi' => "Roses are red", 'poem' => "Violets are blue", 'color' => "#800000")), $params); + } + + /** + * @covers VocabularyConfig::getPluginArray + */ + public function testGetOrderedPlugins() { + $vocab = $this->model->getVocabulary('paramPluginTest'); + $plugins = $vocab->getConfig()->getPluginArray(); + $this->assertEquals(["plugin2", "Bravo", "imaginaryPlugin", "plugin1", "alpha", "charlie", "plugin3"], $plugins); } /** diff --git a/tests/testconfig.ttl b/tests/testconfig.ttl index 390079d74..15e4d5440 100644 --- a/tests/testconfig.ttl +++ b/tests/testconfig.ttl @@ -356,6 +356,9 @@ skosmos:feedbackRecipient "developer@vocabulary.org"; skosmos:groupClass skos:Collection; skosmos:language "en"; + skosmos:vocabularyPlugins ("plugin2" "Bravo" :parameterizedPlugin "plugin1"); + skosmos:usePlugin "plugin1" ; + skosmos:usePlugin "plugin3" ; skosmos:useParamPlugin :parameterizedPlugin ; skosmos:showTopConcepts "true"; skosmos:shortName "Test params", From 3d4b80aa32900e4e0b9594057dd75721a35901a5 Mon Sep 17 00:00:00 2001 From: Osma Suominen Date: Tue, 14 Sep 2021 15:23:25 +0300 Subject: [PATCH 17/57] "decimal" and "natural" sort strategies for notation codes. Fixes #927 --- model/Concept.php | 2 +- model/ConceptProperty.php | 8 ++++++-- model/ConceptPropertyValue.php | 7 +------ model/VocabularyConfig.php | 17 +++++++++++++---- resource/js/hierarchy.js | 16 ++++++++++------ resource/js/scripts.js | 11 +++++++++-- tests/VocabularyConfigTest.php | 35 ++++++++++++++++++++++++++++++++-- tests/testconfig.ttl | 3 ++- view/scripts.twig | 3 ++- 9 files changed, 77 insertions(+), 25 deletions(-) diff --git a/model/Concept.php b/model/Concept.php index 67c48759b..5e7ace907 100644 --- a/model/Concept.php +++ b/model/Concept.php @@ -558,7 +558,7 @@ public function getProperties() if ($superprop) { $superprop = EasyRdf\RdfNamespace::shorten($superprop) ? EasyRdf\RdfNamespace::shorten($superprop) : $superprop; } - $sort_by_notation = $this->vocab->getConfig()->sortByNotation(); + $sort_by_notation = $this->vocab->getConfig()->getSortByNotation(); $propobj = new ConceptProperty($prop, $proplabel, $prophelp, $superprop, $sort_by_notation); if ($propobj->getLabel() !== null) { diff --git a/model/ConceptProperty.php b/model/ConceptProperty.php index 99ff7f6b6..2a75de6ec 100644 --- a/model/ConceptProperty.php +++ b/model/ConceptProperty.php @@ -130,8 +130,12 @@ private function sortValues() return -1; } else { - // assume that notations are unique - return strnatcasecmp($anot, $bnot); + // assume that notations are unique, choose strategy + if ($this->sort_by_notation == "decimal") { + return strcoll($anot, $bnot); + } else { // natural + return strnatcasecmp($anot, $bnot); + } } }); } diff --git a/model/ConceptPropertyValue.php b/model/ConceptPropertyValue.php index 5f330162e..e35363514 100644 --- a/model/ConceptPropertyValue.php +++ b/model/ConceptPropertyValue.php @@ -33,12 +33,7 @@ public function __construct($model, $vocab, $resource, $prop, $clang = '') public function __toString() { - $label = is_string($this->getLabel()) ? $this->getLabel() : $this->getLabel()->getValue(); - if ($this->vocab->getConfig()->sortByNotation()) { - $label = ltrim($this->getNotation() . ' ') . $label; - } - - return $label; + return is_string($this->getLabel()) ? $this->getLabel() : $this->getLabel()->getValue(); } public function getLang() diff --git a/model/VocabularyConfig.php b/model/VocabularyConfig.php index 7297b9f81..dd93c60c5 100644 --- a/model/VocabularyConfig.php +++ b/model/VocabularyConfig.php @@ -178,12 +178,21 @@ public function getTitle($lang = null) } /** - * Returns a boolean value set in the config.ttl config. - * @return boolean + * Returns the sorting strategy for notation codes set in the config.ttl + * config: either "decimal" (default), "natural", or null if + * sorting by notations is disabled. + * @return string|bool */ - public function sortByNotation() + public function getSortByNotation(): ?string { - return $this->getBoolean('skosmos:sortByNotation'); + $value = $this->getLiteral('skosmos:sortByNotation'); + if ($value == "decimal" || $value == "natural") { + return $value; + } + // not a special value - interpret as boolean instead + $bvalue = $this->getBoolean('skosmos:sortByNotation'); + // default sorting strategy is "decimal" + return $bvalue ? "decimal" : null; } /** diff --git a/resource/js/hierarchy.js b/resource/js/hierarchy.js index 6e30cdb99..912ebfa17 100644 --- a/resource/js/hierarchy.js +++ b/resource/js/hierarchy.js @@ -508,17 +508,21 @@ function getTreeConfiguration() { var bNode = this.get_node(b); // sort on notation if requested, and notations exist - if (window.showNotation) { + if (window.sortByNotation) { var aNotation = aNode.original.notation; var bNotation = bNode.original.notation; if (aNotation) { if (bNotation) { - if (aNotation < bNotation) { - return -1; - } - else if (aNotation > bNotation) { - return 1; + if (window.sortByNotation == "decimal") { + if (aNotation < bNotation) { + return -1; + } + else if (aNotation > bNotation) { + return 1; + } + } else { // natural + return naturalCompare(aNotation, bNotation); } } else return -1; diff --git a/resource/js/scripts.js b/resource/js/scripts.js index f405a91ee..98cddc87a 100644 --- a/resource/js/scripts.js +++ b/resource/js/scripts.js @@ -326,7 +326,14 @@ function countAndSetOffset() { } } +// return -1 if the value is negative, 1 otherwise +// used to coerce sort values so they are compatible with the jsTree sort plugin +function negVsPos(val) { + return (val < 0) ? -1 : 1; +} + // Natural sort from: http://stackoverflow.com/a/15479354/3894569 +// adapted to return only -1 or 1 using negVsPos function above function naturalCompare(a, b) { var ax = [], bx = []; @@ -337,10 +344,10 @@ function naturalCompare(a, b) { var an = ax.shift(); var bn = bx.shift(); var nn = (an[0] - bn[0]) || an[1].localeCompare(bn[1], lang); - if(nn) return nn; + if(nn) return negVsPos(nn); } - return ax.length - bx.length; + return negVsPos(ax.length - bx.length); } function makeCallbacks(data, pageType) { diff --git a/tests/VocabularyConfigTest.php b/tests/VocabularyConfigTest.php index 1afe7800e..da1277ead 100644 --- a/tests/VocabularyConfigTest.php +++ b/tests/VocabularyConfigTest.php @@ -318,12 +318,43 @@ public function testShowChangeListDefaultValue() { } /** - * @covers VocabularyConfig::sortByNotation + * @covers VocabularyConfig::getSortByNotation + * @covers VocabularyConfig::getLiteral * @covers VocabularyConfig::getBoolean */ public function testShowSortByNotationDefaultValue() { $vocab = $this->model->getVocabulary('test'); - $this->assertEquals(false, $vocab->getConfig()->sortByNotation()); + $this->assertNull($vocab->getConfig()->getSortByNotation()); + } + + /** + * @covers VocabularyConfig::getSortByNotation + * @covers VocabularyConfig::getLiteral + * @covers VocabularyConfig::getBoolean + */ + public function testShowSortByNotationTrueIsDecimal() { + $vocab = $this->model->getVocabulary('test-notation-sort'); + $this->assertEquals("decimal", $vocab->getConfig()->getSortByNotation()); + } + + /** + * @covers VocabularyConfig::getSortByNotation + * @covers VocabularyConfig::getLiteral + * @covers VocabularyConfig::getBoolean + */ + public function testShowSortByNotationDecimal() { + $vocab = $this->model->getVocabulary('test-qualified-notation'); + $this->assertEquals("decimal", $vocab->getConfig()->getSortByNotation()); + } + + /** + * @covers VocabularyConfig::getSortByNotation + * @covers VocabularyConfig::getLiteral + * @covers VocabularyConfig::getBoolean + */ + public function testShowSortByNotationNatural() { + $vocab = $this->model->getVocabulary('testNotation'); + $this->assertEquals("natural", $vocab->getConfig()->getSortByNotation()); } /** diff --git a/tests/testconfig.ttl b/tests/testconfig.ttl index 390079d74..a836e6afb 100644 --- a/tests/testconfig.ttl +++ b/tests/testconfig.ttl @@ -117,6 +117,7 @@ void:uriSpace "http://www.skosmos.skos/test-qualified-notation/" ; skosmos:defaultLanguage "en" ; skosmos:groupClass skos:Collection ; + skosmos:sortByNotation "decimal" ; skosmos:language "en" ; skosmos:alphabeticalListQualifier skos:notation ; skosmos:sparqlGraph . @@ -337,7 +338,7 @@ dc:subject :cat_general ; void:uriSpace "http://www.skosmos.skos/notationFeatures/"; skosmos:language "fi"; - skosmos:sortByNotation true ; + skosmos:sortByNotation "natural" ; skosmos:searchByNotation true ; skosmos:showNotation true ; skosmos:useModifiedDate "true"; diff --git a/view/scripts.twig b/view/scripts.twig index 0f62b0efe..c19b89920 100644 --- a/view/scripts.twig +++ b/view/scripts.twig @@ -32,8 +32,9 @@ var prefLabels = [{"lang": "{{ search_results|first.label.lang }}","label": "{{ {% if request.vocab and request.vocab.uriSpace %} var uriSpace = "{{ request.vocab.uriSpace }}"; {% endif %} -var showNotation = {% if request.vocab and request.vocab.config.showNotation == false %}false{% else %}true{% endif %}; {% if request.vocab %} +var showNotation = {% if request.vocab.config.showNotation %}true{% else %}false{% endif %}; +var sortByNotation = {% if request.vocab.config.sortByNotation %}"{{ request.vocab.config.sortByNotation }}"{% else %}null{% endif %}; var languageOrder = [{% for lang in request.vocab.config.languageOrder(request.contentLang) %}"{{ lang }}"{% if not loop.last %},{% endif %}{% endfor %}]; var vocShortName = "{{ request.vocab.config.shortname }}"; {% endif %} From 651a5feb182a541869b99996dcc62e10e765c968 Mon Sep 17 00:00:00 2001 From: Osma Suominen Date: Tue, 14 Sep 2021 15:36:10 +0300 Subject: [PATCH 18/57] Revert (partially) refactoring of showNotation, as it could cause problems --- view/scripts.twig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/view/scripts.twig b/view/scripts.twig index c19b89920..d40340ac3 100644 --- a/view/scripts.twig +++ b/view/scripts.twig @@ -32,8 +32,8 @@ var prefLabels = [{"lang": "{{ search_results|first.label.lang }}","label": "{{ {% if request.vocab and request.vocab.uriSpace %} var uriSpace = "{{ request.vocab.uriSpace }}"; {% endif %} +var showNotation = {% if request.vocab and not request.vocab.config.showNotation %}false{% else %}true{% endif %}; {% if request.vocab %} -var showNotation = {% if request.vocab.config.showNotation %}true{% else %}false{% endif %}; var sortByNotation = {% if request.vocab.config.sortByNotation %}"{{ request.vocab.config.sortByNotation }}"{% else %}null{% endif %}; var languageOrder = [{% for lang in request.vocab.config.languageOrder(request.contentLang) %}"{{ lang }}"{% if not loop.last %},{% endif %}{% endfor %}]; var vocShortName = "{{ request.vocab.config.shortname }}"; From 21d24a48c1f65d9ac0b1b42ff70aa8f2dd171e77 Mon Sep 17 00:00:00 2001 From: Vainonen Date: Tue, 14 Sep 2021 16:23:02 +0300 Subject: [PATCH 19/57] removed unnecessary parameters and functions --- controller/WebController.php | 4 ++-- model/VocabularyConfig.php | 26 +++++++++----------------- tests/VocabularyConfigTest.php | 1 - 3 files changed, 11 insertions(+), 20 deletions(-) diff --git a/controller/WebController.php b/controller/WebController.php index ff652e6ab..931eb7e22 100644 --- a/controller/WebController.php +++ b/controller/WebController.php @@ -178,7 +178,7 @@ public function invokeVocabularyConcept(Request $request) if ($this->notModified($results[0])) { return; } - $pluginParameters = json_encode($vocab->getConfig()->getPluginParameters(), true); + $pluginParameters = json_encode($vocab->getConfig()->getPluginParameters()); $template = (in_array('skos:Concept', $results[0]->getType()) || in_array('skos:ConceptScheme', $results[0]->getType())) ? $this->twig->loadTemplate('concept-info.twig') : $this->twig->loadTemplate('group-contents.twig'); $crumbs = $vocab->getBreadCrumbs($request->getContentLang(), $uri); @@ -515,7 +515,7 @@ public function invokeVocabularyHome($request) $this->invokeGroupIndex($request, true); return; } - $pluginParameters = json_encode($vocab->getConfig()->getPluginParameters(), true); + $pluginParameters = json_encode($vocab->getConfig()->getPluginParameters()); $template = $this->twig->loadTemplate('vocab.twig'); diff --git a/model/VocabularyConfig.php b/model/VocabularyConfig.php index 375dabd0c..b6b6d0c05 100644 --- a/model/VocabularyConfig.php +++ b/model/VocabularyConfig.php @@ -32,22 +32,21 @@ public function __construct($resource, $globalPlugins=array()) { $this->resource = $resource; $this->globalPlugins = $globalPlugins; - $this->setParametrizedPlugins(); + $this->setParameterizedPlugins(); $pluginArray = $this->getPluginArray(); $this->pluginRegister = new PluginRegister($pluginArray); } /** * Get an ordered array of plugin names with order configured in skosmos:vocabularyPlugins - * @return array|null of plugin names + * @return array of plugin names */ - public function getPluginArray() { - + public function getPluginArray() : array + { $pluginArray = array(); $vocabularyPlugins = $this->resource->getResource('skosmos:vocabularyPlugins'); if ($vocabularyPlugins) { - // $vocabularyPlugins has all resources foreach ($vocabularyPlugins as $plugin) { if ($plugin instanceof EasyRdf\Literal) { $pluginName = $plugin->getValue(); @@ -71,22 +70,22 @@ public function getPluginArray() { $pluginArray = array_values(array_unique(array_merge($pluginArray, array_keys($this->pluginParameters)))); return $pluginArray; - } /** * Sets array of parameterized plugins * @param Easyrdf\Resource $pluginResource + * @return void */ - private function setParametrizedPlugins() { - + private function setParameterizedPlugins() : void + { $this->pluginParameters = array(); $vocabularyPlugins = $this->resource->getResource('skosmos:vocabularyPlugins'); if ($vocabularyPlugins) { // $vocabularyPlugins has all resources foreach ($vocabularyPlugins as $plugin) { - if (!$plugin instanceof EasyRdf\Literal) { + if ($plugin instanceof EasyRdf\Resource) { $this->setPluginParameters($plugin); } } @@ -102,6 +101,7 @@ private function setParametrizedPlugins() { /** * Updates array of parameterized plugins adding parameter values * @param Easyrdf\Resource $pluginResource + * @return void */ private function setPluginParameters(Easyrdf\Resource $pluginResource) : void { @@ -487,14 +487,6 @@ public function getPluginParameters() { return $this->pluginParameters; } - /** - * Returns the plugin parameters - * @return string plugin parameters or null - */ - public function getEncodedPluginParameters() { - return json_encode($this->pluginParameters, true); - } - /** * Returns the vocabulary default sidebar view. * @return string name of the view diff --git a/tests/VocabularyConfigTest.php b/tests/VocabularyConfigTest.php index a1ed4273b..ed2407efb 100644 --- a/tests/VocabularyConfigTest.php +++ b/tests/VocabularyConfigTest.php @@ -503,7 +503,6 @@ public function testGetVocabularyUseModifiedDate() { public function testGetPluginParameters() { $vocab = $this->model->getVocabulary('paramPluginTest'); $params = $vocab->getConfig()->getPluginParameters(); - //$this->assertEquals(json_encode(array('imaginaryPlugin' => array('poem_fi' => "Roses are red", 'poem' => "Violets are blue", 'color' => "#800000")),true), $params); $this->assertEquals(array('imaginaryPlugin' => array('poem_fi' => "Roses are red", 'poem' => "Violets are blue", 'color' => "#800000")), $params); } From 57e0da54ebcd30f96b348571fd8038590845926c Mon Sep 17 00:00:00 2001 From: Vainonen Date: Tue, 14 Sep 2021 16:36:09 +0300 Subject: [PATCH 20/57] removed unnecessary array_merge --- model/VocabularyConfig.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/model/VocabularyConfig.php b/model/VocabularyConfig.php index b6b6d0c05..f6dd27604 100644 --- a/model/VocabularyConfig.php +++ b/model/VocabularyConfig.php @@ -67,7 +67,7 @@ public function getPluginArray() : array } } - $pluginArray = array_values(array_unique(array_merge($pluginArray, array_keys($this->pluginParameters)))); + $pluginArray = array_values(array_unique($pluginArray)); return $pluginArray; } From 5911225f53866c3fe49150cdbed4549ce96cf2ae Mon Sep 17 00:00:00 2001 From: "Bruno P. Kinoshita" Date: Wed, 15 Sep 2021 21:59:24 +1200 Subject: [PATCH 21/57] Replace NBSP by spaces --- model/DataObject.php | 4 ++-- model/Model.php | 4 ++-- model/Vocabulary.php | 6 +++--- resource/js/scripts.js | 4 ++-- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/model/DataObject.php b/model/DataObject.php index 2865cbcc4..e6f30e7cc 100644 --- a/model/DataObject.php +++ b/model/DataObject.php @@ -50,7 +50,7 @@ protected function getExternalLabel($exvoc, $exuri, $lang) $exsparql = $exvoc->getSparql(); $results = $exsparql->queryLabel($exuri, $lang); return isset($results[$lang]) ? $results[$lang] : null; - } catch (EasyRdf\Http\Exception | EasyRdf\Exception | Throwable $e) { + } catch (EasyRdf\Http\Exception | EasyRdf\Exception | Throwable $e) { if ($this->model->getConfig()->getLogCaughtExceptions()) { error_log('Caught exception: ' . $e->getMessage()); } @@ -72,7 +72,7 @@ protected function getExternalNotation($exvoc, $exuri) $exsparql = $exvoc->getSparql(); $results = $exsparql->queryNotation($exuri); return isset($results) ? $results : null; - } catch (EasyRdf\Http\Exception | EasyRdf\Exception | Throwable $e) { + } catch (EasyRdf\Http\Exception | EasyRdf\Exception | Throwable $e) { if ($this->model->getConfig()->getLogCaughtExceptions()) { error_log('Caught exception: ' . $e->getMessage()); } diff --git a/model/Model.php b/model/Model.php index 5cc570140..e6f58f3a2 100644 --- a/model/Model.php +++ b/model/Model.php @@ -478,7 +478,7 @@ private function disambiguateVocabulary($vocabs, $uri, $preferredVocabId = null) // not found in preferred vocabulary, fall back to next method break; } - } catch (EasyRdf\Http\Exception | EasyRdf\Exception | Throwable $e) { + } catch (EasyRdf\Http\Exception | EasyRdf\Exception | Throwable $e) { if ($this->getConfig()->getLogCaughtExceptions()) { error_log('Caught exception: ' . $e->getMessage()); } @@ -494,7 +494,7 @@ private function disambiguateVocabulary($vocabs, $uri, $preferredVocabId = null) if ($vocab->getConceptLabel($uri, null) !== null) { return $vocab; } - } catch (EasyRdf\Http\Exception | EasyRdf\Exception | Throwable $e) { + } catch (EasyRdf\Http\Exception | EasyRdf\Exception | Throwable $e) { if ($this->getConfig()->getLogCaughtExceptions()) { error_log('Caught exception: ' . $e->getMessage()); } diff --git a/model/Vocabulary.php b/model/Vocabulary.php index e5bcdfc4b..6a4c9b949 100644 --- a/model/Vocabulary.php +++ b/model/Vocabulary.php @@ -162,7 +162,7 @@ public function getInfo($lang = null) // query everything the endpoint knows about the ConceptScheme $sparql = $this->getSparql(); $result = $sparql->queryConceptScheme($defaultcs); - } catch (EasyRdf\Http\Exception | EasyRdf\Exception | Throwable $e) { + } catch (EasyRdf\Http\Exception | EasyRdf\Exception | Throwable $e) { if ($this->model->getConfig()->getLogCaughtExceptions()) { error_log('Caught exception: ' . $e->getMessage()); } @@ -252,7 +252,7 @@ public function getConceptSchemes($lang = '') $conceptSchemes = null; try { $conceptSchemes = $this->getSparql()->queryConceptSchemes($lang); - } catch (EasyRdf\Http\Exception | EasyRdf\Exception | Throwable $e) { + } catch (EasyRdf\Http\Exception | EasyRdf\Exception | Throwable $e) { if ($this->model->getConfig()->getLogCaughtExceptions()) { error_log('Caught exception: ' . $e->getMessage()); } @@ -452,7 +452,7 @@ public function getConceptInfo($uri, $clang) $conceptInfo = null; try { $conceptInfo = $sparql->queryConceptInfo($uri, $this->config->getArrayClassURI(), array($this), $clang); - } catch (EasyRdf\Http\Exception | EasyRdf\Exception | Throwable $e) { + } catch (EasyRdf\Http\Exception | EasyRdf\Exception | Throwable $e) { if ($this->model->getConfig()->getLogCaughtExceptions()) { error_log('Caught exception: ' . $e->getMessage()); } diff --git a/resource/js/scripts.js b/resource/js/scripts.js index f405a91ee..ea3987166 100644 --- a/resource/js/scripts.js +++ b/resource/js/scripts.js @@ -114,7 +114,7 @@ $.ajaxQ = (function(){ var r = []; $.each(Q, function(i, jqXHR){ r.push(jqXHR._id); - if (jqXHR.req_kind == $.ajaxQ.requestKind.CONTENT || jqXHR.req_kind == $.ajaxQ.requestKind.PLUGIN) { + if (jqXHR.req_kind == $.ajaxQ.requestKind.CONTENT || jqXHR.req_kind == $.ajaxQ.requestKind.PLUGIN) { jqXHR.abort(); } }); @@ -124,7 +124,7 @@ $.ajaxQ = (function(){ var r = []; $.each(Q, function(i, jqXHR){ r.push(jqXHR._id); - if (jqXHR.req_kind == $.ajaxQ.requestKind.SIDEBAR || all && jqXHR.req_kind == $.ajaxQ.requestKind.SIDEBAR_PRIVILEGED) { + if (jqXHR.req_kind == $.ajaxQ.requestKind.SIDEBAR || all && jqXHR.req_kind == $.ajaxQ.requestKind.SIDEBAR_PRIVILEGED) { jqXHR.abort(); } }); From 499a1218178f5440cf12e7d948a82db5badb2dca Mon Sep 17 00:00:00 2001 From: Osma Suominen Date: Wed, 15 Sep 2021 16:56:00 +0300 Subject: [PATCH 22/57] Remove tests for functionality that was removed --- tests/ConceptPropertyValueTest.php | 38 ------------------------------ 1 file changed, 38 deletions(-) diff --git a/tests/ConceptPropertyValueTest.php b/tests/ConceptPropertyValueTest.php index 21f4b577b..a9149d66f 100644 --- a/tests/ConceptPropertyValueTest.php +++ b/tests/ConceptPropertyValueTest.php @@ -130,44 +130,6 @@ public function testToStringWhenSortByNotationNotSet() { $this->assertEquals('Carp', (string)$propvals['665 Carp http://www.skosmos.skos/test/ta112']); } - /** - * @covers ConceptPropertyValue::__toString - */ - public function testToStringWithNotation() { - $mockres = $this->getMockBuilder('EasyRdf\\Resource')->disableOriginalConstructor()->getMock(); - $mockvoc = $this->getMockBuilder('Vocabulary')->disableOriginalConstructor()->getMock(); - $mockconf = $this->getMockBuilder('VocabularyConfig')->disableOriginalConstructor()->getMock(); - $mocklit = $this->getMockBuilder('EasyRdf\\Literal')->disableOriginalConstructor()->getMock(); - $mocklit->method('getValue')->will($this->returnValue('T3ST')); - $mockconf->method('sortByNotation')->will($this->returnValue(true)); - $mockconf->method('showNotation')->will($this->returnValue(true)); - $mockvoc->method('getConfig')->will($this->returnValue($mockconf)); - $mockres->method('label')->will($this->returnValue('Term label')); - $mockres->method('get')->will($this->returnValue($mocklit)); - $mockres->method('getUri')->will($this->returnValue('http://thisdoesntexistatalland.sefsf/2j2h4/')); - $propval = new ConceptPropertyValue($this->model, $mockvoc, $mockres, null); - $this->assertEquals('T3ST Term label', (string)$propval); - } - - /** - * @covers ConceptPropertyValue::__toString - */ - public function testToStringWhenNotationExistsButIsConfiguredOff() { - $mockres = $this->getMockBuilder('EasyRdf\\Resource')->disableOriginalConstructor()->getMock(); - $mockvoc = $this->getMockBuilder('Vocabulary')->disableOriginalConstructor()->getMock(); - $mockconf = $this->getMockBuilder('VocabularyConfig')->disableOriginalConstructor()->getMock(); - $mocklit = $this->getMockBuilder('EasyRdf\\Literal')->disableOriginalConstructor()->getMock(); - $mocklit->method('getValue')->will($this->returnValue('T3ST')); - $mockconf->method('sortByNotation')->will($this->returnValue(true)); - $mockconf->method('showNotation')->will($this->returnValue(false)); - $mockvoc->method('getConfig')->will($this->returnValue($mockconf)); - $mockres->method('label')->will($this->returnValue('Term label')); - $mockres->method('get')->will($this->returnValue($mocklit)); - $mockres->method('getUri')->will($this->returnValue('http://thisdoesntexistatalland.sefsf/2j2h4/')); - $propval = new ConceptPropertyValue($this->model, $mockvoc, $mockres, null); - $this->assertEquals('Term label', (string)$propval); - } - /** * @covers ConceptPropertyValue::addSubMember * @covers ConceptPropertyValue::sortSubMembers From dbd4dc738a5e0743a9d145befc019564a38bfb28 Mon Sep 17 00:00:00 2001 From: Osma Suominen Date: Wed, 15 Sep 2021 16:58:47 +0300 Subject: [PATCH 23/57] Add tests for decimal and natural sorting of notations --- tests/ConceptPropertyTest.php | 44 +++++++++++++++++++- tests/test-vocab-data/test-notation-sort.ttl | 10 ++++- tests/testconfig.ttl | 4 +- 3 files changed, 52 insertions(+), 6 deletions(-) diff --git a/tests/ConceptPropertyTest.php b/tests/ConceptPropertyTest.php index b9b55a0c2..dec92f191 100644 --- a/tests/ConceptPropertyTest.php +++ b/tests/ConceptPropertyTest.php @@ -123,12 +123,52 @@ public function testAddValue() { * @covers ConceptProperty::addValue * @covers ConceptProperty::sortValues */ - public function testSortNotatedValues() { + public function testSortNotatedValuesDecimal() { + # the vocabulary is configured to use decimal sorting $vocab = $this->model->getVocabulary('test-notation-sort'); $concepts = $vocab->getConceptInfo('http://www.skosmos.skos/test/ta01', 'en'); $concept = $concepts[0]; $props = $concept->getProperties(); - $expected = array("test:ta0112", "test:ta0119", "test:ta0117", "test:ta0116", "test:ta0114","test:ta0115","test:ta0113", "test:ta0120", "test:ta0111", ); + $expected = array( + "test:ta0111", # 33.01 + "test:ta0116", # 33.02 + "test:ta0112", # 33.1 + "test:ta0114", # 33.10 + "test:ta0115", # 33.2 + "test:ta0117", # 33.9 + "test:ta0119", # 33.90 + "test:ta0120", # K2 + "test:ta0113" # concept not defined, no notation code + ); + $ret = array(); + + foreach($props['skos:narrower']->getValues() as $val) { + $ret[] = EasyRdf\RdfNamespace::shorten($val->getUri()); + } + $this->assertEquals($expected, $ret); + } + + /** + * @covers ConceptProperty::addValue + * @covers ConceptProperty::sortValues + */ + public function testSortNotatedValuesNatural() { + # the vocabulary is configured to use natural sorting + $vocab = $this->model->getVocabulary('testNotation'); + $concepts = $vocab->getConceptInfo('http://www.skosmos.skos/test/ta01', 'en'); + $concept = $concepts[0]; + $props = $concept->getProperties(); + $expected = array( + "test:ta0111", # 33.01 + "test:ta0116", # 33.02 + "test:ta0112", # 33.1 + "test:ta0115", # 33.2 + "test:ta0117", # 33.9 + "test:ta0114", # 33.10 + "test:ta0119", # 33.90 + "test:ta0120", # K2 + "test:ta0113" # concept not defined, no notation code + ); $ret = array(); foreach($props['skos:narrower']->getValues() as $val) { diff --git a/tests/test-vocab-data/test-notation-sort.ttl b/tests/test-vocab-data/test-notation-sort.ttl index 7d561c5f2..c6bc88964 100644 --- a/tests/test-vocab-data/test-notation-sort.ttl +++ b/tests/test-vocab-data/test-notation-sort.ttl @@ -38,11 +38,12 @@ test:ta0111 a skos:Concept, meta:TestClass ; skos:broader test:ta01 ; skos:inScheme test:conceptscheme ; owl:deprecated true ; + skos:notation "33.01" ; skos:prefLabel "Tuna"@en . test:ta0112 a skos:Concept, meta:TestClass ; skosmos:testprop "Test property value" ; - skos:notation "665" ; + skos:notation "33.1" ; skos:broader test:ta01 ; skos:narrower test:ta0121 ; skos:exactMatch test:ta0118 ; @@ -56,6 +57,7 @@ test:ta0112 a skos:Concept, meta:TestClass ; test:ta0114 a skos:Concept, meta:TestClass ; skos:broader test:ta01 ; dct:modified "1986-21-00"^^xsd:date ; # date invalid on purpose + skos:notation "33.10" ; skos:inScheme test:conceptscheme ; skos:prefLabel "Buri"@en . @@ -64,16 +66,19 @@ test:ta0115 a skos:Concept, meta:TestClass ; skos:inScheme test:conceptscheme ; skos:definition "any fish belonging to the order Anguilliformes"@en, "Iljettävä limanuljaska"@fi ; + skos:notation "33.2" ; skos:prefLabel "Eel"@en . test:ta0116 a skos:Concept, meta:TestClass ; skos:broader test:ta01 ; skos:inScheme test:conceptscheme ; + skos:notation "33.02" ; skos:prefLabel "Barracuda"@en . test:ta0117 a skos:Concept, meta:TestClass ; skos:broader test:ta01 ; skos:inScheme test:conceptscheme ; + skos:notation "33.9" ; skos:relatedMatch test:ta0115 ; skos:prefLabel "3D Barracuda"@en . @@ -85,11 +90,12 @@ test:ta0118 a skos:Concept, meta:TestClass ; test:ta0119 a skos:Concept, meta:TestClass ; skos:broader test:ta01 ; skos:inScheme test:conceptscheme ; - skos:notation "690" ; + skos:notation "33.90" ; skos:prefLabel "Hauki"@fi . test:ta0120 a skos:Concept, meta:TestClass ; skos:broader test:ta01 ; + skos:notation "K2" ; skos:inScheme test:conceptscheme . test:ta0121 a skos:Concept, meta:TestClass ; diff --git a/tests/testconfig.ttl b/tests/testconfig.ttl index a836e6afb..e02dfa1fe 100644 --- a/tests/testconfig.ttl +++ b/tests/testconfig.ttl @@ -336,13 +336,13 @@ :testNotation a skosmos:Vocabulary, void:Dataset ; dc11:title "A vocabulary for testing vocabularies with notation features"@en ; dc:subject :cat_general ; - void:uriSpace "http://www.skosmos.skos/notationFeatures/"; + void:uriSpace "http://www.skosmos.skos/test-notation-sort/"; skosmos:language "fi"; skosmos:sortByNotation "natural" ; skosmos:searchByNotation true ; skosmos:showNotation true ; skosmos:useModifiedDate "true"; - skosmos:sparqlGraph ; + skosmos:sparqlGraph ; skosmos:mainConceptScheme test:notationMainConceptScheme . :paramPluginTest a skosmos:Vocabulary, void:Dataset ; From 65714de9e9c1d40a1d1ed170fed591e70a5d3a20 Mon Sep 17 00:00:00 2001 From: Osma Suominen Date: Thu, 16 Sep 2021 11:20:45 +0300 Subject: [PATCH 24/57] rename "decimal" notation sort strategy to "lexical" which is more accurate --- model/ConceptProperty.php | 2 +- model/VocabularyConfig.php | 8 ++++---- resource/js/hierarchy.js | 2 +- tests/ConceptPropertyTest.php | 4 ++-- tests/VocabularyConfigTest.php | 8 ++++---- tests/testconfig.ttl | 2 +- 6 files changed, 13 insertions(+), 13 deletions(-) diff --git a/model/ConceptProperty.php b/model/ConceptProperty.php index 2a75de6ec..c8330f8d1 100644 --- a/model/ConceptProperty.php +++ b/model/ConceptProperty.php @@ -131,7 +131,7 @@ private function sortValues() } else { // assume that notations are unique, choose strategy - if ($this->sort_by_notation == "decimal") { + if ($this->sort_by_notation == "lexical") { return strcoll($anot, $bnot); } else { // natural return strnatcasecmp($anot, $bnot); diff --git a/model/VocabularyConfig.php b/model/VocabularyConfig.php index dd93c60c5..c00d0a09b 100644 --- a/model/VocabularyConfig.php +++ b/model/VocabularyConfig.php @@ -179,20 +179,20 @@ public function getTitle($lang = null) /** * Returns the sorting strategy for notation codes set in the config.ttl - * config: either "decimal" (default), "natural", or null if + * config: either "lexical" (default), "natural", or null if * sorting by notations is disabled. * @return string|bool */ public function getSortByNotation(): ?string { $value = $this->getLiteral('skosmos:sortByNotation'); - if ($value == "decimal" || $value == "natural") { + if ($value == "lexical" || $value == "natural") { return $value; } // not a special value - interpret as boolean instead $bvalue = $this->getBoolean('skosmos:sortByNotation'); - // default sorting strategy is "decimal" - return $bvalue ? "decimal" : null; + // default sorting strategy is "lexical" + return $bvalue ? "lexical" : null; } /** diff --git a/resource/js/hierarchy.js b/resource/js/hierarchy.js index 912ebfa17..0d1833ecc 100644 --- a/resource/js/hierarchy.js +++ b/resource/js/hierarchy.js @@ -514,7 +514,7 @@ function getTreeConfiguration() { if (aNotation) { if (bNotation) { - if (window.sortByNotation == "decimal") { + if (window.sortByNotation == "lexical") { if (aNotation < bNotation) { return -1; } diff --git a/tests/ConceptPropertyTest.php b/tests/ConceptPropertyTest.php index dec92f191..85e6c0f49 100644 --- a/tests/ConceptPropertyTest.php +++ b/tests/ConceptPropertyTest.php @@ -123,8 +123,8 @@ public function testAddValue() { * @covers ConceptProperty::addValue * @covers ConceptProperty::sortValues */ - public function testSortNotatedValuesDecimal() { - # the vocabulary is configured to use decimal sorting + public function testSortNotatedValuesLexical() { + # the vocabulary is configured to use lexical sorting $vocab = $this->model->getVocabulary('test-notation-sort'); $concepts = $vocab->getConceptInfo('http://www.skosmos.skos/test/ta01', 'en'); $concept = $concepts[0]; diff --git a/tests/VocabularyConfigTest.php b/tests/VocabularyConfigTest.php index da1277ead..292027faa 100644 --- a/tests/VocabularyConfigTest.php +++ b/tests/VocabularyConfigTest.php @@ -332,9 +332,9 @@ public function testShowSortByNotationDefaultValue() { * @covers VocabularyConfig::getLiteral * @covers VocabularyConfig::getBoolean */ - public function testShowSortByNotationTrueIsDecimal() { + public function testShowSortByNotationTrueIsLexical() { $vocab = $this->model->getVocabulary('test-notation-sort'); - $this->assertEquals("decimal", $vocab->getConfig()->getSortByNotation()); + $this->assertEquals("lexical", $vocab->getConfig()->getSortByNotation()); } /** @@ -342,9 +342,9 @@ public function testShowSortByNotationTrueIsDecimal() { * @covers VocabularyConfig::getLiteral * @covers VocabularyConfig::getBoolean */ - public function testShowSortByNotationDecimal() { + public function testShowSortByNotationLexical() { $vocab = $this->model->getVocabulary('test-qualified-notation'); - $this->assertEquals("decimal", $vocab->getConfig()->getSortByNotation()); + $this->assertEquals("lexical", $vocab->getConfig()->getSortByNotation()); } /** diff --git a/tests/testconfig.ttl b/tests/testconfig.ttl index e02dfa1fe..f0a5c00c1 100644 --- a/tests/testconfig.ttl +++ b/tests/testconfig.ttl @@ -117,7 +117,7 @@ void:uriSpace "http://www.skosmos.skos/test-qualified-notation/" ; skosmos:defaultLanguage "en" ; skosmos:groupClass skos:Collection ; - skosmos:sortByNotation "decimal" ; + skosmos:sortByNotation "lexical" ; skosmos:language "en" ; skosmos:alphabeticalListQualifier skos:notation ; skosmos:sparqlGraph . From 4b8a7c954102e58a1096e7551813b0eec8e218c0 Mon Sep 17 00:00:00 2001 From: Osma Suominen Date: Thu, 16 Sep 2021 13:27:20 +0300 Subject: [PATCH 25/57] Better sorting of hierarchy nodes, ignoring notation unless configured to sort by notation. --- resource/js/hierarchy.js | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/resource/js/hierarchy.js b/resource/js/hierarchy.js index 0d1833ecc..3c9c08d9f 100644 --- a/resource/js/hierarchy.js +++ b/resource/js/hierarchy.js @@ -73,9 +73,9 @@ function getLabel(object) { labelProp = 'label'; } if (window.showNotation && object.notation) { - return '' + object.notation + ' ' + object[labelProp]; + return '' + object.notation + ' ' + escapeHtml(object[labelProp]) + ''; } - return escapeHtml(object[labelProp]); + return '' + escapeHtml(object[labelProp]) + ''; } function createObjectsFromChildren(conceptData, conceptUri) { @@ -423,6 +423,22 @@ function topConceptsToSchemes(topConcepts, schemes) { return childArray; } +/* + * Return a sort key suitable for sorting hierarchy nodes mainly by label. + * Nodes with domain class will be sorted first, followed by non-domain nodes. + */ +function nodeLabelSortKey(node) { + // make sure the tree nodes with class 'domain' are sorted before the others + // domain will be "0" if the node has a domain class, else "1" + var domain = (node.original.a_attr['class'] == 'domain') ? "0" : "1"; + + // parse the HTML code in node.text and return just the label as a lower case value for sorting + // should look like '12.3 Hello' + label = $(node.text.toLowerCase()).filter('.tree-label').text(); + + return domain + " " + label; +} + /* * Gives you the Skosmos default jsTree configuration. */ @@ -531,12 +547,7 @@ function getTreeConfiguration() { // NOTE: if no notations found, fall back on label comparison below } // no sorting on notation requested, or notations don't exist - // make sure the tree nodes with class 'domain' are sorted before the others - // aDomain/bDomain will be "0" if a/b has a domain class, else "1" - var aDomain = (aNode.original.a_attr['class'] == 'domain') ? "0" : "1"; - var bDomain = (bNode.original.a_attr['class'] == 'domain') ? "0" : "1"; - return naturalCompare(aDomain + " " + aNode.text.toLowerCase(), - bDomain + " " + bNode.text.toLowerCase()); + return naturalCompare(nodeLabelSortKey(aNode), nodeLabelSortKey(bNode)); } }); } From e5a15976219778db89899e189aad30fc2b66c468 Mon Sep 17 00:00:00 2001 From: Vainonen Date: Thu, 16 Sep 2021 14:43:35 +0300 Subject: [PATCH 26/57] modified comments and adding variables to arrays --- model/VocabularyConfig.php | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/model/VocabularyConfig.php b/model/VocabularyConfig.php index f6dd27604..3119fc4ae 100644 --- a/model/VocabularyConfig.php +++ b/model/VocabularyConfig.php @@ -46,14 +46,16 @@ public function getPluginArray() : array $pluginArray = array(); $vocabularyPlugins = $this->resource->getResource('skosmos:vocabularyPlugins'); + if (!is_array($vocabularyPlugins)) { + $vocabularyPlugins = $this->resource->all('skosmos:vocabularyPlugins'); + } if ($vocabularyPlugins) { foreach ($vocabularyPlugins as $plugin) { if ($plugin instanceof EasyRdf\Literal) { - $pluginName = $plugin->getValue(); - array_push($pluginArray, $pluginName); + $pluginArray[] = $plugin->getValue(); } - else { - array_push($pluginArray, $plugin->getLiteral('skosmos:usePlugin')->getValue()); + else if ($plugin instanceof EasyRdf\Resource) { + $pluginArray[] = $plugin->getLiteral('skosmos:usePlugin')->getValue(); } } } @@ -62,14 +64,10 @@ public function getPluginArray() : array $plugins = $this->resource->allLiterals('skosmos:usePlugin'); if ($plugins) { foreach ($plugins as $pluginlit) { - $pluginName = $pluginlit->getValue(); - array_push($pluginArray, $pluginName); + $pluginArray[] = $pluginlit->getValue(); } } - - $pluginArray = array_values(array_unique($pluginArray)); - - return $pluginArray; + return array_values(array_unique($pluginArray)); } /** @@ -83,7 +81,6 @@ private function setParameterizedPlugins() : void $vocabularyPlugins = $this->resource->getResource('skosmos:vocabularyPlugins'); if ($vocabularyPlugins) { - // $vocabularyPlugins has all resources foreach ($vocabularyPlugins as $plugin) { if ($plugin instanceof EasyRdf\Resource) { $this->setPluginParameters($plugin); @@ -480,8 +477,8 @@ public function getLanguages() } /** - * Returns the plugin parameters - * @return string plugin parameters or null + * Returns the parameters of parameterized plugins + * @return array of plugin parameters */ public function getPluginParameters() { return $this->pluginParameters; From 05c55e3a0c9c9bb601c018ce17bba195bace2314 Mon Sep 17 00:00:00 2001 From: Ahonen Mika J Date: Thu, 16 Sep 2021 15:11:40 +0300 Subject: [PATCH 27/57] Avoid unnecessary triples in concept info query and fixed tests --- model/sparql/GenericSparql.php | 2 ++ tests/ConceptTest.php | 6 ++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/model/sparql/GenericSparql.php b/model/sparql/GenericSparql.php index 40f61aecc..341caade0 100644 --- a/model/sparql/GenericSparql.php +++ b/model/sparql/GenericSparql.php @@ -431,6 +431,8 @@ private function generateConceptInfoQuery($uris, $arrayClass, $vocabs) { { ?uri ?p ?o . OPTIONAL { + FILTER(?p = skos:notation) + FILTER(isLiteral(?o)) BIND(datatype(?o) AS ?dt) ?dt rdfs:label ?dtlabel } diff --git a/tests/ConceptTest.php b/tests/ConceptTest.php index 0885da8d3..56c9f20f0 100644 --- a/tests/ConceptTest.php +++ b/tests/ConceptTest.php @@ -176,7 +176,7 @@ public function testGetPropertiesCorrectNumberOfProperties() { $props = $this->concept->getProperties(); - $this->assertEquals(8, sizeof($props)); + $this->assertEquals(9, sizeof($props)); } /** @@ -189,7 +189,9 @@ public function testGetPropertiesCorrectNumberOfProperties() public function testGetPropertiesCorrectOrderOfProperties() { $props = $this->concept->getProperties(); - $expected = array (0 => 'rdf:type', 1 => 'skos:broader', 2 => 'skos:narrower', 3 => 'skos:altLabel', 4 => 'skos:scopeNote', 5 => 'http://www.skosmos.skos/multiLingOff', 6 => 'http://www.skosmos.skos/multiLingOn', 7 => 'http://www.skosmos.skos/testprop'); + $expected = array (0 => 'rdf:type', 1 => 'skos:broader', 2 => 'skos:narrower', 3 => 'skos:altLabel', + 4 => 'skos:scopeNote', 5 => 'http://www.skosmos.skos/multiLingOff', 6 => 'http://www.skosmos.skos/multiLingOn', + 7 => 'http://www.skosmos.skos/testprop', 8 => 'skos:notation'); $this->assertEquals($expected, array_keys($props)); } From c50d3d5e332c1caaad08167a767d28039dc032bd Mon Sep 17 00:00:00 2001 From: Ahonen Mika J Date: Thu, 16 Sep 2021 15:43:22 +0300 Subject: [PATCH 28/57] moved to the constructor of Concept class --- model/Concept.php | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/model/Concept.php b/model/Concept.php index 5297774f2..fda36d866 100644 --- a/model/Concept.php +++ b/model/Concept.php @@ -16,6 +16,7 @@ class Concept extends VocabularyDataObject implements Modifiable /** the EasyRdf\Graph object of the concept */ private $graph; private $clang; + private $deleted; /** concept properties that should not be shown to users */ private $DELETED_PROPERTIES = array( @@ -78,8 +79,13 @@ class Concept extends VocabularyDataObject implements Modifiable public function __construct($model, $vocab, $resource, $graph, $clang) { parent::__construct($model, $vocab, $resource); + $this->deleted = $this->DELETED_PROPERTIES; if ($vocab !== null) { $this->order = $vocab->getConfig()->getPropertyOrder(); + // delete notations unless configured to show them + if (!$vocab->getConfig()->getShowNotationAsProperty()) { + $this->deleted[] = 'skos:notation'; + } } else { $this->order = VocabularyConfig::DEFAULT_PROPERTY_ORDER; } @@ -497,12 +503,6 @@ public function getProperties() } } - // delete notations unless configured to show them - $deleted = $this->DELETED_PROPERTIES; - if (!$this->vocab->getConfig()->getShowNotationAsProperty()) { - $deleted[] = 'skos:notation'; - } - foreach ($longUris as &$prop) { // storing full URI without brackets in a separate variable $longUri = $prop; @@ -514,7 +514,7 @@ public function getProperties() $sprop = "<$prop>"; } - if (!in_array($prop, $deleted) || ($this->isGroup() === false && $prop === 'skos:member')) { + if (!in_array($prop, $this->deleted) || ($this->isGroup() === false && $prop === 'skos:member')) { // retrieve property label and super properties from the current vocabulary first $propres = new EasyRdf\Resource($prop, $this->graph); $proplabel = $propres->label($this->getEnvLang()) ? $propres->label($this->getEnvLang()) : $propres->label(); From bf934254a4dbac8022ad2b96009516eeeb84e3bb Mon Sep 17 00:00:00 2001 From: Vainonen Date: Thu, 16 Sep 2021 16:27:46 +0300 Subject: [PATCH 29/57] fixed getPluginArray function and added test --- model/VocabularyConfig.php | 7 +++---- tests/VocabularyConfigTest.php | 10 ++++++++++ tests/testconfig.ttl | 9 +++++++++ 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/model/VocabularyConfig.php b/model/VocabularyConfig.php index 3119fc4ae..c28aa698f 100644 --- a/model/VocabularyConfig.php +++ b/model/VocabularyConfig.php @@ -44,17 +44,16 @@ public function __construct($resource, $globalPlugins=array()) public function getPluginArray() : array { $pluginArray = array(); - $vocabularyPlugins = $this->resource->getResource('skosmos:vocabularyPlugins'); - if (!is_array($vocabularyPlugins)) { - $vocabularyPlugins = $this->resource->all('skosmos:vocabularyPlugins'); + if (!$vocabularyPlugins instanceof EasyRdf\Collection) { + $vocabularyPlugins = $this->resource->all('skosmos:vocabularyPlugins'); } if ($vocabularyPlugins) { foreach ($vocabularyPlugins as $plugin) { if ($plugin instanceof EasyRdf\Literal) { $pluginArray[] = $plugin->getValue(); } - else if ($plugin instanceof EasyRdf\Resource) { + else { $pluginArray[] = $plugin->getLiteral('skosmos:usePlugin')->getValue(); } } diff --git a/tests/VocabularyConfigTest.php b/tests/VocabularyConfigTest.php index ed2407efb..750dc79b1 100644 --- a/tests/VocabularyConfigTest.php +++ b/tests/VocabularyConfigTest.php @@ -515,6 +515,16 @@ public function testGetOrderedPlugins() { $this->assertEquals(["plugin2", "Bravo", "imaginaryPlugin", "plugin1", "alpha", "charlie", "plugin3"], $plugins); } + /** + * @covers VocabularyConfig::getPluginArray + */ + public function testGetUnorderedVocabularyPlugins() { + $vocab = $this->model->getVocabulary('paramPluginOrderTest'); + $plugins = $vocab->getConfig()->getPluginArray(); + $arrayElements = ["plugin2", "Bravo", "imaginaryPlugin", "plugin1", "alpha", "charlie", "plugin3"]; + $this->assertEquals(sort($arrayElements), sort($plugins)); + } + /** * @covers VocabularyConfig::getPropertyOrder */ diff --git a/tests/testconfig.ttl b/tests/testconfig.ttl index 15e4d5440..b94733d29 100644 --- a/tests/testconfig.ttl +++ b/tests/testconfig.ttl @@ -344,6 +344,15 @@ skosmos:sparqlGraph ; skosmos:mainConceptScheme test:notationMainConceptScheme . +:paramPluginOrderTest a skosmos:Vocabulary, void:Dataset ; + dc:title "Test plugin order"@en ; + void:dataDump ; + void:uriSpace "http://www.skosmos.skos/test/"; + skosmos:vocabularyPlugins "plugin2", "Bravo", :parameterizedPlugin, "plugin1"; + skosmos:usePlugin "plugin1" ; + skosmos:usePlugin "plugin3" ; + skosmos:useParamPlugin :parameterizedPlugin . + :paramPluginTest a skosmos:Vocabulary, void:Dataset ; dc:title "Test plugin parameters"@en ; dc:subject :cat_science ; From 163f16aef808d0a34fdbd75bf7f32bb01d8ed5ad Mon Sep 17 00:00:00 2001 From: Osma Suominen Date: Thu, 16 Sep 2021 16:53:47 +0300 Subject: [PATCH 30/57] Add var declaration (bug found by sonarqube) --- resource/js/hierarchy.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resource/js/hierarchy.js b/resource/js/hierarchy.js index 3c9c08d9f..f19945457 100644 --- a/resource/js/hierarchy.js +++ b/resource/js/hierarchy.js @@ -434,7 +434,7 @@ function nodeLabelSortKey(node) { // parse the HTML code in node.text and return just the label as a lower case value for sorting // should look like '12.3 Hello' - label = $(node.text.toLowerCase()).filter('.tree-label').text(); + var label = $(node.text.toLowerCase()).filter('.tree-label').text(); return domain + " " + label; } From e53e82b0fe6b13b1940f086e2bfdc264783ef423 Mon Sep 17 00:00:00 2001 From: Osma Suominen Date: Thu, 16 Sep 2021 16:57:23 +0300 Subject: [PATCH 31/57] Clarify comments about default values --- model/VocabularyConfig.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/model/VocabularyConfig.php b/model/VocabularyConfig.php index c00d0a09b..437c97f72 100644 --- a/model/VocabularyConfig.php +++ b/model/VocabularyConfig.php @@ -179,8 +179,9 @@ public function getTitle($lang = null) /** * Returns the sorting strategy for notation codes set in the config.ttl - * config: either "lexical" (default), "natural", or null if - * sorting by notations is disabled. + * config: either "lexical", "natural", or null if sorting by notations is + * disabled. A "true" value in the configuration file is interpreted as + * "lexical". * @return string|bool */ public function getSortByNotation(): ?string @@ -191,7 +192,7 @@ public function getSortByNotation(): ?string } // not a special value - interpret as boolean instead $bvalue = $this->getBoolean('skosmos:sortByNotation'); - // default sorting strategy is "lexical" + // "true" is interpreted as "lexical" return $bvalue ? "lexical" : null; } From fbd554685f76bee9c420376549eea7fa4862d660 Mon Sep 17 00:00:00 2001 From: Ahonen Mika J Date: Thu, 16 Sep 2021 17:08:07 +0300 Subject: [PATCH 32/57] Added a test testGetLabelForDatatype --- tests/ConceptPropertyValueLiteralTest.php | 11 +++++++++++ tests/test-vocab-data/test.ttl | 5 ++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/tests/ConceptPropertyValueLiteralTest.php b/tests/ConceptPropertyValueLiteralTest.php index 9108b4c7a..f4ef8fb11 100644 --- a/tests/ConceptPropertyValueLiteralTest.php +++ b/tests/ConceptPropertyValueLiteralTest.php @@ -62,6 +62,17 @@ public function testGetLabelThatIsABrokenDate() { $propvals = $props['http://www.skosmos.skos/date/ownDate']->getValues(); } + /** + * @covers ConceptPropertyValueLiteral::getLabel + */ + public function testGetLabelForDatatype() { + $vocab = $this->model->getVocabulary('test'); + $concepts = $vocab->getConceptInfo('http://www.skosmos.skos/test/ta112', 'en'); + $props = $concepts[0]->getProperties(); + $propvals = $props['skos:notation']->getValues(); + $this->assertEquals('NameOfTheDatatype', $propvals['665']->getDatatype()); + } + /** * @covers ConceptPropertyValueLiteral::getLang */ diff --git a/tests/test-vocab-data/test.ttl b/tests/test-vocab-data/test.ttl index 6dd3bac68..3f0f9f3b2 100644 --- a/tests/test-vocab-data/test.ttl +++ b/tests/test-vocab-data/test.ttl @@ -49,9 +49,12 @@ test:ta111 a skos:Concept, meta:TestClass ; owl:deprecated true ; skos:prefLabel "Tuna"@en . +test:dt a rdfs:Datatype ; + rdfs:label "NameOfTheDatatype" . + test:ta112 a skos:Concept, meta:TestClass ; skosmos:testprop "Test property value" ; - skos:notation "665" ; + skos:notation "665"^^test:dt ; skos:broader test:ta1 ; skos:narrower test:ta121 ; skos:exactMatch test:ta118 ; From 62a728ab16670b5ab53459c8ed71efc43e149050 Mon Sep 17 00:00:00 2001 From: Ahonen Mika J Date: Thu, 16 Sep 2021 17:38:16 +0300 Subject: [PATCH 33/57] Datatype tests added --- model/ConceptPropertyValueLiteral.php | 5 ++++- tests/ConceptPropertyValueLiteralTest.php | 24 +++++++++++++++++++++++ tests/test-vocab-data/test.ttl | 7 +++++++ 3 files changed, 35 insertions(+), 1 deletion(-) diff --git a/model/ConceptPropertyValueLiteral.php b/model/ConceptPropertyValueLiteral.php index 16fba52af..f22494c60 100644 --- a/model/ConceptPropertyValueLiteral.php +++ b/model/ConceptPropertyValueLiteral.php @@ -34,7 +34,10 @@ public function getLang() return $this->literal->getLang(); } - public function getDatatype() + /** + * A method for fetching a datatype. + */ + public function getDatatype(): ?string { $datatype = $this->literal->getDatatype(); if ($datatype === null) { diff --git a/tests/ConceptPropertyValueLiteralTest.php b/tests/ConceptPropertyValueLiteralTest.php index f4ef8fb11..033090715 100644 --- a/tests/ConceptPropertyValueLiteralTest.php +++ b/tests/ConceptPropertyValueLiteralTest.php @@ -73,6 +73,30 @@ public function testGetLabelForDatatype() { $this->assertEquals('NameOfTheDatatype', $propvals['665']->getDatatype()); } + /** + * @covers ConceptPropertyValueLiteral::getLabel + */ + public function testGetDatatypeWithoutLabel() { + $vocab = $this->model->getVocabulary('test'); + $concepts = $vocab->getConceptInfo('http://www.skosmos.skos/test/ta112', 'en'); + $props = $concepts[0]->getProperties(); + $propvals = $props['skos:notation']->getValues(); + $this->assertEquals('NameOfTheDatatype', $propvals['665']->getDatatype()); + } + + + /** + * @covers ConceptPropertyValueLiteral::getLabel + */ + public function testGetLabelForDatatypeIfNull() { + $vocab = $this->model->getVocabulary('test'); + $concepts = $vocab->getConceptInfo('http://www.skosmos.skos/test/ta126', 'en'); + $props = $concepts[0]->getProperties(); + $propvals = $props['skos:notation']->getValues(); + $this->assertNull($propvals['12.34']->getDatatype()); + } + + /** * @covers ConceptPropertyValueLiteral::getLang */ diff --git a/tests/test-vocab-data/test.ttl b/tests/test-vocab-data/test.ttl index 3f0f9f3b2..9bc76fae8 100644 --- a/tests/test-vocab-data/test.ttl +++ b/tests/test-vocab-data/test.ttl @@ -52,6 +52,8 @@ test:ta111 a skos:Concept, meta:TestClass ; test:dt a rdfs:Datatype ; rdfs:label "NameOfTheDatatype" . +test:dt2 a rdfs:Datatype . + test:ta112 a skos:Concept, meta:TestClass ; skosmos:testprop "Test property value" ; skos:notation "665"^^test:dt ; @@ -158,6 +160,11 @@ test:ta127 "Finnish before Swedish in result array"@sv, "No language tag becomes very first in result language array" . +test:ta128 + a mads:Geographic, skos:Concept ; + skos:notation "12.34"^^test:dt2 ; + skos:prefLabel "Europa"@nb . + test:ta1 a skos:Concept, meta:TestClass ; skos:inScheme test:conceptscheme ; skos:narrower test:ta111, From aff26b46bf5a70f88af6a886ab56fc580eb10011 Mon Sep 17 00:00:00 2001 From: Ahonen Mika J Date: Thu, 16 Sep 2021 18:39:32 +0300 Subject: [PATCH 34/57] Tests done --- model/ConceptPropertyValueLiteral.php | 7 ++-- tests/ConceptPropertyValueLiteralTest.php | 42 +++++++++++------------ tests/GenericSparqlTest.php | 2 +- tests/RestControllerTest.php | 2 +- tests/VocabularyTest.php | 2 +- tests/test-vocab-data/test.ttl | 4 +-- 6 files changed, 30 insertions(+), 29 deletions(-) diff --git a/model/ConceptPropertyValueLiteral.php b/model/ConceptPropertyValueLiteral.php index f22494c60..37edfe85f 100644 --- a/model/ConceptPropertyValueLiteral.php +++ b/model/ConceptPropertyValueLiteral.php @@ -44,8 +44,11 @@ public function getDatatype(): ?string return null; } $graph = $this->resource->getGraph(); - $dtLabel = $graph->resource($datatype)->label($this->clang); - return $dtLabel->getValue(); + if ($graph->resource($datatype)->label($this->clang)) { + $dtLabel = $graph->resource($datatype)->label($this->clang); + return $dtLabel->getValue(); + } + return ""; } public function getType() diff --git a/tests/ConceptPropertyValueLiteralTest.php b/tests/ConceptPropertyValueLiteralTest.php index 033090715..161605a07 100644 --- a/tests/ConceptPropertyValueLiteralTest.php +++ b/tests/ConceptPropertyValueLiteralTest.php @@ -73,29 +73,27 @@ public function testGetLabelForDatatype() { $this->assertEquals('NameOfTheDatatype', $propvals['665']->getDatatype()); } - /** - * @covers ConceptPropertyValueLiteral::getLabel - */ - public function testGetDatatypeWithoutLabel() { - $vocab = $this->model->getVocabulary('test'); - $concepts = $vocab->getConceptInfo('http://www.skosmos.skos/test/ta112', 'en'); - $props = $concepts[0]->getProperties(); - $propvals = $props['skos:notation']->getValues(); - $this->assertEquals('NameOfTheDatatype', $propvals['665']->getDatatype()); - } - - - /** - * @covers ConceptPropertyValueLiteral::getLabel - */ - public function testGetLabelForDatatypeIfNull() { - $vocab = $this->model->getVocabulary('test'); - $concepts = $vocab->getConceptInfo('http://www.skosmos.skos/test/ta126', 'en'); - $props = $concepts[0]->getProperties(); - $propvals = $props['skos:notation']->getValues(); - $this->assertNull($propvals['12.34']->getDatatype()); - } + /** + * @covers ConceptPropertyValueLiteral::getLabel + */ + public function testGetNotationDatatypeWithoutLabel() { + $vocab = $this->model->getVocabulary('test'); + $concepts = $vocab->getConceptInfo('http://www.skosmos.skos/test/ta128', 'en'); + $props = $concepts[0]->getProperties(); + $propvals = $props['skos:notation']->getValues(); + $this->assertEquals('', $propvals['testnotation']->getDatatype()); + } +/** + * @covers ConceptPropertyValueLiteral::getLabel + */ +public function testGetLabelForDatatypeIfNull() { + $vocab = $this->model->getVocabulary('test'); + $concepts = $vocab->getConceptInfo('http://www.skosmos.skos/test/ta126', 'en'); + $props = $concepts[0]->getProperties(); + $propvals = $props['skos:notation']->getValues(); + $this->assertNull($propvals['12.34']->getDatatype()); +} /** * @covers ConceptPropertyValueLiteral::getLang diff --git a/tests/GenericSparqlTest.php b/tests/GenericSparqlTest.php index 265eb2c5b..2edb74029 100644 --- a/tests/GenericSparqlTest.php +++ b/tests/GenericSparqlTest.php @@ -44,7 +44,7 @@ public function testGetGraph() { */ public function testCountConcepts() { $actual = $this->sparql->countConcepts(); - $this->assertEquals(17, $actual['http://www.w3.org/2004/02/skos/core#Concept']['count']); + $this->assertEquals(18, $actual['http://www.w3.org/2004/02/skos/core#Concept']['count']); } /** diff --git a/tests/RestControllerTest.php b/tests/RestControllerTest.php index a6c0c8e58..fb2cf7846 100644 --- a/tests/RestControllerTest.php +++ b/tests/RestControllerTest.php @@ -462,7 +462,7 @@ public function testVocabularyStatistics() { "concepts": { "class": "http://www.w3.org/2004/02/skos/core#Concept", "label": "Concept", - "count": 17, + "count": 18, "deprecatedCount": 1 }, "subTypes": [ diff --git a/tests/VocabularyTest.php b/tests/VocabularyTest.php index 80d6820a0..425d45aa8 100644 --- a/tests/VocabularyTest.php +++ b/tests/VocabularyTest.php @@ -153,7 +153,7 @@ public function testGetLabelStatistics() { public function testGetStatistics() { $vocab = $this->model->getVocabulary('test'); $stats = $vocab->getStatistics(); - $this->assertEquals(17, $stats['http://www.w3.org/2004/02/skos/core#Concept']['count']); + $this->assertEquals(18, $stats['http://www.w3.org/2004/02/skos/core#Concept']['count']); $this->assertEquals(1, $stats['http://www.w3.org/2004/02/skos/core#Concept']['deprecatedCount']); $this->assertEquals(13, $stats['http://www.skosmos.skos/test-meta/TestClass']['count']); $this->assertEquals(1, $stats['http://www.skosmos.skos/test-meta/TestClass']['deprecatedCount']); diff --git a/tests/test-vocab-data/test.ttl b/tests/test-vocab-data/test.ttl index 9bc76fae8..3630c31b0 100644 --- a/tests/test-vocab-data/test.ttl +++ b/tests/test-vocab-data/test.ttl @@ -162,8 +162,8 @@ test:ta127 test:ta128 a mads:Geographic, skos:Concept ; - skos:notation "12.34"^^test:dt2 ; - skos:prefLabel "Europa"@nb . + skos:notation "testnotation"^^test:dt2 ; + skos:prefLabel "Europa2"@nb . test:ta1 a skos:Concept, meta:TestClass ; skos:inScheme test:conceptscheme ; From 6242fa2b03c48d460ed364c8ee63d8800cb5a5f4 Mon Sep 17 00:00:00 2001 From: Osma Suominen Date: Thu, 16 Sep 2021 20:28:31 +0300 Subject: [PATCH 35/57] Allow clicking on either label or notation in hierarchy. Fixes #1210 --- resource/js/docready.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resource/js/docready.js b/resource/js/docready.js index 3362aaa49..10c736bd2 100644 --- a/resource/js/docready.js +++ b/resource/js/docready.js @@ -280,7 +280,7 @@ $(function() { // DOCUMENT READY $(document).on('click', '.concept-hierarchy a', function(event) { $.ajaxQ.abortContentQueries(); - var targetUrl = event.target.href; + var targetUrl = event.target.href || event.target.parentElement.href; $('#hier-trigger').attr('href', targetUrl); var $content = $('.content').empty().append($delayedSpinner.hide()); var loading = delaySpinner(); From e0e6b2d563ae44f49a5ee1f9761098cb4c4d0303 Mon Sep 17 00:00:00 2001 From: Osma Suominen Date: Thu, 16 Sep 2021 20:42:13 +0300 Subject: [PATCH 36/57] fix coverage annotations for ConceptPropertyValueLiteral::getDatatype tests --- tests/ConceptPropertyValueLiteralTest.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/ConceptPropertyValueLiteralTest.php b/tests/ConceptPropertyValueLiteralTest.php index 161605a07..3e50d3a02 100644 --- a/tests/ConceptPropertyValueLiteralTest.php +++ b/tests/ConceptPropertyValueLiteralTest.php @@ -63,7 +63,7 @@ public function testGetLabelThatIsABrokenDate() { } /** - * @covers ConceptPropertyValueLiteral::getLabel + * @covers ConceptPropertyValueLiteral::getDatatype */ public function testGetLabelForDatatype() { $vocab = $this->model->getVocabulary('test'); @@ -74,7 +74,7 @@ public function testGetLabelForDatatype() { } /** - * @covers ConceptPropertyValueLiteral::getLabel + * @covers ConceptPropertyValueLiteral::getDatatype */ public function testGetNotationDatatypeWithoutLabel() { $vocab = $this->model->getVocabulary('test'); @@ -85,7 +85,7 @@ public function testGetNotationDatatypeWithoutLabel() { } /** - * @covers ConceptPropertyValueLiteral::getLabel + * @covers ConceptPropertyValueLiteral::getDatatype */ public function testGetLabelForDatatypeIfNull() { $vocab = $this->model->getVocabulary('test'); From 15b1300e2631fe7bee8262d4ea6644bbe66aa12c Mon Sep 17 00:00:00 2001 From: Osma Suominen Date: Thu, 16 Sep 2021 20:45:33 +0300 Subject: [PATCH 37/57] getDatatype() should return null if the datatype has no label --- model/ConceptPropertyValueLiteral.php | 2 +- tests/ConceptPropertyValueLiteralTest.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/model/ConceptPropertyValueLiteral.php b/model/ConceptPropertyValueLiteral.php index 37edfe85f..7fce8fec6 100644 --- a/model/ConceptPropertyValueLiteral.php +++ b/model/ConceptPropertyValueLiteral.php @@ -48,7 +48,7 @@ public function getDatatype(): ?string $dtLabel = $graph->resource($datatype)->label($this->clang); return $dtLabel->getValue(); } - return ""; + return null; } public function getType() diff --git a/tests/ConceptPropertyValueLiteralTest.php b/tests/ConceptPropertyValueLiteralTest.php index 3e50d3a02..52dfd1506 100644 --- a/tests/ConceptPropertyValueLiteralTest.php +++ b/tests/ConceptPropertyValueLiteralTest.php @@ -81,7 +81,7 @@ public function testGetNotationDatatypeWithoutLabel() { $concepts = $vocab->getConceptInfo('http://www.skosmos.skos/test/ta128', 'en'); $props = $concepts[0]->getProperties(); $propvals = $props['skos:notation']->getValues(); - $this->assertEquals('', $propvals['testnotation']->getDatatype()); + $this->assertNull($propvals['testnotation']->getDatatype()); } /** From 52146757f0b85fb1fec6b7e7e3722bc698ba3145 Mon Sep 17 00:00:00 2001 From: Ahonen Mika J Date: Fri, 17 Sep 2021 12:21:41 +0300 Subject: [PATCH 38/57] A broken properties view on the concept page fixed --- view/concept-shared.twig | 20 +------------------- 1 file changed, 1 insertion(+), 19 deletions(-) diff --git a/view/concept-shared.twig b/view/concept-shared.twig index fbbd35de1..debd6948a 100644 --- a/view/concept-shared.twig +++ b/view/concept-shared.twig @@ -128,25 +128,7 @@ {% endif %} {% elseif property.type == 'rdf:type' %}

{{ propval.label|trans }}

{% else %} {# Literals (no URI), eg. alternative labels as properties #} - {% if propval.lang == request.contentLang or propval.lang == null or not request.contentLang and propval.lang == request.lang %} - {% if propval.hasXlProperties %} - - - -
- {% for key, val in propval.getXlProperties %} - {% if key != 'rdf:type' and key != 'skosxl:literalForm' and val != '' %} -

{{ key|trans }}:{{ val }}

- {% endif %} - {% endfor %} -
- {% endif %} - - {% if property.type == 'skos:altLabel' %} class="replaced"{% endif %} - {% if propval.containsHtml %}{{ propval.label|raw }}{% else %}{{ propval.label }}{% endif %} - {% if propval.lang and (request.contentLang and propval.lang != request.contentLang or explicit_langcodes) %}({{ propval.lang }}){% endif %} - {% if propval.datatype %} ({{ propval.datatype }}){% endif %} - + {% if propval.lang == request.contentLang or propval.lang == null or not request.contentLang and propval.lang == request.lang %}{% if propval.hasXlProperties %}
{% for key, val in propval.getXlProperties %}{% if key != 'rdf:type' and key != 'skosxl:literalForm' and val != '' %}

{{ key|trans }}: {{ val }}

{% endif %}{% endfor %}
{% endif %}{% if propval.containsHtml %}{{ propval.label|raw }}{% else %}{{ propval.label }}{% endif %}{% if propval.lang and (request.contentLang and propval.lang != request.contentLang or explicit_langcodes) %} ({{ propval.lang }}){% endif %}{% if propval.datatype %} ({{ propval.datatype }}){% endif %} {% endif %} {% endif %} From 9ac8831ecbd51b43c78cf9105c36feef96b16fd9 Mon Sep 17 00:00:00 2001 From: Osma Suominen Date: Wed, 6 Oct 2021 10:14:22 +0300 Subject: [PATCH 39/57] Gracefully produce 404 error page for URLs with unknown vocabulary ID --- index.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.php b/index.php index 320796d5e..2425b72d7 100644 --- a/index.php +++ b/index.php @@ -49,7 +49,7 @@ $vocab = $parts[1]; try { $request->setVocab($parts[1]); - } catch (Exception $e) { + } catch (Exception | ValueError $e) { $request->setLang($controller->guessLanguage()); $controller->invokeGenericErrorPage($request); return; From c087ce401a16421836cb5fdfe9e3b0587f5d9869 Mon Sep 17 00:00:00 2001 From: Ahonen Mika J Date: Wed, 6 Oct 2021 11:08:08 +0300 Subject: [PATCH 40/57] Fixed performance problems in query for notation label --- model/sparql/GenericSparql.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/model/sparql/GenericSparql.php b/model/sparql/GenericSparql.php index 9c58a9a1d..d6f3b7ee3 100644 --- a/model/sparql/GenericSparql.php +++ b/model/sparql/GenericSparql.php @@ -429,6 +429,12 @@ private function generateConceptInfoQuery($uris, $arrayClass, $vocabs) { UNION { ?uri ?p ?o . + OPTIONAL { + ?uri skos:notation ?nVal . + FILTER(isLiteral(?nVal)) + BIND(datatype(?nVal) AS ?dt) + ?dt rdfs:label ?dtlabel + } OPTIONAL { ?o rdf:rest* ?b1 . ?b1 rdf:first ?item . From 2b00744e6cf07a2474def1708aa648766d1ab9a4 Mon Sep 17 00:00:00 2001 From: Osma Suominen Date: Wed, 6 Oct 2021 11:20:50 +0300 Subject: [PATCH 41/57] Revert "Fixed performance problems in query for notation label" This reverts commit 747c63eac8bdd07b02d42a120a9040749ade05b8, reversing changes made to 649e09aac6c99a117403b75f5ec1fe4fcd7dc220. --- model/sparql/GenericSparql.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/model/sparql/GenericSparql.php b/model/sparql/GenericSparql.php index 33a6a014b..341caade0 100644 --- a/model/sparql/GenericSparql.php +++ b/model/sparql/GenericSparql.php @@ -431,9 +431,9 @@ private function generateConceptInfoQuery($uris, $arrayClass, $vocabs) { { ?uri ?p ?o . OPTIONAL { - ?uri skos:notation ?nVal . - FILTER(isLiteral(?nVal)) - BIND(datatype(?nVal) AS ?dt) + FILTER(?p = skos:notation) + FILTER(isLiteral(?o)) + BIND(datatype(?o) AS ?dt) ?dt rdfs:label ?dtlabel } OPTIONAL { From e2c5ebfba53549aa6c440a8bbdb76735e1aa25fb Mon Sep 17 00:00:00 2001 From: Ahonen Mika J Date: Wed, 6 Oct 2021 11:25:30 +0300 Subject: [PATCH 42/57] Fixed performance problems in query for notation label --- model/sparql/GenericSparql.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/model/sparql/GenericSparql.php b/model/sparql/GenericSparql.php index 341caade0..c8454c9a0 100644 --- a/model/sparql/GenericSparql.php +++ b/model/sparql/GenericSparql.php @@ -431,9 +431,9 @@ private function generateConceptInfoQuery($uris, $arrayClass, $vocabs) { { ?uri ?p ?o . OPTIONAL { - FILTER(?p = skos:notation) - FILTER(isLiteral(?o)) - BIND(datatype(?o) AS ?dt) + ?uri skos:notation ?nVal . + FILTER(isLiteral(?nVal)) + BIND(datatype(?nVal) AS ?dt) ?dt rdfs:label ?dtlabel } OPTIONAL { From c6b4aa5e87a23ff4a21f7562fafdd9dd5f77cce3 Mon Sep 17 00:00:00 2001 From: Vainonen Date: Wed, 6 Oct 2021 11:58:32 +0300 Subject: [PATCH 43/57] added check for getting plugin order --- model/VocabularyConfig.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/model/VocabularyConfig.php b/model/VocabularyConfig.php index c28aa698f..bfd05afd2 100644 --- a/model/VocabularyConfig.php +++ b/model/VocabularyConfig.php @@ -79,6 +79,9 @@ private function setParameterizedPlugins() : void $this->pluginParameters = array(); $vocabularyPlugins = $this->resource->getResource('skosmos:vocabularyPlugins'); + if (!$vocabularyPlugins instanceof EasyRdf\Collection) { + $vocabularyPlugins = $this->resource->all('skosmos:vocabularyPlugins'); + } if ($vocabularyPlugins) { foreach ($vocabularyPlugins as $plugin) { if ($plugin instanceof EasyRdf\Resource) { From 5fd3402cff5416a705cd23a7d712c17b08c62702 Mon Sep 17 00:00:00 2001 From: Osma Suominen Date: Wed, 6 Oct 2021 13:38:19 +0300 Subject: [PATCH 44/57] Update translations from Transifex for 2.12 release. Includes Dutch translation updates from @redmer (see #1178) --- .../translations/ar/LC_MESSAGES/skosmos.mo | Bin 13485 -> 13485 bytes .../translations/da/LC_MESSAGES/skosmos.mo | Bin 10908 -> 10908 bytes .../translations/de/LC_MESSAGES/skosmos.mo | Bin 11702 -> 11702 bytes .../translations/es/LC_MESSAGES/skosmos.mo | Bin 9201 -> 9201 bytes .../translations/fa/LC_MESSAGES/skosmos.mo | Bin 13474 -> 13474 bytes .../translations/fr/LC_MESSAGES/skosmos.mo | Bin 11357 -> 11357 bytes .../translations/it/LC_MESSAGES/skosmos.mo | Bin 11226 -> 11226 bytes .../translations/nb/LC_MESSAGES/skosmos.mo | Bin 13536 -> 13507 bytes .../translations/nl/LC_MESSAGES/skosmos.mo | Bin 11183 -> 13900 bytes .../translations/nn/LC_MESSAGES/skosmos.mo | Bin 13372 -> 13343 bytes .../translations/pl/LC_MESSAGES/skosmos.mo | Bin 11289 -> 11289 bytes .../translations/pt/LC_MESSAGES/skosmos.mo | Bin 11866 -> 11866 bytes .../translations/pt_BR/LC_MESSAGES/skosmos.mo | Bin 11806 -> 11806 bytes .../translations/ru/LC_MESSAGES/skosmos.mo | Bin 17485 -> 17485 bytes resource/translations/skosmos_ar.po | 23 ++- resource/translations/skosmos_da.po | 23 ++- resource/translations/skosmos_de.po | 23 ++- resource/translations/skosmos_es.po | 23 ++- resource/translations/skosmos_fa.po | 23 ++- resource/translations/skosmos_fr.po | 23 ++- resource/translations/skosmos_it.po | 23 ++- resource/translations/skosmos_nb.po | 25 ++- resource/translations/skosmos_nl.po | 162 ++++++++++-------- resource/translations/skosmos_nn.po | 25 ++- resource/translations/skosmos_pl.po | 23 ++- resource/translations/skosmos_pt.po | 23 ++- resource/translations/skosmos_pt_BR.po | 23 ++- resource/translations/skosmos_ru.po | 23 ++- resource/translations/skosmos_zh.po | 23 ++- .../translations/zh/LC_MESSAGES/skosmos.mo | Bin 8435 -> 8435 bytes 30 files changed, 402 insertions(+), 86 deletions(-) diff --git a/resource/translations/ar/LC_MESSAGES/skosmos.mo b/resource/translations/ar/LC_MESSAGES/skosmos.mo index 5a6c32c810f2261aeddce6b4d798714dd17fa98a..3281518de90cfb66921e1a17ca36f80756936b60 100644 GIT binary patch delta 23 fcmZ3Rxi)jdLn$sxT|+YkLo+Kwi_Nd44oLz4YuE^E delta 23 fcmZ3Rxi)jdLn$s}T|+YkLjx-#gUzp{4oLz4Yaa+% diff --git a/resource/translations/da/LC_MESSAGES/skosmos.mo b/resource/translations/da/LC_MESSAGES/skosmos.mo index 4f4819cbcaaa50079256843938138fe64ed865d5..039c4c9d038cde5c96a5fc9ceec0646e0ece304e 100644 GIT binary patch delta 23 fcmbOeIwy3)3Mnp2T|+YkLo+Kwi_M#)Uhx9}VFU-x delta 23 fcmbOeIwy3)3MnpQT|+YkLjx-#gUy?yUhx9}U`q$P diff --git a/resource/translations/de/LC_MESSAGES/skosmos.mo b/resource/translations/de/LC_MESSAGES/skosmos.mo index 518625473284e85d9277593a29626529a5d7c8e4..7874dbee30d1e47e13048f8136687caa64e0ba94 100644 GIT binary patch delta 23 fcmdlMy)AmfLn$sxT|+YkLo+Kwi_Nd4P7475Ya<9` delta 23 fcmdlMy)AmfLn$s}T|+YkLjx-#gUzp{P7475YHA2k diff --git a/resource/translations/es/LC_MESSAGES/skosmos.mo b/resource/translations/es/LC_MESSAGES/skosmos.mo index 780b2341194e7dd85ca4eb794eac1f3572e3c2a3..1615af4a2a9b61ef29445434cdb5e4db0d9edfa2 100644 GIT binary patch delta 23 ecmez9{?UEIDG@G9T|+YkLo+Kwi_KR=WcdMZE(gZ| delta 23 ecmez9{?UEIDG@GXT|+YkLjx-#gUwe&WcdMYbqBNn diff --git a/resource/translations/fa/LC_MESSAGES/skosmos.mo b/resource/translations/fa/LC_MESSAGES/skosmos.mo index cf256e31a044edbaa5e746ffe6f1d1adbcb9d3ea..609a6dfffdb5bc9e1c07cf21d3ac7ba4554d549f 100644 GIT binary patch delta 23 fcmZ3KxhQkPLn$sxT|+YkLo+Kwi_Nd4wo3v4Y2FA+ delta 23 fcmZ3KxhQkPLn$s}T|+YkLjx-#gUzp{wo3v4X(b3a diff --git a/resource/translations/fr/LC_MESSAGES/skosmos.mo b/resource/translations/fr/LC_MESSAGES/skosmos.mo index 4bc6d26a5503676c318e81ce19fce63f8f2a6764..1035976af078b67fc1c67524376c2c53929ae8b1 100644 GIT binary patch delta 23 ecmcZ`aW`T^qZF5=uA!NNp_!GT#pZ6QOM(DtCI|8W delta 23 ecmcZ`aW`T^qZF61uA!NNp@Ef=!RBtMOM(DsZ3o`~ diff --git a/resource/translations/it/LC_MESSAGES/skosmos.mo b/resource/translations/it/LC_MESSAGES/skosmos.mo index 8246bcf9ecd5c9276032dae8a34a66f1efbd36a9..c500b274eb54d8dd41675afb5ef2fc4ec7684058 100644 GIT binary patch delta 23 ecmcZ=ek*)~j1-rpuA!NNp_!GT#b!0BErI}Fjt2q& delta 23 ecmcZ=ek*)~j1-r#uA!NNp@Ef=!Dcn7ErI}E)dueX diff --git a/resource/translations/nb/LC_MESSAGES/skosmos.mo b/resource/translations/nb/LC_MESSAGES/skosmos.mo index c83373c339f87d5b8dafabe4cec629752223f74f..79d17b5982ab415c39b34323a24657f3a265f4c4 100644 GIT binary patch delta 1700 zcmXZcSxA&o7{>88Gsh)U+cYa1)21m?XKXNy77&tsP8HYf;J&q zpqmznZd|A?>?Xugh`K1DENUdWX}hqf2$KGfbG-STFwWWAVlgvVX zvqCegUuaf}ComcBVFq?NA7LK-K}^R{%)zfX9mjDo<`kJt#cIsPTAYbnQS0{OWIS4A zp4HJf&cFVQ}7!qz)#e{R%|v6=Ah<-sPS^-Y+H|Wu^IK;Y1Dp~-S}NpkO9>5 zBgLLs1&x0UXhCR^Splv^-JlVD*o;%K74=*@rs5e?_t^1jo5hkVlFm1kDy-RIaI*wsQvGw z4fGTC5>%VZmLVZ+k@IC&*bR4FfS{KI%enJJ!=eMmO zC0LIU^r~oFppk(?n2E!v(tkt+8Am_nlqJS1P+#{(RN&n>A5WuR$!*j}`w&%`=Qt4z zwSOEH@Ov5c*YEKM11eQ&d14|P6=;_07dittaRcmRK7u;n9qNW3QGtJ=_Va}j^I4ch ze>QTI1yJX12~q!I8vES9dDK6KTc~&a6m`>AxCTF?ZnA`*0B2YPRjECwz#gu^v#6l` zI1Qg+4!%Ww1K&`Aertg?@Kq!ZT8IJqRj$7iRpP^_l3hi8D>qQ3yoJ-T2X&DFti;c# z3luIVES8~eybZJQ0IG7)lQi@n>=Y_lCn{+-YC*r7e~k<1|3%$2Ka!|K0ITVTUBB7& zkD!8e^$tz#nGvck4OjZZl`F$lB_aOOH$+?8N;e;h9&FtoZEHES(m&CTHSIm-uW4!X Luj(E2=gs^NWP!J{ delta 1729 zcmXZcSx8h-9LMoPi_1(onzovH%duUXbjq}{z${5Eq~)a`CNnc!!Y10AA}H%AR3yr$ zFbZsuq!N0mjHrhes)u?Ju?3b~mEa8zXd7-IsC zF|&*@hi4m;iI;I4K1VOUw0^{C^uM47|6u~grW-Q}lW{I);RM`<@mPUL7)Gr-k7KbV z-9*d=8kZPI#80S=hA;{}em8&w)WInjhs#j&MRvRtiN#c6GB%=~Ye((ZWyhbP0_jIR zKje=XlTBkrhP$8)Q|a$OWpE6mu@T4PMbyTv7=zbPmAj3L@C~XWBRCm-bKK`Ma3=jA zszT+cgpNe)L=)=ZJ2($tVH6JG6#R!ea5AgMV=Ah&eq_ol#TmE*^~w&}`7@}BwBR`G z#OZhsRhh_Z8a^8R7>k2;V%U!Rh(-(2P?_c75-dSwaKg^Fq5|v0iFhCNN}u97{D2B1 zZN4$9a0L=j#2lfa(w#&_-eG-!%BTnTU@t1;q6O}A+fV`R!YB;mR6J&FM!mugR07?o z{oi6V_F^pOo3Avq!B13)hENX<+wqu%Zbm-ThA9|}3s37d5^Kb-VYW0zQQ)*p7N7Pf(ZkJ*qO_ zaWpX0{v)UWy^E>8zQ_2*ZmBX*6Pc)hvTeV>T8N_=;C1H9Q3w1*WoQC!zzL|*`%&|Y z(1$t5*`^S6ZbN|j`)QoB12<8B43AOo`ZFri0W831uD&u^hn#83Q589j3b+k(@dhf; zK8(X}n1Fv!cfiA+jsi-G(9i~c)IqCp4sNymYTFbioK!A n8fR0MQ(Re9)zj^)+#RZ`bw}&hRMm#6YqBcpYr8s}X-WS9tG&XB diff --git a/resource/translations/nl/LC_MESSAGES/skosmos.mo b/resource/translations/nl/LC_MESSAGES/skosmos.mo index 663a8a120a37f87a87a6ba2909bab6b9fb613b07..9dece109e4fabeb9a1c950b361ba03b6aaab257f 100644 GIT binary patch literal 13900 zcma)?3y>UFb%q-(V=Vb?%)?;2Wh3;kW>+gqAdhW~-V#WbqFq@a97NCb-PzXmOb^{X zyIO@e7>rFY!GH|`+rc52hcRHl=56Byh=CA_6cmJ_5+}Th3JxS8RS=4N|GnKaJ*$2ls;~ zfj5CCgExbV!FPa91@8n;1wR9x13nC%34Rw`2L1$mB6u2&>UUm&7lEfxUI{J%$H0rh zt3W>SUJ9NIrr=rN8$k8D6?{5)S5f~ZP<;J8$e;IJel+jT3p|rSoOqWTfiFlSx|ic415asD^T;F`lMnV;3CQwffC&_LG>R4F9qx1<=`YJzU~B{ z4BiK-|0CdX@Oz--{0DF~xc)p>-vC!pz7ZS+KLv{aAA=h2-$2c$LACx zQ2M1T4xi~dNL5zdpChg!MB0@d7tD5R=lr+XMq0%YQD#c^5gj!QFv#Ar-RGD zt>9&#=9vQ}?>B(r?@mztJ_z#X-OrEo_bu=u@E71(a0$jFc|I4E9yWs-?=UF+&w{Yv z-2k@0J3y`H6ebgYPXVRZRiNZ>Wl_H!)b|HL@iATC9H{lZ5tLrv3F^D|6?hLQc|QQE z--Dp+_gkRG`97%me_G&w7wxB<@5VbD)OZ&Z@kAmX!{-XU$Agp+gfa3FCL5=@wQ1bg9Q1Ut#CFuKSff{cVlzy%N zC9iQ%b`XO4Zmz($f*St=AS&=40`=VwK!)~yU9_K$@oAprp!(H8J1!_ag$2%lTK5g0 z)_Ge|z6%t8_kmi+=RwKu5m5cUSCk(GWsi@6>VMJ&Zl2RX&2s^$@kc>@e>JG_c7fvW zVA0+Nwcb~N>i0HK-``QRf4snlK=u1}QT|C${tc+{mazFW--V$1jer_&GpP2xpybd5 z#YYZG{;w_S-%{WmAY0t~7^r?<0rmYqfYRqrLD|Qz3e;xOJZFO9`xym}fa>==P;%N+ z)Hgxtu~)R;T(sW~ivLf5;`7U(`1lSe{r#<>KPovkg(yTOf=uLC8A+d=u0dqI8wHBjSz2b3It2EGLR11LGaWF>nL zycrZfUj!wGhe7G--$Bj$dr;q>hOj2UOF)&6fRgXcp!EM<@QL8PpycoXD0}0B6_1zMT{S@$N1ug|8&y@v^g8FWK(Y^^>O!@hs*0mqhIEO*4{|Kmcya^N^Zz<|; zEy{O;OQ`>NQT_s``M&~coWBG0{SQGzgvxga04hgT??{hy#SQ`Uk_?Mw}Be>BcR6pDyV(?eeen3W1!aco1*=9p!hi* zqtUw02PHQj9C;jT1J!;D<{jLKgk4f-c@MWNtGk6l^ zTflR`TS4*jAyE800&4z~*SYqmfLg~YQ2JX7YMd*I_MM>Y{yGrVc&`Mtj(fo8fS(7o zKmQZdxTmjoc5)FY`?wU;_!FSouLI8nJD~V_C8+Ul2hRc@1SR)xgYq{&0%doLp6%p& z7N~u?9z;#{k-Vm%hAVoX1~rGqJp#QRdK+{uR6buVUkZEycqjB;=#c*S2i6B_AIYZlY=J&#-`vkTfZL#r&}Sgb-+LeQXV7P%4N&!wEniwx zyuH$}g!k3ZOi}j*a4+dBxv=yFIlRX%Uz%b^H53A!CR2<4D$^)R#sdN(u$?S#r_EicQU4-^$)fgc97uU`ns?~Os) zA1fg}pNHNAod=x-odK24^LTj@bS3nc&_j@cJ^@Wa+o7Y-9;go80xk5shRREzPZo^_ zz(0bP7iGaKp#9J)NPcu1R6Y;#at?G2bRYEB(Bq*mLII@bYUpLq-O#I{S3-XdT>4^rRHTlljSBnr1CPq8FV^H?l%nI_B!E+x3PB6+t^5Yx%;)Bc^l){Ul#VK38SnV z2XiK*p*t1SI>C&4YnVK02C*M?LUV*FIOznr@x@W*ZJY_BIB3MipGlfQqZbEhWHLYK zgnrV=lQ?Nn^ft};tu*O%_0kPe)5-OgHK$D5=q;b?8gKJd&}o^>&b)alNiyRHVx?pt zjte?4AstoZK{NMz*;4xs zFP2*;e1E8)+A0;O#oJ=KscEwQ&~Liwye-LWCr*OU&!?iStc3}G`~`c)r9N1x&+F9} z)|?+?w&Uo&E!&RYtL|;BwUIQ~Vex*!t#nY-%q6|lH@1@>gdx_GRa-g%k}fP~UuiD` zoz3~O7;7#|%We}4?qBRI@8UtbRyJUNskhCTun{z;`!D_!OKKR?fy++5)Y~r27v^K% zt%i4)xa;kR!jOJiMn=J;u89}z1Z#Gs)|1J~tfiFQNB_^hR?XH7v7*e|DM3yKO*2sO zE)&dP*iz$UWa7|op#5oYmu##MIfX1=h?5~(jpt6#kFC+?!k?k zv-jh&vcRC)I0LQq<+l*m$LqQv3)nsVyfSY&9=}QHYV_J? zMb09@0&r%TNoP#Dl;+&e6F=~?u4zV-QFG9H&fA-sN$kIuX;xQA*^ADC_L+=bfJUtg z#Rv<}GHxBK=fIy#lQxsZrm0d*8Ecpj&~H*X&K;ou_@gj6IO7x9Rh(qp0vm z-87kD6(Rnj)b|MA8kt3=N@>atG2dI-@?bih2-gO2&wi&9E|Q)l3ywGIjX2*-yPMB> z*H%uRp@Q`${nojmgW-T#4o_K6$d2^Jk-ciu2Qd zelQb^BWg|=)6uaPj`({yh|r8HWBii6bQ5)YX2d%ny~voIxV>hx9^`o%F(>-a-k4Xl zKaEurM@`eoY@;^SUc?q5W6DFxE zVgot~)iE_X%lfabM@XHjLX+9G%Bm>3qfBqi%=++=cEBjxXNVn|CfqbcHT(U+KT+YD8t$%4)Vg>KxK8In)

qJu|t*h3yf7Z9XnXoWBG0YgrVANSRXQE)8oc>1XJzAv%ww}Y%qI* zRx66IveKmpFDo@xvB_*)&rspU%+qV(4|lR*yfmDw+dk!sQwODtE!A$LfAz`gM7$<; zubD9$<1F!<|2t%k1nq8Y4&~-ZPMtesylg6&<*1GQO9+4SsjONtBPT}Go$^*@ks&s@&_pxt>KaA=Vqbx~8K?j?|9S^56)2WpA1&l&S3uYuCCs zr(T}ti#eK-G_UQ>T2WZr)N5t6iKOl?-n*x^&&)(RP-|N_?&|*9HEYLeYc8*iJ=-69 zc71HarE7Q=?+UWKHjxIM4EF4`Tkp}NIpS|3PQCKE^l&%J+Jp((b$?5b{pYWk%JXi0 zbaZxhc7)i?eKCR$8RhQGoIzZRqXxH}xmq$=WB1_F!_h*Lqoscz?Zl%i7w_J=d+T6b zV>RjQoeTfqDtM*T9t8Ezc69`k<@{jre^ zBhMKbqs>*+HW3ub+134#klSq&d>V7YuL<$QhR?xZbu_RX>ef4eblKbeZ-&IYpY_a*3s1qEUVVPD48W|fU z>H^y`GYRRDj!U)d;Y{%o{g7iJKT{@I?3Bcn?u$I(6F!J1ZH9x>s`^gYJCtvUjBcg` zfu`eaA}pJVrnxB?!c;q6933VB)FB8Rq+K5Va7TAAMI<4ptv4l++1yJ1Sg)qa|#Chm?V zW;!oB$%buVBOwPLvUxcTW4e{B_H!#Tv7)k)B?-;ZVG(f14$>)uoXau&2Kf}0@0dci zTpr-LH(TUU0%cLqL%+Hc1Z|azJPKT+_%sMw;XE#M)scCWc2VS1eC*8kN#qT;G95piH&J_2hq3RMii5gY{naR^OU+| z?23&o(0V*37U-IEnMfHD5_DJ=QKFIjO)FfW^U(S$i>`39uv7-3@=q|~E<)^%w_97l zW*~JSDv@EnGGZ9CrM;p)_vJTo6D4#>0v8k zoJQJ7roVKu_sq zCoQh{ho{-gWK?mIg-}MkEoO)d?w4j#{)RyZ62(IKUaAlASw0TLb`Yyh7ZtDSoDl9* ziW_mK!U32=gz{!d5*`hv9W%_)KLEAK{iD(0j(4DP5)BoQcD1c?THvq(a>WQ2L6r)y zj^aZgUh=mU@`t9M$f$yDGC=81=AsN)MvjqdgauE5VX; z`95z`bQoh{Bl$By2h~kaD|@+}96~Uid%Iaq>JfzY+U{siqr)@mpim5t>g{CGBHMBR zHzN1SImy|>v4PONozhPjDZxw04&?Wuye0PsYZEfZ{_^Cb@sTYv8y!9x;T!j>CnLg- zyMM@9uyoCkJFzi{6`!$Ng|3_M81_dCl3QvhBq{i|b<$3Gi0|t~?cADK>cu}mNof}5v zS~?^CHJj@Gwj$T-D?YTd7Fq83zT2J{oTjK0!?B0HZ=HpeHrt(@$pBK*h&P^dt0VJ7 zuDCoAhZCdwP}sJ%w9udY}9c-2NV-oEItodZ40%3Mlw#n@fE ze8L)kg_g#5ky&|ce}6@2a8WE_B_~Y}CsZBmn3|!%7HG9%)rd@m6gzGKq{(W^lVPDm z7Yfs?Bebb9e~V3?dHsV>!HWBAsH$Oa2E*ORR9CJCL*3=xyshMR3DfaO)kWbkGQ6j~ zP3XtUR(>lt5gxGOA3T@EIv8Ou$+QhhtRZ1CL<^kfLnqs649tcv))=z6b|Xn*f0az9 z<@_)UKbmOQqwH1eH4JsqU&Ymv*;kGD3VQ6fM$ximOXqiSlKMyar){dMN4g*M@}$i@ zU7@k{Y)Nl6EDg=gJ`j z7T&!d1}aoiUV^!htL~V`_>I1eyMRO^vyB(nGskI{a^x)v-&086T`A{XPv;d6*mFuU zCAUVBk;^JON=L!`ZF`*h6HUFP$XsI8Fh_m{fn!;mo-wYk^jHnUzY58}@m~?_v0@K$ zyPp0TN4RGbw>rp5Mz<=zX-8q{)BH1m46yhDU7fi3L~P5Z`4{#$MBm+#h3z&ipa>=E zi)#3)zbgv8UFu+W0lYYm;5^Rp`TRfHPsFJEw7TeHYDV-AzD}7|C0a! delta 4610 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 bQR{y-{$ighmrKW^fk=e78ya0Fq!aib0sd#& diff --git a/resource/translations/nn/LC_MESSAGES/skosmos.mo b/resource/translations/nn/LC_MESSAGES/skosmos.mo index 45560bb3e2bd194542517b23a03ef15807100ee3..0d8f2c300a1e511ebfbbd7b6d39e0b57da832690 100644 GIT binary patch delta 1700 zcmXZcOGs2v9LMoP<*1{Mqh>YPgY@l%Zj2XDoR2qf~KI65{=T->9we-770NR zwrLSXP(%+%vV=&X>}9nvqfJyoo9v~wi7=wRKksq#Ip;s;{LlaX&%JilU8-x3dlJRt zj0ro& zfMJ}Df6#}4A~(TYoWi^m=i(a7!v;*o)2Q`rHhvjZ zNH;29e^J7i2!j#3uz>QFAcA^=DpaCvn1nT`gmsvLhp+^X<5IkZ>c}AG;wWmpf3~}B zCRQ-tfE;N~CKwbmxQ47X{TRUC=)vqcZlVC{z;aB&#i+!~aT-=x_nKTO5668FGd)c)Dl5PF#}z!Y3z zU5DCNjanZ?FXx*Y8`y`u;3kf0^?6i5H&IX8j@tOd#$TcCz7L<`57Yr2e8bw;jq|Yw z)tO(Y-;-(g4$Q)Y?xK-F8eYc?yob80$Eb}T(7_=a&n$DVB8ZAFMXleCT7M9A1+A!p zFQN{(T77g6aS(LogSwD4ui6=8`xysi7KE8mGBrY#5Pnxy*LlwpuPf6#O>e=BxH(F zcOOL^ybJZ@EvQbPu<#2Fjc*X};- OtZIxq%Q||Uc+P+QoVv9D delta 1729 zcmXZce`rl%9LMn|_Vey;Hp6Bnhs})ZUU$P{R^-QK45^VabTFH>-PPPOf9NEk{8)bf zLHNT;NL!?cl=(5MDXheb5#pbj{3Ab#_s4ziKdpPY^=mW+>GP!5GLX!)cg(`zlSQM zAC+$?-!rC&K`Lcy;(Szsm8d6ZKqcCV@#vxE?ZYHIi2*!^^RNfik@x~*Mq?Igeh@XU z3`?*csliTV=gvW51@{$9n-PX#_wYs z*KbiB{(vgf`^`XSluG}!!Fbe-0!+m@n1ki0BXZHfC@Rq@RKeF!g>|C}c#4_$8mn;- zHE-cmW9DKFQjlj(GYAqmi^r46>BHfX^F+>d(VBdC}3Jn9H< z+ISagT^}am04A}&`OH8GzM)$51AX|%#uEdvPNbm{tzTqahFZTGld#5G zi&_^!&2L2?`y0;&4k9nUIfiQWO;kZoP*3_4weY=-e?gu7AU;AL->x=zhFaH;GjRY_ zXeMpe{e0YjA@p<>hZ&^cV@$;tsIz*9TKEecObNx}(@{rJj*73d@m;9-Cs0Swjw<*L zYU3_c{$BiFV2J+fNe2k%OupM2ztGS1UsNmoGhz#}P}jM58K>Czb5ubuQJwmN%J&CV zKwLQXwWQz#u5(a@mWJuS!(h1$G+K9~3TQ(mJd3lj169B$EXHrBuOP1|*1>s5$W)-t zz7^AO59-N}qB?!v#;bZ2rS2mxE7~j zE9wC*B43{AME#GvM$I2W9f|vwfnK^~-V{|F#F1EnT2P6)zX=`Oi|Rl->Pb3~6y}bN ze?@9HKQSExH+uZnGgr(ChG#j&;nJCN17Uu?DtAXTSl!}Ab~L)t=9W@tu^Vw#Y~NDv o);2n;LeA3Ky1ECqoU*NMq$w6{UQpNMZf^{2X>Pi4)rn^Q19i#6j{pDw diff --git a/resource/translations/pl/LC_MESSAGES/skosmos.mo b/resource/translations/pl/LC_MESSAGES/skosmos.mo index d81c81022661e58b682a3ed985bba452960cc71e..47aad99e842292e9fca11c4927b196a1d91c6097 100644 GIT binary patch delta 23 ecmbOkF*9OAqZF5=uA!NNp_!GT#pZ6QK0yFn?gu6S delta 23 ecmbOkF*9OAqZF61uA!NNp@Ef=!RBtMK0yFnH3t&_ diff --git a/resource/translations/pt/LC_MESSAGES/skosmos.mo b/resource/translations/pt/LC_MESSAGES/skosmos.mo index 94ba7c1b77deae6b36e501005dd61cfb16cb06e0..0e68193522763f180f8535c7b3e6ac219487f4fa 100644 GIT binary patch delta 23 ecmcZ=b1P< delta 23 ecmbOiGcRU?t~8giuA!NNp@Ef=!De&m=RyEiNCw#e diff --git a/resource/translations/ru/LC_MESSAGES/skosmos.mo b/resource/translations/ru/LC_MESSAGES/skosmos.mo index e4e2c83c87d99118e7e98b99d5b7437000678658..9c8dcce01065e7fc588d734322aeb5f6380f4382 100644 GIT binary patch delta 25 gcmX@x!FaZVaf6UNm!+\n" "Language-Team: Arabic (http://www.transifex.com/national-library-of-finland/skosmos/language/ar/)\n" "MIME-Version: 1.0\n" @@ -845,3 +845,24 @@ msgid "" "We're sorry but Skosmos doesn't work properly without JavaScript enabled. " "Please enable it to continue." msgstr "" + +msgid "Deprecated concept" +msgstr "" + +msgid "Error: Search failed!" +msgstr "" + +msgid "Error: Failed to retrieve vocabulary information!" +msgstr "" + +msgid "Error: Loading more items failed!" +msgstr "" + +msgid "Retry" +msgstr "" + +msgid "skos:notation" +msgstr "" + +msgid "skos:notation_help" +msgstr "" diff --git a/resource/translations/skosmos_da.po b/resource/translations/skosmos_da.po index 0183d644b..d0040111d 100644 --- a/resource/translations/skosmos_da.po +++ b/resource/translations/skosmos_da.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: Skosmos\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-01-16 10:26+0200\n" -"PO-Revision-Date: 2021-03-16 10:20+0000\n" +"PO-Revision-Date: 2021-09-16 16:18+0000\n" "Last-Translator: Transifex Bot <>\n" "Language-Team: Danish (http://www.transifex.com/national-library-of-finland/skosmos/language/da/)\n" "MIME-Version: 1.0\n" @@ -846,3 +846,24 @@ msgid "" "We're sorry but Skosmos doesn't work properly without JavaScript enabled. " "Please enable it to continue." msgstr "" + +msgid "Deprecated concept" +msgstr "" + +msgid "Error: Search failed!" +msgstr "" + +msgid "Error: Failed to retrieve vocabulary information!" +msgstr "" + +msgid "Error: Loading more items failed!" +msgstr "" + +msgid "Retry" +msgstr "" + +msgid "skos:notation" +msgstr "" + +msgid "skos:notation_help" +msgstr "" diff --git a/resource/translations/skosmos_de.po b/resource/translations/skosmos_de.po index d4378278a..ad0277d0e 100644 --- a/resource/translations/skosmos_de.po +++ b/resource/translations/skosmos_de.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: Skosmos\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-01-16 10:26+0200\n" -"PO-Revision-Date: 2021-03-16 10:20+0000\n" +"PO-Revision-Date: 2021-09-16 16:18+0000\n" "Last-Translator: Transifex Bot <>\n" "Language-Team: German (http://www.transifex.com/national-library-of-finland/skosmos/language/de/)\n" "MIME-Version: 1.0\n" @@ -847,3 +847,24 @@ msgid "" "We're sorry but Skosmos doesn't work properly without JavaScript enabled. " "Please enable it to continue." msgstr "" + +msgid "Deprecated concept" +msgstr "" + +msgid "Error: Search failed!" +msgstr "" + +msgid "Error: Failed to retrieve vocabulary information!" +msgstr "" + +msgid "Error: Loading more items failed!" +msgstr "" + +msgid "Retry" +msgstr "" + +msgid "skos:notation" +msgstr "" + +msgid "skos:notation_help" +msgstr "" diff --git a/resource/translations/skosmos_es.po b/resource/translations/skosmos_es.po index b7a0cdbc1..b43508be2 100644 --- a/resource/translations/skosmos_es.po +++ b/resource/translations/skosmos_es.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: Skosmos\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-01-16 10:26+0200\n" -"PO-Revision-Date: 2021-03-16 10:20+0000\n" +"PO-Revision-Date: 2021-09-16 16:18+0000\n" "Last-Translator: Transifex Bot <>\n" "Language-Team: Spanish (http://www.transifex.com/national-library-of-finland/skosmos/language/es/)\n" "MIME-Version: 1.0\n" @@ -847,3 +847,24 @@ msgid "" "We're sorry but Skosmos doesn't work properly without JavaScript enabled. " "Please enable it to continue." msgstr "" + +msgid "Deprecated concept" +msgstr "" + +msgid "Error: Search failed!" +msgstr "" + +msgid "Error: Failed to retrieve vocabulary information!" +msgstr "" + +msgid "Error: Loading more items failed!" +msgstr "" + +msgid "Retry" +msgstr "" + +msgid "skos:notation" +msgstr "" + +msgid "skos:notation_help" +msgstr "" diff --git a/resource/translations/skosmos_fa.po b/resource/translations/skosmos_fa.po index b431afce6..8897b8fb9 100644 --- a/resource/translations/skosmos_fa.po +++ b/resource/translations/skosmos_fa.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: Skosmos\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-01-16 10:26+0200\n" -"PO-Revision-Date: 2021-03-16 10:20+0000\n" +"PO-Revision-Date: 2021-09-16 16:18+0000\n" "Last-Translator: Transifex Bot <>\n" "Language-Team: Persian (http://www.transifex.com/national-library-of-finland/skosmos/language/fa/)\n" "MIME-Version: 1.0\n" @@ -846,3 +846,24 @@ msgid "" "We're sorry but Skosmos doesn't work properly without JavaScript enabled. " "Please enable it to continue." msgstr "" + +msgid "Deprecated concept" +msgstr "" + +msgid "Error: Search failed!" +msgstr "" + +msgid "Error: Failed to retrieve vocabulary information!" +msgstr "" + +msgid "Error: Loading more items failed!" +msgstr "" + +msgid "Retry" +msgstr "" + +msgid "skos:notation" +msgstr "" + +msgid "skos:notation_help" +msgstr "" diff --git a/resource/translations/skosmos_fr.po b/resource/translations/skosmos_fr.po index 603790193..9f5ea4e46 100644 --- a/resource/translations/skosmos_fr.po +++ b/resource/translations/skosmos_fr.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: Skosmos\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-01-16 10:26+0200\n" -"PO-Revision-Date: 2021-03-16 10:20+0000\n" +"PO-Revision-Date: 2021-09-16 16:18+0000\n" "Last-Translator: Transifex Bot <>\n" "Language-Team: French (http://www.transifex.com/national-library-of-finland/skosmos/language/fr/)\n" "MIME-Version: 1.0\n" @@ -847,3 +847,24 @@ msgid "" "We're sorry but Skosmos doesn't work properly without JavaScript enabled. " "Please enable it to continue." msgstr "" + +msgid "Deprecated concept" +msgstr "" + +msgid "Error: Search failed!" +msgstr "" + +msgid "Error: Failed to retrieve vocabulary information!" +msgstr "" + +msgid "Error: Loading more items failed!" +msgstr "" + +msgid "Retry" +msgstr "" + +msgid "skos:notation" +msgstr "" + +msgid "skos:notation_help" +msgstr "" diff --git a/resource/translations/skosmos_it.po b/resource/translations/skosmos_it.po index 8046947c7..46dba1964 100644 --- a/resource/translations/skosmos_it.po +++ b/resource/translations/skosmos_it.po @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Skosmos\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-01-16 10:26+0200\n" -"PO-Revision-Date: 2021-03-16 10:20+0000\n" +"PO-Revision-Date: 2021-09-16 16:18+0000\n" "Last-Translator: Transifex Bot <>\n" "Language-Team: Italian (http://www.transifex.com/national-library-of-finland/skosmos/language/it/)\n" "MIME-Version: 1.0\n" @@ -845,3 +845,24 @@ msgid "" "We're sorry but Skosmos doesn't work properly without JavaScript enabled. " "Please enable it to continue." msgstr "" + +msgid "Deprecated concept" +msgstr "" + +msgid "Error: Search failed!" +msgstr "" + +msgid "Error: Failed to retrieve vocabulary information!" +msgstr "" + +msgid "Error: Loading more items failed!" +msgstr "" + +msgid "Retry" +msgstr "" + +msgid "skos:notation" +msgstr "" + +msgid "skos:notation_help" +msgstr "" diff --git a/resource/translations/skosmos_nb.po b/resource/translations/skosmos_nb.po index 8b6812b3a..438e777a0 100644 --- a/resource/translations/skosmos_nb.po +++ b/resource/translations/skosmos_nb.po @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: Skosmos\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-01-16 10:26+0200\n" -"PO-Revision-Date: 2021-04-04 20:37+0000\n" -"Last-Translator: Dan Michael O. Heggø \n" +"PO-Revision-Date: 2021-09-16 16:18+0000\n" +"Last-Translator: Transifex Bot <>\n" "Language-Team: Norwegian Bokmål (http://www.transifex.com/national-library-of-finland/skosmos/language/nb/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -846,3 +846,24 @@ msgid "" "We're sorry but Skosmos doesn't work properly without JavaScript enabled. " "Please enable it to continue." msgstr "Vi beklager, men Skosmos fungerer ikke ordentlig uten JavaScript. Aktiver JavaScript for å fortsette." + +msgid "Deprecated concept" +msgstr "" + +msgid "Error: Search failed!" +msgstr "" + +msgid "Error: Failed to retrieve vocabulary information!" +msgstr "" + +msgid "Error: Loading more items failed!" +msgstr "" + +msgid "Retry" +msgstr "" + +msgid "skos:notation" +msgstr "" + +msgid "skos:notation_help" +msgstr "" diff --git a/resource/translations/skosmos_nl.po b/resource/translations/skosmos_nl.po index f9b18a1b0..61f6e5a36 100644 --- a/resource/translations/skosmos_nl.po +++ b/resource/translations/skosmos_nl.po @@ -5,12 +5,13 @@ # Maxime Van Driessche , 2018 # noho , 2019 # osma , 2020 +# Redmer Kronemeijer , 2021 msgid "" msgstr "" "Project-Id-Version: Skosmos\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-01-16 10:26+0200\n" -"PO-Revision-Date: 2021-03-16 10:20+0000\n" +"PO-Revision-Date: 2021-09-16 16:18+0000\n" "Last-Translator: Transifex Bot <>\n" "Language-Team: Dutch (http://www.transifex.com/national-library-of-finland/skosmos/language/nl/)\n" "MIME-Version: 1.0\n" @@ -26,7 +27,7 @@ msgstr "" "X-Poedit-SourceCharset: utf-8\n" msgid "Download this vocabulary:" -msgstr "" +msgstr "Download deze woordenlijst:" #: controller/Controller.php:38 #: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:21 @@ -87,7 +88,7 @@ msgstr "Alle %d resultaten worden getoond." #: /tmp/cache/587c83c09abaa/c7/c7175f1dcd0b8bfa06a77b42c0566cc09ea4bf4805eb07a09448ad205bfcceea.php:276 #: /tmp/cache/587c83c13194c/07/073354bd24405bc5c963d187d0034352a7a24a3550861ca791f826417bb9cecd.php:70 msgid "Alpha-nav" -msgstr "Alfabetish" +msgstr "Alfabetisch" #: /tmp/cache/587c83c09abaa/cf/cf0b3d87d2eb48f38f5f339303d5509c7535d13d7b010ad4840ee824430f7fe6.php:34 msgid "Alphabetical index" @@ -95,19 +96,19 @@ msgstr "Alfabetische index" #: /tmp/cache/587c83c09abaa/c7/c7175f1dcd0b8bfa06a77b42c0566cc09ea4bf4805eb07a09448ad205bfcceea.php:555 msgid "By group" -msgstr "Per groep" +msgstr "Groep" #: /tmp/cache/587c83c09abaa/c7/c7175f1dcd0b8bfa06a77b42c0566cc09ea4bf4805eb07a09448ad205bfcceea.php:587 msgid "By parent" -msgstr "Per parent" +msgstr "Breder concept" #: /tmp/cache/587c83c09abaa/c7/c7175f1dcd0b8bfa06a77b42c0566cc09ea4bf4805eb07a09448ad205bfcceea.php:477 msgid "By scheme" -msgstr "Per subvocabulair" +msgstr "Subvocabulair" #: /tmp/cache/587c83c09abaa/c7/c7175f1dcd0b8bfa06a77b42c0566cc09ea4bf4805eb07a09448ad205bfcceea.php:516 msgid "By type" -msgstr "Per type" +msgstr "Type" #: /tmp/cache/587c83c09abaa/bf/bf6437cf02d4bf892eccfe46511488719628e22df92da5026f31c555a6a1fa6f.php:119 #: /tmp/cache/587c83c09abaa/92/926cb0fdbe92b0165a1a13c21243442890c70779003bbc2fe1230ff221742de9.php:132 @@ -119,7 +120,7 @@ msgstr "Nieuw" #: /tmp/cache/587c83c09abaa/8a/8aeec9eddcf0848575d119210eda5a849c129c96ea86195b4448536a02a47817.php:122 msgid "Clear limitations" -msgstr "Wis limiten" +msgstr "Wis filters" #: /tmp/cache/587c83c09abaa/4a/4a8733799c4f4aa865ece4715881ffcbef92985ed08edc2acd445e7b0c129fab.php:74 msgid "Contact us!" @@ -127,11 +128,11 @@ msgstr "Contacteer ons!" #: /tmp/cache/587c83c09abaa/9a/9a6d69d72b35f38585477d2f25d50cacf270791aa84e4d523f237566dd428822.php:108 msgid "Content and search language" -msgstr "Content en zoek taal" +msgstr "Content- en zoektaal" #: /tmp/cache/587c83c09abaa/9a/9a6d69d72b35f38585477d2f25d50cacf270791aa84e4d523f237566dd428822.php:51 msgid "Content language" -msgstr "Content taal" +msgstr "Content-taal" #: /tmp/cache/587c83c09abaa/3c/3c4ea3202d0add91bf2080022b707c23115e0beb434024ddb2de27749e6bbe83.php:732 msgid "Download this concept in SKOS format:" @@ -143,7 +144,7 @@ msgstr "E-mail:" #: /tmp/cache/587c83c09abaa/9a/9a6d69d72b35f38585477d2f25d50cacf270791aa84e4d523f237566dd428822.php:220 msgid "Enter search term" -msgstr "Type je zoekterm" +msgstr "Typ zoekterm" #: /tmp/cache/587c83c09abaa/4a/4a8733799c4f4aa865ece4715881ffcbef92985ed08edc2acd445e7b0c129fab.php:148 msgid "Enter your e-mail address" @@ -199,7 +200,7 @@ msgstr "Laat dit veld leeg" #: /tmp/cache/587c83c09abaa/c7/c7175f1dcd0b8bfa06a77b42c0566cc09ea4bf4805eb07a09448ad205bfcceea.php:594 msgid "Limit search" -msgstr "Limiet zoeken" +msgstr "Zoek met filter" #: /tmp/cache/587c83c09abaa/f2/f29f57cf31b29541d6f810d43d1f7a07e79cfddcf23678f04612a410c0f0607b.php:31 msgid "Loading" @@ -224,11 +225,11 @@ msgstr "Geen resultaten" #: /tmp/cache/587c83c09abaa/4a/4a8733799c4f4aa865ece4715881ffcbef92985ed08edc2acd445e7b0c129fab.php:103 #: /tmp/cache/587c83c09abaa/4a/4a8733799c4f4aa865ece4715881ffcbef92985ed08edc2acd445e7b0c129fab.php:111 msgid "Not to a specific vocabulary" -msgstr "Geen specifieke woordenlijst" +msgstr "Niet voor een specifieke woordenlijst" #: /tmp/cache/587c83c09abaa/9a/9a6d69d72b35f38585477d2f25d50cacf270791aa84e4d523f237566dd428822.php:233 msgid "Search" -msgstr "Zoeken" +msgstr "Zoek" #: /tmp/cache/587c83c09abaa/9a/9a6d69d72b35f38585477d2f25d50cacf270791aa84e4d523f237566dd428822.php:59 msgid "Search from vocabulary" @@ -236,7 +237,7 @@ msgstr "Zoek in woordenlijst" #: /tmp/cache/587c83c09abaa/9a/9a6d69d72b35f38585477d2f25d50cacf270791aa84e4d523f237566dd428822.php:210 msgid "Search language: any" -msgstr "Een taal" +msgstr "Elke taal" #: /tmp/cache/587c83c09abaa/c7/c7175f1dcd0b8bfa06a77b42c0566cc09ea4bf4805eb07a09448ad205bfcceea.php:340 msgid "Search options" @@ -251,7 +252,7 @@ msgid "show all # paths" msgstr "Toon alle # paden" msgid "show all # values" -msgstr "" +msgstr "Toon alle # waardes" #: /tmp/cache/587c83c09abaa/58/58e9c1cebb82d52daf56fab57cd7b86ed47b1d8a86a915177156746eef73248e.php:72 msgid "Skosmos version %version%" @@ -263,7 +264,7 @@ msgstr "Verzend zoekopdracht" #: /tmp/cache/587c83c09abaa/4a/4a8733799c4f4aa865ece4715881ffcbef92985ed08edc2acd445e7b0c129fab.php:68 msgid "Thank you for your feedback" -msgstr "Bedankt voor je feedback. We streven ernaar om alle feedback zo snel mogelijk te beantwoorden." +msgstr "Bedankt voor uw feedback. We streven ernaar om alle feedback zo snel mogelijk te beantwoorden." #: /tmp/cache/587c83c09abaa/8a/8aeec9eddcf0848575d119210eda5a849c129c96ea86195b4448536a02a47817.php:129 msgid "The search provided no results." @@ -280,11 +281,11 @@ msgstr "Waarde is noodzakelijk en kan niet leeg zijn" #: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:27 msgid "cc:attributionName" -msgstr "Attribuut Naam" +msgstr "Rechthebbende" #: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:29 msgid "cc:attributionUrl" -msgstr "Attribuut Url" +msgstr "URL rechthebbende" #: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:25 msgid "cc:license" @@ -292,11 +293,11 @@ msgstr "Licentie" #: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:31 msgid "cc:morePermissions" -msgstr "Meer permissies" +msgstr "Aanvullende licentiemogelijkheden" #: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:33 msgid "cc:useGuidelines" -msgstr "gebruik guidelines" +msgstr "Gebruiksrichtlijnen" #: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:35 msgid "dc:conformsTo" @@ -304,7 +305,7 @@ msgstr "Conformeert met" #: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:37 msgid "dc:contributor" -msgstr "Contributor" +msgstr "Bijdrages van" #: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:39 msgid "dc:coverage" @@ -316,7 +317,7 @@ msgstr "Gemaakt" #: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:43 msgid "dc:creator" -msgstr "Creator" +msgstr "Maker" #: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:45 msgid "dc:date" @@ -364,7 +365,7 @@ msgstr "Uitgever" #: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:67 msgid "dc:relation" -msgstr "Relatie" +msgstr "Gerelateerd" #: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:69 msgid "dc:replaces" @@ -433,16 +434,16 @@ msgid "from all" msgstr "van alle" msgid "wgs84:lat" -msgstr "" +msgstr "Breedtegraad" msgid "wgs84:lat_help" -msgstr "" +msgstr "Decimale breedtegraden volgens WGS 84" msgid "wgs84:long" -msgstr "" +msgstr "Lengtegraad" msgid "wgs84:long_help" -msgstr "" +msgstr "Decimale lengtegraden volgens WGS 84" #: /tmp/cache/587c83c09abaa/bf/bf6437cf02d4bf892eccfe46511488719628e22df92da5026f31c555a6a1fa6f.php:81 #: /tmp/cache/587c83c09abaa/92/926cb0fdbe92b0165a1a13c21243442890c70779003bbc2fe1230ff221742de9.php:90 @@ -454,7 +455,7 @@ msgstr "De hiërarchie van het hoogste niveau kan niet getoond worden in deze wo #: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:93 msgid "isothes:ConceptGroup" -msgstr "Concept groep" +msgstr "Conceptgroep" #: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:97 msgid "isothes:ThesaurusArray" @@ -470,7 +471,7 @@ msgstr "Bredere concepten (instantie)" #: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:103 msgid "isothes:broaderPartitive" -msgstr "Bredere concepten (opgedeeld)" +msgstr "Bredere concepten (deel van)" #: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:105 msgid "isothes:narrowerGeneric" @@ -482,7 +483,7 @@ msgstr "Nauwere concepten (instantie)" #: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:109 msgid "isothes:narrowerPartitive" -msgstr "Nauwere concepten (opgedeeld)" +msgstr "Nauwere concepten (onderdeel)" #: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:95 msgid "isothes:superGroup" @@ -494,19 +495,19 @@ msgstr "lay-out ontworpen door Hahmo Design" #: /tmp/cache/587c83c09abaa/8a/8aeec9eddcf0848575d119210eda5a849c129c96ea86195b4448536a02a47817.php:74 msgid "limited to group" -msgstr "groep" +msgstr "gefilterd op groep" #: /tmp/cache/587c83c09abaa/8a/8aeec9eddcf0848575d119210eda5a849c129c96ea86195b4448536a02a47817.php:67 msgid "limited to parent" -msgstr "ouder" +msgstr "gefilterd op breder" #: /tmp/cache/587c83c09abaa/8a/8aeec9eddcf0848575d119210eda5a849c129c96ea86195b4448536a02a47817.php:81 msgid "limited to scheme" -msgstr "gelimiteerd tot schema" +msgstr "gefilterd op subvocabulair" #: /tmp/cache/587c83c09abaa/8a/8aeec9eddcf0848575d119210eda5a849c129c96ea86195b4448536a02a47817.php:29 msgid "limited to type" -msgstr "type" +msgstr "gefilterd op type" #: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:113 msgid "owl:sameAs" @@ -566,7 +567,7 @@ msgstr "Breder concept" #: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:169 msgid "skos:changeNote" -msgstr "Verander notitie" +msgstr "Wijzigingsnotitie" #: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:147 msgid "skos:closeMatch" @@ -602,19 +603,19 @@ msgstr "Voorbeeld" #: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:155 msgid "skos:hasTopConcept" -msgstr "Heeft top concept" +msgstr "Topconcept" #: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:165 msgid "skos:historyNote" -msgstr "Geschiedenis notitie" +msgstr "Geschiedenisnotitie" #: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:151 msgid "skos:inScheme" -msgstr "Concept schema" +msgstr "Subvocabulair" #: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:149 msgid "skos:member" -msgstr "Groep leden" +msgstr "Lid" #: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:181 msgid "skos:member_help" @@ -647,7 +648,7 @@ msgstr "Notities" #: /tmp/cache/587c83c09abaa/3c/3c4ea3202d0add91bf2080022b707c23115e0beb434024ddb2de27749e6bbe83.php:234 #: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:141 msgid "skos:prefLabel" -msgstr "Geprefereerde term" +msgstr "Voorkeursterm" #: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:137 msgid "skos:related" @@ -663,7 +664,7 @@ msgstr "Concepten die gerelateerd zijn aan dit concept" #: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:159 msgid "skos:scopeNote" -msgstr "Bereik notitie" +msgstr "Bereiksnotitie" #: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:177 msgid "skos:scopeNote_help" @@ -671,7 +672,7 @@ msgstr "Notities over het gebruik en het bereik van dit concept" #: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:153 msgid "skos:topConceptOf" -msgstr "Behoord tot woordenlijst" +msgstr "Behoort tot woordenlijst" #: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:197 msgid "skosext:DeprecatedConcept" @@ -728,7 +729,7 @@ msgstr "Aantal" #: /tmp/cache/587c83c13194c/ab/abd3710fda280028e428e4bc415383b12c9a30cc34eadffd21ff4130ae796b99.php:157 msgid "Download this vocabulary as SKOS/RDF:" -msgstr "Download deze woordenlijset als SKOS/RDF" +msgstr "Download deze woordenlijst als SKOS/RDF" #: /tmp/cache/587c83c13194c/0b/0bbfc29e05e244fa07889ce1678840902f16e5f76560e00137de0cc3bb084b8b.php:205 msgid "Help" @@ -740,7 +741,7 @@ msgstr "Verborgen termen" #: /tmp/cache/587c83c13194c/0b/0bbfc29e05e244fa07889ce1678840902f16e5f76560e00137de0cc3bb084b8b.php:58 msgid "Interface language" -msgstr "Interface taal" +msgstr "Interfacetaal" #: /tmp/cache/587c83c13194c/f9/f9c816822168f230ef0bfed735f5923aab99d389ce8b2c6b2f5fcd5d400bc275.php:26 msgid "No vocabularies on the server!" @@ -748,7 +749,7 @@ msgstr "Geen woordenlijsten op de server!" #: /tmp/cache/587c83c13194c/ab/abd3710fda280028e428e4bc415383b12c9a30cc34eadffd21ff4130ae796b99.php:134 msgid "Preferred terms" -msgstr "Geprefereerde termen" +msgstr "Voorkeurstermen" #: /tmp/cache/587c83c13194c/ab/abd3710fda280028e428e4bc415383b12c9a30cc34eadffd21ff4130ae796b99.php:111 msgid "Resource counts by type" @@ -768,7 +769,7 @@ msgstr "Woordenlijsten" #: /tmp/cache/587c83c13194c/ab/abd3710fda280028e428e4bc415383b12c9a30cc34eadffd21ff4130ae796b99.php:24 msgid "Vocabulary information" -msgstr "Woordenlijst informatie" +msgstr "Woordenlijstinformatie" #: /tmp/cache/587c83c13194c/0b/0bbfc29e05e244fa07889ce1678840902f16e5f76560e00137de0cc3bb084b8b.php:199 msgid "helper_help" @@ -776,75 +777,96 @@ msgstr "Beweeg uw cursor over de tekst met een gestippelde onderstreping om inst #: /tmp/cache/587c83c13194c/0b/0bbfc29e05e244fa07889ce1678840902f16e5f76560e00137de0cc3bb084b8b.php:201 msgid "search_example_text" -msgstr "Voor een ingekorte zoekopdracht, gelieve het symbool * te gebruiken zoals in *dier of *patent*. Voor het einde van zoekwoorden zal de zoekopdracht automatisch beschouwd worden als ingekort, zelfs als het inkortingssymbool not manueel werd ingevoerd: zo zal kat hetzelfde resultaat opleveren als kat*" +msgstr "Voor een ingekorte zoekopdracht, gelieve het symbool * te gebruiken zoals in *dier of *patent*. Voor het einde van zoekwoorden zal de zoekopdracht automatisch beschouwd worden als ingekort, zelfs als het inkortingssymbool niet handmatig werd ingevoerd: zo zal kat hetzelfde resultaat opleveren als kat*" msgid "feedback_enter_name_email" -msgstr "" +msgstr "Voer uw naam en e-mailadres in als u een direct antwoord wilt ontvangen. U hebt ook de mogelijkheid om uw feedback anoniem in te dienen. NB: Feedback over een specifieke woordenlijst wordt doorgestuurd naar de beheerder ervan." msgid "concept_types" -msgstr "Concept types" +msgstr "Concepttypes" msgid "Skip to main" -msgstr "" +msgstr "Naar hoofdinhoud" msgid "Available vocabularies and ontologies" -msgstr "" +msgstr "Beschikbare woordenlijsten en ontologieën" msgid "Search from selected vocabularies" -msgstr "" +msgstr "Zoek in geselecteerde woordenlijsten" msgid "List vocabulary concepts alphabetically" -msgstr "" +msgstr "Sorteer concepten alfabetisch" msgid "List vocabulary concepts and groupings hierarchically" -msgstr "" +msgstr "Sorteer concepten en groepen hiërarchisch" msgid "List vocabulary concepts by newest additions" -msgstr "" +msgstr "Sorteer concepten op meest recent toegevoegd" msgid "List vocabulary concepts hierarchically" -msgstr "" +msgstr "Sorteer concepten hiërarchisch" msgid "Choose alphabetical listing letter" -msgstr "" +msgstr "Kies letter voor alfabetische lijst" msgid "Concept information" -msgstr "" +msgstr "Conceptinformatie" msgid "Hierarchical listing of vocabulary concepts" -msgstr "" +msgstr "Concepten hiërarchisch gesorteerd" msgid "Hierarchical listing of vocabulary concepts and groupings" -msgstr "" +msgstr "Concepten en groepen hiërarchisch gesorteerd" msgid "Listing vocabulary concepts alphabetically" -msgstr "" +msgstr "Concepten alfabetisch gesorteerd" msgid "Listing vocabulary concepts by newest additions" -msgstr "" +msgstr "Concepten gesorteerd op meest recent toegevoegd" msgid "Prefer using" -msgstr "" +msgstr "Gebruik liever" msgid "Search options tab" -msgstr "" +msgstr "Tab voor zoekopties" msgid "Search results" -msgstr "" +msgstr "Zoekresultaten" msgid "Sidebar listing: list and traverse vocabulary contents by a criterion" -msgstr "" +msgstr "Zijbalk: sorteer en blader door gefilterde woordenlijstonderdelen" msgid "Subject:" -msgstr "" +msgstr "Onderwerp:" msgid "Write a subject" -msgstr "" +msgstr "Voeg een onderwerp toe" msgid "Select a vocabulary" -msgstr "" +msgstr "Selecteer een woordenlijst" msgid "" "We're sorry but Skosmos doesn't work properly without JavaScript enabled. " "Please enable it to continue." +msgstr "Helaas werkt Skosmos niet correct zonder JavaScript. Schakel het in om door te gaan." + +msgid "Deprecated concept" +msgstr "Vervallen concept" + +msgid "Error: Search failed!" +msgstr "" + +msgid "Error: Failed to retrieve vocabulary information!" +msgstr "" + +msgid "Error: Loading more items failed!" +msgstr "" + +msgid "Retry" +msgstr "" + +msgid "skos:notation" +msgstr "" + +msgid "skos:notation_help" msgstr "" diff --git a/resource/translations/skosmos_nn.po b/resource/translations/skosmos_nn.po index b5cc331f7..b3b62aa84 100644 --- a/resource/translations/skosmos_nn.po +++ b/resource/translations/skosmos_nn.po @@ -8,8 +8,8 @@ msgstr "" "Project-Id-Version: Skosmos\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-01-16 10:26+0200\n" -"PO-Revision-Date: 2021-04-04 20:39+0000\n" -"Last-Translator: Dan Michael O. Heggø \n" +"PO-Revision-Date: 2021-09-16 16:18+0000\n" +"Last-Translator: Transifex Bot <>\n" "Language-Team: Norwegian Nynorsk (http://www.transifex.com/national-library-of-finland/skosmos/language/nn/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -846,3 +846,24 @@ msgid "" "We're sorry but Skosmos doesn't work properly without JavaScript enabled. " "Please enable it to continue." msgstr "Orsak, men Skosmos fungerer ikkje ordentleg utan JavaScript. Aktiver JavaScript for å fortsetje." + +msgid "Deprecated concept" +msgstr "" + +msgid "Error: Search failed!" +msgstr "" + +msgid "Error: Failed to retrieve vocabulary information!" +msgstr "" + +msgid "Error: Loading more items failed!" +msgstr "" + +msgid "Retry" +msgstr "" + +msgid "skos:notation" +msgstr "" + +msgid "skos:notation_help" +msgstr "" diff --git a/resource/translations/skosmos_pl.po b/resource/translations/skosmos_pl.po index e8ba5d1a2..767d05030 100644 --- a/resource/translations/skosmos_pl.po +++ b/resource/translations/skosmos_pl.po @@ -9,7 +9,7 @@ msgstr "" "Project-Id-Version: Skosmos\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-01-16 10:26+0200\n" -"PO-Revision-Date: 2021-03-16 10:20+0000\n" +"PO-Revision-Date: 2021-09-16 16:18+0000\n" "Last-Translator: Transifex Bot <>\n" "Language-Team: Polish (http://www.transifex.com/national-library-of-finland/skosmos/language/pl/)\n" "MIME-Version: 1.0\n" @@ -847,3 +847,24 @@ msgid "" "We're sorry but Skosmos doesn't work properly without JavaScript enabled. " "Please enable it to continue." msgstr "" + +msgid "Deprecated concept" +msgstr "" + +msgid "Error: Search failed!" +msgstr "" + +msgid "Error: Failed to retrieve vocabulary information!" +msgstr "" + +msgid "Error: Loading more items failed!" +msgstr "" + +msgid "Retry" +msgstr "" + +msgid "skos:notation" +msgstr "" + +msgid "skos:notation_help" +msgstr "" diff --git a/resource/translations/skosmos_pt.po b/resource/translations/skosmos_pt.po index 489fa926e..fc0c38143 100644 --- a/resource/translations/skosmos_pt.po +++ b/resource/translations/skosmos_pt.po @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Skosmos\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-01-16 10:26+0200\n" -"PO-Revision-Date: 2021-03-16 10:20+0000\n" +"PO-Revision-Date: 2021-09-16 16:18+0000\n" "Last-Translator: Transifex Bot <>\n" "Language-Team: Portuguese (http://www.transifex.com/national-library-of-finland/skosmos/language/pt/)\n" "MIME-Version: 1.0\n" @@ -845,3 +845,24 @@ msgid "" "We're sorry but Skosmos doesn't work properly without JavaScript enabled. " "Please enable it to continue." msgstr "" + +msgid "Deprecated concept" +msgstr "" + +msgid "Error: Search failed!" +msgstr "" + +msgid "Error: Failed to retrieve vocabulary information!" +msgstr "" + +msgid "Error: Loading more items failed!" +msgstr "" + +msgid "Retry" +msgstr "" + +msgid "skos:notation" +msgstr "" + +msgid "skos:notation_help" +msgstr "" diff --git a/resource/translations/skosmos_pt_BR.po b/resource/translations/skosmos_pt_BR.po index de6c054eb..8aee69892 100644 --- a/resource/translations/skosmos_pt_BR.po +++ b/resource/translations/skosmos_pt_BR.po @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Skosmos\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-01-16 10:26+0200\n" -"PO-Revision-Date: 2021-03-16 10:20+0000\n" +"PO-Revision-Date: 2021-09-16 16:18+0000\n" "Last-Translator: Transifex Bot <>\n" "Language-Team: Portuguese (Brazil) (http://www.transifex.com/national-library-of-finland/skosmos/language/pt_BR/)\n" "MIME-Version: 1.0\n" @@ -845,3 +845,24 @@ msgid "" "We're sorry but Skosmos doesn't work properly without JavaScript enabled. " "Please enable it to continue." msgstr "" + +msgid "Deprecated concept" +msgstr "" + +msgid "Error: Search failed!" +msgstr "" + +msgid "Error: Failed to retrieve vocabulary information!" +msgstr "" + +msgid "Error: Loading more items failed!" +msgstr "" + +msgid "Retry" +msgstr "" + +msgid "skos:notation" +msgstr "" + +msgid "skos:notation_help" +msgstr "" diff --git a/resource/translations/skosmos_ru.po b/resource/translations/skosmos_ru.po index ecb89ca22..e2e31fea5 100644 --- a/resource/translations/skosmos_ru.po +++ b/resource/translations/skosmos_ru.po @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Skosmos\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-01-16 10:26+0200\n" -"PO-Revision-Date: 2021-03-16 10:20+0000\n" +"PO-Revision-Date: 2021-09-16 16:18+0000\n" "Last-Translator: Transifex Bot <>\n" "Language-Team: Russian (http://www.transifex.com/national-library-of-finland/skosmos/language/ru/)\n" "MIME-Version: 1.0\n" @@ -845,3 +845,24 @@ msgid "" "We're sorry but Skosmos doesn't work properly without JavaScript enabled. " "Please enable it to continue." msgstr "" + +msgid "Deprecated concept" +msgstr "" + +msgid "Error: Search failed!" +msgstr "" + +msgid "Error: Failed to retrieve vocabulary information!" +msgstr "" + +msgid "Error: Loading more items failed!" +msgstr "" + +msgid "Retry" +msgstr "" + +msgid "skos:notation" +msgstr "" + +msgid "skos:notation_help" +msgstr "" diff --git a/resource/translations/skosmos_zh.po b/resource/translations/skosmos_zh.po index c0e5f3a7f..1fdf97e2c 100644 --- a/resource/translations/skosmos_zh.po +++ b/resource/translations/skosmos_zh.po @@ -7,7 +7,7 @@ msgstr "" "Project-Id-Version: Skosmos\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2017-01-16 10:26+0200\n" -"PO-Revision-Date: 2021-03-16 10:20+0000\n" +"PO-Revision-Date: 2021-09-16 16:18+0000\n" "Last-Translator: Transifex Bot <>\n" "Language-Team: Chinese (http://www.transifex.com/national-library-of-finland/skosmos/language/zh/)\n" "MIME-Version: 1.0\n" @@ -845,3 +845,24 @@ msgid "" "We're sorry but Skosmos doesn't work properly without JavaScript enabled. " "Please enable it to continue." msgstr "" + +msgid "Deprecated concept" +msgstr "" + +msgid "Error: Search failed!" +msgstr "" + +msgid "Error: Failed to retrieve vocabulary information!" +msgstr "" + +msgid "Error: Loading more items failed!" +msgstr "" + +msgid "Retry" +msgstr "" + +msgid "skos:notation" +msgstr "" + +msgid "skos:notation_help" +msgstr "" diff --git a/resource/translations/zh/LC_MESSAGES/skosmos.mo b/resource/translations/zh/LC_MESSAGES/skosmos.mo index 65cbe3a46886559dd65dfdb430eda0b0c2437c18..5c666abcfbd2e0b0942b6c60593da05b4b4ff947 100644 GIT binary patch delta 23 ecmezD_}OtoiwKvcuA!NNp_!GT#pXVdR2~3m69;$z delta 23 ecmezD_}OtoiwKvouA!NNp@Ef=!R9`ZR2~3lS_fqS From f01340472fc2ddab59991996b38685c8033cdb21 Mon Sep 17 00:00:00 2001 From: Osma Suominen Date: Wed, 6 Oct 2021 13:42:49 +0300 Subject: [PATCH 45/57] Add Frysk (West Frisian, fy) translation by @redmer --- .../translations/fy/LC_MESSAGES/skosmos.mo | Bin 0 -> 13543 bytes resource/translations/skosmos_fy.po | 868 ++++++++++++++++++ 2 files changed, 868 insertions(+) create mode 100644 resource/translations/fy/LC_MESSAGES/skosmos.mo create mode 100644 resource/translations/skosmos_fy.po diff --git a/resource/translations/fy/LC_MESSAGES/skosmos.mo b/resource/translations/fy/LC_MESSAGES/skosmos.mo new file mode 100644 index 0000000000000000000000000000000000000000..02cdef550a74fc5e04115f5e4f97f30a0ee05f28 GIT binary patch literal 13543 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, 2021 +# Redmer Kronemeijer , 2021 +msgid "" +msgstr "" +"Project-Id-Version: Skosmos\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2017-01-16 10:26+0200\n" +"PO-Revision-Date: 2021-09-16 16:18+0000\n" +"Last-Translator: Transifex Bot <>\n" +"Language-Team: Western Frisian (http://www.transifex.com/national-library-of-finland/skosmos/language/fy/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Language: fy\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 1.8.7.1\n" +"X-Poedit-Basepath: ../..\n" +"X-Poedit-SearchPath-0: view\n" +"X-Poedit-SearchPath-1: controller\n" +"X-Poedit-SearchPath-2: model\n" +"X-Poedit-SourceCharset: utf-8\n" + +msgid "Download this vocabulary:" +msgstr "Download dizze wurdlist" + +#: controller/Controller.php:38 +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:21 +msgid "in_this_language" +msgstr "yn it Frysk" + +#: controller/RestController.php:271 +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:125 +msgid "skos:Concept" +msgstr "Begryp" + +#: controller/RestController.php:280 +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:127 +msgid "skos:Collection" +msgstr "Kolleksje" + +#: model/Concept.php:455 model/Concept.php:475 +msgid "skosmos:created" +msgstr "Makke" + +#: model/Concept.php:460 model/Concept.php:462 model/Concept.php:471 +msgid "skosmos:modified" +msgstr "lêst wizige" + +#: model/VocabularyCategory.php:39 +msgid "Vocabularies" +msgstr "Wurdlist" + +#: /tmp/cache/587c83c09abaa/8a/8aeec9eddcf0848575d119210eda5a849c129c96ea86195b4448536a02a47817.php:26 +msgid "%search_count% results for '%term%'" +msgstr "%search_count% resultaten foar ’%term%’" + +#: /tmp/cache/587c83c09abaa/23/23c9862892c34daf7bea11b6d50990145b73a83c0947ae60c3d729fe591a06ec.php:48 +msgid "404 Error: The page %requested_page% cannot be found." +msgstr "404 fout: Pagina ‘%requested_page%’ kin net fûn wurde" + +#: /tmp/cache/587c83c09abaa/bf/bf6437cf02d4bf892eccfe46511488719628e22df92da5026f31c555a6a1fa6f.php:62 +#: /tmp/cache/587c83c09abaa/92/926cb0fdbe92b0165a1a13c21243442890c70779003bbc2fe1230ff221742de9.php:75 +#: /tmp/cache/587c83c09abaa/d1/d13f81e53ff33f31fff259d66f8ddbf7cfc39d25c6219ff727553feca6d87d37.php:64 +#: /tmp/cache/587c83c09abaa/c7/c7175f1dcd0b8bfa06a77b42c0566cc09ea4bf4805eb07a09448ad205bfcceea.php:274 +#: /tmp/cache/587c83c13194c/07/073354bd24405bc5c963d187d0034352a7a24a3550861ca791f826417bb9cecd.php:68 +msgid "A-Z" +msgstr "A-Z" + +#: /tmp/cache/587c83c09abaa/58/58e9c1cebb82d52daf56fab57cd7b86ed47b1d8a86a915177156746eef73248e.php:46 +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:19 +msgid "About" +msgstr "Oer" + +#: /tmp/cache/587c83c09abaa/f2/f29f57cf31b29541d6f810d43d1f7a07e79cfddcf23678f04612a410c0f0607b.php:35 +#, php-format +msgid "All %d results displayed" +msgstr "Alle %d resultaten wurden werjûn" + +#: /tmp/cache/587c83c09abaa/bf/bf6437cf02d4bf892eccfe46511488719628e22df92da5026f31c555a6a1fa6f.php:64 +#: /tmp/cache/587c83c09abaa/92/926cb0fdbe92b0165a1a13c21243442890c70779003bbc2fe1230ff221742de9.php:77 +#: /tmp/cache/587c83c09abaa/d1/d13f81e53ff33f31fff259d66f8ddbf7cfc39d25c6219ff727553feca6d87d37.php:66 +#: /tmp/cache/587c83c09abaa/c7/c7175f1dcd0b8bfa06a77b42c0566cc09ea4bf4805eb07a09448ad205bfcceea.php:276 +#: /tmp/cache/587c83c13194c/07/073354bd24405bc5c963d187d0034352a7a24a3550861ca791f826417bb9cecd.php:70 +msgid "Alpha-nav" +msgstr "Alfabetysk" + +#: /tmp/cache/587c83c09abaa/cf/cf0b3d87d2eb48f38f5f339303d5509c7535d13d7b010ad4840ee824430f7fe6.php:34 +msgid "Alphabetical index" +msgstr "Alfabetyske yndeks" + +#: /tmp/cache/587c83c09abaa/c7/c7175f1dcd0b8bfa06a77b42c0566cc09ea4bf4805eb07a09448ad205bfcceea.php:555 +msgid "By group" +msgstr "Groep" + +#: /tmp/cache/587c83c09abaa/c7/c7175f1dcd0b8bfa06a77b42c0566cc09ea4bf4805eb07a09448ad205bfcceea.php:587 +msgid "By parent" +msgstr "Wider begryp" + +#: /tmp/cache/587c83c09abaa/c7/c7175f1dcd0b8bfa06a77b42c0566cc09ea4bf4805eb07a09448ad205bfcceea.php:477 +msgid "By scheme" +msgstr "Subfokabulêr" + +#: /tmp/cache/587c83c09abaa/c7/c7175f1dcd0b8bfa06a77b42c0566cc09ea4bf4805eb07a09448ad205bfcceea.php:516 +msgid "By type" +msgstr "Type" + +#: /tmp/cache/587c83c09abaa/bf/bf6437cf02d4bf892eccfe46511488719628e22df92da5026f31c555a6a1fa6f.php:119 +#: /tmp/cache/587c83c09abaa/92/926cb0fdbe92b0165a1a13c21243442890c70779003bbc2fe1230ff221742de9.php:132 +#: /tmp/cache/587c83c09abaa/d1/d13f81e53ff33f31fff259d66f8ddbf7cfc39d25c6219ff727553feca6d87d37.php:117 +#: /tmp/cache/587c83c09abaa/c7/c7175f1dcd0b8bfa06a77b42c0566cc09ea4bf4805eb07a09448ad205bfcceea.php:331 +#: /tmp/cache/587c83c13194c/07/073354bd24405bc5c963d187d0034352a7a24a3550861ca791f826417bb9cecd.php:125 +msgid "Changes-nav" +msgstr "Nij" + +#: /tmp/cache/587c83c09abaa/8a/8aeec9eddcf0848575d119210eda5a849c129c96ea86195b4448536a02a47817.php:122 +msgid "Clear limitations" +msgstr "WIskje filters" + +#: /tmp/cache/587c83c09abaa/4a/4a8733799c4f4aa865ece4715881ffcbef92985ed08edc2acd445e7b0c129fab.php:74 +msgid "Contact us!" +msgstr "Nim kontakt op!" + +#: /tmp/cache/587c83c09abaa/9a/9a6d69d72b35f38585477d2f25d50cacf270791aa84e4d523f237566dd428822.php:108 +msgid "Content and search language" +msgstr "Ynhâlds- en syktaal" + +#: /tmp/cache/587c83c09abaa/9a/9a6d69d72b35f38585477d2f25d50cacf270791aa84e4d523f237566dd428822.php:51 +msgid "Content language" +msgstr "Ynhâldstaal" + +#: /tmp/cache/587c83c09abaa/3c/3c4ea3202d0add91bf2080022b707c23115e0beb434024ddb2de27749e6bbe83.php:732 +msgid "Download this concept in SKOS format:" +msgstr "Download dit begryp" + +#: /tmp/cache/587c83c09abaa/4a/4a8733799c4f4aa865ece4715881ffcbef92985ed08edc2acd445e7b0c129fab.php:144 +msgid "E-mail:" +msgstr "E-mailadres:" + +#: /tmp/cache/587c83c09abaa/9a/9a6d69d72b35f38585477d2f25d50cacf270791aa84e4d523f237566dd428822.php:220 +msgid "Enter search term" +msgstr "Sykterm" + +#: /tmp/cache/587c83c09abaa/4a/4a8733799c4f4aa865ece4715881ffcbef92985ed08edc2acd445e7b0c129fab.php:148 +msgid "Enter your e-mail address" +msgstr "Fier jo e-mailadres yn" + +#: /tmp/cache/587c83c09abaa/4a/4a8733799c4f4aa865ece4715881ffcbef92985ed08edc2acd445e7b0c129fab.php:140 +msgid "Enter your name" +msgstr "Fier jo namme yn" + +#: /tmp/cache/587c83c09abaa/3c/3c4ea3202d0add91bf2080022b707c23115e0beb434024ddb2de27749e6bbe83.php:900 +#: /tmp/cache/587c83c13194c/5c/5c060d2297f64d66beb101ee34831f917ed8d33f97dadeca144430a1561433ec.php:69 +msgid "Error: Requested vocabulary not found!" +msgstr "Fout: de oanfrege wurdlist is net fûn." + +#: /tmp/cache/587c83c09abaa/3c/3c4ea3202d0add91bf2080022b707c23115e0beb434024ddb2de27749e6bbe83.php:890 +msgid "Error: Term \"%term%\" not found in vocabulary!" +msgstr "Fout: ‘%term%’ net fûn yn ’e wurdlist" + +#: /tmp/cache/587c83c09abaa/4a/4a8733799c4f4aa865ece4715881ffcbef92985ed08edc2acd445e7b0c129fab.php:34 +#: /tmp/cache/587c83c09abaa/4a/4a8733799c4f4aa865ece4715881ffcbef92985ed08edc2acd445e7b0c129fab.php:54 +#: /tmp/cache/587c83c13194c/0b/0bbfc29e05e244fa07889ce1678840902f16e5f76560e00137de0cc3bb084b8b.php:194 +msgid "Feedback" +msgstr "Weromkeppeling" + +#: /tmp/cache/587c83c09abaa/4a/4a8733799c4f4aa865ece4715881ffcbef92985ed08edc2acd445e7b0c129fab.php:64 +msgid "Feedback has been sent!" +msgstr "Weromkeppeling is ferstjoerd!" + +#: /tmp/cache/587c83c09abaa/d1/d13f81e53ff33f31fff259d66f8ddbf7cfc39d25c6219ff727553feca6d87d37.php:35 +msgid "Group index" +msgstr "Groepsyndeks" + +#: /tmp/cache/587c83c09abaa/bf/bf6437cf02d4bf892eccfe46511488719628e22df92da5026f31c555a6a1fa6f.php:101 +#: /tmp/cache/587c83c09abaa/92/926cb0fdbe92b0165a1a13c21243442890c70779003bbc2fe1230ff221742de9.php:114 +#: /tmp/cache/587c83c09abaa/d1/d13f81e53ff33f31fff259d66f8ddbf7cfc39d25c6219ff727553feca6d87d37.php:99 +#: /tmp/cache/587c83c09abaa/c7/c7175f1dcd0b8bfa06a77b42c0566cc09ea4bf4805eb07a09448ad205bfcceea.php:313 +#: /tmp/cache/587c83c13194c/07/073354bd24405bc5c963d187d0034352a7a24a3550861ca791f826417bb9cecd.php:107 +msgid "Group-nav" +msgstr "Groepen" + +#: /tmp/cache/587c83c09abaa/bf/bf6437cf02d4bf892eccfe46511488719628e22df92da5026f31c555a6a1fa6f.php:85 +#: /tmp/cache/587c83c09abaa/92/926cb0fdbe92b0165a1a13c21243442890c70779003bbc2fe1230ff221742de9.php:94 +#: /tmp/cache/587c83c09abaa/d1/d13f81e53ff33f31fff259d66f8ddbf7cfc39d25c6219ff727553feca6d87d37.php:83 +#: /tmp/cache/587c83c09abaa/c7/c7175f1dcd0b8bfa06a77b42c0566cc09ea4bf4805eb07a09448ad205bfcceea.php:297 +#: /tmp/cache/587c83c09abaa/f2/f29f57cf31b29541d6f810d43d1f7a07e79cfddcf23678f04612a410c0f0607b.php:55 +#: /tmp/cache/587c83c13194c/07/073354bd24405bc5c963d187d0034352a7a24a3550861ca791f826417bb9cecd.php:91 +msgid "Hier-nav" +msgstr "Hiërargy" + +#: /tmp/cache/587c83c09abaa/4a/4a8733799c4f4aa865ece4715881ffcbef92985ed08edc2acd445e7b0c129fab.php:157 +msgid "Leave this field blank" +msgstr "Lit dit leech" + +#: /tmp/cache/587c83c09abaa/c7/c7175f1dcd0b8bfa06a77b42c0566cc09ea4bf4805eb07a09448ad205bfcceea.php:594 +msgid "Limit search" +msgstr "Sykje mei filter" + +#: /tmp/cache/587c83c09abaa/f2/f29f57cf31b29541d6f810d43d1f7a07e79cfddcf23678f04612a410c0f0607b.php:31 +msgid "Loading" +msgstr "Lade" + +#: /tmp/cache/587c83c09abaa/f2/f29f57cf31b29541d6f810d43d1f7a07e79cfddcf23678f04612a410c0f0607b.php:27 +msgid "Loading more items" +msgstr "Mear begripen lade" + +#: /tmp/cache/587c83c09abaa/4a/4a8733799c4f4aa865ece4715881ffcbef92985ed08edc2acd445e7b0c129fab.php:152 +msgid "Message:" +msgstr "Berjocht:" + +#: /tmp/cache/587c83c09abaa/4a/4a8733799c4f4aa865ece4715881ffcbef92985ed08edc2acd445e7b0c129fab.php:136 +msgid "Name:" +msgstr "Namme:" + +#: /tmp/cache/587c83c09abaa/f2/f29f57cf31b29541d6f810d43d1f7a07e79cfddcf23678f04612a410c0f0607b.php:23 +msgid "No results" +msgstr "Gjin resultaten" + +#: /tmp/cache/587c83c09abaa/4a/4a8733799c4f4aa865ece4715881ffcbef92985ed08edc2acd445e7b0c129fab.php:103 +#: /tmp/cache/587c83c09abaa/4a/4a8733799c4f4aa865ece4715881ffcbef92985ed08edc2acd445e7b0c129fab.php:111 +msgid "Not to a specific vocabulary" +msgstr "Net foar in spesifike wurdlist" + +#: /tmp/cache/587c83c09abaa/9a/9a6d69d72b35f38585477d2f25d50cacf270791aa84e4d523f237566dd428822.php:233 +msgid "Search" +msgstr "Sykje" + +#: /tmp/cache/587c83c09abaa/9a/9a6d69d72b35f38585477d2f25d50cacf270791aa84e4d523f237566dd428822.php:59 +msgid "Search from vocabulary" +msgstr "Sykje yn wurdlist" + +#: /tmp/cache/587c83c09abaa/9a/9a6d69d72b35f38585477d2f25d50cacf270791aa84e4d523f237566dd428822.php:210 +msgid "Search language: any" +msgstr "Elke taal" + +#: /tmp/cache/587c83c09abaa/c7/c7175f1dcd0b8bfa06a77b42c0566cc09ea4bf4805eb07a09448ad205bfcceea.php:340 +msgid "Search options" +msgstr "Sykopsjes" + +#: /tmp/cache/587c83c09abaa/4a/4a8733799c4f4aa865ece4715881ffcbef92985ed08edc2acd445e7b0c129fab.php:161 +msgid "Send feedback" +msgstr "Stjoer weromkeppeling" + +#: /tmp/cache/587c83c09abaa/f2/f29f57cf31b29541d6f810d43d1f7a07e79cfddcf23678f04612a410c0f0607b.php:51 +msgid "show all # paths" +msgstr "Jou alle # paden wer" + +msgid "show all # values" +msgstr "Jou alle # wearden wer" + +#: /tmp/cache/587c83c09abaa/58/58e9c1cebb82d52daf56fab57cd7b86ed47b1d8a86a915177156746eef73248e.php:72 +msgid "Skosmos version %version%" +msgstr "Skosmos fersje %version%" + +#: /tmp/cache/587c83c09abaa/9a/9a6d69d72b35f38585477d2f25d50cacf270791aa84e4d523f237566dd428822.php:229 +msgid "Submit search" +msgstr "Verstjoer sykopdracht" + +#: /tmp/cache/587c83c09abaa/4a/4a8733799c4f4aa865ece4715881ffcbef92985ed08edc2acd445e7b0c129fab.php:68 +msgid "Thank you for your feedback" +msgstr "Tank foar jo weromkeppeling. Wy stribje dernei alle weromkeppeling sa rap mooglik te beantwurdzje" + +#: /tmp/cache/587c83c09abaa/8a/8aeec9eddcf0848575d119210eda5a849c129c96ea86195b4448536a02a47817.php:129 +msgid "The search provided no results." +msgstr "De sykopdracht hat gjin resultaten oplevere" + +#: /tmp/cache/587c83c09abaa/3c/3c4ea3202d0add91bf2080022b707c23115e0beb434024ddb2de27749e6bbe83.php:48 +msgid "There is no term for this concept in this language" +msgstr "Der is gjin term foar dit begryp in dizze taal." + +#: /tmp/cache/587c83c09abaa/4a/4a8733799c4f4aa865ece4715881ffcbef92985ed08edc2acd445e7b0c129fab.php:173 +#: /tmp/cache/587c83c09abaa/f2/f29f57cf31b29541d6f810d43d1f7a07e79cfddcf23678f04612a410c0f0607b.php:47 +msgid "Value is required and can not be empty" +msgstr "Wearde is needsaaklik en kin net leech bliuwe" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:27 +msgid "cc:attributionName" +msgstr "Rjochthawwende" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:29 +msgid "cc:attributionUrl" +msgstr "URL rjochthawwende" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:25 +msgid "cc:license" +msgstr "Lisinsje" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:31 +msgid "cc:morePermissions" +msgstr "Oanfoljende lisinsjemooglikheid" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:33 +msgid "cc:useGuidelines" +msgstr "Brûksrjochtline" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:35 +msgid "dc:conformsTo" +msgstr "Komformearet mei" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:37 +msgid "dc:contributor" +msgstr "Bydragen fan" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:39 +msgid "dc:coverage" +msgstr "Berik" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:41 +msgid "dc:created" +msgstr "Makke" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:43 +msgid "dc:creator" +msgstr "Makker" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:45 +msgid "dc:date" +msgstr "Datum" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:47 +msgid "dc:description" +msgstr "Beskriuwing" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:49 +msgid "dc:format" +msgstr "Formaat" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:51 +msgid "dc:identifier" +msgstr "Identifikaasje" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:53 +msgid "dc:isReplacedBy" +msgstr "Wurdt ferfongen troch" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:55 +msgid "dc:isRequiredBy" +msgstr "Is nedich foar" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:57 +msgid "dc:issued" +msgstr "Datum útjûn" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:59 +msgid "dc:language" +msgstr "Taal" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:61 +msgid "dc:license" +msgstr "Lisinsje" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:63 +msgid "dc:modified" +msgstr "Lêst wizige" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:65 +msgid "dc:publisher" +msgstr "Útjouwer" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:67 +msgid "dc:relation" +msgstr "Relateard" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:69 +msgid "dc:replaces" +msgstr "Ferfangt" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:71 +msgid "dc:rights" +msgstr "Rjochten" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:73 +msgid "dc:rightsHolder" +msgstr "Rjochthawwende" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:75 +msgid "dc:source" +msgstr "Boarne" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:77 +msgid "dc:source_help" +msgstr "Boarne fan de beskriuwing fan it begryp" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:79 +msgid "dc:spatial" +msgstr "Rúmtetlik berik" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:81 +msgid "dc:subject" +msgstr "Ûnderwerp" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:83 +msgid "dc:temporal" +msgstr "Tiidsberik" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:85 +msgid "dc:title" +msgstr "Titel" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:87 +msgid "dc:type" +msgstr "Type" + +#: /tmp/cache/587c83c09abaa/3c/3c4ea3202d0add91bf2080022b707c23115e0beb434024ddb2de27749e6bbe83.php:36 +#: /tmp/cache/587c83c09abaa/8a/8aeec9eddcf0848575d119210eda5a849c129c96ea86195b4448536a02a47817.php:256 +msgid "deprecated" +msgstr "Dit begryp is ferâldere. Brûk it net as oantekening" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:89 +msgid "foaf:homepage" +msgstr "Haadside" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:91 +msgid "foaf:page" +msgstr "Side" + +#: /tmp/cache/587c83c09abaa/3c/3c4ea3202d0add91bf2080022b707c23115e0beb434024ddb2de27749e6bbe83.php:658 +#: /tmp/cache/587c83c09abaa/8a/8aeec9eddcf0848575d119210eda5a849c129c96ea86195b4448536a02a47817.php:542 +msgid "foreign prefLabel help" +msgstr "Termen foar it begryp yn oare talen" + +#: /tmp/cache/587c83c09abaa/3c/3c4ea3202d0add91bf2080022b707c23115e0beb434024ddb2de27749e6bbe83.php:660 +msgid "foreign prefLabels" +msgstr "Yn oare talen" + +#: /tmp/cache/587c83c09abaa/f2/f29f57cf31b29541d6f810d43d1f7a07e79cfddcf23678f04612a410c0f0607b.php:39 +msgid "from all" +msgstr "fan alle" + +msgid "wgs84:lat" +msgstr "Breedtegraad" + +msgid "wgs84:lat_help" +msgstr "Breedtegraad yn desimale graden yn it WGS 84-systeem" + +msgid "wgs84:long" +msgstr "Lingtegraad" + +msgid "wgs84:long_help" +msgstr "Lingtegraad yn desimale graden yn it WGS 84-systeem" + +#: /tmp/cache/587c83c09abaa/bf/bf6437cf02d4bf892eccfe46511488719628e22df92da5026f31c555a6a1fa6f.php:81 +#: /tmp/cache/587c83c09abaa/92/926cb0fdbe92b0165a1a13c21243442890c70779003bbc2fe1230ff221742de9.php:90 +#: /tmp/cache/587c83c09abaa/d1/d13f81e53ff33f31fff259d66f8ddbf7cfc39d25c6219ff727553feca6d87d37.php:79 +#: /tmp/cache/587c83c09abaa/c7/c7175f1dcd0b8bfa06a77b42c0566cc09ea4bf4805eb07a09448ad205bfcceea.php:293 +#: /tmp/cache/587c83c13194c/07/073354bd24405bc5c963d187d0034352a7a24a3550861ca791f826417bb9cecd.php:87 +msgid "hierarchy-disabled-help" +msgstr "De haadhiërargy fan dizze wurdlist kin net sjoen wurde litte" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:93 +msgid "isothes:ConceptGroup" +msgstr "Begrypsgroep" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:97 +msgid "isothes:ThesaurusArray" +msgstr "Rige fan njonkenskikte begripen" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:99 +msgid "isothes:broaderGeneric" +msgstr "Widere begripen" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:101 +msgid "isothes:broaderInstantial" +msgstr "Wider begryp (klasse)" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:103 +msgid "isothes:broaderPartitive" +msgstr "Wider begryp (diel fan)" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:105 +msgid "isothes:narrowerGeneric" +msgstr "Eanger begryp" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:107 +msgid "isothes:narrowerInstantial" +msgstr "Eanger begryp (ynstânsje)" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:109 +msgid "isothes:narrowerPartitive" +msgstr "Eanger begryp (ûnderdiel)" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:95 +msgid "isothes:superGroup" +msgstr "Boppelizzende groep" + +#: /tmp/cache/587c83c09abaa/58/58e9c1cebb82d52daf56fab57cd7b86ed47b1d8a86a915177156746eef73248e.php:66 +msgid "layout designed by Hahmo" +msgstr "Layout ûntworpen troch Hahmo Design" + +#: /tmp/cache/587c83c09abaa/8a/8aeec9eddcf0848575d119210eda5a849c129c96ea86195b4448536a02a47817.php:74 +msgid "limited to group" +msgstr "filtere op groep" + +#: /tmp/cache/587c83c09abaa/8a/8aeec9eddcf0848575d119210eda5a849c129c96ea86195b4448536a02a47817.php:67 +msgid "limited to parent" +msgstr "filtere op wider begryp" + +#: /tmp/cache/587c83c09abaa/8a/8aeec9eddcf0848575d119210eda5a849c129c96ea86195b4448536a02a47817.php:81 +msgid "limited to scheme" +msgstr "filtere op subfokabulêr" + +#: /tmp/cache/587c83c09abaa/8a/8aeec9eddcf0848575d119210eda5a849c129c96ea86195b4448536a02a47817.php:29 +msgid "limited to type" +msgstr "filtere op type" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:113 +msgid "owl:sameAs" +msgstr "Gelike begripen" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:111 +msgid "owl:versionInfo" +msgstr "Versje" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:115 +msgid "rdf:type" +msgstr "Type" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:117 +msgid "rdf:type_help" +msgstr "Type fan ’e entiteit" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:123 +msgid "rdfs:comment" +msgstr "Beskriuwing" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:119 +msgid "rdfs:label" +msgstr "Label" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:121 +msgid "rdfs:seeAlso" +msgstr "Sjoch ek" + +#: /tmp/cache/587c83c09abaa/f2/f29f57cf31b29541d6f810d43d1f7a07e79cfddcf23678f04612a410c0f0607b.php:43 +msgid "selected" +msgstr "selekteard" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:143 +msgid "skos:altLabel" +msgstr "Yngongstermen" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:179 +msgid "skos:altLabel_help" +msgstr "Oare termen foar it begryp" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:133 +msgid "skos:broadMatch" +msgstr "Widere oerienkommende begripen" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:191 +msgid "skos:broadMatch_help" +msgstr "Widere oerienkommende begripen yn in oare wurdlist" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:129 +msgid "skos:broader" +msgstr "Wider begryp" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:171 +msgid "skos:broader_help" +msgstr "Wider begryp" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:169 +msgid "skos:changeNote" +msgstr "Wizigingsnotysje" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:147 +msgid "skos:closeMatch" +msgstr "Neiby oerienkommende begripen" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:189 +msgid "skos:closeMatch_help" +msgstr "Neiby oerienkommende begripen yn in oare wurdlist" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:161 +msgid "skos:definition" +msgstr "Betsjutting" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:185 +msgid "skos:definition_help" +msgstr "In komplete beskriuwing fan de betsjutting fan in begryp" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:167 +msgid "skos:editorialNote" +msgstr "Redaksjenotysje" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:145 +msgid "skos:exactMatch" +msgstr "Presiis oerienkommende begripen" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:187 +msgid "skos:exactMatch_help" +msgstr "Presiis oerienkommende begripen yn in oare wurdlist" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:163 +msgid "skos:example" +msgstr "Foarbyld" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:155 +msgid "skos:hasTopConcept" +msgstr "Haadbegryp" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:165 +msgid "skos:historyNote" +msgstr "Skiednisnotysje" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:151 +msgid "skos:inScheme" +msgstr "Subfokabulêr" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:149 +msgid "skos:member" +msgstr "Lid" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:181 +msgid "skos:member_help" +msgstr "Leden fan ’e groep" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:135 +msgid "skos:narrowMatch" +msgstr "Eanger oerienkommende begripen" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:193 +msgid "skos:narrowMatch_help" +msgstr "Eanger oerienkommende begripen yn in oare wurdlist" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:131 +msgid "skos:narrower" +msgstr "Eangere begripen" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:173 +msgid "skos:narrower_help" +msgstr "Eangere begripen." + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:157 +msgid "skos:note" +msgstr "Notysje" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:175 +msgid "skos:note_help" +msgstr "Notysjes" + +#: /tmp/cache/587c83c09abaa/3c/3c4ea3202d0add91bf2080022b707c23115e0beb434024ddb2de27749e6bbe83.php:234 +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:141 +msgid "skos:prefLabel" +msgstr "Foarkarsterm" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:137 +msgid "skos:related" +msgstr "Gearhingjende begripen" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:139 +msgid "skos:relatedMatch" +msgstr "Gearhingjende oerienkommende begripen" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:183 +msgid "skos:related_help" +msgstr "Begripen dy’t gearhingje mei dit begryp" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:159 +msgid "skos:scopeNote" +msgstr "Notysje betsjuttingswiidte" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:177 +msgid "skos:scopeNote_help" +msgstr "Notysjes oar it gebrûk en hoe breed it brûkt wurden kin" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:153 +msgid "skos:topConceptOf" +msgstr "Beheart ta wurdlist" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:197 +msgid "skosext:DeprecatedConcept" +msgstr "Ferfallen begryp" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:195 +msgid "skosext:partOf" +msgstr "Is diel fan" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:199 +msgid "skosext:partOf_help" +msgstr "It gehiel werfan it begryp diel útmakket" + +#: /tmp/cache/587c83c09abaa/3c/3c4ea3202d0add91bf2080022b707c23115e0beb434024ddb2de27749e6bbe83.php:548 +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:201 +#: /tmp/cache/587c83c09abaa/8a/8aeec9eddcf0848575d119210eda5a849c129c96ea86195b4448536a02a47817.php:449 +msgid "skosmos:memberOf" +msgstr "Beheart ta groep" + +#: /tmp/cache/587c83c09abaa/3c/3c4ea3202d0add91bf2080022b707c23115e0beb434024ddb2de27749e6bbe83.php:611 +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:205 +msgid "skosmos:memberOfArray" +msgstr "Beheart ta rige" + +#: /tmp/cache/587c83c09abaa/3c/3c4ea3202d0add91bf2080022b707c23115e0beb434024ddb2de27749e6bbe83.php:609 +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:207 +msgid "skosmos:memberOfArray_help" +msgstr "Rige wêrta it begryp heart" + +#: /tmp/cache/587c83c09abaa/3c/3c4ea3202d0add91bf2080022b707c23115e0beb434024ddb2de27749e6bbe83.php:546 +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:203 +msgid "skosmos:memberOf_help" +msgstr "Groep wêrta it begryp heart" + +#: /tmp/cache/587c83c09abaa/4e/4e05e5051b20c875609479922a558d59b8500ae386eaf79bc460e69d8781a753.php:23 +msgid "zxx-x-taxon" +msgstr "Witttenskiplike namme" + +#: /tmp/cache/587c83c13194c/0b/0bbfc29e05e244fa07889ce1678840902f16e5f76560e00137de0cc3bb084b8b.php:168 +msgid "About page" +msgstr "oar" + +#: /tmp/cache/587c83c13194c/ab/abd3710fda280028e428e4bc415383b12c9a30cc34eadffd21ff4130ae796b99.php:138 +msgid "Alternate terms" +msgstr "Alternative termen" + +#: /tmp/cache/587c83c13194c/ab/abd3710fda280028e428e4bc415383b12c9a30cc34eadffd21ff4130ae796b99.php:130 +msgid "Concept language" +msgstr "Taal" + +#: /tmp/cache/587c83c13194c/ab/abd3710fda280028e428e4bc415383b12c9a30cc34eadffd21ff4130ae796b99.php:118 +msgid "Count" +msgstr "Oantal" + +#: /tmp/cache/587c83c13194c/ab/abd3710fda280028e428e4bc415383b12c9a30cc34eadffd21ff4130ae796b99.php:157 +msgid "Download this vocabulary as SKOS/RDF:" +msgstr "Download dizze wurdlist as SKOS/RDF:" + +#: /tmp/cache/587c83c13194c/0b/0bbfc29e05e244fa07889ce1678840902f16e5f76560e00137de0cc3bb084b8b.php:205 +msgid "Help" +msgstr "Help" + +#: /tmp/cache/587c83c13194c/ab/abd3710fda280028e428e4bc415383b12c9a30cc34eadffd21ff4130ae796b99.php:142 +msgid "Hidden terms" +msgstr "Ferskûle termen" + +#: /tmp/cache/587c83c13194c/0b/0bbfc29e05e244fa07889ce1678840902f16e5f76560e00137de0cc3bb084b8b.php:58 +msgid "Interface language" +msgstr "Brûkersynterfacetaal" + +#: /tmp/cache/587c83c13194c/f9/f9c816822168f230ef0bfed735f5923aab99d389ce8b2c6b2f5fcd5d400bc275.php:26 +msgid "No vocabularies on the server!" +msgstr "Gjin wudlisten op ’e server!" + +#: /tmp/cache/587c83c13194c/ab/abd3710fda280028e428e4bc415383b12c9a30cc34eadffd21ff4130ae796b99.php:134 +msgid "Preferred terms" +msgstr "Foarkarstermen" + +#: /tmp/cache/587c83c13194c/ab/abd3710fda280028e428e4bc415383b12c9a30cc34eadffd21ff4130ae796b99.php:111 +msgid "Resource counts by type" +msgstr "Oantal boarnen per type" + +#: /tmp/cache/587c83c13194c/ab/abd3710fda280028e428e4bc415383b12c9a30cc34eadffd21ff4130ae796b99.php:124 +msgid "Term counts by language" +msgstr "Oantal termen per taal" + +#: /tmp/cache/587c83c13194c/ab/abd3710fda280028e428e4bc415383b12c9a30cc34eadffd21ff4130ae796b99.php:116 +msgid "Type" +msgstr "Type" + +#: /tmp/cache/587c83c13194c/0b/0bbfc29e05e244fa07889ce1678840902f16e5f76560e00137de0cc3bb084b8b.php:146 +msgid "Vocabularies-nav" +msgstr "Wurdlisten" + +#: /tmp/cache/587c83c13194c/ab/abd3710fda280028e428e4bc415383b12c9a30cc34eadffd21ff4130ae796b99.php:24 +msgid "Vocabulary information" +msgstr "Wurdlistynformaasje" + +#: /tmp/cache/587c83c13194c/0b/0bbfc29e05e244fa07889ce1678840902f16e5f76560e00137de0cc3bb084b8b.php:199 +msgid "helper_help" +msgstr "Beweegje jo cursor oer de understippele tekst om oanwizings oer de eigenskip te besjen." + +#: /tmp/cache/587c83c13194c/0b/0bbfc29e05e244fa07889ce1678840902f16e5f76560e00137de0cc3bb084b8b.php:201 +msgid "search_example_text" +msgstr "Foar in ynkoarte sykopdracht, brûk in stjêrke, lykas *dier of *patent*. Oan it ein fan sykwurden komt fansels in stjêrke, sa’t ’kat’ itselde opleveret as ‘kat*’." + +msgid "feedback_enter_name_email" +msgstr "Fier jo namme en e-mailadres yn at jo in antwurd ûntfange meie. Jo ha ek de mooglikheid jo weromkeppeling anonym efter te litten. NB: Weromkeppeling oer in bestimd wurdlist wurdt trochstjoerd nei de behearder derfan." + +msgid "concept_types" +msgstr "Begryptypes" + +msgid "Skip to main" +msgstr "Nei haadinhâld" + +msgid "Available vocabularies and ontologies" +msgstr "Beskikbere wurdlisten en ontologyen" + +msgid "Search from selected vocabularies" +msgstr "Sykje yn selektearde wurdlisten" + +msgid "List vocabulary concepts alphabetically" +msgstr "Skiftsje begripen alfabetysk" + +msgid "List vocabulary concepts and groupings hierarchically" +msgstr "Skiftsje begripen en groepen hiërargysk" + +msgid "List vocabulary concepts by newest additions" +msgstr "Skiftsje begripen nei meast resint tafoege" + +msgid "List vocabulary concepts hierarchically" +msgstr "Skiftsje begripen hiërargysk" + +msgid "Choose alphabetical listing letter" +msgstr "Kies letter foar alfabetyske list" + +msgid "Concept information" +msgstr "Begrypinformaasje" + +msgid "Hierarchical listing of vocabulary concepts" +msgstr "Begripen hiërargysk skifte" + +msgid "Hierarchical listing of vocabulary concepts and groupings" +msgstr "Begripen en groepen hiërargysk skifte" + +msgid "Listing vocabulary concepts alphabetically" +msgstr "Begripen alfabetysk skifte" + +msgid "Listing vocabulary concepts by newest additions" +msgstr "Begripen skifte nei meast resint tafoege" + +msgid "Prefer using" +msgstr "Brûk leaver" + +msgid "Search options tab" +msgstr "Tab foar sykopsjes" + +msgid "Search results" +msgstr "Sykresultaten" + +msgid "Sidebar listing: list and traverse vocabulary contents by a criterion" +msgstr "Sijbalke: skiftsje en blêder troch filtere wurdlistûnderdelen" + +msgid "Subject:" +msgstr "Ûnderwerp" + +msgid "Write a subject" +msgstr "Heak in ûnderwerp ta" + +msgid "Select a vocabulary" +msgstr "Selektearje in wurdlist" + +msgid "" +"We're sorry but Skosmos doesn't work properly without JavaScript enabled. " +"Please enable it to continue." +msgstr "Spitchgenôch hat Skosmos JavaScript nedich. Skakel it yn om fierder te gean." + +msgid "Deprecated concept" +msgstr "Ferfallen begryp" + +msgid "Error: Search failed!" +msgstr "" + +msgid "Error: Failed to retrieve vocabulary information!" +msgstr "" + +msgid "Error: Loading more items failed!" +msgstr "" + +msgid "Retry" +msgstr "" + +msgid "skos:notation" +msgstr "" + +msgid "skos:notation_help" +msgstr "" From 5cf55f04789705b9aed7f83440de5795c2cfad62 Mon Sep 17 00:00:00 2001 From: Ahonen Mika J Date: Wed, 6 Oct 2021 16:12:04 +0300 Subject: [PATCH 46/57] mark the start of 2.13 development From 09fa43278688ca36b49fb2debc691cc98e42bf2f Mon Sep 17 00:00:00 2001 From: Osma Suominen Date: Tue, 2 Nov 2021 09:51:08 +0200 Subject: [PATCH 47/57] Avoid uncaught fatal errors in REST API if vocabulary ID not found. Fixes #1170 --- rest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rest.php b/rest.php index ddd884fcd..107801829 100644 --- a/rest.php +++ b/rest.php @@ -44,7 +44,7 @@ $vocab = $parts[1]; try { $request->setVocab($parts[1]); - } catch (Exception $e) { + } catch (Exception | ValueError $e) { header("HTTP/1.0 404 Not Found"); header("Content-type: text/plain; charset=utf-8"); echo ("404 Not Found : Vocabulary id '$parts[1]' not found."); From 0f19fd020fdd0cb80204890e052a3eb72e078a09 Mon Sep 17 00:00:00 2001 From: Vainonen Date: Thu, 9 Sep 2021 17:31:40 +0300 Subject: [PATCH 48/57] add order of plugins --- controller/WebController.php | 4 +- model/Concept.php | 2 +- model/Request.php | 2 +- model/VocabularyConfig.php | 120 +++++++++++++++++++++++++-------- tests/VocabularyConfigTest.php | 14 +++- tests/testconfig.ttl | 3 + 6 files changed, 111 insertions(+), 34 deletions(-) diff --git a/controller/WebController.php b/controller/WebController.php index f2034280d..7ca7434a5 100644 --- a/controller/WebController.php +++ b/controller/WebController.php @@ -178,7 +178,7 @@ public function invokeVocabularyConcept(Request $request) if ($this->notModified($results[0])) { return; } - $pluginParameters = $vocab->getConfig()->getPluginParameters(); + $pluginParameters = json_encode($vocab->getConfig()->getPluginParameters(), true); $template = (in_array('skos:Concept', $results[0]->getType()) || in_array('skos:ConceptScheme', $results[0]->getType())) ? $this->twig->loadTemplate('concept-info.twig') : $this->twig->loadTemplate('group-contents.twig'); $crumbs = $vocab->getBreadCrumbs($request->getContentLang(), $uri); @@ -532,7 +532,7 @@ public function invokeVocabularyHome($request) $this->invokeGroupIndex($request, true); return; } - $pluginParameters = $vocab->getConfig()->getPluginParameters(); + $pluginParameters = json_encode($vocab->getConfig()->getPluginParameters(), true); $template = $this->twig->loadTemplate('vocab.twig'); diff --git a/model/Concept.php b/model/Concept.php index de875fafd..5ee2e54b5 100644 --- a/model/Concept.php +++ b/model/Concept.php @@ -284,7 +284,7 @@ public function processExternalResource($res) $propList = array_unique(array_merge( $this->DEFAULT_EXT_PROPERTIES, $this->getVocab()->getConfig()->getExtProperties(), - $this->getVocab()->getConfig()->getPlugins()->getExtProperties() + $this->getVocab()->getConfig()->getPluginRegister()->getExtProperties() )); $seen = array(); diff --git a/model/Request.php b/model/Request.php index 000ce384f..4111bd310 100644 --- a/model/Request.php +++ b/model/Request.php @@ -262,7 +262,7 @@ public function getVocabList() { public function getPlugins() { if ($this->vocab) { - return $this->vocab->getConfig()->getPlugins(); + return $this->vocab->getConfig()->getPluginRegister(); } return new PluginRegister($this->model->getConfig()->getGlobalPlugins()); } diff --git a/model/VocabularyConfig.php b/model/VocabularyConfig.php index 12dca0333..6c04766f6 100644 --- a/model/VocabularyConfig.php +++ b/model/VocabularyConfig.php @@ -5,8 +5,8 @@ */ class VocabularyConfig extends BaseConfig { - private $plugins; - private $pluginParameters; + private $pluginRegister; + private $pluginParameters = array(); private $languageOrderCache = array(); const DEFAULT_PROPERTY_ORDER = array("rdf:type", "dc:isReplacedBy", @@ -31,41 +31,97 @@ class VocabularyConfig extends BaseConfig public function __construct($resource, $globalPlugins=array()) { $this->resource = $resource; - $plugins = $this->resource->allLiterals('skosmos:usePlugin'); + $this->globalPlugins = $globalPlugins; + $this->setParametrizedPlugins(); + $pluginArray = $this->getPluginArray(); + $this->pluginRegister = new PluginRegister($pluginArray); + } + + /** + * Get an ordered array of plugin names with order configured in skosmos:vocabularyPlugins + * @return array|null of plugin names + */ + public function getPluginArray() { + $pluginArray = array(); + + $vocabularyPlugins = $this->resource->getResource('skosmos:vocabularyPlugins'); + if ($vocabularyPlugins) { + // $vocabularyPlugins has all resources + foreach ($vocabularyPlugins as $plugin) { + if ($plugin instanceof EasyRdf\Literal) { + $pluginName = $plugin->getValue(); + array_push($pluginArray, $pluginName); + } + else { + array_push($pluginArray, $plugin->getLiteral('skosmos:usePlugin')->getValue()); + } + } + } + $pluginArray = array_merge($pluginArray, $this->globalPlugins); + + $plugins = $this->resource->allLiterals('skosmos:usePlugin'); if ($plugins) { foreach ($plugins as $pluginlit) { - $pluginArray[] = $pluginlit->getValue(); + $pluginName = $pluginlit->getValue(); + array_push($pluginArray, $pluginName); } } - $this->plugins = new PluginRegister(array_merge($globalPlugins, $pluginArray)); - // Get parameterized plugins defined as resources and their respective parameters - $pluginResources = $this->resource->allResources('skosmos:useParamPlugin'); + + $pluginArray = array_values(array_unique(array_merge($pluginArray, array_keys($this->pluginParameters)))); + + return $pluginArray; + + } + + /** + * Sets array of parameterized plugins + * @param Easyrdf\Resource $pluginResource + */ + private function setParametrizedPlugins() { + $this->pluginParameters = array(); + + $vocabularyPlugins = $this->resource->getResource('skosmos:vocabularyPlugins'); + if ($vocabularyPlugins) { + // $vocabularyPlugins has all resources + foreach ($vocabularyPlugins as $plugin) { + if (!$plugin instanceof EasyRdf\Literal) { + $this->setPluginParameters($plugin); + } + } + } + $pluginResources = $this->resource->allResources('skosmos:useParamPlugin'); if ($pluginResources) { foreach ($pluginResources as $pluginResource) { - $pluginName = $pluginResource->getLiteral('skosmos:usePlugin')->getValue(); - $this->pluginParameters[$pluginName] = array(); - - $pluginParams = $pluginResource->allResources('skosmos:parameters'); - foreach ($pluginParams as $parameter) { - - $paramLiterals = $parameter->allLiterals('schema:value'); - foreach ($paramLiterals as $paramLiteral) { - $paramName = $parameter->getLiteral('schema:propertyID')->getValue(); - $paramValue = $paramLiteral->getValue(); - $paramLang = $paramLiteral->getLang(); - if ($paramLang) { - $paramName .= '_' . $paramLang; - } - $this->pluginParameters[$pluginName][$paramName] = $paramValue; - } - } - $pluginArray[] = $pluginName; + $this->setPluginParameters($pluginResource); } - $this->plugins = new PluginRegister(array_merge($globalPlugins, $pluginArray)); } + } + + /** + * Updates array of parameterized plugins adding parameter values + * @param Easyrdf\Resource $pluginResource + */ + private function setPluginParameters(Easyrdf\Resource $pluginResource) : void + { + $pluginName = $pluginResource->getLiteral('skosmos:usePlugin')->getValue(); + $this->pluginParameters[$pluginName] = array(); + $pluginParams = $pluginResource->allResources('skosmos:parameters'); + foreach ($pluginParams as $parameter) { + + $paramLiterals = $parameter->allLiterals('schema:value'); + foreach ($paramLiterals as $paramLiteral) { + $paramName = $parameter->getLiteral('schema:propertyID')->getValue(); + $paramValue = $paramLiteral->getValue(); + $paramLang = $paramLiteral->getLang(); + if ($paramLang) { + $paramName .= '_' . $paramLang; + } + $this->pluginParameters[$pluginName][$paramName] = $paramValue; + } + } } /** @@ -447,6 +503,14 @@ public function getLanguages() * @return string plugin parameters or null */ public function getPluginParameters() { + return $this->pluginParameters; + } + + /** + * Returns the plugin parameters + * @return string plugin parameters or null + */ + public function getEncodedPluginParameters() { return json_encode($this->pluginParameters, true); } @@ -497,9 +561,9 @@ public function getShowStatistics() { return $this->getBoolean('skosmos:showStatistics', true); } - public function getPlugins() + public function getPluginRegister() { - return $this->plugins; + return $this->pluginRegister; } /** diff --git a/tests/VocabularyConfigTest.php b/tests/VocabularyConfigTest.php index 292027faa..ea0828f11 100644 --- a/tests/VocabularyConfigTest.php +++ b/tests/VocabularyConfigTest.php @@ -15,7 +15,7 @@ protected function setUp() : void putenv("LC_ALL=en_GB.utf8"); setlocale(LC_ALL, 'en_GB.utf8'); $this->model = new Model(new GlobalConfig('/../tests/testconfig.ttl')); - $this->assertNotNull($this->model->getVocabulary('test')->getConfig()->getPlugins(), "The PluginRegister of the model was not initialized!"); + $this->assertNotNull($this->model->getVocabulary('test')->getConfig()->getPluginRegister(), "The PluginRegister of the model was not initialized!"); } /** @@ -534,7 +534,17 @@ public function testGetVocabularyUseModifiedDate() { public function testGetPluginParameters() { $vocab = $this->model->getVocabulary('paramPluginTest'); $params = $vocab->getConfig()->getPluginParameters(); - $this->assertEquals(json_encode(array('imaginaryPlugin' => array('poem_fi' => "Roses are red", 'poem' => "Violets are blue", 'color' => "#800000")),true), $params); + //$this->assertEquals(json_encode(array('imaginaryPlugin' => array('poem_fi' => "Roses are red", 'poem' => "Violets are blue", 'color' => "#800000")),true), $params); + $this->assertEquals(array('imaginaryPlugin' => array('poem_fi' => "Roses are red", 'poem' => "Violets are blue", 'color' => "#800000")), $params); + } + + /** + * @covers VocabularyConfig::getPluginArray + */ + public function testGetOrderedPlugins() { + $vocab = $this->model->getVocabulary('paramPluginTest'); + $plugins = $vocab->getConfig()->getPluginArray(); + $this->assertEquals(["plugin2", "Bravo", "imaginaryPlugin", "plugin1", "alpha", "charlie", "plugin3"], $plugins); } /** diff --git a/tests/testconfig.ttl b/tests/testconfig.ttl index f0a5c00c1..a7eb53104 100644 --- a/tests/testconfig.ttl +++ b/tests/testconfig.ttl @@ -357,6 +357,9 @@ skosmos:feedbackRecipient "developer@vocabulary.org"; skosmos:groupClass skos:Collection; skosmos:language "en"; + skosmos:vocabularyPlugins ("plugin2" "Bravo" :parameterizedPlugin "plugin1"); + skosmos:usePlugin "plugin1" ; + skosmos:usePlugin "plugin3" ; skosmos:useParamPlugin :parameterizedPlugin ; skosmos:showTopConcepts "true"; skosmos:shortName "Test params", From 03612b2c27db64376c2a0ef0b8c32d36fccd4ad6 Mon Sep 17 00:00:00 2001 From: Vainonen Date: Tue, 14 Sep 2021 16:23:02 +0300 Subject: [PATCH 49/57] removed unnecessary parameters and functions --- controller/WebController.php | 4 ++-- model/VocabularyConfig.php | 26 +++++++++----------------- tests/VocabularyConfigTest.php | 1 - 3 files changed, 11 insertions(+), 20 deletions(-) diff --git a/controller/WebController.php b/controller/WebController.php index 7ca7434a5..c97c2e839 100644 --- a/controller/WebController.php +++ b/controller/WebController.php @@ -178,7 +178,7 @@ public function invokeVocabularyConcept(Request $request) if ($this->notModified($results[0])) { return; } - $pluginParameters = json_encode($vocab->getConfig()->getPluginParameters(), true); + $pluginParameters = json_encode($vocab->getConfig()->getPluginParameters()); $template = (in_array('skos:Concept', $results[0]->getType()) || in_array('skos:ConceptScheme', $results[0]->getType())) ? $this->twig->loadTemplate('concept-info.twig') : $this->twig->loadTemplate('group-contents.twig'); $crumbs = $vocab->getBreadCrumbs($request->getContentLang(), $uri); @@ -532,7 +532,7 @@ public function invokeVocabularyHome($request) $this->invokeGroupIndex($request, true); return; } - $pluginParameters = json_encode($vocab->getConfig()->getPluginParameters(), true); + $pluginParameters = json_encode($vocab->getConfig()->getPluginParameters()); $template = $this->twig->loadTemplate('vocab.twig'); diff --git a/model/VocabularyConfig.php b/model/VocabularyConfig.php index 6c04766f6..9045d2893 100644 --- a/model/VocabularyConfig.php +++ b/model/VocabularyConfig.php @@ -32,22 +32,21 @@ public function __construct($resource, $globalPlugins=array()) { $this->resource = $resource; $this->globalPlugins = $globalPlugins; - $this->setParametrizedPlugins(); + $this->setParameterizedPlugins(); $pluginArray = $this->getPluginArray(); $this->pluginRegister = new PluginRegister($pluginArray); } /** * Get an ordered array of plugin names with order configured in skosmos:vocabularyPlugins - * @return array|null of plugin names + * @return array of plugin names */ - public function getPluginArray() { - + public function getPluginArray() : array + { $pluginArray = array(); $vocabularyPlugins = $this->resource->getResource('skosmos:vocabularyPlugins'); if ($vocabularyPlugins) { - // $vocabularyPlugins has all resources foreach ($vocabularyPlugins as $plugin) { if ($plugin instanceof EasyRdf\Literal) { $pluginName = $plugin->getValue(); @@ -71,22 +70,22 @@ public function getPluginArray() { $pluginArray = array_values(array_unique(array_merge($pluginArray, array_keys($this->pluginParameters)))); return $pluginArray; - } /** * Sets array of parameterized plugins * @param Easyrdf\Resource $pluginResource + * @return void */ - private function setParametrizedPlugins() { - + private function setParameterizedPlugins() : void + { $this->pluginParameters = array(); $vocabularyPlugins = $this->resource->getResource('skosmos:vocabularyPlugins'); if ($vocabularyPlugins) { // $vocabularyPlugins has all resources foreach ($vocabularyPlugins as $plugin) { - if (!$plugin instanceof EasyRdf\Literal) { + if ($plugin instanceof EasyRdf\Resource) { $this->setPluginParameters($plugin); } } @@ -102,6 +101,7 @@ private function setParametrizedPlugins() { /** * Updates array of parameterized plugins adding parameter values * @param Easyrdf\Resource $pluginResource + * @return void */ private function setPluginParameters(Easyrdf\Resource $pluginResource) : void { @@ -506,14 +506,6 @@ public function getPluginParameters() { return $this->pluginParameters; } - /** - * Returns the plugin parameters - * @return string plugin parameters or null - */ - public function getEncodedPluginParameters() { - return json_encode($this->pluginParameters, true); - } - /** * Returns the vocabulary default sidebar view. * @return string name of the view diff --git a/tests/VocabularyConfigTest.php b/tests/VocabularyConfigTest.php index ea0828f11..dca102a1a 100644 --- a/tests/VocabularyConfigTest.php +++ b/tests/VocabularyConfigTest.php @@ -534,7 +534,6 @@ public function testGetVocabularyUseModifiedDate() { public function testGetPluginParameters() { $vocab = $this->model->getVocabulary('paramPluginTest'); $params = $vocab->getConfig()->getPluginParameters(); - //$this->assertEquals(json_encode(array('imaginaryPlugin' => array('poem_fi' => "Roses are red", 'poem' => "Violets are blue", 'color' => "#800000")),true), $params); $this->assertEquals(array('imaginaryPlugin' => array('poem_fi' => "Roses are red", 'poem' => "Violets are blue", 'color' => "#800000")), $params); } From 141518e8a07d3f640f42cc4edcb7fb5b7f1c7524 Mon Sep 17 00:00:00 2001 From: Vainonen Date: Tue, 14 Sep 2021 16:36:09 +0300 Subject: [PATCH 50/57] removed unnecessary array_merge --- model/VocabularyConfig.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/model/VocabularyConfig.php b/model/VocabularyConfig.php index 9045d2893..2e95a5339 100644 --- a/model/VocabularyConfig.php +++ b/model/VocabularyConfig.php @@ -67,7 +67,7 @@ public function getPluginArray() : array } } - $pluginArray = array_values(array_unique(array_merge($pluginArray, array_keys($this->pluginParameters)))); + $pluginArray = array_values(array_unique($pluginArray)); return $pluginArray; } From 393ad96ff4481b8e4d7c774731b64d8d6cc23995 Mon Sep 17 00:00:00 2001 From: Vainonen Date: Thu, 16 Sep 2021 14:43:35 +0300 Subject: [PATCH 51/57] modified comments and adding variables to arrays --- model/VocabularyConfig.php | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/model/VocabularyConfig.php b/model/VocabularyConfig.php index 2e95a5339..f540e939f 100644 --- a/model/VocabularyConfig.php +++ b/model/VocabularyConfig.php @@ -46,14 +46,16 @@ public function getPluginArray() : array $pluginArray = array(); $vocabularyPlugins = $this->resource->getResource('skosmos:vocabularyPlugins'); + if (!is_array($vocabularyPlugins)) { + $vocabularyPlugins = $this->resource->all('skosmos:vocabularyPlugins'); + } if ($vocabularyPlugins) { foreach ($vocabularyPlugins as $plugin) { if ($plugin instanceof EasyRdf\Literal) { - $pluginName = $plugin->getValue(); - array_push($pluginArray, $pluginName); + $pluginArray[] = $plugin->getValue(); } - else { - array_push($pluginArray, $plugin->getLiteral('skosmos:usePlugin')->getValue()); + else if ($plugin instanceof EasyRdf\Resource) { + $pluginArray[] = $plugin->getLiteral('skosmos:usePlugin')->getValue(); } } } @@ -62,14 +64,10 @@ public function getPluginArray() : array $plugins = $this->resource->allLiterals('skosmos:usePlugin'); if ($plugins) { foreach ($plugins as $pluginlit) { - $pluginName = $pluginlit->getValue(); - array_push($pluginArray, $pluginName); + $pluginArray[] = $pluginlit->getValue(); } } - - $pluginArray = array_values(array_unique($pluginArray)); - - return $pluginArray; + return array_values(array_unique($pluginArray)); } /** @@ -83,7 +81,6 @@ private function setParameterizedPlugins() : void $vocabularyPlugins = $this->resource->getResource('skosmos:vocabularyPlugins'); if ($vocabularyPlugins) { - // $vocabularyPlugins has all resources foreach ($vocabularyPlugins as $plugin) { if ($plugin instanceof EasyRdf\Resource) { $this->setPluginParameters($plugin); @@ -499,8 +496,8 @@ public function getLanguages() } /** - * Returns the plugin parameters - * @return string plugin parameters or null + * Returns the parameters of parameterized plugins + * @return array of plugin parameters */ public function getPluginParameters() { return $this->pluginParameters; From de12c0a1fc36c3198d9898a58af8ed12bc2701f4 Mon Sep 17 00:00:00 2001 From: Vainonen Date: Thu, 16 Sep 2021 16:27:46 +0300 Subject: [PATCH 52/57] fixed getPluginArray function and added test --- model/VocabularyConfig.php | 7 +++---- tests/VocabularyConfigTest.php | 10 ++++++++++ tests/testconfig.ttl | 9 +++++++++ 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/model/VocabularyConfig.php b/model/VocabularyConfig.php index f540e939f..1a4f56de2 100644 --- a/model/VocabularyConfig.php +++ b/model/VocabularyConfig.php @@ -44,17 +44,16 @@ public function __construct($resource, $globalPlugins=array()) public function getPluginArray() : array { $pluginArray = array(); - $vocabularyPlugins = $this->resource->getResource('skosmos:vocabularyPlugins'); - if (!is_array($vocabularyPlugins)) { - $vocabularyPlugins = $this->resource->all('skosmos:vocabularyPlugins'); + if (!$vocabularyPlugins instanceof EasyRdf\Collection) { + $vocabularyPlugins = $this->resource->all('skosmos:vocabularyPlugins'); } if ($vocabularyPlugins) { foreach ($vocabularyPlugins as $plugin) { if ($plugin instanceof EasyRdf\Literal) { $pluginArray[] = $plugin->getValue(); } - else if ($plugin instanceof EasyRdf\Resource) { + else { $pluginArray[] = $plugin->getLiteral('skosmos:usePlugin')->getValue(); } } diff --git a/tests/VocabularyConfigTest.php b/tests/VocabularyConfigTest.php index dca102a1a..c139bc4f2 100644 --- a/tests/VocabularyConfigTest.php +++ b/tests/VocabularyConfigTest.php @@ -546,6 +546,16 @@ public function testGetOrderedPlugins() { $this->assertEquals(["plugin2", "Bravo", "imaginaryPlugin", "plugin1", "alpha", "charlie", "plugin3"], $plugins); } + /** + * @covers VocabularyConfig::getPluginArray + */ + public function testGetUnorderedVocabularyPlugins() { + $vocab = $this->model->getVocabulary('paramPluginOrderTest'); + $plugins = $vocab->getConfig()->getPluginArray(); + $arrayElements = ["plugin2", "Bravo", "imaginaryPlugin", "plugin1", "alpha", "charlie", "plugin3"]; + $this->assertEquals(sort($arrayElements), sort($plugins)); + } + /** * @covers VocabularyConfig::getPropertyOrder */ diff --git a/tests/testconfig.ttl b/tests/testconfig.ttl index a7eb53104..a93b4a2da 100644 --- a/tests/testconfig.ttl +++ b/tests/testconfig.ttl @@ -345,6 +345,15 @@ skosmos:sparqlGraph ; skosmos:mainConceptScheme test:notationMainConceptScheme . +:paramPluginOrderTest a skosmos:Vocabulary, void:Dataset ; + dc:title "Test plugin order"@en ; + void:dataDump ; + void:uriSpace "http://www.skosmos.skos/test/"; + skosmos:vocabularyPlugins "plugin2", "Bravo", :parameterizedPlugin, "plugin1"; + skosmos:usePlugin "plugin1" ; + skosmos:usePlugin "plugin3" ; + skosmos:useParamPlugin :parameterizedPlugin . + :paramPluginTest a skosmos:Vocabulary, void:Dataset ; dc:title "Test plugin parameters"@en ; dc:subject :cat_science ; From 06e1237b82d158add25dee3b1a6ac37bb8bcb915 Mon Sep 17 00:00:00 2001 From: Vainonen Date: Wed, 6 Oct 2021 11:58:32 +0300 Subject: [PATCH 53/57] added check for getting plugin order --- model/VocabularyConfig.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/model/VocabularyConfig.php b/model/VocabularyConfig.php index 1a4f56de2..bf33a62b6 100644 --- a/model/VocabularyConfig.php +++ b/model/VocabularyConfig.php @@ -79,6 +79,9 @@ private function setParameterizedPlugins() : void $this->pluginParameters = array(); $vocabularyPlugins = $this->resource->getResource('skosmos:vocabularyPlugins'); + if (!$vocabularyPlugins instanceof EasyRdf\Collection) { + $vocabularyPlugins = $this->resource->all('skosmos:vocabularyPlugins'); + } if ($vocabularyPlugins) { foreach ($vocabularyPlugins as $plugin) { if ($plugin instanceof EasyRdf\Resource) { From 152e2a6b8ab7dd81d2dd197d69c4148de34e1781 Mon Sep 17 00:00:00 2001 From: Vainonen Date: Thu, 9 Sep 2021 17:31:40 +0300 Subject: [PATCH 54/57] add order of plugins --- model/VocabularyConfig.php | 3 ++- tests/VocabularyConfigTest.php | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/model/VocabularyConfig.php b/model/VocabularyConfig.php index bf33a62b6..42681d2bb 100644 --- a/model/VocabularyConfig.php +++ b/model/VocabularyConfig.php @@ -63,7 +63,8 @@ public function getPluginArray() : array $plugins = $this->resource->allLiterals('skosmos:usePlugin'); if ($plugins) { foreach ($plugins as $pluginlit) { - $pluginArray[] = $pluginlit->getValue(); + $pluginName = $pluginlit->getValue(); + array_push($pluginArray, $pluginName); } } return array_values(array_unique($pluginArray)); diff --git a/tests/VocabularyConfigTest.php b/tests/VocabularyConfigTest.php index c139bc4f2..49bd404da 100644 --- a/tests/VocabularyConfigTest.php +++ b/tests/VocabularyConfigTest.php @@ -534,6 +534,7 @@ public function testGetVocabularyUseModifiedDate() { public function testGetPluginParameters() { $vocab = $this->model->getVocabulary('paramPluginTest'); $params = $vocab->getConfig()->getPluginParameters(); + //$this->assertEquals(json_encode(array('imaginaryPlugin' => array('poem_fi' => "Roses are red", 'poem' => "Violets are blue", 'color' => "#800000")),true), $params); $this->assertEquals(array('imaginaryPlugin' => array('poem_fi' => "Roses are red", 'poem' => "Violets are blue", 'color' => "#800000")), $params); } From 8e16c57bd3d082fdce8633841064fc7da6bfc519 Mon Sep 17 00:00:00 2001 From: Vainonen Date: Tue, 14 Sep 2021 16:23:02 +0300 Subject: [PATCH 55/57] removed unnecessary parameters and functions --- tests/VocabularyConfigTest.php | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/VocabularyConfigTest.php b/tests/VocabularyConfigTest.php index 49bd404da..c139bc4f2 100644 --- a/tests/VocabularyConfigTest.php +++ b/tests/VocabularyConfigTest.php @@ -534,7 +534,6 @@ public function testGetVocabularyUseModifiedDate() { public function testGetPluginParameters() { $vocab = $this->model->getVocabulary('paramPluginTest'); $params = $vocab->getConfig()->getPluginParameters(); - //$this->assertEquals(json_encode(array('imaginaryPlugin' => array('poem_fi' => "Roses are red", 'poem' => "Violets are blue", 'color' => "#800000")),true), $params); $this->assertEquals(array('imaginaryPlugin' => array('poem_fi' => "Roses are red", 'poem' => "Violets are blue", 'color' => "#800000")), $params); } From 8f8812dd822f90ea96aecb678bd0e299e9e0f31e Mon Sep 17 00:00:00 2001 From: Vainonen Date: Thu, 16 Sep 2021 14:43:35 +0300 Subject: [PATCH 56/57] modified comments and adding variables to arrays --- model/VocabularyConfig.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/model/VocabularyConfig.php b/model/VocabularyConfig.php index 42681d2bb..bf33a62b6 100644 --- a/model/VocabularyConfig.php +++ b/model/VocabularyConfig.php @@ -63,8 +63,7 @@ public function getPluginArray() : array $plugins = $this->resource->allLiterals('skosmos:usePlugin'); if ($plugins) { foreach ($plugins as $pluginlit) { - $pluginName = $pluginlit->getValue(); - array_push($pluginArray, $pluginName); + $pluginArray[] = $pluginlit->getValue(); } } return array_values(array_unique($pluginArray)); From 148ded6bedd8738115fa666f0ecc3b618968f5b8 Mon Sep 17 00:00:00 2001 From: Vainonen Date: Tue, 2 Nov 2021 15:04:00 +0200 Subject: [PATCH 57/57] added covers annotation to VocabularyConfigTest --- tests/VocabularyConfigTest.php | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/VocabularyConfigTest.php b/tests/VocabularyConfigTest.php index c139bc4f2..1eb7cd42e 100644 --- a/tests/VocabularyConfigTest.php +++ b/tests/VocabularyConfigTest.php @@ -7,6 +7,7 @@ class VocabularyConfigTest extends PHPUnit\Framework\TestCase /** * @covers VocabularyConfig::getConfig + * @covers VocabularyConfig::getPluginRegister * @throws Exception */ protected function setUp() : void