diff --git a/transformations/cdi/codebook_cdi_transformer/.gitignore b/transformations/cdi/codebook_cdi_transformer/.gitignore new file mode 100644 index 0000000..20a391f --- /dev/null +++ b/transformations/cdi/codebook_cdi_transformer/.gitignore @@ -0,0 +1,3 @@ +*.pyc +*.yaml +*.egg-info diff --git a/transformations/cdi/codebook_cdi_transformer/.pylintrc b/transformations/cdi/codebook_cdi_transformer/.pylintrc new file mode 100644 index 0000000..7615b86 --- /dev/null +++ b/transformations/cdi/codebook_cdi_transformer/.pylintrc @@ -0,0 +1,2 @@ +[FORMAT] +max-line-length=120 diff --git a/transformations/cdi/codebook_cdi_transformer/CHANGES.rst b/transformations/cdi/codebook_cdi_transformer/CHANGES.rst new file mode 100644 index 0000000..4d88bfa --- /dev/null +++ b/transformations/cdi/codebook_cdi_transformer/CHANGES.rst @@ -0,0 +1,8 @@ +DDI-C to DDI-CDI Transformer changelog +====================================== + +0.1.0 (2023-03-26) +------------------ + +* Initial release + diff --git a/transformations/cdi/codebook_cdi_transformer/INSTALL.rst b/transformations/cdi/codebook_cdi_transformer/INSTALL.rst new file mode 100644 index 0000000..36e1a5b --- /dev/null +++ b/transformations/cdi/codebook_cdi_transformer/INSTALL.rst @@ -0,0 +1,73 @@ +Installing SaxonC +----------------- + +Rocky Linux 8 +````````````` + +1. cd /your/path +2. wget https://www.saxonica.com/download/libsaxon-HEC-setup64-v11.4.zip +3. unzip libsaxon-HEC-setup64-v11.4.zip +4. rm libsaxon-HEC-setup64-v11.4.zip +5. cd libsaxon-HEC-11.4/ +6. sudo cp libsaxonhec.so /usr/lib/. +7. sudo cp -r rt /usr/lib/. +8. sudo cp -r saxon-data /usr/lib/. +9. export SAXONC_HOME=/usr/lib +10. cd Saxon.C.API/python-saxon/ +11. sudo yum install gcc +12. sudo yum install gcc-c++ +13. sudo yum install python3-devel +14. pip3 install --user cython +15. python3 saxon-setup.py build_ext -if +16. export PYTHONPATH=$PYTHONPATH:/your/path/to/libsaxon-HEC-11.4/Saxon.C.API/python-saxon + +Ubuntu 20.04 +```````````` + +1. cd /your/path +2. wget https://www.saxonica.com/download/libsaxon-HEC-setup64-v11.4.zip +3. sudo apt-get install unzip +4. unzip libsaxon-HEC-setup64-v11.4.zip +5. rm libsaxon-HEC-setup64-v11.4.zip +6. cd libsaxon-HEC-11.4/ +7. sudo cp libsaxonhec.so /usr/lib/. +8. sudo cp -r rt /usr/lib/. +9. sudo cp -r saxon-data /usr/lib/. +10. export SAXONC_HOME=/usr/lib +11. cd Saxon.C.API/python-saxon/ +12. sudo apt-get install gcc +13. sudo apt-get install python3-dev +14. sudo apt-get install python3-pip +15. sudo apt install python3.8-venv +16. pip3 install --user cython +17. python3 saxon-setup.py build_ext -if +18. export PYTHONPATH=$PYTHONPATH:/your/path/to/libsaxon-HEC-11.4/Saxon.C.API/python-saxon + +Adding environment variable to automatically be exported by login shells +```````````````````````````````````````````````````````````````````````` + +sudo nano /etc/profile.d/saxonc_pythonpath.sh +export PYTHONPATH=$PYTHONPATH:/your/path/to/libsaxon-HEC-11.4/Saxon.C.API/python-saxon + +Installing DDI-C to DDI-CDI Transformer +--------------------------------------- + +1. Change to repository directory + + cd ddi-xslt/transformations/cdi/codebook_cdi_transformer + +2. Create virtualenv + + python3 -m venv ../codebook_cdi_transformer-env + +3. Activate virtualenv + + source ../codebook_cdi_transformer-env/bin/activate + +4. Install requirements + + pip install -r requirements.txt + +5. Install codebook-cdi-transformer + + pip install . diff --git a/transformations/cdi/codebook_cdi_transformer/LICENSE.txt b/transformations/cdi/codebook_cdi_transformer/LICENSE.txt new file mode 100644 index 0000000..6ff828e --- /dev/null +++ b/transformations/cdi/codebook_cdi_transformer/LICENSE.txt @@ -0,0 +1,56 @@ +GNU LESSER GENERAL PUBLIC LICENSE +Version 3, 29 June 2007 + +Copyright © 2007 Free Software Foundation, Inc. + +Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. + +This version of the GNU Lesser General Public License incorporates the terms and conditions of version 3 of the GNU General Public License, supplemented by the additional permissions listed below. + +0. Additional Definitions. +As used herein, “this License” refers to version 3 of the GNU Lesser General Public License, and the “GNU GPL” refers to version 3 of the GNU General Public License. + +“The Library” refers to a covered work governed by this License, other than an Application or a Combined Work as defined below. + +An “Application” is any work that makes use of an interface provided by the Library, but which is not otherwise based on the Library. Defining a subclass of a class defined by the Library is deemed a mode of using an interface provided by the Library. + +A “Combined Work” is a work produced by combining or linking an Application with the Library. The particular version of the Library with which the Combined Work was made is also called the “Linked Version”. + +The “Minimal Corresponding Source” for a Combined Work means the Corresponding Source for the Combined Work, excluding any source code for portions of the Combined Work that, considered in isolation, are based on the Application, and not on the Linked Version. + +The “Corresponding Application Code” for a Combined Work means the object code and/or source code for the Application, including any data and utility programs needed for reproducing the Combined Work from the Application, but excluding the System Libraries of the Combined Work. + +1. Exception to Section 3 of the GNU GPL. +You may convey a covered work under sections 3 and 4 of this License without being bound by section 3 of the GNU GPL. + +2. Conveying Modified Versions. +If you modify a copy of the Library, and, in your modifications, a facility refers to a function or data to be supplied by an Application that uses the facility (other than as an argument passed when the facility is invoked), then you may convey a copy of the modified version: + +a) under this License, provided that you make a good faith effort to ensure that, in the event an Application does not supply the function or data, the facility still operates, and performs whatever part of its purpose remains meaningful, or +b) under the GNU GPL, with none of the additional permissions of this License applicable to that copy. +3. Object Code Incorporating Material from Library Header Files. +The object code form of an Application may incorporate material from a header file that is part of the Library. You may convey such object code under terms of your choice, provided that, if the incorporated material is not limited to numerical parameters, data structure layouts and accessors, or small macros, inline functions and templates (ten or fewer lines in length), you do both of the following: + +a) Give prominent notice with each copy of the object code that the Library is used in it and that the Library and its use are covered by this License. +b) Accompany the object code with a copy of the GNU GPL and this license document. +4. Combined Works. +You may convey a Combined Work under terms of your choice that, taken together, effectively do not restrict modification of the portions of the Library contained in the Combined Work and reverse engineering for debugging such modifications, if you also do each of the following: + +a) Give prominent notice with each copy of the Combined Work that the Library is used in it and that the Library and its use are covered by this License. +b) Accompany the Combined Work with a copy of the GNU GPL and this license document. +c) For a Combined Work that displays copyright notices during execution, include the copyright notice for the Library among these notices, as well as a reference directing the user to the copies of the GNU GPL and this license document. +d) Do one of the following: +0) Convey the Minimal Corresponding Source under the terms of this License, and the Corresponding Application Code in a form suitable for, and under terms that permit, the user to recombine or relink the Application with a modified version of the Linked Version to produce a modified Combined Work, in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source. +1) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (a) uses at run time a copy of the Library already present on the user's computer system, and (b) will operate properly with a modified version of the Library that is interface-compatible with the Linked Version. +e) Provide Installation Information, but only if you would otherwise be required to provide such information under section 6 of the GNU GPL, and only to the extent that such information is necessary to install and execute a modified version of the Combined Work produced by recombining or relinking the Application with a modified version of the Linked Version. (If you use option 4d0, the Installation Information must accompany the Minimal Corresponding Source and Corresponding Application Code. If you use option 4d1, you must provide the Installation Information in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.) +5. Combined Libraries. +You may place library facilities that are a work based on the Library side by side in a single library together with other library facilities that are not Applications and are not covered by this License, and convey such a combined library under terms of your choice, if you do both of the following: + +a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities, conveyed under the terms of this License. +b) Give prominent notice with the combined library that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. +6. Revised Versions of the GNU Lesser General Public License. +The Free Software Foundation may publish revised and/or new versions of the GNU Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library as you received it specifies that a certain numbered version of the GNU Lesser General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that published version or of any later version published by the Free Software Foundation. If the Library as you received it does not specify a version number of the GNU Lesser General Public License, you may choose any version of the GNU Lesser General Public License ever published by the Free Software Foundation. + +If the Library as you received it specifies that a proxy can decide whether future versions of the GNU Lesser General Public License shall apply, that proxy's public statement of acceptance of any version is permanent authorization for you to choose that version for the Library. \ No newline at end of file diff --git a/transformations/cdi/codebook_cdi_transformer/README.md b/transformations/cdi/codebook_cdi_transformer/README.md new file mode 100644 index 0000000..3c89dce --- /dev/null +++ b/transformations/cdi/codebook_cdi_transformer/README.md @@ -0,0 +1,11 @@ +# DDI-C to DDI-CDI Transformer + +Created for transforming DDI-Codebook 2.5 to DDI-CDI 1.0 but can also be used for transformations with other XSLT files. +Development work was part of DDI Hackathon 2023 by Markus Tuominen, Thomas Gilders and Alizera Davoudian. + +## XML Validation + +With xmllint: + +- curl -o DDI-CDI_1-0.xsd https://ddi-alliance.bitbucket.io/DDI-CDI/DDI-CDI_2022-10-06/encoding/xsd/DDI-CDI_1-0.xsd +- xmllint --noout --schema DDI-CDI_1-0.xsd /path/to/cdi.xml diff --git a/transformations/cdi/codebook_cdi_transformer/VERSION b/transformations/cdi/codebook_cdi_transformer/VERSION new file mode 100644 index 0000000..6e8bf73 --- /dev/null +++ b/transformations/cdi/codebook_cdi_transformer/VERSION @@ -0,0 +1 @@ +0.1.0 diff --git a/transformations/cdi/codebook_cdi_transformer/codebook_cdi_transformer/__init__.py b/transformations/cdi/codebook_cdi_transformer/codebook_cdi_transformer/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/transformations/cdi/codebook_cdi_transformer/codebook_cdi_transformer/__main__.py b/transformations/cdi/codebook_cdi_transformer/codebook_cdi_transformer/__main__.py new file mode 100644 index 0000000..2860cdf --- /dev/null +++ b/transformations/cdi/codebook_cdi_transformer/codebook_cdi_transformer/__main__.py @@ -0,0 +1,71 @@ +#!/usr/bin/env python3 +"""Read/write/transform metadata""" +import sys +import logging +from pathlib import Path +import configargparse +import yaml +from py12flogging import log_formatter + +from .read_write_metadata import ReadWriteMetadata +from .transform_metadata import TransformMetadata + +log_formatter.setup_app_logging('codebook_cdi_transformer', loglevel=logging.INFO) + +logger = logging.getLogger(__name__) + +def parse_all_args(): + ''' + Parse arguments from environment variables, configuration files and/or command line parameters + + Returns: + options (argparse.Namespace): Parsed arguments + ''' + parser = configargparse.ArgParser(config_file_parser_class=configargparse.ConfigparserConfigFileParser, + default_config_files=['configuration.yaml']) + parser.add('-p', '--print_current_config', help='Show keys and values added to namespace and where they come from', + action='store_true') + parser.add('-c', '--config', is_config_file=True, help='Config file path') + parser.add('-v', help='verbose', action='store_true') + directory_path_group = parser.add_argument_group("Directory paths", "Set paths for writing/reading files") + directory_path_group.add('-cb', '--codebook_directory_path', + help='Path to directory where to write/read harvested metadata files', + env_var='XML_TRANSFORMER_CODEBOOK_DIRECTORY_PATH') + directory_path_group.add('-cdi', '--cdi_directory_path', + help='Path to directory where to write/read transformed metadata files', + env_var='XML_TRANSFORMER_CDI_DIRECTORY_PATH') + transform_metadata_group = parser.add_argument_group("CDI", "Settings related to CDI") + transform_metadata_group.add('-x', '--xslt_path', + help='Path to XSLT file for transforming Codebook to CDI', + env_var='XML_TRANSFORMER_XSLT_PATH', type=yaml.safe_load) + options = parser.parse_args() + + if options.print_current_config: + print(options) + print("----------") + print(parser.format_values()) + sys.exit(0) + + return options + + +def main(): + ''' + Transform and write metadata to filesystem in DDI-CDI format + + Returns: + 0 (int): Returns 0 on success + ''' + args = parse_all_args() + codebook_directory = ReadWriteMetadata(args.codebook_directory_path) + + # Could get things like registrationAuthorityIdentifier or versionIdentifier from config instead of DDI-C xml + # and pass them to TransformMetadata here for adding them to DDI-CDI xml + transform = TransformMetadata(args.cdi_directory_path, args.xslt_path) + transform.start_transformation(codebook_directory) + + return 0 + + +if __name__ == '__main__': + sys.exit(main()) diff --git a/transformations/cdi/codebook_cdi_transformer/codebook_cdi_transformer/read_write_metadata.py b/transformations/cdi/codebook_cdi_transformer/codebook_cdi_transformer/read_write_metadata.py new file mode 100644 index 0000000..52d418e --- /dev/null +++ b/transformations/cdi/codebook_cdi_transformer/codebook_cdi_transformer/read_write_metadata.py @@ -0,0 +1,144 @@ +#!/usr/bin/env python3 +"""Read/write metadata files""" +import html +import re +import logging +from pathlib import Path +from lxml import etree + +logger = logging.getLogger(__name__) + + +NAMESPACES_DDI = {"c": "ddi:codebook:2_5", + "xml": "http://www.w3.org/XML/1998/namespace"} +MALFORMED_HTML_REPLACE = {"
": "
", + " ": " "} +TAGS_HTML_STRIP_DDI = ["abstract", + "restrctn"] + + +# Borrowed from kuha_common.document_store.mappings.xmlbase +def element_remove_whitespaces(element): + """Conversion function to remove extra whitespace from end of element text. + + Iterates element's inner text using + :meth:`xml.etree.ElementTree.Element.itertext` + which iterates over this element and all subelements. + Removes extra whitespaces so paragraphs of text will + only have one separating whitespace character. + + :param element: Element from which to get text. + :type element: :obj:`xml.etree.ElementTree.Element` + :returns: Element's inner text without extra whitespace. + :rtype: str + """ + value = "" + ends_with_space = False + for text in element.itertext(): + text = " ".join([_p.strip() for _p in text.split("\n")]) + if not ends_with_space and value != "": + value = value + " " + text.lstrip() + else: + value += text.lstrip() + ends_with_space = text.endswith(" ") + if ends_with_space: + value = value.rstrip() + return value + + +class ReadWriteMetadata(): + """Read and write metadata in file system using xml format. + + Attributes: + directory_path (str): Directory for reading and writing metadata files. + + """ + def __init__(self, directory_path): + self.directory_path = Path(directory_path) + + if not self.directory_path.exists() or not self.directory_path.is_dir(): + self.directory_path.mkdir(parents=True, exist_ok=True) + logger.info('Directory for xml files created in %s.', self.directory_path) + + def write_record(self, filename, content, directory=None): + ''' + Writes record on filesystem + + Args: + filename (str): Name for the file + content (str): Content to write + directory (str): Optional directory path if not using the one initialized with the class + ''' + write_path = Path(directory) if directory is not None else self.directory_path + if not write_path.exists() or not write_path.is_dir(): + write_path.mkdir(parents=True, exist_ok=True) + logger.info('Subdirectory for xml files created in %s.', write_path) + full_write_path = write_path / filename + + with open(full_write_path, 'wb') as write_file: + write_file.write(content) + + def read_and_yield_records(self, directory=None, subdirectory=None, to_string=False): + ''' + Reads metadata records in directory and yields them for transforming + + Args: + directory (str): Optional directory path if not using the one initialized with the class + subdirectory (str): Optional subdirectory path to limit reading to one subdirectory + to_string (bool): Returns content as str if True and as lxml.etree._Element if False + + Returns: + record (dict): All information about the record: name, path on filesystem and content + ''' + read_path = Path(directory) if directory is not None else self.directory_path + parser = etree.XMLParser(remove_blank_text=True) + subdir = subdirectory if subdirectory else '**' + for file_path in read_path.glob('**/' + subdir + '/*.xml'): + tree = etree.parse(file_path, parser) + file_content = etree.tostring(tree, encoding='unicode', pretty_print=True) if to_string else tree + yield {'name': str(file_path).rsplit('/', maxsplit=1)[-1], 'path': str(file_path), 'content': file_content} + + def strip_html_from_xml_string(self, xml_string, record_id): + ''' + Unescapes XML string, parses it and removes html from certain elements + + Args: + xml_string (str): Original XML string before unescaping + record_id (str): ID of the record for logging errors + + Returns: + metadata_tree (lxml.etree._Element): XML content after fixing and removing html + ''' + # Using parser with recover=True means some errors, i.e. broken html, may result in some metadata being left out + # but it allows parsing to complete despite those errors that we are hopefully fixing anyway + parser_recover = etree.XMLParser(encoding='utf-8', recover=True) + xml_string_html_unescape = html.unescape(xml_string) + # Replace html tags that are known to be malformed in some study xml files + for tag, value in MALFORMED_HTML_REPLACE.items(): + xml_string_html_unescape = re.sub(tag, value, xml_string_html_unescape, flags=re.I) + metadata_tree = etree.fromstring(xml_string_html_unescape, parser_recover) + + # Remove html tags + for tag in TAGS_HTML_STRIP_DDI: + for possible_html_element in metadata_tree.findall(".//*/c:" + tag + "[@xml:lang='en']", + namespaces=NAMESPACES_DDI): + # Recreate clean element and delete previous mess + text_html_removed_element = etree.SubElement(possible_html_element.getparent(), + '{' + NAMESPACES_DDI['c'] + '}' + tag) + text_html_removed_element.attrib['{' + NAMESPACES_DDI['xml'] + '}lang'] = 'en' + text_html_removed_element.text = element_remove_whitespaces(possible_html_element) + possible_html_element.getparent().remove(possible_html_element) + + # See if we can now parse file without recover=True + # Return None if there's still issues + try: + xml_string_cleaned = etree.tostring(metadata_tree, encoding='unicode') + parser_no_recover = etree.XMLParser(encoding='utf-8') + metadata_tree_cleaned = etree.fromstring(xml_string_cleaned, parser_no_recover) + except etree.XMLSyntaxError as err: + logger.error("XML syntax error %s in %s", err, record_id) + return None + except BaseException as err: + logger.error("Unexpected error %s in %s", err, record_id) + return None + return metadata_tree_cleaned diff --git a/transformations/cdi/codebook_cdi_transformer/codebook_cdi_transformer/transform_metadata.py b/transformations/cdi/codebook_cdi_transformer/codebook_cdi_transformer/transform_metadata.py new file mode 100644 index 0000000..5a40799 --- /dev/null +++ b/transformations/cdi/codebook_cdi_transformer/codebook_cdi_transformer/transform_metadata.py @@ -0,0 +1,82 @@ +#!/usr/bin/env python3 +"""Transform XML metadata""" +import logging +import os +from datetime import date +from lxml import etree +# prettierfier is used to prettify xml but etree could probably do the same with indent when Python is 3.9+ +import prettierfier +from pathlib import Path + +from .read_write_metadata import ReadWriteMetadata +from saxonc import PySaxonProcessor + +logger = logging.getLogger(__name__) + + +class TransformMetadata(): + ''' + Read XML metadata from file system in DDI 2.5 format and transform it to CDI 1.0 + + Attributes: + xslt_filepath (dict): XSLT file to use for transforming + ''' + def __init__(self, cdi_directory_path, xslt_filepath=None): + self.cdi_directory_path = cdi_directory_path + self.cdi_directory = ReadWriteMetadata(self.cdi_directory_path) + dirname = os.path.dirname(__file__) + self.xslt_filepath = os.path.join(dirname, 'ddi25_to_cdi10.xslt') + if xslt_filepath: + self.xslt_filepath = os.path.normpath(xslt_filepath) + + def transform_to_cdi(self, filename): + ''' + Transforms XML with XSLT file by using saxon and also checks for mandatory fields before returning + + Args: + filename (str): Absolute or relative path to file to transform + + Returns: + cdi_xml_string (str): CDI XML string + ''' + with PySaxonProcessor(license=False) as proc: + # Create new xslt processor and set xslt + try: + xsltproc = proc.new_xslt30_processor() + executable = xsltproc.compile_stylesheet(stylesheet_file=self.xslt_filepath) + executable.set_result_as_raw_value(True) + + # Set source file + executable.set_initial_match_selection(file_name=filename) + + # Set example variable + # example_value = proc.make_string_value("example") + # executable.set_parameter("example", example_value) + + cdi_xml_string = executable.apply_templates_returning_string() + except AttributeError as err: + logger.error("Attribute error: '%s' in %s", err, filename) + return None + except BaseException as err: + logger.error("Unexpected error: '%s' in %s", err, filename) + return None + return cdi_xml_string + + def start_transformation(self, codebook_directory): + ''' + Transforms metadata in Codebook directory to CDI Directorry + + Args: + codebook_directory (ReadWriteMetadata): Previously initialized class for Codebook xml files + ''' + # Loop through codebook records + for metadata in codebook_directory.read_and_yield_records(): + # Try to transform to CDI + cdi_metadata = self.transform_to_cdi(metadata['path']) + if cdi_metadata: + cdi_metadata = prettierfier.prettify_xml(cdi_metadata, indent=2, debug=False) + cdi_metadata = etree.fromstring(cdi_metadata) + cdi_metadata = etree.tostring(cdi_metadata, xml_declaration=True, encoding='utf8') + self.cdi_directory.write_record(metadata['name'], cdi_metadata) + cdi_metadata = None + logger.info("Wrote transformed metadata to %s/%s", self.cdi_directory_path, metadata['name']) diff --git a/transformations/cdi/codebook_cdi_transformer/configuration.yaml.dist b/transformations/cdi/codebook_cdi_transformer/configuration.yaml.dist new file mode 100644 index 0000000..137334e --- /dev/null +++ b/transformations/cdi/codebook_cdi_transformer/configuration.yaml.dist @@ -0,0 +1,6 @@ +[read_write_metadata] +codebook_directory_path: /path/to/codebook_xml_files +cdi_directory_path: /path/to/cdi_xml_files + +[transform_metadata] +xslt_path: /path/to/ddi-xslt/transformations/cdi/from-ddi-2.5.xslt diff --git a/transformations/cdi/codebook_cdi_transformer/requirements-dev.txt b/transformations/cdi/codebook_cdi_transformer/requirements-dev.txt new file mode 100644 index 0000000..6a9baac --- /dev/null +++ b/transformations/cdi/codebook_cdi_transformer/requirements-dev.txt @@ -0,0 +1,8 @@ +# Direct dependencies +ConfigArgParse==1.5.3 +lxml==4.9.1 +prettierfier==1.0.3 +py12flogging==0.5.0 +PyYAML==6.0 + +# Indirect dependencies diff --git a/transformations/cdi/codebook_cdi_transformer/requirements.txt b/transformations/cdi/codebook_cdi_transformer/requirements.txt new file mode 100644 index 0000000..b05155b --- /dev/null +++ b/transformations/cdi/codebook_cdi_transformer/requirements.txt @@ -0,0 +1,9 @@ +# Direct dependencies +ConfigArgParse==1.5.3 +lxml==4.9.1 +prettierfier==1.0.3 +py12flogging==0.5.0 +PyYAML==6.0 + +# Indirect dependencies + diff --git a/transformations/cdi/codebook_cdi_transformer/resources/FSD3134e.xml b/transformations/cdi/codebook_cdi_transformer/resources/FSD3134e.xml new file mode 100644 index 0000000..8cd296d --- /dev/null +++ b/transformations/cdi/codebook_cdi_transformer/resources/FSD3134e.xml @@ -0,0 +1,3333 @@ + + + + + + DDI description: Child Barometer 2016 + DDI-kuvailu: Lapsibarometri 2016 + 3134 + + + Finnish Social Science Data Archive + Finnish Social Science Data Archive + Finnish Social Science Data Archive + + Child Barometer 2016 [codebook]. Finnish Social Science Data Archive [producer and distributor], 2021. + + + FSD:n aineistokuvailut (FSD metadata records), jonka tekijä on Suomen yhteiskuntatieteellinen tietoarkisto (Finnish Social Science Data Archive), on lisensoitu Creative Commons Nimeä 4.0 Kansainvälinen (CC BY 4.0) -lisenssillä. + + FSD:n aineistokuvailut (FSD metadata records) by Suomen yhteiskuntatieteellinen tietoarkisto (Finnish Social Science Data Archive) is licensed under a Creative Commons Attribution 4.0 International (CC BY 4.0) license. + + FSD:n aineistokuvailut (FSD metadata records) av Suomen yhteiskuntatieteellinen tietoarkisto (Finlands samhällsvetenskapliga dataarkiv) är licensierad under en Creative Commons Erkännande 4.0 Internationell (CC BY 4.0) licens. + + + + + + Child Barometer 2016 + Lapsibarometri 2016 + 3134 + urn:nbn:fi:fsd:T-FSD3134 + + + The Office of Ombudsman for Children + + + In accordance with the agreement between FSD and the depositor. + + + Finnish Social Science Data Archive + + + Child Barometer + +

Child Barometers study the everyday lives of 6-year-old Finnish children. The surveys are conducted by the Office of Ombudsman for Children. The objective of the barometers is to investigate the children's own experiences on topics that are relevant to them. Depending on the target population of each survey, the respondents have been either the children themselves or both the children and their parents. The first barometer was conducted in 2016, after which data have been collected every other year.

+
+
+ + 1.0 + + The Office of Ombudsman for Children: Child Barometer 2016 [dataset]. Version 1.0 (2016-12-09). Finnish Social Science Data Archive [distributor]. http://urn.fi/urn:nbn:fi:fsd:T-FSD3134 + +
+ + + children + parents + friends + trust + early childhood + childhood + interpersonal relations + bullying + Social sciences + Children + + +

The Child Barometer 2016 charted how 6-year-old Finnish children felt about trust. Views on trust were surveyed on terms of social relations, emotions, and bullying.

+

With regard to social relations, the children were asked about the number of friends they had, whether they received praise, and whether their parents and kindergarten teachers listened to them. The children were also asked if they would ask an unfamiliar adult for help if they lost their parents in a store, and which things they felt they were good at. Regarding bullying, the children were asked what they thought bullying was, and whether adults in the kindergarten would help if a child was bullied. Emotions were charted by asking the respondents in which situations they had a fun time or an unpleasant time with their family. Furthermore, the children were asked what made them happy and what made them sad. Finally, the children described what they would tell a foreigner about Finland.

+

The background variables included the child's age, regional variables, the number of parents/guardians in the household, number of children in the household, mother's level of education, father's level of education, household gross income, and whether and how long the child had been in kindergarten before pre-school.

+
+ + + + Finland + Finland + IndividualIndividual + + Children aged 6 living in mainland Finland + Quantitative + +
+ + + Cross-sectionCrossSection + + Taloustutkimus + Probability: Simple randomProbability.SimpleRandom + + +

The sample consisted of households living in mainland Finland who spoke Finnish, and where at least one child born between 15.6.2009 and 1.6.2010 was living. The sample was drawn randomly from the Population Information System of the Population Register Centre. An introductory letter was sent to 3,265 households, and 414 children were interviewed.

+
+ Telephone interviewInterview.Telephone + + Unstructured questionnaireQuestionnaire.Unstructured + + The starting sample was weighted to be representative of six-year-old Finnish children in terms of gender and place of residence. The final sample was also weighted to be nationally representative in terms of gender and place of residence. +
+ + 13 + + Detailed and specific data description in Finnish and English. The data are checked and processed in detail. If necessary, the data are anonymised. +
+ + + Finnish Social Science Data Archive + The variable for postal code has been removed during archiving, and the largest categories for the number of children in the family have been combined. The original researcher has categorized the responses to open-ended questions 2, 3, 7, 9, 10, 11, 12, and 13. + + + The dataset is (A) openly available for all users without registration (CC BY 4.0). + The data and its creators shall be cited in all publications and presentations for which the data have been used. The bibliographic citation may be in the form suggested by the archive or in the form required by the publication. + The user shall notify the archive of all publications where she or he has used the data. + The original data creators and the archive bear no responsibility for any results or interpretations arising from the reuse of the data. + + + + Lapsibarometri 2016: Luottamus 6-vuotiaiden lasten kokemana (2016). Toim. Tuukkanen, Terhi. Lapsiasiavaltuutetun toimiston julkaisuja 2016:2. Jyväskylä: Lapsiasiavaltuutetun toimisto. + Karhumaa, Emilia (2018). Päiväkodin yhteys esikoululaisen sosiaalisiin suhteisiin ja vuorovaikutukseen. Oulu: Oulun yliopisto, Matemaattisten tieteiden laitos, tilastotiede, Kandidaatintyö + + Päiväkodin yhteys esikoululaisen sosiaalisiin suhteisiin ja vuorovaikutukseen + + + + + + + Lapsibarometri 2016: Luottamus 6-vuotiaiden lasten kokemana (2016). Toim. Tuukkanen, Terhi. Lapsiasiavaltuutetun toimiston julkaisuja 2016:2. Jyväskylä: Lapsiasiavaltuutetun toimisto. + + Lapsibarometri 2016: Luottamus 6-vuotiaiden lasten kokemana + + + + + + + +
+ + + daF3134e.por + + 414 + 62 + + SPSS Portable + + + + + [fsd_no] FSD study number + + + FSD study number + + + + + + + 414 + 3134 + 3134 + 3134.00 + .000 + + + [fsd_vr] FSD edition number + + + FSD edition number + + + + + + + 414 + 1.0 + 1.0 + 1.000 + .0000 + + + [fsd_id] FSD case id + + + FSD case id + + + + + + + 414 + 1 + 414 + 207.50 + 119.656 + + + [fsd_li] FSD license CC BY 4.0 + + + FSD license CC BY 4.0 + + + + + + [bv1] Gender of the child + + + Gender of the child + + + + + + + 414 + 1 + 2 + 1.49 + .500 + + 1 + Boy + 213 + + + 2 + Girl + 201 + + + + [bv2] Region of residence (NUTS3) + + + Region of residence (NUTS3) + + + + + + + 414 + 1 + 19 + 7.55 + 6.265 + + 1 + Uusimaa + 126 + + + 2 + Finland proper (Varsinais-Suomi) + 32 + + + 4 + Satakunta + 10 + + + 5 + Tavastia proper (Kanta-Häme) + 14 + + + 6 + Pirkanmaa + 46 + + + 7 + Päijänne Tavastia (Päijät-Häme) + 14 + + + 8 + Kymenlaakso + 9 + + + 9 + South Karelia (Etelä-Karjala) + 8 + + + 10 + Southern Savonia (Etelä-Savo) + 9 + + + 11 + Northern Savonia (Pohjois-Savo) + 16 + + + 12 + Northern Karelia (Pohjois-Karjala) + 5 + + + 13 + Central Finland (Keski-Suomi) + 22 + + + 14 + Southern Ostrobothnia (Etelä-Pohjanmaa) + 20 + + + 15 + Ostrobothnia (Pohjanmaa) + 10 + + + 16 + Central Ostrobothnia (Keski-Pohjanmaa) + 9 + + + 17 + Northern Ostrobothnia (Pohjois-Pohjanmaa) + 44 + + + 18 + Kainuu + 5 + + + 19 + Lapland (Lappi) + 15 + + + 21 + Åland Islands (Ahvenanmaa) + 0 + + + + [bv3] Major region (NUTS2) + + + Major region (NUTS2) + + + + + + + 414 + 1 + 4 + 2.45 + 1.165 + + 1 + Helsinki-Uusimaa + 126 + + + 2 + Southern Finland (Etelä-Suomi) + 77 + + + 3 + Western Finland (Länsi-Suomi) + 108 + + + 4 + Northern and Eastern Finland + 103 + + + + [bv4] How many parents are there in your household? + + + How many parents are there in your household? + + + + + + + 414 + 1 + 2 + 1.89 + .312 + + 1 + One + 45 + + + 2 + Two + 369 + + + + [bv5] How many children are there in your household? + + + How many children are there in your household? + + + + + + + 414 + 1 + 6 + 2.57 + 1.223 + + 1 + + 52 + + + 2 + + 205 + + + 3 + + 83 + + + 4 + + 35 + + + 5 + + 21 + + + 6 + 6 or more + 18 + + + + [bv6] Level of education of the child's mother + + + Level of education of the child's mother + + + + + + + 414 + 1 + 6 + 4.36 + 1.586 + + 1 + Primary or lower secondary education + 8 + + + 2 + Upper secondary education (vocational) + 89 + + + 3 + Upper secondary education (general) + 26 + + + 4 + College level vocational education + 45 + + + 5 + Polytechnic education (post-secondary but below full university degree) + 115 + + + 6 + University or other higher education + 131 + + + 7 + Doesn't want to answer + 0 + + + + [bv7] Level of education of the child's father + + + Level of education of the child's father + + + + + + + 414 + 1 + 7 + 3.89 + 1.787 + + 1 + Primary or lower secondary education + 16 + + + 2 + Upper secondary education (vocational) + 143 + + + 3 + Upper secondary education (general) + 30 + + + 4 + College level vocational education + 29 + + + 5 + Polytechnic education (post-secondary but below full university degree) + 77 + + + 6 + University or other higher education + 114 + + + 7 + Doesn't want to answer + 5 + + + + [bv8] Total gross annual income of the household (before taxes) + + + Total gross annual income of the household (before taxes) + + + + + + + 414 + 1 + 17 + 11.39 + 3.802 + + 1 + Under 10,001 euros/year + 3 + + + 2 + 10,001-15,000 euros/year + 3 + + + 3 + 15,001-20,000 euros/year + 13 + + + 4 + 20,001-25,000 euros/year + 8 + + + 5 + 25,001-30,000 euros/year + 10 + + + 6 + 30,001-35,000 euros/year + 14 + + + 7 + 35,001-40,000 euros/year + 16 + + + 8 + 40,001-45,000 euros/year + 23 + + + 9 + 45,001-50,000 euros/year + 29 + + + 10 + 50,001-55,000 euros/year + 24 + + + 11 + 55,001-60,000 euros/year + 47 + + + 12 + 60,001-70,000 euros/year + 42 + + + 13 + 70,001-80,000 euros/year + 43 + + + 14 + 80,001-90,000 euros/year + 38 + + + 15 + Over 90,000 euros/year + 58 + + + 16 + Doesn't want to answer + 7 + + + 17 + Can't say + 36 + + + + [bv9] Has your 6-year old attended a day care centre before pre-school? + + + Has your 6-year old attended a day care centre before pre-school? + + + + + + + 414 + 1 + 2 + 1.16 + .364 + + 1 + Yes + 349 + + + 2 + No + 65 + + + + [bv10] For how long has your child attended a day care centre before pre-school? + + + For how long has your child attended a day care centre before pre-school? + + + + + + + 349 + 1 + 3 + 2.64 + .594 + + 1 + Less than a year + 21 + + + 2 + 1-2 years + 85 + + + 3 + Over 2 years + 243 + + + SYSMISS + + 65 + + + + [bv11] Thank you for this information! Could you now pass the phone to the 6-year old? + + + Thank you for this information! Could you now pass the phone to the 6-year old? + + + + + + + 414 + 1 + 1 + 1.00 + .000 + + 1 + The interview continues + 414 + + + 2 + The interview does not continue + 0 + + + + [q1] Can you tell me the names of all your friends? Altogether _ friends + + + Can you tell me the names of all your friends? Altogether _ friends + + + + + + + 414 + 0 + 22 + 5.64 + 3.205 + + + [q1_1] Can you tell me the names of all your friends? Altogether _ boys + + + Can you tell me the names of all your friends? Altogether _ boys + + + + + + + 414 + 0 + 14 + 2.87 + 2.507 + + + [q1_2] Can you tell me the names of all your friends? Altogether _ girls + + + Can you tell me the names of all your friends? Altogether _ girls + + + + + + + 414 + 0 + 13 + 2.77 + 2.598 + + + [q2] Would you ask an unfamiliar adult for help if you were separated from your parents in a store? + + + Would you ask an unfamiliar adult for help if you were separated from your parents in a store? + + + + + + + 414 + 1 + 4 + 1.71 + 1.071 + + 1 + Yes + 264 + + + 2 + No + 60 + + + 3 + Can't say + 38 + + + 4 + IF THE CHILD HAS SOMETHING MORE TO SAY + 52 + + + + [q2_1] Would you ask an unfamiliar adult for help if you were separated from your parents in a store? (open-ended) + + + Would you ask an unfamiliar adult for help if you were separated from your parents in a store? (open-ended) + + + + + + [q2_2] Would you ask an unfamiliar adult for help if you were separated from your parents in a store? (categorised) + + + Would you ask an unfamiliar adult for help if you were separated from your parents in a store? (categorised) + + + + + + + 52 + 1 + 8 + 3.94 + 2.330 + + 1 + I would look for them by myself + 10 + + + 2 + I might sometimes ask + 9 + + + 3 + I would ask a familiar adult or an adult who seems kind + 5 + + + 4 + I would ask the staff at the store + 7 + + + 5 + I would go to the counter and wait + 7 + + + 6 + I would stay where I am and wait + 3 + + + 7 + Other + 7 + + + 8 + Can't say + 4 + + + SYSMISS + + 362 + + + + [q3] Which things are you good at? (open-ended) + + + Which things are you good at? (open-ended) + + + + + + [q3_1] Which things are you good at? 1st mention (categorised) + + + Which things are you good at? 1st mention (categorised) + + + + + + + 414 + 1 + 13 + 6.21 + 3.726 + + 1 + Handicrafts/drawing + 106 + + + 2 + Reading/writing + 19 + + + 3 + Doing homework/other exercises + 3 + + + 4 + Math / Mother tongue / English + 8 + + + 5 + Playing with Lego + 10 + + + 6 + Singing / Playing an instrument + 6 + + + 7 + Playing games / Playing + 30 + + + 8 + Sports/exercise + 157 + + + 9 + Doing chores / Helping with chores around the house + 12 + + + 10 + At everything + 10 + + + 11 + Other + 13 + + + 12 + Can't say + 37 + + + 13 + Taking care of oneself + 3 + + + + [q3_2] Which things are you good at? 2nd mention (categorised) + + + Which things are you good at? 2nd mention (categorised) + + + + + + + 202 + 1 + 13 + 6.22 + 3.221 + + 1 + Handicrafts/drawing + 32 + + + 2 + Reading/writing + 14 + + + 3 + Doing homework/other exercises + 4 + + + 4 + Math / Mother tongue / English + 6 + + + 5 + Playing with Lego + 15 + + + 6 + Singing / Playing an instrument + 10 + + + 7 + Playing games / Playing + 25 + + + 8 + Sports/exercise + 63 + + + 9 + Doing chores / Helping with chores around the house + 10 + + + 10 + At everything + 2 + + + 11 + Other + 18 + + + 12 + Can't say + 0 + + + 13 + Taking care of oneself + 3 + + + SYSMISS + + 212 + + + + [q3_3] Which things are you good at? 3rd mention (categorised) + + + Which things are you good at? 3rd mention (categorised) + + + + + + + 68 + 1 + 13 + 6.56 + 3.121 + + 1 + Handicrafts/drawing + 7 + + + 2 + Reading/writing + 4 + + + 3 + Doing homework/other exercises + 1 + + + 4 + Math / Mother tongue / English + 2 + + + 5 + Playing with Lego + 10 + + + 6 + Singing / Playing an instrument + 7 + + + 7 + Playing games / Playing + 9 + + + 8 + Sports/exercise + 9 + + + 9 + Doing chores / Helping with chores around the house + 10 + + + 10 + At everything + 0 + + + 11 + Other + 7 + + + 12 + Can't say + 0 + + + 13 + Taking care of oneself + 2 + + + SYSMISS + + 346 + + + + [q3_4] Which things are you good at? 4th mention (categorised) + + + Which things are you good at? 4th mention (categorised) + + + + + + + 15 + 1 + 11 + 6.20 + 3.321 + + 1 + Handicrafts/drawing + 2 + + + 2 + Reading/writing + 2 + + + 3 + Doing homework/other exercises + 0 + + + 4 + Math / Mother tongue / English + 0 + + + 5 + Playing with Lego + 1 + + + 6 + Singing / Playing an instrument + 0 + + + 7 + Playing games / Playing + 5 + + + 8 + Sports/exercise + 2 + + + 9 + Doing chores / Helping with chores around the house + 1 + + + 10 + At everything + 0 + + + 11 + Other + 2 + + + 12 + Can't say + 0 + + + 13 + Taking care of oneself + 0 + + + SYSMISS + + 399 + + + + [q3_5] Which things are you good at? 5th mention (categorised) + + + Which things are you good at? 5th mention (categorised) + + + + + + + 6 + 8 + 9 + 8.50 + .548 + + 1 + Handicrafts/drawing + 0 + + + 2 + Reading/writing + 0 + + + 3 + Doing homework/other exercises + 0 + + + 4 + Math / Mother tongue / English + 0 + + + 5 + Playing with Lego + 0 + + + 6 + Singing / Playing an instrument + 0 + + + 7 + Playing games / Playing + 0 + + + 8 + Sports/exercise + 3 + + + 9 + Doing chores / Helping with chores around the house + 3 + + + 10 + At everything + 0 + + + 11 + Other + 0 + + + 12 + Can't say + 0 + + + 13 + Taking care of oneself + 0 + + + SYSMISS + + 408 + + + + [q4] Do you receive praise? + + + Do you receive praise? + + + + + + + 414 + 1 + 3 + 1.26 + .569 + + 1 + Yes + 333 + + + 2 + No + 54 + + + 3 + Can't say + 27 + + + + [q5] Do your parents listen to you if you have something to say? + + + Do your parents listen to you if you have something to say? + + + + + + + 414 + 1 + 3 + 1.05 + .265 + + 1 + Yes + 399 + + + 2 + No + 10 + + + 3 + Can't say + 5 + + + + [q6] Do adults at the day care centre listen to you if you have something to say? + + + Do adults at the day care centre listen to you if you have something to say? + + + + + + + 414 + 1 + 3 + 1.16 + .524 + + 1 + Yes + 377 + + + 2 + No + 8 + + + 3 + Can't say + 29 + + + + [q7] What do you think bullying is? (open-ended) + + + What do you think bullying is? (open-ended) + + + + + + [q7_1] What do you think bullying is? 1st mention (categorised) + + + What do you think bullying is? 1st mention (categorised) + + + + + + + 414 + 1 + 9 + 5.64 + 2.387 + + 1 + Calling names + 35 + + + 2 + Annoying/disturbing others + 33 + + + 4 + Excluding someone from play + 14 + + + 5 + Physical bullying / Hurting someone + 147 + + + 6 + Taking or breaking someone else's property + 12 + + + 7 + A bad thing / Feels bad + 81 + + + 8 + Other + 22 + + + 9 + Don't know + 70 + + + + [q7_2] What do you think bullying is? 2nd mention (categorised) + + + What do you think bullying is? 2nd mention (categorised) + + + + + + + 107 + 1 + 9 + 3.84 + 2.454 + + 1 + Calling names + 37 + + + 2 + Annoying/disturbing others + 7 + + + 4 + Excluding someone from play + 6 + + + 5 + Physical bullying / Hurting someone + 32 + + + 6 + Taking or breaking someone else's property + 7 + + + 7 + A bad thing / Feels bad + 11 + + + 8 + Other + 6 + + + 9 + Don't know + 1 + + + SYSMISS + + 307 + + + + [q7_3] What do you think bullying is? 3rd mention (categorised) + + + What do you think bullying is? 3rd mention (categorised) + + + + + + + 20 + 1 + 8 + 3.95 + 2.328 + + 1 + Calling names + 4 + + + 2 + Annoying/disturbing others + 4 + + + 4 + Excluding someone from play + 3 + + + 5 + Physical bullying / Hurting someone + 3 + + + 6 + Taking or breaking someone else's property + 4 + + + 7 + A bad thing / Feels bad + 0 + + + 8 + Other + 2 + + + 9 + Don't know + 0 + + + SYSMISS + + 394 + + + + [q7_4] What do you think bullying is? 4th mention (categorised) + + + What do you think bullying is? 4th mention (categorised) + + + + + + + 2 + 1 + 2 + 1.50 + .707 + + 1 + Calling names + 1 + + + 2 + Annoying/disturbing others + 1 + + + 4 + Excluding someone from play + 0 + + + 5 + Physical bullying / Hurting someone + 0 + + + 6 + Taking or breaking someone else's property + 0 + + + 7 + A bad thing / Feels bad + 0 + + + 8 + Other + 0 + + + 9 + Don't know + 0 + + + SYSMISS + + 412 + + + + [q8] Will the adults at the day care centre help if a child is being bullied? + + + Will the adults at the day care centre help if a child is being bullied? + + + + + + + 414 + 1 + 3 + 1.14 + .490 + + 1 + Yes + 382 + + + 2 + No + 7 + + + 3 + Can't say + 25 + + + + [q9] In what situations do you have a nice time / fun with your family? (open-ended) + + + In what situations do you have a nice time / fun with your family? (open-ended) + + + + + + [q9_1] In what situations do you have a nice time / fun with your family? 1st mention (categorised) + + + In what situations do you have a nice time / fun with your family? 1st mention (categorised) + + + + + + + 414 + 1 + 10 + 4.47 + 3.181 + + 1 + Doing things together / Playing together + 98 + + + 2 + Going to a place + 81 + + + 3 + Watching TV/movies + 15 + + + 4 + Going outside + 51 + + + 5 + Being at home/summer cottage + 12 + + + 6 + Parties / Eating sweets + 24 + + + 7 + On vacation/weekends + 31 + + + 8 + Always/often + 40 + + + 9 + Other + 19 + + + 10 + Can't say + 43 + + + + [q9_2] In what situations do you have a nice time / fun with your family? 2nd mention (categorised) + + + In what situations do you have a nice time / fun with your family? 2nd mention (categorised) + + + + + + + 139 + 1 + 9 + 3.37 + 2.008 + + 1 + Doing things together / Playing together + 37 + + + 2 + Going to a place + 20 + + + 3 + Watching TV/movies + 11 + + + 4 + Going outside + 35 + + + 5 + Being at home/summer cottage + 10 + + + 6 + Parties / Eating sweets + 19 + + + 7 + On vacation/weekends + 4 + + + 8 + Always/often + 1 + + + 9 + Other + 2 + + + 10 + Can't say + 0 + + + SYSMISS + + 275 + + + + [q9_3] In what situations do you have a nice time / fun with your family? 3rd mention (categorised) + + + In what situations do you have a nice time / fun with your family? 3rd mention (categorised) + + + + + + + 36 + 1 + 9 + 3.39 + 2.155 + + 1 + Doing things together / Playing together + 10 + + + 2 + Going to a place + 4 + + + 3 + Watching TV/movies + 5 + + + 4 + Going outside + 8 + + + 5 + Being at home/summer cottage + 3 + + + 6 + Parties / Eating sweets + 3 + + + 7 + On vacation/weekends + 1 + + + 8 + Always/often + 1 + + + 9 + Other + 1 + + + 10 + Can't say + 0 + + + SYSMISS + + 378 + + + + [q9_4] In what situations do you have a nice time / fun with your family? 4th mention (categorised) + + + In what situations do you have a nice time / fun with your family? 4th mention (categorised) + + + + + + + 9 + 1 + 6 + 3.56 + 1.944 + + 1 + Doing things together / Playing together + 2 + + + 2 + Going to a place + 1 + + + 3 + Watching TV/movies + 1 + + + 4 + Going outside + 2 + + + 5 + Being at home/summer cottage + 1 + + + 6 + Parties / Eating sweets + 2 + + + 7 + On vacation/weekends + 0 + + + 8 + Always/often + 0 + + + 9 + Other + 0 + + + 10 + Can't say + 0 + + + SYSMISS + + 405 + + + + [q10] In what situations do you have an unpleasant time with your family? (open-ended) + + + In what situations do you have an unpleasant time with your family? (open-ended) + + + + + + [q10_1] In what situations do you have an unpleasant time with your family? 1st mention (categorised) + + + In what situations do you have an unpleasant time with your family? 1st mention (categorised) + + + + + + + 414 + 1 + 13 + 7.59 + 4.022 + + 1 + When there's nothing to do + 22 + + + 2 + Not getting what you want / Not getting to go where you want + 40 + + + 3 + When there is a fight + 43 + + + 4 + Bullying + 8 + + + 5 + When somebody is hurt/sick / When somebody dies + 21 + + + 6 + When you are not with your family and you miss them + 72 + + + 7 + When everyone is busy / When there is no time to play + 5 + + + 8 + When doing chores + 10 + + + 10 + Never + 34 + + + 11 + Other + 24 + + + 12 + Don't know + 131 + + + 13 + When there are no friends / When there's no one to play with + 4 + + + + [q10_2] In what situations do you have an unpleasant time with your family? 2nd mention (categorised) + + + In what situations do you have an unpleasant time with your family? 2nd mention (categorised) + + + + + + + 29 + 1 + 13 + 7.38 + 4.731 + + 1 + When there's nothing to do + 2 + + + 2 + Not getting what you want / Not getting to go where you want + 4 + + + 3 + When there is a fight + 1 + + + 4 + Bullying + 3 + + + 5 + When somebody is hurt/sick / When somebody dies + 6 + + + 6 + When you are not with your family and you miss them + 0 + + + 7 + When everyone is busy / When there is no time to play + 1 + + + 8 + When doing chores + 0 + + + 10 + Never + 0 + + + 11 + Other + 2 + + + 12 + Don't know + 0 + + + 13 + When there are no friends / When there's no one to play with + 10 + + + SYSMISS + + 385 + + + + [q10_3] In what situations do you have an unpleasant time with your family? 3rd mention (categorised) + + + In what situations do you have an unpleasant time with your family? 3rd mention (categorised) + + + + + + + 4 + 2 + 13 + 8.25 + 5.620 + + 1 + When there's nothing to do + 0 + + + 2 + Not getting what you want / Not getting to go where you want + 1 + + + 3 + When there is a fight + 0 + + + 4 + Bullying + 0 + + + 5 + When somebody is hurt/sick / When somebody dies + 1 + + + 6 + When you are not with your family and you miss them + 0 + + + 7 + When everyone is busy / When there is no time to play + 0 + + + 8 + When doing chores + 0 + + + 10 + Never + 0 + + + 11 + Other + 0 + + + 12 + Don't know + 0 + + + 13 + When there are no friends / When there's no one to play with + 2 + + + SYSMISS + + 410 + + + + [q11] What makes you happy? (open-ended) + + + What makes you happy? (open-ended) + + + + + + [q11_1] What makes you happy? 1st mention (categorised) + + + What makes you happy? 1st mention (categorised) + + + + + + + 414 + 1 + 13 + 6.71 + 3.521 + + 1 + Food/sweets + 34 + + + 2 + Someone says/does something nice + 19 + + + 3 + Laughing/tickling + 28 + + + 4 + Friends + 69 + + + 5 + Playing games / Playing + 43 + + + 6 + Being with family + 16 + + + 7 + A pet + 5 + + + 8 + Going somewhere + 24 + + + 9 + Parties/surprises / Getting something + 76 + + + 10 + Physical activity + 25 + + + 11 + Other + 29 + + + 12 + Can't say + 43 + + + 13 + Is not bothered / Can play in peace + 3 + + + + [q11_2] What makes you happy? 2nd mention (categorised) + + + What makes you happy? 2nd mention (categorised) + + + + + + + 131 + 1 + 13 + 6.34 + 2.624 + + 1 + Food/sweets + 4 + + + 2 + Someone says/does something nice + 9 + + + 3 + Laughing/tickling + 3 + + + 4 + Friends + 11 + + + 5 + Playing games / Playing + 35 + + + 6 + Being with family + 11 + + + 7 + A pet + 2 + + + 8 + Going somewhere + 28 + + + 9 + Parties/surprises / Getting something + 14 + + + 10 + Physical activity + 6 + + + 11 + Other + 7 + + + 12 + Can't say + 0 + + + 13 + Is not bothered / Can play in peace + 1 + + + SYSMISS + + 283 + + + + [q11_3] What makes you happy? 3rd mention (categorised) + + + What makes you happy? 3rd mention (categorised) + + + + + + + 42 + 1 + 13 + 6.48 + 3.014 + + 1 + Food/sweets + 3 + + + 2 + Someone says/does something nice + 1 + + + 3 + Laughing/tickling + 2 + + + 4 + Friends + 5 + + + 5 + Playing games / Playing + 5 + + + 6 + Being with family + 7 + + + 7 + A pet + 2 + + + 8 + Going somewhere + 8 + + + 9 + Parties/surprises / Getting something + 2 + + + 10 + Physical activity + 3 + + + 11 + Other + 2 + + + 12 + Can't say + 0 + + + 13 + Is not bothered / Can play in peace + 2 + + + SYSMISS + + 372 + + + + [q11_4] What makes you happy? 4th mention (categorised) + + + What makes you happy? 4th mention (categorised) + + + + + + + 13 + 1 + 10 + 5.54 + 2.634 + + 1 + Food/sweets + 2 + + + 2 + Someone says/does something nice + 0 + + + 3 + Laughing/tickling + 0 + + + 4 + Friends + 1 + + + 5 + Playing games / Playing + 3 + + + 6 + Being with family + 4 + + + 7 + A pet + 0 + + + 8 + Going somewhere + 1 + + + 9 + Parties/surprises / Getting something + 1 + + + 10 + Physical activity + 1 + + + 11 + Other + 0 + + + 12 + Can't say + 0 + + + 13 + Is not bothered / Can play in peace + 0 + + + SYSMISS + + 401 + + + + [q11_5] What makes you happy? 5th mention (categorised) + + + What makes you happy? 5th mention (categorised) + + + + + + + 3 + 1 + 13 + 8.33 + 6.429 + + 1 + Food/sweets + 1 + + + 2 + Someone says/does something nice + 0 + + + 3 + Laughing/tickling + 0 + + + 4 + Friends + 0 + + + 5 + Playing games / Playing + 0 + + + 6 + Being with family + 0 + + + 7 + A pet + 0 + + + 8 + Going somewhere + 0 + + + 9 + Parties/surprises / Getting something + 0 + + + 10 + Physical activity + 0 + + + 11 + Other + 1 + + + 12 + Can't say + 0 + + + 13 + Is not bothered / Can play in peace + 1 + + + SYSMISS + + 411 + + + + [q11_6] What makes you happy? 6th mention (categorised) + + + What makes you happy? 6th mention (categorised) + + + + + + + 3 + 5 + 10 + 7.67 + 2.517 + + 1 + Food/sweets + 0 + + + 2 + Someone says/does something nice + 0 + + + 3 + Laughing/tickling + 0 + + + 4 + Friends + 0 + + + 5 + Playing games / Playing + 1 + + + 6 + Being with family + 0 + + + 7 + A pet + 0 + + + 8 + Going somewhere + 1 + + + 9 + Parties/surprises / Getting something + 0 + + + 10 + Physical activity + 1 + + + 11 + Other + 0 + + + 12 + Can't say + 0 + + + 13 + Is not bothered / Can play in peace + 0 + + + SYSMISS + + 411 + + + + [q11_7] What makes you happy? 7th mention (categorised) + + + What makes you happy? 7th mention (categorised) + + + + + + + 2 + 3 + 6 + 4.50 + 2.121 + + 1 + Food/sweets + 0 + + + 2 + Someone says/does something nice + 0 + + + 3 + Laughing/tickling + 1 + + + 4 + Friends + 0 + + + 5 + Playing games / Playing + 0 + + + 6 + Being with family + 1 + + + 7 + A pet + 0 + + + 8 + Going somewhere + 0 + + + 9 + Parties/surprises / Getting something + 0 + + + 10 + Physical activity + 0 + + + 11 + Other + 0 + + + 12 + Can't say + 0 + + + 13 + Is not bothered / Can play in peace + 0 + + + SYSMISS + + 412 + + + + [q12] What makes you sad? (open-ended) + + + What makes you sad? (open-ended) + + + + + + [q12_1] What makes you sad? 1st mention (categorised) + + + What makes you sad? 1st mention (categorised) + + + + + + + 414 + 1 + 11 + 6.31 + 3.315 + + 1 + There is no one to play with / Being excluded from play + 38 + + + 2 + Not getting what you want / Not getting to go where you want + 34 + + + 3 + An item breaks or goes missing + 6 + + + 4 + There is a fight in the family + 10 + + + 5 + Someone bullies/hurts + 138 + + + 6 + Being sick / Someone gets hurt + 36 + + + 7 + Being apart from family / Missing family + 10 + + + 8 + Parents don't listen/play + 6 + + + 9 + Nothing + 25 + + + 10 + Other + 20 + + + 11 + Can't say + 91 + + + + [q12_2] What makes you sad? 2nd mention (categorised) + + + What makes you sad? 2nd mention (categorised) + + + + + + + 38 + 1 + 10 + 4.89 + 2.425 + + 1 + There is no one to play with / Being excluded from play + 3 + + + 2 + Not getting what you want / Not getting to go where you want + 4 + + + 3 + An item breaks or goes missing + 3 + + + 4 + There is a fight in the family + 6 + + + 5 + Someone bullies/hurts + 8 + + + 6 + Being sick / Someone gets hurt + 8 + + + 7 + Being apart from family / Missing family + 2 + + + 8 + Parents don't listen/play + 0 + + + 9 + Nothing + 0 + + + 10 + Other + 4 + + + 11 + Can't say + 0 + + + SYSMISS + + 376 + + + + [q12_3] What makes you sad? 3rd mention (categorised) + + + What makes you sad? 3rd mention (categorised) + + + + + + + 6 + 3 + 10 + 7.33 + 3.204 + + 1 + There is no one to play with / Being excluded from play + 0 + + + 2 + Not getting what you want / Not getting to go where you want + 0 + + + 3 + An item breaks or goes missing + 1 + + + 4 + There is a fight in the family + 1 + + + 5 + Someone bullies/hurts + 0 + + + 6 + Being sick / Someone gets hurt + 0 + + + 7 + Being apart from family / Missing family + 1 + + + 8 + Parents don't listen/play + 0 + + + 9 + Nothing + 0 + + + 10 + Other + 3 + + + 11 + Can't say + 0 + + + SYSMISS + + 408 + + + + [q13] If you had to tell a foreigner something about Finland, what would you tell? (open-ended) + + + If you had to tell a foreigner something about Finland, what would you tell? (open-ended) + + + + + + [q13_1] If you had to tell a foreigner something about Finland, what would you tell? 1st mention (categorised) + + + If you had to tell a foreigner something about Finland, what would you tell? 1st mention (categorised) + + + + + + + 414 + 1 + 8 + 4.83 + 1.994 + + 1 + Describing what Finland is like / things in Finland + 56 + + + 2 + Would tell about him/herself + 26 + + + 3 + Would teach Finnish words + 8 + + + 4 + Finland is a good/nice country + 53 + + + 5 + Other + 23 + + + 6 + Can't say + 211 + + + 7 + Would say hi / Would ask something + 21 + + + 8 + Would need to know a foreign language / Can't speak the language + 16 + + + + [q13_2] If you had to tell a foreigner something about Finland, what would you tell? 2nd mention (categorised) + + + If you had to tell a foreigner something about Finland, what would you tell? 2nd mention (categorised) + + + + + + + 39 + 1 + 8 + 3.31 + 2.754 + + 1 + Describing what Finland is like / things in Finland + 19 + + + 2 + Would tell about him/herself + 2 + + + 3 + Would teach Finnish words + 2 + + + 4 + Finland is a good/nice country + 5 + + + 5 + Other + 1 + + + 6 + Can't say + 0 + + + 7 + Would say hi / Would ask something + 5 + + + 8 + Would need to know a foreign language / Can't speak the language + 5 + + + SYSMISS + + 375 + + + + [q13_3] If you had to tell a foreigner something about Finland, what would you tell? 3rd mention (categorised) + + + If you had to tell a foreigner something about Finland, what would you tell? 3rd mention (categorised) + + + + + + + 4 + 1 + 8 + 6.00 + 3.367 + + 1 + Describing what Finland is like / things in Finland + 1 + + + 2 + Would tell about him/herself + 0 + + + 3 + Would teach Finnish words + 0 + + + 4 + Finland is a good/nice country + 0 + + + 5 + Other + 0 + + + 6 + Can't say + 0 + + + 7 + Would say hi / Would ask something + 1 + + + 8 + Would need to know a foreign language / Can't speak the language + 2 + + + SYSMISS + + 410 + + + + [paino] Weighting coefficient + + + Weighting coefficient + + + + + + + 414 + 142 + 157 + 147.21 + 4.470 + + + +
\ No newline at end of file diff --git a/transformations/cdi/codebook_cdi_transformer/resources/ddi25_to_cdi10_testing.xslt b/transformations/cdi/codebook_cdi_transformer/resources/ddi25_to_cdi10_testing.xslt new file mode 100644 index 0000000..fa4bacc --- /dev/null +++ b/transformations/cdi/codebook_cdi_transformer/resources/ddi25_to_cdi10_testing.xslt @@ -0,0 +1,117 @@ + + + + + + ddi-c-2.5-to-ddi-cdi-1.0 + Codestin Search App + Convert DDI-Codebook (2.5) to DDI-CDI (1.0) + XML + + + + + + + + + + + + + WDS_ + + + + + + + + + + + + + + + + + + + + + + + + + + + RV_ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/transformations/cdi/codebook_cdi_transformer/resources/ddicdi_FSD3134.xml b/transformations/cdi/codebook_cdi_transformer/resources/ddicdi_FSD3134.xml new file mode 100644 index 0000000..8d8e963 --- /dev/null +++ b/transformations/cdi/codebook_cdi_transformer/resources/ddicdi_FSD3134.xml @@ -0,0 +1,438 @@ + + + + + + + + + + + + + + WDS_FSD3134 + fsd.tuni.fi + + + + fsd.tuni.fi:WDSt_FSD3134:0.0.1 + WideDataStructure + 0.0.1 + + + + + + WDSt_FSD3134 + org.ukds + 0.0.1 + + + + fsd.tuni.fi:IC_FSD3134_1:0.0.1 + IdentifierComponent + + + fsd.tuni.fi:MC_FSD3134_2:0.0.1 + MeasureComponent + + + fsd.tuni.fi:AC_FSD3134_3:0.0.1 + AttributeComponent + + + fsd.tuni.fi:CP_FSD3134_1:0.0.1 + ComponentPosition + + + fsd.tuni.fi:CP_FSD3134_2:0.0.1 + ComponentPosition + + + fsd.tuni.fi:CP_FSD3134_3:0.0.1 + ComponentPosition + + + + 1 + + + CP_FSD3134_1 + fsd.tuni.fi + 0.0.1 + + + + fsd.tuni.fi:IC_FSD3134_1:0.0.1 + IdentifierComponent + + + + 2 + + + CP_FSD3134_2 + fsd.tuni.fi + 0.0.1 + + + + fsd.tuni.fi:MC_FSD3134_2:0.0.1 + MeasureComponent + + + + 3 + + + CP_FSD3134_3 + fsd.tuni.fi + 0.0.1 + + + + fsd.tuni.fi:AC_FSD3134_3:0.0.1 + AttributeComponent + + + + + + IC_FSD3134_1 + fsd.tuni.fi + 0.0.1 + + + + fsd.tuni.fi:RV_FSD3134_FSD_ID_var:0.0.1 + RepresentedVariable + + + + + + MC_FSD3134_2 + fsd.tuni.fi + 0.0.1 + + + + fsd.tuni.fi:RV_FSD3134_BV1_var:0.0.1 + RepresentedVariable + + + + + + AC_FSD3134_3 + fsd.tuni.fi + 0.0.1 + + + + + linkable + + + None + + + + fsd.tuni.fi:FSD3134_FSD_ID_var:0.0.1 + RepresentedVariable + + + + + + [fsd_id] FSD case id + + + + + RV_FSD3134_FSD_ID_var + fsd.tuni.fi + 0.0.1 + + + + FSD3134_FSD_ID_var + + + fsd.tuni.fi:CV_FSD3134_FSD_ID_var:0.0.1 + ConceptualVariable + + + + + + [bv1] Gender of the child + + + + + RV_FSD3134_BV1_var + fsd.tuni.fi + 0.0.1 + + + + FSD3134_BV1_var + + + fsd.tuni.fi:CV_FSD3134_BV1_var:0.0.1 + ConceptualVariable + + + fsd.tuni.fi:SVD_FSD3134_BV1_var:0.0.1 + SubstantiveValueDomain + + + + + + [paino] Weighting coefficient + + + + + RV_FSD3134_PAINO_var + fsd.tuni.fi + 0.0.1 + + + + FSD3134_PAINO_var + + + fsd.tuni.fi:CV_FSD3134_PAINO_var:0.0.1 + ConceptualVariable + + + + + + SVD_FSD3134_BV1_var + fsd.tuni.fi + 0.0.1 + + + + fsd.tuni.fi:CL_FSD3134_BV1_var:0.0.1 + CodeList + + + + + + CL_FSD3134_BV1_var + org.ukds + 0.0.1 + + + + fsd.tuni.fi:C_FSD3134_BV1_1:0.0.1 + Code + + + fsd.tuni.fi:C_FSD3134_BV1_2:0.0.1 + Code + + + + + + Boy + + + + + Ct_FSD3134_BV1_1 + fsd.tuni.fi + 0.0.1 + + + + Boy + + + + + + Girl + + + + + Ct_FSD3134_BV1_2 + fsd.tuni.fi + 0.0.1 + + + + Girl + + + + + + CL_FSD3134_BV1_sub + fsd.tuni.fi + 0.0.1 + + + + fsd.tuni.fi:C_FSD3134_BV1_1:0.0.1 + Code + + + fsd.tuni.fi:C_FSD3134_BV1_2:0.0.1 + Code + + + + + 1 + + + + N_FSD3134_BV1_1 + fsd.tuni.fi + 0.0.1 + + + + + + 2 + + + + N_FSD3134_BV1_2 + fsd.tuni.fi + 0.0.1 + + + + + + + [fsd_id] FSD case id + + + + + IV_FSD3134_FSD_ID_var + fsd.tuni.fi + 0.0.1 + + + + FSD case id + + + fsd.tuni.fi:RV_FSD3134_FSD_ID_var:0.0.1 + RepresentedVariable + + + + + + [bv1] Gender of the child + + + + + IV_FSD3134_BV1_var + fsd.tuni.fi + 0.0.1 + + + + Gender of the child + + + fsd.tuni.fi:RV_FSD3134_BV1_var:0.0.1 + RepresentedVariable + + + + + + [paino] Weighting coefficient + + + + + IV_FSD3134_PAINO_var + fsd.tuni.fi + 0.0.1 + + + + Weighting coefficient + + + None + + + fsd.tuni.fi:RV_FSD3134_PAINO_var:0.0.1 + RepresentedVariable + + + + + + [fsd_id] FSD case id + + + + + CV_FSD3134_FSD_ID_var + fsd.tuni.fi + 0.0.1 + + + + fsd.tuni.fi:Cn_FSD3134_FSD_ID_var:0.0.1 + Concept + + + + + + [bv1] Gender of the child + + + + + CV_FSD3134_BV1_var + fsd.tuni.fi + 0.0.1 + + + + fsd.tuni.fi:Cn_FSD3134_BV1_var:0.0.1 + Concept + + + + + + [paino] Weighting coefficient + + + + + CV_FSD3134_PAINO_var + fsd.tuni.fi + 0.0.1 + + + + fsd.tuni.fi:Cn_FSD3134_PAINO_var:0.0.1 + Concept + + + \ No newline at end of file diff --git a/transformations/cdi/codebook_cdi_transformer/setup.py b/transformations/cdi/codebook_cdi_transformer/setup.py new file mode 100644 index 0000000..8f91035 --- /dev/null +++ b/transformations/cdi/codebook_cdi_transformer/setup.py @@ -0,0 +1,34 @@ +#!/usr/bin/env python3 +# Author(s): Markus Tuominen, Thomas Gilders, Alizera Davoudian +# Copyright 2023 DDI Developers Group +# Licensed under the GNU Lesser General Public License 3.0. See LICENSE.txt for full license. + +import setuptools + + +with open('README.md', 'r') as fh: + long_description = fh.read() + + +with open('VERSION', 'r') as fh: + version = fh.readline().strip() + + +setuptools.setup( + name='codebook_cdi_transformer', + version=version, + url='', + description='Transform Codebook to CDI', + long_description=long_description, + long_description_content_type='text/markdown', + license='GNU LGPL v3.0', + author='Markus Tuominen', + author_email='markus.tuominen@tuni.fi', + packages=setuptools.find_packages(), + install_requires=[ + '' + ], + entry_points={'console_scripts': [ + '' + ]} +) diff --git a/transformations/cdi/from-ddi-2.5.xslt b/transformations/cdi/from-ddi-2.5.xslt new file mode 100644 index 0000000..3a2329d --- /dev/null +++ b/transformations/cdi/from-ddi-2.5.xslt @@ -0,0 +1,487 @@ + + + + + + ddi-c-2.5-to-ddi-cdi-1.0 + Codestin Search App + Convert DDI-Codebook (2.5) to DDI-CDI (1.0) + XML + + + + + + + + + + + + + + + + + + + WDS_ + + + + + + + + + :WDSt_: + + WideDataStructure + + + + + + + WDSt_ + + + + + + + + + + :IC__: + + + + IdentifierComponent + + + + + + :CP__: + + ComponentPosition + + + + + + + + + CP__ + + + + + + + :IC__: + + + IdentifierComponent + + + + + + + + IC_FSD3134_1 + fsd.tuni.fi + 0.0.1 + + + + fsd.tuni.fi:RV_FSD3134_FSD_ID_var:0.0.1 + RepresentedVariable + + + + + + MC_FSD3134_2 + fsd.tuni.fi + 0.0.1 + + + + fsd.tuni.fi:RV_FSD3134_BV1_var:0.0.1 + RepresentedVariable + + + + + + AC_FSD3134_3 + fsd.tuni.fi + 0.0.1 + + + + + linkable + + + None + + + + fsd.tuni.fi:FSD3134_FSD_ID_var:0.0.1 + RepresentedVariable + + + + + + [fsd_id] FSD case id + + + + + RV_FSD3134_FSD_ID_var + fsd.tuni.fi + 0.0.1 + + + + FSD3134_FSD_ID_var + + + fsd.tuni.fi:CV_FSD3134_FSD_ID_var:0.0.1 + ConceptualVariable + + + + + + [bv1] Gender of the child + + + + + RV_FSD3134_BV1_var + fsd.tuni.fi + 0.0.1 + + + + FSD3134_BV1_var + + + fsd.tuni.fi:CV_FSD3134_BV1_var:0.0.1 + ConceptualVariable + + + fsd.tuni.fi:SVD_FSD3134_BV1_var:0.0.1 + SubstantiveValueDomain + + + + + + [paino] Weighting coefficient + + + + + RV_FSD3134_PAINO_var + fsd.tuni.fi + 0.0.1 + + + + FSD3134_PAINO_var + + + fsd.tuni.fi:CV_FSD3134_PAINO_var:0.0.1 + ConceptualVariable + + + + + + SVD_FSD3134_BV1_var + fsd.tuni.fi + 0.0.1 + + + + fsd.tuni.fi:CL_FSD3134_BV1_var:0.0.1 + CodeList + + + + + + CL_FSD3134_BV1_var + org.ukds + 0.0.1 + + + + fsd.tuni.fi:C_FSD3134_BV1_1:0.0.1 + Code + + + fsd.tuni.fi:C_FSD3134_BV1_2:0.0.1 + Code + + + + + + Boy + + + + + Ct_FSD3134_BV1_1 + fsd.tuni.fi + 0.0.1 + + + + Boy + + + + + + Girl + + + + + Ct_FSD3134_BV1_2 + fsd.tuni.fi + 0.0.1 + + + + Girl + + + + + + CL_FSD3134_BV1_sub + fsd.tuni.fi + 0.0.1 + + + + fsd.tuni.fi:C_FSD3134_BV1_1:0.0.1 + Code + + + fsd.tuni.fi:C_FSD3134_BV1_2:0.0.1 + Code + + + + + 1 + + + + N_FSD3134_BV1_1 + fsd.tuni.fi + 0.0.1 + + + + + + 2 + + + + N_FSD3134_BV1_2 + fsd.tuni.fi + 0.0.1 + + + + + + + [fsd_id] FSD case id + + + + + IV_FSD3134_FSD_ID_var + fsd.tuni.fi + 0.0.1 + + + + FSD case id + + + fsd.tuni.fi:RV_FSD3134_FSD_ID_var:0.0.1 + RepresentedVariable + + + + + + [bv1] Gender of the child + + + + + IV_FSD3134_BV1_var + fsd.tuni.fi + 0.0.1 + + + + Gender of the child + + + fsd.tuni.fi:RV_FSD3134_BV1_var:0.0.1 + RepresentedVariable + + + + + + [paino] Weighting coefficient + + + + + IV_FSD3134_PAINO_var + fsd.tuni.fi + 0.0.1 + + + + Weighting coefficient + + + None + + + fsd.tuni.fi:RV_FSD3134_PAINO_var:0.0.1 + RepresentedVariable + + + + + + [fsd_id] FSD case id + + + + + CV_FSD3134_FSD_ID_var + fsd.tuni.fi + 0.0.1 + + + + fsd.tuni.fi:Cn_FSD3134_FSD_ID_var:0.0.1 + Concept + + + + + + [bv1] Gender of the child + + + + + CV_FSD3134_BV1_var + fsd.tuni.fi + 0.0.1 + + + + fsd.tuni.fi:Cn_FSD3134_BV1_var:0.0.1 + Concept + + + + + + [paino] Weighting coefficient + + + + + CV_FSD3134_PAINO_var + fsd.tuni.fi + 0.0.1 + + + + fsd.tuni.fi:Cn_FSD3134_PAINO_var:0.0.1 + Concept + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file