From 8f2945e234df1f2eb936546338a623d0a25d029e Mon Sep 17 00:00:00 2001 From: Rongpeng Date: Mon, 11 May 2020 08:54:47 -0700 Subject: [PATCH 001/217] lay out structure of json generator function --- kgtk/cli/generate_mediawiki_jsons.py | 80 ++++++++++++++++++++++++++++ kgtk/json_generator.py | 24 +++++++++ 2 files changed, 104 insertions(+) create mode 100644 kgtk/cli/generate_mediawiki_jsons.py create mode 100644 kgtk/json_generator.py diff --git a/kgtk/cli/generate_mediawiki_jsons.py b/kgtk/cli/generate_mediawiki_jsons.py new file mode 100644 index 000000000..5309c33e2 --- /dev/null +++ b/kgtk/cli/generate_mediawiki_jsons.py @@ -0,0 +1,80 @@ +""" +Generate mediawiki API json files from kgtk file + +This command line tool will create three json files. Each will mimic the return of the following media wiki API for each entity existed in the kgtk file. + +""" + +def str2bool(v): + import argparse + if isinstance(v, bool): + return v + if v.lower() in ('yes', 'true', 't', 'y', '1'): + return True + elif v.lower() in ('no', 'false', 'f', 'n', '0'): + return False + else: + raise argparse.ArgumentTypeError('Boolean value expected.') + +def parser(): + """ + Initialize sub-parser. + Parameters: https://docs.python.org/3/library/argparse.html#argparse.ArgumentParser + """ + return { + "help": "Generates mediawiki json responses from kgtk file", + "description": "Generating json files that mimic mediawiki *wbgetentities* api call response.", + } + +def add_arguments(parser): + """ + Parse arguments + Args: + parser (argparse.ArgumentParser) + prop_file: str, labelSet: str, aliasSet: str, descriptionSet: str, n: str, dest: Any --output-n-lines --generate-truthy + """ + parser.add_argument( + "-pf", + "--property-types", + action="store", + type=str, + required = True, + help="path to the file which contains the property datatype mapping in kgtk format.", + dest="prop_file", + ) + parser.add_argument( + "-gz", + "--use-gz", + action="store", + type=str2bool, + required = False, + default="no", + help="if set to yes, read from compressed gz file", + dest="use_gz", + ) + + +def run( + prop_file:str = prop_file, + use_gz:bool = use_gz +): + # import modules locally + from kgtk.json_generator import JsonGenerator + import sys + import gzip + generator = JsonGenerator( + prop_file=prop_file, + use_gz = use_gz + ) + # process stdin + if use_gz: + fp = gzip.open(sys.stdin.buffer, 'rt') + else: + fp = sys.stdin + # not line by line + for line_num, edge in enumerate(fp): + if edge.startswith("#"): + continue + else: + generator.entry_point(line_num+1,edge) + generator.finalize() diff --git a/kgtk/json_generator.py b/kgtk/json_generator.py new file mode 100644 index 000000000..e78386c23 --- /dev/null +++ b/kgtk/json_generator.py @@ -0,0 +1,24 @@ +import sys +import re +from typing import TextIO +from kgtk.exceptions import KGTKException + +BAD_CHARS = [":", "-", "&", ",", " ", + "(", ")", "\'", '\"', "/", "\\", "[", "]", ";", "|"] + + +class JsonGenerator: + """ + A class to maintain the status of the generator + """ + + def __init__( + self, + prop_file: str, + use_gz:bool, + ): + from etk.wikidata.statement import Rank + + def finalize(self): + # finalize the generator + return \ No newline at end of file From 0e75e8d92939d9148dd1497a6d441dcb4141f5a0 Mon Sep 17 00:00:00 2001 From: Rongpeng Date: Mon, 11 May 2020 11:04:46 -0700 Subject: [PATCH 002/217] completed the label json file generation --- kgtk/cli/generate_mediawiki_jsons.py | 75 ++++++++++-- kgtk/json_generator.py | 165 ++++++++++++++++++++++++++- 2 files changed, 230 insertions(+), 10 deletions(-) diff --git a/kgtk/cli/generate_mediawiki_jsons.py b/kgtk/cli/generate_mediawiki_jsons.py index 5309c33e2..c005e20cc 100644 --- a/kgtk/cli/generate_mediawiki_jsons.py +++ b/kgtk/cli/generate_mediawiki_jsons.py @@ -1,7 +1,7 @@ """ Generate mediawiki API json files from kgtk file -This command line tool will create three json files. Each will mimic the return of the following media wiki API for each entity existed in the kgtk file. +This command line tool will create three json files. Each will mimic the return of the following media wiki API for each entity existed in the kgtk file. """ @@ -23,7 +23,7 @@ def parser(): """ return { "help": "Generates mediawiki json responses from kgtk file", - "description": "Generating json files that mimic mediawiki *wbgetentities* api call response.", + "description": "Generating json files that mimic mediawiki *wbgetentities* api call response. This tool assumes statements and qualifiers related to one entity will be bundled close as the `generate_wikidata_triples` function assumes. If this requirement is not met, please set `n` to a number LARGER than the total number of entities in the kgtk file", } def add_arguments(parser): @@ -31,11 +31,41 @@ def add_arguments(parser): Parse arguments Args: parser (argparse.ArgumentParser) - prop_file: str, labelSet: str, aliasSet: str, descriptionSet: str, n: str, dest: Any --output-n-lines --generate-truthy + prop_file: str """ + parser.add_argument( + "-lp", + "--label-property", + action="store", + type=str, + default="label", + required=False, + help="property identifiers which will create labels, separated by comma','.", + dest="labels", + ) + parser.add_argument( + "-ap", + "--alias-property", + action="store", + type=str, + required = False, + default="aliases", + help="alias identifiers which will create labels, separated by comma','.", + dest="aliases", + ) + parser.add_argument( + "-dp", + "--description-property", + action="store", + type=str, + required = False, + default="descriptions", + help="description identifiers which will create labels, separated by comma','.", + dest="descriptions", + ) parser.add_argument( "-pf", - "--property-types", + "--property-file", action="store", type=str, required = True, @@ -52,19 +82,50 @@ def add_arguments(parser): help="if set to yes, read from compressed gz file", dest="use_gz", ) + # parser.add_argument( + # "-pr", + # "--output-file-prefix", + # action="store", + # type=str, + # default = "kgtk", + # required = False, + # help="set the prefix of the output files. Default to `kgtk`", + # dest="output_prefix", + # ) + parser.add_argument( + "-n", + "--output-n-lines", + action="store", + type=int, + required = False, + default=1000, + help="output json file when the corresponding dictionary size reaches n. Default to 1000", + dest="n", + ) def run( - prop_file:str = prop_file, - use_gz:bool = use_gz + labels: str, + aliases: str, + descriptions: str, + prop_file:str, + use_gz:bool, + # ouput_prefix:str, + n:int, ): # import modules locally from kgtk.json_generator import JsonGenerator import sys import gzip + generator = JsonGenerator( + label_set=labels, + alias_set=aliases, + description_set=descriptions, prop_file=prop_file, - use_gz = use_gz + use_gz = use_gz, + # ouput_prefix = ouput_prefix, + n = n, ) # process stdin if use_gz: diff --git a/kgtk/json_generator.py b/kgtk/json_generator.py index e78386c23..bcefb3298 100644 --- a/kgtk/json_generator.py +++ b/kgtk/json_generator.py @@ -1,6 +1,6 @@ import sys import re -from typing import TextIO +import json from kgtk.exceptions import KGTKException BAD_CHARS = [":", "-", "&", ",", " ", @@ -15,10 +15,169 @@ class JsonGenerator: def __init__( self, prop_file: str, + label_set: str, + alias_set: str, + description_set: str, use_gz:bool, + # output_prefix:str="", + n:int, ): - from etk.wikidata.statement import Rank + # indexing files + self.file_num = 0 + self.output_prefix = "kgtk" + # current output files + self.set_json_file_names() + # curret dictionaries + self.set_json_dict() + # TODO no qualifiers or references for version 1 + self.e_ids = set() + self.set_properties(prop_file) + self.set_sets( + label_set, alias_set, description_set + ) + self.order_map = {} + + def entry_point(self,line_number, edge): + # TODO + # first version only handles statement, not qualifiers + + # serialization + edge_list = edge.strip().split("\t") + l = len(edge_list) + if line_number == 1: + # initialize the order_map + edge_list = edge.strip().split("\t") + node1_index = edge_list.index("node1") + node2_index = edge_list.index("node2") + prop_index = edge_list.index("property") + id_index = edge_list.index("id") + if not all([node1_index > -1, node2_index > -1, prop_index > -1, id_index > -1]): + raise KGTKException( + "Header of kgtk file misses at least one of required column names: (node1, node2, property and id)") + else: + self.order_map["node1"] = node1_index + self.order_map["node2"] = node2_index + self.order_map["prop"] = prop_index + self.order_map["id"] = id_index + return + + node1 = edge_list[self.order_map["node1"]].strip() + node2 = edge_list[self.order_map["node2"]].strip() + prop = edge_list[self.order_map["prop"]].strip() + e_id = edge_list[self.order_map["id"]].strip() + self.e_ids.add(e_id) + if node1 in self.e_ids: + return + + # check label + # "P1423": { + # "type": "property", + # "datatype": "wikibase-item", + # "id": "P1423", + # "labels": { "en": { "language": "en", "value": "template's main topic" } } + # }, + # "Q22898962": { + # "type": "item", + # "id": "Q22898962", + # "labels": { + # "en": { "language": "en", "value": "Template:Douglas Adams" } + # } + # }, + + + # update label_json_dict + if prop in self.label_set: + self.update_label_json_dict(node1, prop, node2) + return + + def update_label_json_dict(self,node1:str, prop:str, node2:str): + # for label_dict + if node1 not in self.prop_types: + label_type = "item" + self.label_json_dict[node1] = { + "type":label_type + } + else: + label_type = "property" + label_datatype = self.prop_types[node1] + self.label_json_dict[node1] = { + "type":label_type, + "datatype":label_datatype, + } + self.label_json_dict[node1]["id"] = node1 + self.label_json_dict[node1]["labels"] = {} + if "@" in node2: + res = node2.split("@") + text_string = "@".join(res[:-1]) + lang = res[-1] + else: + text_string, lang = node2, "en" + self.label_json_dict[node1]["labels"][lang] = { + "language":lang, "value": text_string + } + return + + + def set_sets(self, label_set: str, alias_set: str, description_set: str): + self.label_set, self.alias_set, self.description_set = set(label_set.split(",")), set(alias_set.split(",")), set(description_set.split(",")) + + def set_properties(self, prop_file: str): + datatype_mapping = { + "item": "wikibase-item", + "time": "time", + "globe-coordinate": "globe-coordinate", + "quantity": "quantity", + "monolingualtext": "monolingualtext", + "string": "string", + "external-identifier": "external-id", + "url": "url" + } + with open(prop_file, "r") as fp: + props = fp.readlines() + prop_types = {} + for line in props[1:]: + node1, _, node2 = line.split("\t") + try: + prop_types[node1] = datatype_mapping[node2.strip()] + except: + if not self.ignore: + raise KGTKException( + "DataType {} of node {} is not supported.\n".format( + node2, node1 + ) + ) + self.prop_types = prop_types + + def serialize(self): + ''' + serialize the dictionaries to the file pointer + ''' + with open(self.label_json_file,"w") as fp: + json.dump(self.label_json_dict,fp) + + with open(self.misc_json_file,"w") as fp: + json.dump(self.misc_json_dict,fp) + + with open(self.info_json_file,"w") as fp: + json.dump(self.info_json_dict,fp) + + # update dict and files + self.set_json_file_names() + self.set_json_dict() def finalize(self): # finalize the generator - return \ No newline at end of file + self.serialize() + return + + def set_json_dict(self): + self.label_json_dict = {} + self.misc_json_dict = {} + self.info_json_dict = {} + + def set_json_file_names(self): + self.file_num += 1 + prefix = self.output_prefix + "_" + str(self.file_num) + "_" + self.label_json_file = prefix + "labels.json" + self.misc_json_file = prefix + "misc.json" + self.info_json_file = prefix + "info.json" \ No newline at end of file From cce735c277d4290715836794fda52c4c94892484 Mon Sep 17 00:00:00 2001 From: Rongpeng Date: Mon, 11 May 2020 12:35:30 -0700 Subject: [PATCH 003/217] first version of info json file building complete --- kgtk/json_generator.py | 52 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/kgtk/json_generator.py b/kgtk/json_generator.py index bcefb3298..23502c005 100644 --- a/kgtk/json_generator.py +++ b/kgtk/json_generator.py @@ -88,7 +88,59 @@ def entry_point(self,line_number, edge): # update label_json_dict if prop in self.label_set: self.update_label_json_dict(node1, prop, node2) + # update label and descriptions + if prop in self.description_set: + self.update_misc_json_dict(node1, prop, node2, "descriptions") + if prop in self.alias_set: + self.update_misc_json_dict(node1, prop, node2, "aliases") + + # "Q42": { + # "pageid": 138, + # "ns": 0, + # "title": "Q42", + # "lastrevid": 1175340593, + # "modified": "2020-05-06T19:28:31Z", + # "type": "item", + # "id": "Q42" + # } + # update info_json_dict + self.update_info_json_dict(node1) + if (prop not in self.alias_set) and (prop not in self.label_set) and (prop not in self.description_set): + if prop in self.prop_types: + self.update_info_json_dict(prop) + if self.prop_types[prop] == "wikibase-item": + # self.update_info_json_dict(node2) TODO + pass + + return + + def update_info_json_dict(self, node:str): + if node in self.info_json_dict: + return + #TODO, not robust but no easy way to figure it out + if node.startswith("Q"): + self.info_json_dict[node] = { + "pageid":-1, + "ns":-1, + "title":node, + "lastrevid":"2020-05-06T19:28:31Z", + "type":"item", + "id":node} + elif node.startswith("P"): + self.info_json_dict[node] = { + "pageid":-1, + "ns":-1, + "title":node, + "lastrevid":"2020-05-06T19:28:31Z", + "type":"property", + "id":node} + else: + raise KGTKException("node {} is neither an entity nor a property.".format(node)) return + + def update_misc_json_dict(self, node1:str, prop:str, node2:str, field:str): + return + def update_label_json_dict(self,node1:str, prop:str, node2:str): # for label_dict From 3233cdda2109bca3690212d49cd5ff209404607a Mon Sep 17 00:00:00 2001 From: Rongpeng Date: Tue, 12 May 2020 14:45:03 -0700 Subject: [PATCH 004/217] to json --- kgtk/json_generator.py | 189 ++++++++++++++++++++++++++++------------- 1 file changed, 128 insertions(+), 61 deletions(-) diff --git a/kgtk/json_generator.py b/kgtk/json_generator.py index 23502c005..fc3f0b1b6 100644 --- a/kgtk/json_generator.py +++ b/kgtk/json_generator.py @@ -1,3 +1,73 @@ + +# labels: + +# "P1855": { +# "type": "property", +# "datatype": "wikibase-item", +# "id": "P1855", +# "labels": { +# "en": { "language": "en", "value": "Wikidata property example" } +# } +# }, + +# "Q20898239": { +# "type": "item", +# "id": "Q20898239", +# "labels": { +# "en": { +# "language": "en", +# "value": "The Hitch Hiker's Guide to the Galaxy (1979 edition)" +# } +# } +# }, + +# info: + +# "Q42": { +# "pageid": 138, +# "ns": 0, +# "title": "Q42", +# "lastrevid": 1175340593, +# "modified": "2020-05-06T19:28:31Z", +# "type": "item", +# "id": "Q42" +# } + +# "P31": { +# "pageid": 3918489, +# "ns": 120, +# "title": "Property:P31", +# "lastrevid": 1179261400, +# "modified": "2020-05-11T22:37:17Z", +# "type": "property", +# "datatype": "wikibase-item", +# "id": "P31" +# } + +# misc: + +# "Q42": { +# "pageid": 138, +# "ns": 0, +# "title": "Q42", +# "lastrevid": 1175340593, +# "modified": "2020-05-06T19:28:31Z", +# "type": "item", +# "id": "Q42", +# "labels": { "en": { "language": "en", "value": "Douglas Adams" } }, +# "descriptions:{}, +# "aliases":{}, +# "claims":{}, +# "sitelinks:{} +# } + + + + + + + + import sys import re import json @@ -6,7 +76,6 @@ BAD_CHARS = [":", "-", "&", ",", " ", "(", ")", "\'", '\"', "/", "\\", "[", "]", ";", "|"] - class JsonGenerator: """ A class to maintain the status of the generator @@ -32,9 +101,7 @@ def __init__( # TODO no qualifiers or references for version 1 self.e_ids = set() self.set_properties(prop_file) - self.set_sets( - label_set, alias_set, description_set - ) + self.set_sets(label_set, alias_set, description_set) self.order_map = {} def entry_point(self,line_number, edge): @@ -67,79 +134,69 @@ def entry_point(self,line_number, edge): e_id = edge_list[self.order_map["id"]].strip() self.e_ids.add(e_id) if node1 in self.e_ids: - return - - # check label - # "P1423": { - # "type": "property", - # "datatype": "wikibase-item", - # "id": "P1423", - # "labels": { "en": { "language": "en", "value": "template's main topic" } } - # }, - # "Q22898962": { - # "type": "item", - # "id": "Q22898962", - # "labels": { - # "en": { "language": "en", "value": "Template:Douglas Adams" } - # } - # }, - - + return #TODO not handling qualifiers # update label_json_dict if prop in self.label_set: self.update_label_json_dict(node1, prop, node2) - # update label and descriptions + + # update info_json_dict + if node1 in self.prop_types: + self.update_info_json_dict(node1, self.prop_types[node1]) + else: + self.update_info_json_dict(node1, None) + + if prop in self.prop_types: + self.update_info_json_dict(prop,self.prop_types[prop]) + if self.prop_types[prop] == "wikibase-item": + self.update_info_json_dict(node2) + + # update alias and descriptions if prop in self.description_set: self.update_misc_json_dict(node1, prop, node2, "descriptions") if prop in self.alias_set: self.update_misc_json_dict(node1, prop, node2, "aliases") - # "Q42": { - # "pageid": 138, - # "ns": 0, - # "title": "Q42", - # "lastrevid": 1175340593, - # "modified": "2020-05-06T19:28:31Z", - # "type": "item", - # "id": "Q42" - # } - # update info_json_dict - self.update_info_json_dict(node1) - if (prop not in self.alias_set) and (prop not in self.label_set) and (prop not in self.description_set): - if prop in self.prop_types: - self.update_info_json_dict(prop) - if self.prop_types[prop] == "wikibase-item": - # self.update_info_json_dict(node2) TODO - pass + # normal update for claims - return - def update_info_json_dict(self, node:str): - if node in self.info_json_dict: - return + def update_info_json_dict(self, node:str,data_type = None): + # if node in self.info_json_dict: + # return #TODO, not robust but no easy way to figure it out if node.startswith("Q"): self.info_json_dict[node] = { "pageid":-1, "ns":-1, "title":node, - "lastrevid":"2020-05-06T19:28:31Z", + "lastrevid":"2000-01-01T00:00:00Z", #TODO "type":"item", "id":node} elif node.startswith("P"): self.info_json_dict[node] = { "pageid":-1, "ns":-1, - "title":node, - "lastrevid":"2020-05-06T19:28:31Z", + "title":"Property:"+node, + "lastrevid":"2000-01-01T00:00:00Z", "type":"property", + "datatype":data_type, "id":node} else: raise KGTKException("node {} is neither an entity nor a property.".format(node)) - return - + def update_misc_json_dict(self, node1:str, prop:str, node2:str, field:str): - return + if node1 not in self.misc_json_dict: + self.misc_json_dict[node1] = {**self.label_json_dict[node1], **self.info_json_dict[node1]} + self.misc_json_dict[node1]["descriptions"] = {} + self.misc_json_dict[node1]["aliases"] = {} + self.misc_json_dict[node1]["claims"] = {} + self.misc_json_dict[node1]["sitelinks"] = {} + + if field == "descriptions": + pass + if field == "aliases": + pass + + # update claims def update_label_json_dict(self,node1:str, prop:str, node2:str): @@ -158,16 +215,8 @@ def update_label_json_dict(self,node1:str, prop:str, node2:str): } self.label_json_dict[node1]["id"] = node1 self.label_json_dict[node1]["labels"] = {} - if "@" in node2: - res = node2.split("@") - text_string = "@".join(res[:-1]) - lang = res[-1] - else: - text_string, lang = node2, "en" - self.label_json_dict[node1]["labels"][lang] = { - "language":lang, "value": text_string - } - return + text_string, lang = JsonGenerator.process_text_string(node2) + self.label_json_dict[node1]["labels"][lang] = {"language":lang, "value": text_string} def set_sets(self, label_set: str, alias_set: str, description_set: str): @@ -232,4 +281,22 @@ def set_json_file_names(self): prefix = self.output_prefix + "_" + str(self.file_num) + "_" self.label_json_file = prefix + "labels.json" self.misc_json_file = prefix + "misc.json" - self.info_json_file = prefix + "info.json" \ No newline at end of file + self.info_json_file = prefix + "info.json" + + @staticmethod + def process_text_string(string: str) -> [str, str]: + ''' + Language detection is removed from triple generation. The user is responsible for detect the language + ''' + if len(string) == 0: + return ["", "en"] + if "@" in string: + res = string.split("@") + text_string = "@".join(res[:-1]).replace('"', "").replace("'", "") + lang = res[-1].replace('"', '').replace("'", "") + if len(lang) > 2: + lang = "en" + else: + text_string = string.replace('"', "").replace("'", "") + lang = "en" + return [text_string, lang] \ No newline at end of file From 9baba0b90ac3e2d76989a3b219d3f2d0f48f6025 Mon Sep 17 00:00:00 2001 From: Rongpeng Date: Tue, 12 May 2020 15:35:56 -0700 Subject: [PATCH 005/217] descriptions --- kgtk/json_generator.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/kgtk/json_generator.py b/kgtk/json_generator.py index fc3f0b1b6..bc09ea0ef 100644 --- a/kgtk/json_generator.py +++ b/kgtk/json_generator.py @@ -192,9 +192,13 @@ def update_misc_json_dict(self, node1:str, prop:str, node2:str, field:str): self.misc_json_dict[node1]["sitelinks"] = {} if field == "descriptions": - pass + description_text, lang = JsonGenerator.process_text_string(node2) + temp_des_dict = {lang:{"languange":lang,"value":description_text}} + self.misc_json_dict[node1]["descriptions"] = {**self.misc_json_dict[node1]["descriptions"], **temp_des_dict} if field == "aliases": - pass + alias_text, lang = JsonGenerator.process_text_string(node2) + if lang in self.misc_json_dict[node1]["aliases"]: + pass # update claims From 600ebdd917ec13d9fa0d20a70611bd0658b0cb0c Mon Sep 17 00:00:00 2001 From: Rongpeng Date: Tue, 12 May 2020 16:09:19 -0700 Subject: [PATCH 006/217] fix a bug that trailing \t will be stripped --- kgtk/triple_generator.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/kgtk/triple_generator.py b/kgtk/triple_generator.py index 9c1bda570..6c8c70628 100644 --- a/kgtk/triple_generator.py +++ b/kgtk/triple_generator.py @@ -374,11 +374,9 @@ def entry_point(self, line_number: int, edge: str): Call corresponding downstream functions """ - edge_list = edge.strip().split("\t") - l = len(edge_list) + edge_list = edge.strip("\n").split("\t") if line_number == 1: # initialize the order_map - edge_list = edge.strip().split("\t") node1_index = edge_list.index("node1") node2_index = edge_list.index("node2") prop_index = edge_list.index("property") @@ -394,7 +392,6 @@ def entry_point(self, line_number: int, edge: str): return # use the order_map to map the node - node1 = edge_list[self.order_map["node1"]].strip() node2 = edge_list[self.order_map["node2"]].strip() prop = edge_list[self.order_map["prop"]].strip() From 6064f1e7963f7c0a38d0726783afa7a7b38f526e Mon Sep 17 00:00:00 2001 From: Rongpeng Date: Tue, 12 May 2020 22:52:12 -0700 Subject: [PATCH 007/217] finished the first verison of json_generator --- kgtk/json_generator.py | 244 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 235 insertions(+), 9 deletions(-) diff --git a/kgtk/json_generator.py b/kgtk/json_generator.py index bc09ea0ef..2ab41740b 100644 --- a/kgtk/json_generator.py +++ b/kgtk/json_generator.py @@ -103,17 +103,18 @@ def __init__( self.set_properties(prop_file) self.set_sets(label_set, alias_set, description_set) self.order_map = {} + self.quantity_pattern = re.compile( + "([\+|\-]?[0-9]+\.?[0-9]*[e|E]?[\-]?[0-9]*)(?:\[([\+|\-]?[0-9]+\.?[0-9]*),([\+|\-]?[0-9]+\.?[0-9]*)\])?([U|Q](?:[0-9]+))?") def entry_point(self,line_number, edge): # TODO # first version only handles statement, not qualifiers # serialization - edge_list = edge.strip().split("\t") + edge_list = edge.strip("\n").split("\t") l = len(edge_list) if line_number == 1: # initialize the order_map - edge_list = edge.strip().split("\t") node1_index = edge_list.index("node1") node2_index = edge_list.index("node2") prop_index = edge_list.index("property") @@ -152,9 +153,9 @@ def entry_point(self,line_number, edge): # update alias and descriptions if prop in self.description_set: - self.update_misc_json_dict(node1, prop, node2, "descriptions") + self.update_misc_json_dict(node1, prop, node2, line_number,"descriptions") if prop in self.alias_set: - self.update_misc_json_dict(node1, prop, node2, "aliases") + self.update_misc_json_dict(node1, prop, node2, line_number,"aliases") # normal update for claims @@ -183,7 +184,7 @@ def update_info_json_dict(self, node:str,data_type = None): else: raise KGTKException("node {} is neither an entity nor a property.".format(node)) - def update_misc_json_dict(self, node1:str, prop:str, node2:str, field:str): + def update_misc_json_dict(self, node1:str, prop:str, node2:str, line_number:int, field:str): if node1 not in self.misc_json_dict: self.misc_json_dict[node1] = {**self.label_json_dict[node1], **self.info_json_dict[node1]} self.misc_json_dict[node1]["descriptions"] = {} @@ -195,14 +196,231 @@ def update_misc_json_dict(self, node1:str, prop:str, node2:str, field:str): description_text, lang = JsonGenerator.process_text_string(node2) temp_des_dict = {lang:{"languange":lang,"value":description_text}} self.misc_json_dict[node1]["descriptions"] = {**self.misc_json_dict[node1]["descriptions"], **temp_des_dict} + return if field == "aliases": alias_text, lang = JsonGenerator.process_text_string(node2) + temp_alias_dict = {lang, {"languange": lang, "value":alias_text}} if lang in self.misc_json_dict[node1]["aliases"]: - pass + self.misc_json_dict[node1]["aliases"][lang].append(temp_alias_dict) + else: + self.misc_json_dict[node1]["aliases"][lang] = [temp_alias_dict] + return + if prop not in self.prop_types: + raise KGTKException("property {} at line {} is not defined.".format(prop,line_number)) - # update claims + if prop not in self.misc_json_dict[node1]["claims"]: + self.misc_json_dict[node1]["claims"][prop] = [] + if self.prop_types[prop] == "wikibase-item": + self.update_misc_json_dict_item(node1,prop,node2) + elif self.prop_types[prop] == "time": + self.update_misc_json_dict_time(node1,prop,node2) + elif self.prop_types[prop] == "globe-coordinate": + self.update_misc_json_dict_coordinate(node1,prop,node2) + elif self.prop_types[prop] == "quantity": + self.update_misc_json_dict_quantity(node1,prop,node2) + elif self.prop_types[prop] == "monolingualtext": + self.update_misc_json_dict_monolingualtext(node1,prop,node2) + elif self.prop_types[prop] == "string": + self.update_misc_json_dict_string(node1,prop,node2) + elif self.prop_types[prop] == "external-id": + self.update_misc_json_dict_external_id(node1,prop,node2) + elif self.prop_types[prop] == "url": + self.update_misc_json_dict_url(node1,prop,node2) + else: + raise KGTKException("property tyepe {} of property {} at line {} is not defined.".format(self.prop_types[prop],prop,line_number)) + + def update_misc_json_dict_item(self,node1:str,prop:str,node2:str): + temp_item_dict = { + "mainsnak":{ + "snaktype":"value", + "property":prop, + "hash":"hashplaceholder", + "datavalue":{ + "value":{ + "entity-type":"item","numeric-id":0,"id":node2 # place holder for numeric id + }, + "type":"wikibase-entityid" + }, + "datatype":"wikibase-item" + }, + "type":"statement", + "id":"id-place-holder", + "rank":"normal", #TODO + "references":[], + "qualifiers":{} + } + self.misc_json_dict[node1]["claims"][prop].append(temp_item_dict) + return + def update_misc_json_dict_time(self,node1,prop,node2): + time_string, precision = node2.split("/") + precision = int(precision) + temp_time_dict = { + "mainsnak":{ + "snaktype":"value", + "property":prop, + "hash":"hashplaceholder", + "datavalue":{ + "value":{ + "time":time_string, + "timezone": 0, + "before": 0, + "after": 0, + "precision": precision, + "calendarmodel": "http://www.wikidata.org/entity/Q1985727" + }, + "type":"time" + }, + "datatype":"time" + }, + "type":"statement", + "id":"id-place-holder", + "rank":"normal", #TODO + "references":[], + "qualifiers":{} + } + self.misc_json_dict[node1]["claims"][prop].append(temp_time_dict) + return + def update_misc_json_dict_coordinate(self,node1,prop,node2): + latitude, longitude = node2[1:].split("/") + latitude = float(latitude) + longitude = float(longitude) + temp_coordinate_dict = { + "mainsnak":{ + "snaktype":"value", + "property":prop, + "hash":"hashplaceholder", + "datavalue":{ + "value":{ + "latitude":latitude, + "longitude": longitude, + "altitude": None, + "precision": 0.00027777777777778, # TODO + "globe": "http://www.wikidata.org/entity/Q2" + }, + "type":"globecoordinate" + }, + "datatype":"globecoordinate" + }, + "type":"statement", + "id":"id-place-holder", + "rank":"normal", #TODO + "references":[], + "qualifiers":{} + } + self.misc_json_dict[node1]["claims"][prop].append(temp_coordinate_dict) + return + def update_misc_json_dict_quantity(self,node1,prop,node2): + res = self.quantity_pattern.match(node2).groups() + amount, lower_bound, upper_bound, unit = res + amount = JsonGenerator.clean_number_string(amount) + lower_bound = JsonGenerator.clean_number_string(lower_bound) + upper_bound = JsonGenerator.clean_number_string(upper_bound) + unit = "http://www.wikidata.org/entity/" + unit if unit != None else None + temp_quantity_dict = { + "mainsnak":{ + "snaktype":"value", + "property":prop, + "hash":"hashplaceholder", + "datavalue":{ + "value":{ + "amount":amount, + "unit": unit, + "lowerBound":lower_bound, + "UpperBound":upper_bound + }, + "type":"quantity" + }, + "datatype":"quantity" + }, + "type":"statement", + "id":"id-place-holder", + "rank":"normal", #TODO + "references":[], + "qualifiers":{} + } + self.misc_json_dict[node1]["claims"][prop].append(temp_quantity_dict) + return + def update_misc_json_dict_monolingualtext(self,node1,prop,node2): + text_string, lang = JsonGenerator.process_text_string(node2) + temp_mono_dict ={ + "mainsnak":{ + "snaktype":"value", + "property":prop, + "hash":"hashplaceholder", + "datavalue":{ + "value":{ + "text":text_string, + "language":lang + }, + "type":"monolingualtext" + }, + "datatype":"monolingualtext" + }, + "type":"statement", + "id":"id-place-holder", + "rank":"normal", #TODO + "references":[], + "qualifiers":{} + } + self.misc_json_dict[node1]["claims"][prop].append(temp_mono_dict) + return + def update_misc_json_dict_string(self,node1,prop,node2): + string, lang = JsonGenerator.process_text_string(node2) + temp_string_dict = { + "mainsnak": { + "snaktype": "value", + "property": prop, + "hash": "hashplaceholder", + "datavalue": { "value": string, "type": "string" }, + "datatype": "string" + }, + "type": "statement", + "id": "id-place-holder", + "rank": "normal", + "references":[], + "qualifiers":{} + } + self.misc_json_dict[node1]["claims"][prop].append(temp_string_dict) + return + def update_misc_json_dict_external_id(self,node1,prop,node2): + temp_e_id_dict = {"mainsnak": { + "snaktype": "value", + "property": prop, + "hash": "hashplaceholder", + "datavalue": { "value": node2, "type": "string" }, + "datatype": "external-id" + }, + "type": "statement", + "id": "id-place-holder", + "rank": "normal", + "references":[], + "qualifiers":{}} + self.misc_json_dict[node1]["claims"][prop].append(temp_e_id_dict) + return + def update_misc_json_dict_url(self,node1,prop,node2): + temp_url_dict ={ + "mainsnak": { + "snaktype": "value", + "property": prop, + "hash": "hashplaceholder", + "datavalue": { + "value": node2, + "type": "string" + }, + "datatype": "url" + }, + "type": "statement", + "id": "id-place-holder", + "rank": "normal", + "references":[], + "qualifiers":{} + } + self.misc_json_dict[node1]["claims"][prop].append(temp_url_dict) + return + + + - def update_label_json_dict(self,node1:str, prop:str, node2:str): # for label_dict if node1 not in self.prop_types: @@ -303,4 +521,12 @@ def process_text_string(string: str) -> [str, str]: else: text_string = string.replace('"', "").replace("'", "") lang = "en" - return [text_string, lang] \ No newline at end of file + return [text_string, lang] + + @staticmethod + def clean_number_string(num): + from numpy import format_float_positional + if num == None: + return None + else: + return format_float_positional(float(num), trim="-") \ No newline at end of file From ef7e68a28d89d1d4b77e8a833c2d0111740f7acf Mon Sep 17 00:00:00 2001 From: Rongpeng Date: Mon, 18 May 2020 10:21:14 -0700 Subject: [PATCH 008/217] kgtk_to_json --- kgtk/json_generator.py | 386 ++++++++++++++++++++------------------- kgtk/triple_generator.py | 4 - 2 files changed, 202 insertions(+), 188 deletions(-) diff --git a/kgtk/json_generator.py b/kgtk/json_generator.py index 2ab41740b..87cddf7de 100644 --- a/kgtk/json_generator.py +++ b/kgtk/json_generator.py @@ -60,17 +60,10 @@ # "claims":{}, # "sitelinks:{} # } - - - - - - - - import sys import re import json +from time import sleep from kgtk.exceptions import KGTKException BAD_CHARS = [":", "-", "&", ",", " ", @@ -105,6 +98,9 @@ def __init__( self.order_map = {} self.quantity_pattern = re.compile( "([\+|\-]?[0-9]+\.?[0-9]*[e|E]?[\-]?[0-9]*)(?:\[([\+|\-]?[0-9]+\.?[0-9]*),([\+|\-]?[0-9]+\.?[0-9]*)\])?([U|Q](?:[0-9]+))?") + self.yyyy_mm_dd_pattern = re.compile( + "[12]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])") + self.yyyy_pattern = re.compile("[12]\d{3}") def entry_point(self,line_number, edge): # TODO @@ -136,9 +132,6 @@ def entry_point(self,line_number, edge): self.e_ids.add(e_id) if node1 in self.e_ids: return #TODO not handling qualifiers - # update label_json_dict - if prop in self.label_set: - self.update_label_json_dict(node1, prop, node2) # update info_json_dict if node1 in self.prop_types: @@ -151,14 +144,48 @@ def entry_point(self,line_number, edge): if self.prop_types[prop] == "wikibase-item": self.update_info_json_dict(node2) + # update label_json_dict + if prop in self.label_set: + self.update_label_json_dict(node1, prop, node2) + return + else : + # update with empty label + if node1 not in self.label_json_dict: + self.update_label_json_dict(node1, prop, None) + # update alias and descriptions if prop in self.description_set: self.update_misc_json_dict(node1, prop, node2, line_number,"descriptions") + return + if prop in self.alias_set: self.update_misc_json_dict(node1, prop, node2, line_number,"aliases") + return # normal update for claims + self.update_misc_json_dict(node1,prop,node2,line_number,None) + return + def update_label_json_dict(self,node1:str, prop:str, node2:str): + # for label_dict + if node1 not in self.prop_types: + label_type = "item" + self.label_json_dict[node1] = { + "type":label_type + } + else: + label_type = "property" + label_datatype = self.prop_types[node1] + self.label_json_dict[node1] = { + "type":label_type, + "datatype":label_datatype, + } + self.label_json_dict[node1]["id"] = node1 + self.label_json_dict[node1]["labels"] = {} + if node2 != None: + text_string, lang = JsonGenerator.process_text_string(node2) + self.label_json_dict[node1]["labels"][lang] = {"language":lang, "value": text_string} + return def update_info_json_dict(self, node:str,data_type = None): # if node in self.info_json_dict: @@ -182,8 +209,7 @@ def update_info_json_dict(self, node:str,data_type = None): "datatype":data_type, "id":node} else: - raise KGTKException("node {} is neither an entity nor a property.".format(node)) - + raise KGTKException("node {} is neither an entity nor a property.".format(node)) def update_misc_json_dict(self, node1:str, prop:str, node2:str, line_number:int, field:str): if node1 not in self.misc_json_dict: self.misc_json_dict[node1] = {**self.label_json_dict[node1], **self.info_json_dict[node1]} @@ -197,6 +223,7 @@ def update_misc_json_dict(self, node1:str, prop:str, node2:str, line_number:int, temp_des_dict = {lang:{"languange":lang,"value":description_text}} self.misc_json_dict[node1]["descriptions"] = {**self.misc_json_dict[node1]["descriptions"], **temp_des_dict} return + if field == "aliases": alias_text, lang = JsonGenerator.process_text_string(node2) temp_alias_dict = {lang, {"languange": lang, "value":alias_text}} @@ -205,32 +232,37 @@ def update_misc_json_dict(self, node1:str, prop:str, node2:str, line_number:int, else: self.misc_json_dict[node1]["aliases"][lang] = [temp_alias_dict] return + + assert(field==None) #TODO better handling + if prop not in self.prop_types: raise KGTKException("property {} at line {} is not defined.".format(prop,line_number)) if prop not in self.misc_json_dict[node1]["claims"]: self.misc_json_dict[node1]["claims"][prop] = [] - if self.prop_types[prop] == "wikibase-item": - self.update_misc_json_dict_item(node1,prop,node2) - elif self.prop_types[prop] == "time": - self.update_misc_json_dict_time(node1,prop,node2) - elif self.prop_types[prop] == "globe-coordinate": - self.update_misc_json_dict_coordinate(node1,prop,node2) - elif self.prop_types[prop] == "quantity": - self.update_misc_json_dict_quantity(node1,prop,node2) - elif self.prop_types[prop] == "monolingualtext": - self.update_misc_json_dict_monolingualtext(node1,prop,node2) - elif self.prop_types[prop] == "string": - self.update_misc_json_dict_string(node1,prop,node2) - elif self.prop_types[prop] == "external-id": - self.update_misc_json_dict_external_id(node1,prop,node2) - elif self.prop_types[prop] == "url": - self.update_misc_json_dict_url(node1,prop,node2) - else: - raise KGTKException("property tyepe {} of property {} at line {} is not defined.".format(self.prop_types[prop],prop,line_number)) - - def update_misc_json_dict_item(self,node1:str,prop:str,node2:str): - temp_item_dict = { + try: + if self.prop_types[prop] == "wikibase-item": + self.update_misc_json_dict_item(node1,prop,node2) + elif self.prop_types[prop] == "time": + self.update_misc_json_dict_time(node1,prop,node2) + elif self.prop_types[prop] == "globe-coordinate": + self.update_misc_json_dict_coordinate(node1,prop,node2) + elif self.prop_types[prop] == "quantity": + self.update_misc_json_dict_quantity(node1,prop,node2) + elif self.prop_types[prop] == "monolingualtext": + self.update_misc_json_dict_monolingualtext(node1,prop,node2) + elif self.prop_types[prop] == "string": + self.update_misc_json_dict_string(node1,prop,node2) + elif self.prop_types[prop] == "external-id": + self.update_misc_json_dict_external_id(node1,prop,node2) + elif self.prop_types[prop] == "url": + self.update_misc_json_dict_url(node1,prop,node2) + else: + raise KGTKException("property tyepe {} of property {} at line {} is not defined.".format(self.prop_types[prop],prop,line_number)) + except: + raise KGTKException("illegal edge at line {}.".format(line_number)) + def update_misc_json_dict_item(self,node1:str,prop:str,node2:str): + temp_item_dict = { "mainsnak":{ "snaktype":"value", "property":prop, @@ -249,100 +281,109 @@ def update_misc_json_dict_item(self,node1:str,prop:str,node2:str): "references":[], "qualifiers":{} } - self.misc_json_dict[node1]["claims"][prop].append(temp_item_dict) - return - def update_misc_json_dict_time(self,node1,prop,node2): + self.misc_json_dict[node1]["claims"][prop].append(temp_item_dict) + return + def update_misc_json_dict_time(self,node1,prop,node2): + if self.yyyy_pattern.match(node2): + time_string = node2 + "-01-01" + precision = 9 + elif self.yyyy_mm_dd_pattern.match(node2): + time_string = node2 + precision = 11 + try: time_string, precision = node2.split("/") precision = int(precision) - temp_time_dict = { - "mainsnak":{ - "snaktype":"value", - "property":prop, - "hash":"hashplaceholder", - "datavalue":{ - "value":{ - "time":time_string, - "timezone": 0, - "before": 0, - "after": 0, - "precision": precision, - "calendarmodel": "http://www.wikidata.org/entity/Q1985727" - }, - "type":"time" + except: + return # ignore the illegal time format for now + temp_time_dict = { + "mainsnak":{ + "snaktype":"value", + "property":prop, + "hash":"hashplaceholder", + "datavalue":{ + "value":{ + "time":time_string, + "timezone": 0, + "before": 0, + "after": 0, + "precision": precision, + "calendarmodel": "http://www.wikidata.org/entity/Q1985727" }, - "datatype":"time" + "type":"time" }, - "type":"statement", - "id":"id-place-holder", - "rank":"normal", #TODO - "references":[], - "qualifiers":{} - } - self.misc_json_dict[node1]["claims"][prop].append(temp_time_dict) - return - def update_misc_json_dict_coordinate(self,node1,prop,node2): - latitude, longitude = node2[1:].split("/") - latitude = float(latitude) - longitude = float(longitude) - temp_coordinate_dict = { - "mainsnak":{ - "snaktype":"value", - "property":prop, - "hash":"hashplaceholder", - "datavalue":{ - "value":{ - "latitude":latitude, - "longitude": longitude, - "altitude": None, - "precision": 0.00027777777777778, # TODO - "globe": "http://www.wikidata.org/entity/Q2" - }, - "type":"globecoordinate" + "datatype":"time" + }, + "type":"statement", + "id":"id-place-holder", + "rank":"normal", #TODO + "references":[], + "qualifiers":{} + } + self.misc_json_dict[node1]["claims"][prop].append(temp_time_dict) + return + def update_misc_json_dict_coordinate(self,node1,prop,node2): + latitude, longitude = node2[1:].split("/") + latitude = float(latitude) + longitude = float(longitude) + temp_coordinate_dict = { + "mainsnak":{ + "snaktype":"value", + "property":prop, + "hash":"hashplaceholder", + "datavalue":{ + "value":{ + "latitude":latitude, + "longitude": longitude, + "altitude": None, + "precision": 0.00027777777777778, # TODO + "globe": "http://www.wikidata.org/entity/Q2" }, - "datatype":"globecoordinate" + "type":"globecoordinate" }, - "type":"statement", - "id":"id-place-holder", - "rank":"normal", #TODO - "references":[], - "qualifiers":{} - } - self.misc_json_dict[node1]["claims"][prop].append(temp_coordinate_dict) - return - def update_misc_json_dict_quantity(self,node1,prop,node2): - res = self.quantity_pattern.match(node2).groups() - amount, lower_bound, upper_bound, unit = res - amount = JsonGenerator.clean_number_string(amount) - lower_bound = JsonGenerator.clean_number_string(lower_bound) - upper_bound = JsonGenerator.clean_number_string(upper_bound) - unit = "http://www.wikidata.org/entity/" + unit if unit != None else None - temp_quantity_dict = { - "mainsnak":{ - "snaktype":"value", - "property":prop, - "hash":"hashplaceholder", - "datavalue":{ - "value":{ - "amount":amount, - "unit": unit, - "lowerBound":lower_bound, - "UpperBound":upper_bound - }, - "type":"quantity" + "datatype":"globecoordinate" + }, + "type":"statement", + "id":"id-place-holder", + "rank":"normal", #TODO + "references":[], + "qualifiers":{} + } + self.misc_json_dict[node1]["claims"][prop].append(temp_coordinate_dict) + return + def update_misc_json_dict_quantity(self,node1,prop,node2): + res = self.quantity_pattern.match(node2).groups() + amount, lower_bound, upper_bound, unit = res + amount = JsonGenerator.clean_number_string(amount) + lower_bound = JsonGenerator.clean_number_string(lower_bound) + upper_bound = JsonGenerator.clean_number_string(upper_bound) + unit = "http://www.wikidata.org/entity/" + unit if unit != None else None + temp_quantity_dict = { + "mainsnak":{ + "snaktype":"value", + "property":prop, + "hash":"hashplaceholder", + "datavalue":{ + "value":{ + "amount":amount, + "unit": unit, + "lowerBound":lower_bound, + "UpperBound":upper_bound }, - "datatype":"quantity" + "type":"quantity" }, - "type":"statement", - "id":"id-place-holder", - "rank":"normal", #TODO - "references":[], - "qualifiers":{} - } - self.misc_json_dict[node1]["claims"][prop].append(temp_quantity_dict) - return - def update_misc_json_dict_monolingualtext(self,node1,prop,node2): - text_string, lang = JsonGenerator.process_text_string(node2) - temp_mono_dict ={ + "datatype":"quantity" + }, + "type":"statement", + "id":"id-place-holder", + "rank":"normal", #TODO + "references":[], + "qualifiers":{} + } + self.misc_json_dict[node1]["claims"][prop].append(temp_quantity_dict) + return + def update_misc_json_dict_monolingualtext(self,node1,prop,node2): + text_string, lang = JsonGenerator.process_text_string(node2) + temp_mono_dict ={ "mainsnak":{ "snaktype":"value", "property":prop, @@ -362,11 +403,11 @@ def update_misc_json_dict_monolingualtext(self,node1,prop,node2): "references":[], "qualifiers":{} } - self.misc_json_dict[node1]["claims"][prop].append(temp_mono_dict) - return - def update_misc_json_dict_string(self,node1,prop,node2): - string, lang = JsonGenerator.process_text_string(node2) - temp_string_dict = { + self.misc_json_dict[node1]["claims"][prop].append(temp_mono_dict) + return + def update_misc_json_dict_string(self,node1,prop,node2): + string, lang = JsonGenerator.process_text_string(node2) + temp_string_dict = { "mainsnak": { "snaktype": "value", "property": prop, @@ -380,66 +421,43 @@ def update_misc_json_dict_string(self,node1,prop,node2): "references":[], "qualifiers":{} } - self.misc_json_dict[node1]["claims"][prop].append(temp_string_dict) - return - def update_misc_json_dict_external_id(self,node1,prop,node2): - temp_e_id_dict = {"mainsnak": { - "snaktype": "value", - "property": prop, - "hash": "hashplaceholder", - "datavalue": { "value": node2, "type": "string" }, - "datatype": "external-id" - }, - "type": "statement", - "id": "id-place-holder", - "rank": "normal", - "references":[], - "qualifiers":{}} - self.misc_json_dict[node1]["claims"][prop].append(temp_e_id_dict) - return - def update_misc_json_dict_url(self,node1,prop,node2): - temp_url_dict ={ - "mainsnak": { - "snaktype": "value", - "property": prop, - "hash": "hashplaceholder", - "datavalue": { - "value": node2, - "type": "string" - }, - "datatype": "url" + self.misc_json_dict[node1]["claims"][prop].append(temp_string_dict) + return + def update_misc_json_dict_external_id(self,node1,prop,node2): + temp_e_id_dict = {"mainsnak": { + "snaktype": "value", + "property": prop, + "hash": "hashplaceholder", + "datavalue": { "value": node2, "type": "string" }, + "datatype": "external-id" + }, + "type": "statement", + "id": "id-place-holder", + "rank": "normal", + "references":[], + "qualifiers":{}} + self.misc_json_dict[node1]["claims"][prop].append(temp_e_id_dict) + return + def update_misc_json_dict_url(self,node1,prop,node2): + temp_url_dict ={ + "mainsnak": { + "snaktype": "value", + "property": prop, + "hash": "hashplaceholder", + "datavalue": { + "value": node2, + "type": "string" }, - "type": "statement", - "id": "id-place-holder", - "rank": "normal", - "references":[], - "qualifiers":{} - } - self.misc_json_dict[node1]["claims"][prop].append(temp_url_dict) - return - - - - - def update_label_json_dict(self,node1:str, prop:str, node2:str): - # for label_dict - if node1 not in self.prop_types: - label_type = "item" - self.label_json_dict[node1] = { - "type":label_type - } - else: - label_type = "property" - label_datatype = self.prop_types[node1] - self.label_json_dict[node1] = { - "type":label_type, - "datatype":label_datatype, - } - self.label_json_dict[node1]["id"] = node1 - self.label_json_dict[node1]["labels"] = {} - text_string, lang = JsonGenerator.process_text_string(node2) - self.label_json_dict[node1]["labels"][lang] = {"language":lang, "value": text_string} - + "datatype": "url" + }, + "type": "statement", + "id": "id-place-holder", + "rank": "normal", + "references":[], + "qualifiers":{} + } + self.misc_json_dict[node1]["claims"][prop].append(temp_url_dict) + return def set_sets(self, label_set: str, alias_set: str, description_set: str): self.label_set, self.alias_set, self.description_set = set(label_set.split(",")), set(alias_set.split(",")), set(description_set.split(",")) diff --git a/kgtk/triple_generator.py b/kgtk/triple_generator.py index c3d136d61..33950ad65 100644 --- a/kgtk/triple_generator.py +++ b/kgtk/triple_generator.py @@ -375,10 +375,6 @@ def entry_point(self, line_number: int, edge: str): """ edge_list = edge.strip("\n").split("\t") -<<<<<<< HEAD -======= - l = len(edge_list) ->>>>>>> dev if line_number == 1: # initialize the order_map node1_index = edge_list.index("node1") From 70150481aafb26de2963bf78c1d1db2d33f806fc Mon Sep 17 00:00:00 2001 From: Rongpeng Date: Tue, 19 May 2020 09:02:54 -0700 Subject: [PATCH 009/217] accept property datatypes --- data/wikidataProps.tsv | 12576 ++++++++++++----------- examples/obtain_wikidata_properties.py | 3 +- kgtk/json_generator.py | 62 - kgtk/triple_generator.py | 14 +- 4 files changed, 6342 insertions(+), 6313 deletions(-) diff --git a/data/wikidataProps.tsv b/data/wikidataProps.tsv index dcab69b3e..73805940c 100644 --- a/data/wikidataProps.tsv +++ b/data/wikidataProps.tsv @@ -1,3 +1,103 @@ +P6 property_type item +P10 property_type string +P14 property_type string +P15 property_type string +P16 property_type item +P17 property_type item +P18 property_type string +P19 property_type item +P20 property_type item +P21 property_type item +P22 property_type item +P25 property_type item +P26 property_type item +P27 property_type item +P30 property_type item +P31 property_type item +P35 property_type item +P36 property_type item +P37 property_type item +P38 property_type item +P39 property_type item +P40 property_type item +P41 property_type string +P47 property_type item +P50 property_type item +P51 property_type string +P53 property_type item +P54 property_type item +P57 property_type item +P58 property_type item +P59 property_type item +P61 property_type item +P65 property_type item +P66 property_type item +P69 property_type item +P78 property_type item +P81 property_type item +P84 property_type item +P85 property_type item +P86 property_type item +P87 property_type item +P88 property_type item +P91 property_type item +P92 property_type item +P94 property_type string +P97 property_type item +P98 property_type item +P101 property_type item +P102 property_type item +P103 property_type item +P105 property_type item +P106 property_type item +P108 property_type item +P109 property_type string +P110 property_type item +P111 property_type item +P112 property_type item +P113 property_type item +P114 property_type item +P115 property_type item +P117 property_type string +P118 property_type item +P119 property_type item +P121 property_type item +P122 property_type item +P123 property_type item +P126 property_type item +P127 property_type item +P128 property_type item +P129 property_type item +P131 property_type item +P135 property_type item +P136 property_type item +P137 property_type item +P138 property_type item +P140 property_type item +P141 property_type item +P143 property_type item +P144 property_type item +P149 property_type item +P150 property_type item +P154 property_type string +P155 property_type item +P156 property_type item +P157 property_type item +P158 property_type string +P159 property_type item +P161 property_type item +P162 property_type item +P163 property_type item +P166 property_type item +P167 property_type item +P169 property_type item +P170 property_type item +P171 property_type item +P172 property_type item +P175 property_type item +P176 property_type item +P177 property_type item +P178 property_type item P493 property_type external-identifier P494 property_type external-identifier P495 property_type item @@ -398,162 +498,162 @@ P355 property_type item P356 property_type external-identifier P358 property_type item P359 property_type external-identifier -P6 property_type item -P10 property_type string -P14 property_type string -P15 property_type string -P16 property_type item -P17 property_type item -P18 property_type string -P19 property_type item -P20 property_type item -P21 property_type item -P22 property_type item -P25 property_type item -P26 property_type item -P27 property_type item -P30 property_type item -P31 property_type item -P35 property_type item -P36 property_type item -P37 property_type item -P38 property_type item -P39 property_type item -P40 property_type item -P41 property_type string -P47 property_type item -P50 property_type item -P51 property_type string -P53 property_type item -P54 property_type item -P57 property_type item -P58 property_type item -P59 property_type item -P61 property_type item -P65 property_type item -P66 property_type item -P69 property_type item -P78 property_type item -P81 property_type item -P84 property_type item -P85 property_type item -P86 property_type item -P87 property_type item -P88 property_type item -P91 property_type item -P92 property_type item -P94 property_type string -P97 property_type item -P98 property_type item -P101 property_type item -P102 property_type item -P103 property_type item -P105 property_type item -P106 property_type item -P108 property_type item -P109 property_type string -P110 property_type item -P111 property_type item -P112 property_type item -P113 property_type item -P114 property_type item -P115 property_type item -P117 property_type string -P118 property_type item -P119 property_type item -P121 property_type item -P122 property_type item -P123 property_type item -P126 property_type item -P127 property_type item -P128 property_type item -P129 property_type item -P131 property_type item -P135 property_type item -P136 property_type item -P137 property_type item -P138 property_type item -P140 property_type item -P141 property_type item -P143 property_type item -P144 property_type item -P149 property_type item -P150 property_type item -P154 property_type string -P155 property_type item -P156 property_type item -P157 property_type item -P158 property_type string -P159 property_type item -P161 property_type item -P162 property_type item -P163 property_type item -P166 property_type item -P167 property_type item -P169 property_type item -P170 property_type item -P171 property_type item -P172 property_type item -P175 property_type item -P176 property_type item -P177 property_type item -P178 property_type item -P716 property_type external-identifier -P717 property_type external-identifier -P718 property_type external-identifier -P720 property_type item -P721 property_type external-identifier -P722 property_type external-identifier -P723 property_type external-identifier -P724 property_type external-identifier -P725 property_type item -P726 property_type item -P729 property_type time -P730 property_type time -P731 property_type external-identifier -P732 property_type external-identifier -P733 property_type external-identifier -P734 property_type item -P735 property_type item -P736 property_type item -P737 property_type item -P739 property_type item -P740 property_type item -P741 property_type item -P742 property_type string -P744 property_type item -P745 property_type external-identifier -P746 property_type time -P747 property_type item -P748 property_type item -P749 property_type item -P750 property_type item -P751 property_type item -P756 property_type item -P757 property_type external-identifier -P758 property_type external-identifier -P759 property_type external-identifier -P760 property_type external-identifier -P761 property_type external-identifier -P762 property_type external-identifier -P763 property_type external-identifier -P764 property_type external-identifier -P765 property_type item -P767 property_type item -P768 property_type item -P769 property_type item -P770 property_type item -P771 property_type external-identifier -P772 property_type external-identifier -P773 property_type external-identifier -P774 property_type external-identifier -P775 property_type external-identifier -P776 property_type external-identifier -P777 property_type external-identifier -P778 property_type external-identifier -P779 property_type external-identifier -P780 property_type item -P781 property_type external-identifier +P1913 property_type item +P1914 property_type item +P1915 property_type item +P1916 property_type item +P1917 property_type item +P1918 property_type item +P1919 property_type external-identifier +P1920 property_type external-identifier +P1921 property_type string +P1922 property_type monolingualtext +P1923 property_type item +P1924 property_type item +P1925 property_type external-identifier +P1928 property_type external-identifier +P1929 property_type external-identifier +P1930 property_type external-identifier +P1931 property_type string +P1932 property_type string +P1933 property_type external-identifier +P1934 property_type external-identifier +P1935 property_type external-identifier +P1936 property_type external-identifier +P1937 property_type external-identifier +P1938 property_type external-identifier +P1939 property_type external-identifier +P1940 property_type external-identifier +P1942 property_type string +P1943 property_type string +P1944 property_type string +P1945 property_type string +P1947 property_type external-identifier +P1948 property_type external-identifier +P1949 property_type external-identifier +P1950 property_type item +P1951 property_type item +P1952 property_type external-identifier +P1953 property_type external-identifier +P1954 property_type external-identifier +P1955 property_type external-identifier +P1956 property_type item +P1957 property_type url +P1958 property_type external-identifier +P1959 property_type external-identifier +P1960 property_type external-identifier +P1961 property_type external-identifier +P1963 property_type property +P1966 property_type external-identifier +P1967 property_type external-identifier +P1968 property_type external-identifier +P1969 property_type external-identifier +P1970 property_type external-identifier +P1971 property_type quantity +P1972 property_type external-identifier +P1973 property_type external-identifier +P1976 property_type external-identifier +P1977 property_type external-identifier +P1978 property_type external-identifier +P1979 property_type external-identifier +P1980 property_type external-identifier +P1981 property_type item +P1982 property_type external-identifier +P1983 property_type external-identifier +P1984 property_type external-identifier +P1985 property_type external-identifier +P1986 property_type external-identifier +P1987 property_type string +P1988 property_type external-identifier +P1989 property_type external-identifier +P1990 property_type item +P1991 property_type url +P1992 property_type external-identifier +P1993 property_type string +P1994 property_type external-identifier +P1995 property_type item +P1996 property_type external-identifier +P1997 property_type external-identifier +P1998 property_type string +P1999 property_type item +P2000 property_type external-identifier +P2001 property_type string +P2002 property_type external-identifier +P2003 property_type external-identifier +P2004 property_type external-identifier +P2005 property_type external-identifier +P2006 property_type external-identifier +P2007 property_type external-identifier +P2008 property_type external-identifier +P2009 property_type string +P2010 property_type string +P2011 property_type external-identifier +P2012 property_type item +P2013 property_type external-identifier +P2014 property_type external-identifier +P2015 property_type external-identifier +P2016 property_type external-identifier +P2017 property_type string +P2018 property_type external-identifier +P2019 property_type external-identifier +P2020 property_type external-identifier +P2021 property_type quantity +P716 property_type external-identifier +P717 property_type external-identifier +P718 property_type external-identifier +P720 property_type item +P721 property_type external-identifier +P722 property_type external-identifier +P723 property_type external-identifier +P724 property_type external-identifier +P725 property_type item +P726 property_type item +P729 property_type time +P730 property_type time +P731 property_type external-identifier +P732 property_type external-identifier +P733 property_type external-identifier +P734 property_type item +P735 property_type item +P736 property_type item +P737 property_type item +P739 property_type item +P740 property_type item +P741 property_type item +P742 property_type string +P744 property_type item +P745 property_type external-identifier +P746 property_type time +P747 property_type item +P748 property_type item +P749 property_type item +P750 property_type item +P751 property_type item +P756 property_type item +P757 property_type external-identifier +P758 property_type external-identifier +P759 property_type external-identifier +P760 property_type external-identifier +P761 property_type external-identifier +P762 property_type external-identifier +P763 property_type external-identifier +P764 property_type external-identifier +P765 property_type item +P767 property_type item +P768 property_type item +P769 property_type item +P770 property_type item +P771 property_type external-identifier +P772 property_type external-identifier +P773 property_type external-identifier +P774 property_type external-identifier +P775 property_type external-identifier +P776 property_type external-identifier +P777 property_type external-identifier +P778 property_type external-identifier +P779 property_type external-identifier +P780 property_type item +P781 property_type external-identifier P782 property_type external-identifier P783 property_type item P784 property_type item @@ -563,7 +663,7 @@ P787 property_type item P788 property_type item P789 property_type item P790 property_type item -P791 property_type string +P791 property_type external-identifier P792 property_type string P793 property_type item P795 property_type item @@ -598,6 +698,106 @@ P826 property_type item P827 property_type external-identifier P828 property_type item P829 property_type external-identifier +P2024 property_type external-identifier +P2025 property_type external-identifier +P2026 property_type external-identifier +P2027 property_type external-identifier +P2028 property_type external-identifier +P2029 property_type external-identifier +P2030 property_type external-identifier +P2031 property_type time +P2032 property_type time +P2033 property_type item +P2034 property_type external-identifier +P2036 property_type external-identifier +P2037 property_type external-identifier +P2038 property_type external-identifier +P2040 property_type external-identifier +P2041 property_type external-identifier +P2042 property_type external-identifier +P2043 property_type quantity +P2044 property_type quantity +P2045 property_type quantity +P2046 property_type quantity +P2047 property_type quantity +P2048 property_type quantity +P2049 property_type quantity +P2050 property_type quantity +P2051 property_type quantity +P2052 property_type quantity +P2053 property_type quantity +P2054 property_type quantity +P2055 property_type quantity +P2056 property_type quantity +P2057 property_type external-identifier +P2058 property_type item +P2060 property_type quantity +P2061 property_type item +P2062 property_type external-identifier +P2063 property_type external-identifier +P2064 property_type external-identifier +P2065 property_type external-identifier +P2066 property_type quantity +P2067 property_type quantity +P2068 property_type quantity +P2069 property_type quantity +P2070 property_type external-identifier +P2071 property_type external-identifier +P2072 property_type external-identifier +P2073 property_type quantity +P2074 property_type external-identifier +P2075 property_type quantity +P2076 property_type quantity +P2077 property_type quantity +P2078 property_type url +P2079 property_type item +P2080 property_type external-identifier +P2081 property_type external-identifier +P2082 property_type external-identifier +P2083 property_type external-identifier +P2084 property_type external-identifier +P2085 property_type external-identifier +P2086 property_type external-identifier +P2087 property_type external-identifier +P2088 property_type external-identifier +P2089 property_type external-identifier +P2090 property_type external-identifier +P2091 property_type external-identifier +P2092 property_type external-identifier +P2093 property_type string +P2094 property_type item +P2095 property_type item +P2096 property_type monolingualtext +P2097 property_type quantity +P2098 property_type item +P2099 property_type external-identifier +P2100 property_type external-identifier +P2101 property_type quantity +P2102 property_type quantity +P2103 property_type quantity +P2105 property_type quantity +P2106 property_type external-identifier +P2107 property_type quantity +P2108 property_type external-identifier +P2109 property_type quantity +P2112 property_type quantity +P2113 property_type quantity +P2114 property_type quantity +P2115 property_type external-identifier +P2116 property_type quantity +P2117 property_type quantity +P2118 property_type quantity +P2119 property_type quantity +P2120 property_type quantity +P2121 property_type quantity +P2123 property_type external-identifier +P2124 property_type quantity +P2125 property_type string +P2126 property_type string +P2127 property_type item +P2128 property_type quantity +P2129 property_type quantity +P2130 property_type quantity P2131 property_type quantity P2132 property_type quantity P2133 property_type quantity @@ -698,206 +898,6 @@ P2229 property_type quantity P2230 property_type quantity P2231 property_type quantity P2232 property_type quantity -P1913 property_type item -P1914 property_type item -P1915 property_type item -P1916 property_type item -P1917 property_type item -P1918 property_type item -P1919 property_type external-identifier -P1920 property_type external-identifier -P1921 property_type string -P1922 property_type monolingualtext -P1923 property_type item -P1924 property_type item -P1925 property_type external-identifier -P1928 property_type external-identifier -P1929 property_type external-identifier -P1930 property_type external-identifier -P1931 property_type string -P1932 property_type string -P1933 property_type external-identifier -P1934 property_type external-identifier -P1935 property_type external-identifier -P1936 property_type external-identifier -P1937 property_type external-identifier -P1938 property_type external-identifier -P1939 property_type external-identifier -P1940 property_type external-identifier -P1942 property_type string -P1943 property_type string -P1944 property_type string -P1945 property_type string -P1947 property_type external-identifier -P1948 property_type external-identifier -P1949 property_type external-identifier -P1950 property_type item -P1951 property_type item -P1952 property_type external-identifier -P1953 property_type external-identifier -P1954 property_type external-identifier -P1955 property_type external-identifier -P1956 property_type item -P1957 property_type url -P1958 property_type external-identifier -P1959 property_type external-identifier -P1960 property_type external-identifier -P1961 property_type external-identifier -P1963 property_type string -P1966 property_type external-identifier -P1967 property_type external-identifier -P1968 property_type external-identifier -P1969 property_type external-identifier -P1970 property_type external-identifier -P1971 property_type quantity -P1972 property_type external-identifier -P1973 property_type external-identifier -P1976 property_type external-identifier -P1977 property_type external-identifier -P1978 property_type external-identifier -P1979 property_type external-identifier -P1980 property_type external-identifier -P1981 property_type item -P1982 property_type external-identifier -P1983 property_type external-identifier -P1984 property_type external-identifier -P1985 property_type external-identifier -P1986 property_type external-identifier -P1987 property_type string -P1988 property_type external-identifier -P1989 property_type external-identifier -P1990 property_type item -P1991 property_type url -P1992 property_type external-identifier -P1993 property_type string -P1994 property_type external-identifier -P1995 property_type item -P1996 property_type external-identifier -P1997 property_type external-identifier -P1998 property_type string -P1999 property_type item -P2000 property_type external-identifier -P2001 property_type string -P2002 property_type external-identifier -P2003 property_type external-identifier -P2004 property_type external-identifier -P2005 property_type external-identifier -P2006 property_type external-identifier -P2007 property_type external-identifier -P2008 property_type external-identifier -P2009 property_type string -P2010 property_type string -P2011 property_type external-identifier -P2012 property_type item -P2013 property_type external-identifier -P2014 property_type external-identifier -P2015 property_type external-identifier -P2016 property_type external-identifier -P2017 property_type string -P2018 property_type external-identifier -P2019 property_type external-identifier -P2020 property_type external-identifier -P2021 property_type quantity -P2777 property_type external-identifier -P2778 property_type external-identifier -P2779 property_type external-identifier -P2780 property_type external-identifier -P2781 property_type quantity -P2782 property_type external-identifier -P2783 property_type external-identifier -P2784 property_type item -P2786 property_type globe-coordinate -P2787 property_type quantity -P2788 property_type external-identifier -P2789 property_type item -P2790 property_type quantity -P2791 property_type quantity -P2792 property_type external-identifier -P2793 property_type quantity -P2794 property_type external-identifier -P2795 property_type monolingualtext -P2796 property_type external-identifier -P2797 property_type quantity -P2798 property_type external-identifier -P2799 property_type external-identifier -P2800 property_type external-identifier -P2801 property_type external-identifier -P2802 property_type string -P2803 property_type quantity -P2804 property_type external-identifier -P2805 property_type external-identifier -P2806 property_type quantity -P2807 property_type quantity -P2808 property_type quantity -P2809 property_type external-identifier -P2810 property_type external-identifier -P2811 property_type external-identifier -P2812 property_type external-identifier -P2813 property_type item -P2814 property_type external-identifier -P2815 property_type external-identifier -P2816 property_type external-identifier -P2817 property_type item -P2818 property_type external-identifier -P2819 property_type external-identifier -P2820 property_type item -P2821 property_type item -P2822 property_type item -P2823 property_type external-identifier -P2824 property_type external-identifier -P2825 property_type item -P2826 property_type external-identifier -P2827 property_type item -P2828 property_type item -P2829 property_type external-identifier -P2830 property_type external-identifier -P2831 property_type item -P2832 property_type external-identifier -P2833 property_type external-identifier -P2834 property_type quantity -P2835 property_type quantity -P2836 property_type quantity -P2838 property_type item -P2839 property_type item -P2840 property_type external-identifier -P2841 property_type item -P2842 property_type item -P2843 property_type external-identifier -P2844 property_type quantity -P2845 property_type external-identifier -P2846 property_type item -P2847 property_type external-identifier -P2848 property_type item -P2849 property_type item -P2850 property_type external-identifier -P2851 property_type item -P2852 property_type item -P2853 property_type item -P2854 property_type quantity -P2855 property_type quantity -P2856 property_type external-identifier -P2857 property_type external-identifier -P2858 property_type external-identifier -P2859 property_type string -P2860 property_type item -P2861 property_type external-identifier -P2862 property_type external-identifier -P2863 property_type external-identifier -P2864 property_type external-identifier -P2865 property_type external-identifier -P2866 property_type external-identifier -P2867 property_type external-identifier -P2868 property_type item -P2869 property_type item -P2870 property_type external-identifier -P2871 property_type external-identifier -P2872 property_type item -P2873 property_type quantity -P2874 property_type external-identifier -P2875 property_type item -P2876 property_type item -P2877 property_type external-identifier -P2878 property_type external-identifier P2879 property_type external-identifier P2880 property_type external-identifier P2881 property_type item @@ -998,70 +998,170 @@ P2988 property_type external-identifier P2989 property_type item P2990 property_type external-identifier P2991 property_type external-identifier -P2233 property_type quantity -P2234 property_type quantity -P2235 property_type url -P2236 property_type url -P2238 property_type item -P2239 property_type item -P2240 property_type quantity -P2241 property_type item -P2242 property_type external-identifier -P2243 property_type quantity -P2244 property_type quantity -P2248 property_type quantity -P2249 property_type external-identifier -P2250 property_type quantity -P2252 property_type external-identifier -P2253 property_type external-identifier -P2254 property_type quantity -P2255 property_type external-identifier -P2257 property_type quantity -P2258 property_type string -P2259 property_type string -P2260 property_type quantity -P2261 property_type quantity -P2262 property_type quantity -P2263 property_type string -P2264 property_type external-identifier -P2266 property_type external-identifier -P2267 property_type external-identifier -P2268 property_type external-identifier -P2270 property_type external-identifier -P2271 property_type string -P2272 property_type external-identifier -P2273 property_type external-identifier -P2275 property_type monolingualtext -P2276 property_type external-identifier -P2277 property_type external-identifier -P2278 property_type external-identifier -P2279 property_type item -P2280 property_type external-identifier -P2281 property_type external-identifier -P2282 property_type external-identifier -P2283 property_type item -P2284 property_type quantity -P2285 property_type time -P2286 property_type item -P2287 property_type external-identifier -P2288 property_type item -P2289 property_type item -P2290 property_type external-identifier -P2291 property_type item -P2292 property_type quantity -P2293 property_type item -P2294 property_type quantity -P2295 property_type quantity -P2296 property_type quantity -P2297 property_type quantity -P2298 property_type external-identifier -P2299 property_type quantity -P2300 property_type quantity +P830 property_type external-identifier +P831 property_type item +P832 property_type item +P833 property_type item +P834 property_type item +P835 property_type string +P836 property_type external-identifier +P837 property_type item +P838 property_type external-identifier +P839 property_type external-identifier +P840 property_type item +P841 property_type item +P842 property_type external-identifier +P843 property_type external-identifier +P844 property_type external-identifier +P845 property_type external-identifier +P846 property_type external-identifier +P847 property_type string +P849 property_type external-identifier +P850 property_type external-identifier +P852 property_type item +P853 property_type item +P854 property_type url +P855 property_type url +P856 property_type url +P858 property_type external-identifier +P859 property_type item +P860 property_type external-identifier +P861 property_type external-identifier +P862 property_type external-identifier +P863 property_type external-identifier +P864 property_type external-identifier +P865 property_type external-identifier +P866 property_type external-identifier +P867 property_type external-identifier +P868 property_type item +P870 property_type item +P872 property_type item +P873 property_type item +P874 property_type string +P875 property_type string +P876 property_type string +P877 property_type string +P878 property_type item +P879 property_type string +P880 property_type item +P881 property_type item +P882 property_type external-identifier +P884 property_type external-identifier +P885 property_type item +P886 property_type external-identifier +P887 property_type item +P888 property_type external-identifier +P889 property_type external-identifier +P892 property_type external-identifier +P893 property_type external-identifier +P894 property_type external-identifier +P897 property_type string +P898 property_type string +P901 property_type external-identifier +P902 property_type external-identifier +P905 property_type external-identifier +P906 property_type external-identifier +P908 property_type item +P909 property_type external-identifier +P910 property_type item +P911 property_type external-identifier +P912 property_type item +P913 property_type item +P914 property_type item +P915 property_type item +P916 property_type item +P917 property_type external-identifier +P918 property_type external-identifier +P919 property_type external-identifier +P920 property_type string +P921 property_type item +P922 property_type item +P923 property_type item +P924 property_type item +P925 property_type item +P926 property_type item +P927 property_type item +P928 property_type item +P929 property_type item +P930 property_type item +P931 property_type item +P932 property_type external-identifier +P933 property_type external-identifier +P935 property_type string +P937 property_type item +P938 property_type external-identifier +P939 property_type external-identifier +P941 property_type item +P942 property_type item +P943 property_type item +P944 property_type item +P945 property_type item +P946 property_type string +P947 property_type external-identifier +P2233 property_type quantity +P2234 property_type quantity +P2235 property_type url +P2236 property_type url +P2238 property_type item +P2239 property_type item +P2240 property_type quantity +P2241 property_type item +P2242 property_type external-identifier +P2243 property_type quantity +P2244 property_type quantity +P2248 property_type quantity +P2249 property_type external-identifier +P2250 property_type quantity +P2252 property_type external-identifier +P2253 property_type external-identifier +P2254 property_type quantity +P2255 property_type external-identifier +P2257 property_type quantity +P2258 property_type string +P2259 property_type string +P2260 property_type quantity +P2261 property_type quantity +P2262 property_type quantity +P2263 property_type string +P2264 property_type external-identifier +P2266 property_type external-identifier +P2267 property_type external-identifier +P2268 property_type external-identifier +P2270 property_type external-identifier +P2271 property_type property +P2272 property_type external-identifier +P2273 property_type external-identifier +P2275 property_type monolingualtext +P2276 property_type external-identifier +P2277 property_type external-identifier +P2278 property_type external-identifier +P2279 property_type item +P2280 property_type external-identifier +P2281 property_type external-identifier +P2282 property_type external-identifier +P2283 property_type item +P2284 property_type quantity +P2285 property_type time +P2286 property_type item +P2287 property_type external-identifier +P2288 property_type item +P2289 property_type item +P2290 property_type external-identifier +P2291 property_type item +P2292 property_type quantity +P2293 property_type item +P2294 property_type quantity +P2295 property_type quantity +P2296 property_type quantity +P2297 property_type quantity +P2298 property_type external-identifier +P2299 property_type quantity +P2300 property_type quantity P2302 property_type item P2303 property_type item -P2304 property_type string +P2304 property_type property P2305 property_type item -P2306 property_type string +P2306 property_type property P2307 property_type string P2308 property_type item P2309 property_type item @@ -1098,5406 +1198,4506 @@ P2340 property_type external-identifier P2341 property_type item P2342 property_type external-identifier P2343 property_type string -P2024 property_type external-identifier -P2025 property_type external-identifier -P2026 property_type external-identifier -P2027 property_type external-identifier -P2028 property_type external-identifier -P2029 property_type external-identifier -P2030 property_type external-identifier -P2031 property_type time -P2032 property_type time -P2033 property_type item -P2034 property_type external-identifier -P2036 property_type external-identifier -P2037 property_type external-identifier -P2038 property_type external-identifier -P2040 property_type external-identifier -P2041 property_type external-identifier -P2042 property_type external-identifier -P2043 property_type quantity -P2044 property_type quantity -P2045 property_type quantity -P2046 property_type quantity -P2047 property_type quantity -P2048 property_type quantity -P2049 property_type quantity -P2050 property_type quantity -P2051 property_type quantity -P2052 property_type quantity -P2053 property_type quantity -P2054 property_type quantity -P2055 property_type quantity -P2056 property_type quantity -P2057 property_type external-identifier -P2058 property_type item -P2060 property_type quantity -P2061 property_type item -P2062 property_type external-identifier -P2063 property_type external-identifier -P2064 property_type external-identifier -P2065 property_type external-identifier -P2066 property_type quantity -P2067 property_type quantity -P2068 property_type quantity -P2069 property_type quantity -P2070 property_type external-identifier -P2071 property_type external-identifier -P2072 property_type external-identifier -P2073 property_type quantity -P2074 property_type external-identifier -P2075 property_type quantity -P2076 property_type quantity -P2077 property_type quantity -P2078 property_type url -P2079 property_type item -P2080 property_type external-identifier -P2081 property_type external-identifier -P2082 property_type external-identifier -P2083 property_type external-identifier -P2084 property_type external-identifier -P2085 property_type external-identifier -P2086 property_type external-identifier -P2087 property_type external-identifier -P2088 property_type external-identifier -P2089 property_type external-identifier -P2090 property_type external-identifier -P2091 property_type external-identifier -P2092 property_type external-identifier -P2093 property_type string -P2094 property_type item -P2095 property_type item -P2096 property_type monolingualtext -P2097 property_type quantity -P2098 property_type item -P2099 property_type external-identifier -P2100 property_type external-identifier -P2101 property_type quantity -P2102 property_type quantity -P2103 property_type quantity -P2105 property_type quantity -P2106 property_type external-identifier -P2107 property_type quantity -P2108 property_type external-identifier -P2109 property_type quantity -P2112 property_type quantity -P2113 property_type quantity -P2114 property_type quantity -P2115 property_type external-identifier -P2116 property_type quantity -P2117 property_type quantity -P2118 property_type quantity -P2119 property_type quantity -P2120 property_type quantity -P2121 property_type quantity -P2123 property_type external-identifier -P2124 property_type quantity -P2125 property_type string -P2126 property_type string -P2127 property_type item -P2128 property_type quantity -P2129 property_type quantity -P2130 property_type quantity -P2344 property_type external-identifier -P2345 property_type external-identifier -P2346 property_type external-identifier -P2347 property_type external-identifier -P2348 property_type item -P2349 property_type external-identifier -P2350 property_type external-identifier -P2351 property_type quantity -P2352 property_type item -P2353 property_type item -P2354 property_type item -P2355 property_type external-identifier -P2357 property_type string -P2358 property_type item -P2359 property_type item -P2360 property_type item -P2361 property_type item -P2362 property_type quantity -P2363 property_type item -P2364 property_type string -P2365 property_type item -P2366 property_type item -P2367 property_type external-identifier -P2368 property_type string -P2369 property_type external-identifier -P2370 property_type quantity -P2371 property_type item -P2372 property_type external-identifier -P2373 property_type external-identifier -P2374 property_type quantity -P2375 property_type item -P2376 property_type item -P2377 property_type item -P2378 property_type item -P2379 property_type item -P2380 property_type external-identifier -P2381 property_type external-identifier -P2382 property_type external-identifier -P2383 property_type external-identifier -P2384 property_type item -P2385 property_type external-identifier -P2386 property_type quantity -P2387 property_type external-identifier -P2388 property_type item -P2389 property_type item -P2390 property_type external-identifier -P2391 property_type external-identifier -P2392 property_type item -P2393 property_type external-identifier -P2394 property_type external-identifier -P2396 property_type item -P2397 property_type external-identifier -P2398 property_type external-identifier -P2399 property_type external-identifier -P2400 property_type external-identifier -P2401 property_type external-identifier -P2402 property_type quantity -P2403 property_type quantity -P2404 property_type quantity -P2405 property_type quantity -P2406 property_type quantity -P2407 property_type quantity -P2408 property_type item -P2409 property_type external-identifier -P2410 property_type string -P2411 property_type string -P2412 property_type external-identifier -P2413 property_type external-identifier -P2414 property_type item -P2415 property_type quantity -P2416 property_type item -P2417 property_type item -P2418 property_type external-identifier -P2421 property_type external-identifier -P2423 property_type external-identifier -P2424 property_type external-identifier -P2425 property_type string -P2426 property_type external-identifier -P2427 property_type external-identifier -P2428 property_type external-identifier -P2429 property_type item -P2430 property_type quantity -P2431 property_type external-identifier -P2432 property_type external-identifier -P2433 property_type item -P2434 property_type external-identifier -P2435 property_type external-identifier -P2436 property_type quantity -P2437 property_type quantity -P2438 property_type item -P2440 property_type string -P2441 property_type monolingualtext -P2442 property_type quantity -P2443 property_type item -P2444 property_type item -P2445 property_type item -P2446 property_type external-identifier -P2447 property_type external-identifier -P2448 property_type external-identifier -P2449 property_type external-identifier -P2992 property_type item -P2993 property_type quantity -P2997 property_type quantity -P2998 property_type quantity -P2999 property_type quantity -P3000 property_type quantity -P3001 property_type quantity -P3002 property_type external-identifier -P3003 property_type external-identifier -P3004 property_type external-identifier -P3005 property_type item -P3006 property_type external-identifier -P3007 property_type external-identifier -P3008 property_type external-identifier -P3009 property_type external-identifier -P3010 property_type external-identifier -P3012 property_type external-identifier -P3013 property_type quantity -P3014 property_type item -P3015 property_type item -P3016 property_type external-identifier -P3017 property_type external-identifier -P3018 property_type item -P3019 property_type item -P3020 property_type quantity -P3021 property_type external-identifier -P3022 property_type item -P3023 property_type external-identifier -P3024 property_type external-identifier -P3025 property_type item -P3026 property_type item -P3027 property_type item -P3028 property_type item -P3029 property_type external-identifier -P3030 property_type string -P3031 property_type external-identifier -P3032 property_type item -P3033 property_type item -P3034 property_type external-identifier -P3035 property_type external-identifier -P3036 property_type quantity -P3037 property_type item -P3038 property_type external-identifier -P3039 property_type quantity -P3040 property_type external-identifier -P3041 property_type quantity -P3042 property_type external-identifier -P3043 property_type external-identifier -P3044 property_type external-identifier -P3045 property_type external-identifier -P3046 property_type external-identifier -P3047 property_type external-identifier -P3048 property_type external-identifier -P3049 property_type external-identifier -P3050 property_type external-identifier -P3051 property_type external-identifier -P3052 property_type external-identifier -P3053 property_type external-identifier -P3054 property_type external-identifier -P3055 property_type external-identifier -P3056 property_type external-identifier -P3057 property_type external-identifier -P3058 property_type external-identifier -P3059 property_type external-identifier -P3060 property_type external-identifier -P3061 property_type external-identifier -P3063 property_type quantity -P3064 property_type external-identifier -P3065 property_type external-identifier -P3066 property_type external-identifier -P3067 property_type string -P3068 property_type external-identifier -P3069 property_type external-identifier -P3070 property_type quantity -P3071 property_type quantity -P3072 property_type external-identifier -P3073 property_type external-identifier -P3074 property_type external-identifier -P3075 property_type item -P3076 property_type external-identifier -P3077 property_type external-identifier -P3078 property_type quantity -P3080 property_type item -P3081 property_type item -P3082 property_type item -P3083 property_type external-identifier -P3085 property_type item -P3086 property_type quantity -P3087 property_type quantity -P3088 property_type external-identifier -P3089 property_type external-identifier -P3090 property_type string -P3091 property_type item -P3092 property_type item -P3093 property_type item -P3094 property_type item -P3095 property_type item -P3096 property_type item -P3097 property_type external-identifier -P3098 property_type external-identifier -P830 property_type external-identifier -P831 property_type item -P832 property_type item -P833 property_type item -P834 property_type item -P835 property_type string -P836 property_type external-identifier -P837 property_type item -P838 property_type external-identifier -P839 property_type external-identifier -P840 property_type item -P841 property_type item -P842 property_type external-identifier -P843 property_type external-identifier -P844 property_type external-identifier -P845 property_type external-identifier -P846 property_type external-identifier -P847 property_type string -P849 property_type external-identifier -P850 property_type external-identifier -P852 property_type item -P853 property_type item -P854 property_type url -P855 property_type url -P856 property_type url -P858 property_type external-identifier -P859 property_type item -P860 property_type external-identifier -P861 property_type external-identifier -P862 property_type external-identifier -P863 property_type external-identifier -P864 property_type external-identifier -P865 property_type external-identifier -P866 property_type external-identifier -P867 property_type external-identifier -P868 property_type item -P870 property_type item -P872 property_type item -P873 property_type item -P874 property_type string -P875 property_type string -P876 property_type string -P877 property_type string -P878 property_type item -P879 property_type string -P880 property_type item -P881 property_type item -P882 property_type external-identifier -P884 property_type external-identifier -P885 property_type item -P886 property_type external-identifier -P887 property_type item -P888 property_type external-identifier -P889 property_type external-identifier -P892 property_type external-identifier -P893 property_type external-identifier -P894 property_type external-identifier -P897 property_type string -P898 property_type string -P901 property_type external-identifier -P902 property_type external-identifier -P905 property_type external-identifier -P906 property_type external-identifier -P908 property_type item -P909 property_type external-identifier -P910 property_type item -P911 property_type external-identifier -P912 property_type item -P913 property_type item -P914 property_type item -P915 property_type item -P916 property_type item -P917 property_type external-identifier -P918 property_type external-identifier -P919 property_type external-identifier -P920 property_type string -P921 property_type item -P922 property_type item -P923 property_type item -P924 property_type item -P925 property_type item -P926 property_type item -P927 property_type item -P928 property_type item -P929 property_type item -P930 property_type item -P931 property_type item -P932 property_type external-identifier -P933 property_type external-identifier -P935 property_type string -P937 property_type item -P938 property_type external-identifier -P939 property_type external-identifier -P941 property_type item -P942 property_type item -P943 property_type item -P944 property_type item -P945 property_type item -P946 property_type string -P947 property_type external-identifier -P4031 property_type external-identifier -P4032 property_type item -P4033 property_type external-identifier -P4034 property_type external-identifier -P4035 property_type external-identifier -P4036 property_type quantity -P4037 property_type external-identifier -P4038 property_type external-identifier -P4040 property_type external-identifier -P4041 property_type external-identifier -P4042 property_type external-identifier -P4043 property_type item -P4044 property_type item -P4045 property_type string -P4046 property_type external-identifier -P4047 property_type string -P4048 property_type external-identifier -P4050 property_type external-identifier -P4051 property_type external-identifier -P4052 property_type external-identifier -P4053 property_type external-identifier -P4054 property_type external-identifier -P4055 property_type external-identifier -P4056 property_type external-identifier -P4057 property_type external-identifier -P4058 property_type external-identifier -P4059 property_type external-identifier -P4060 property_type external-identifier -P4061 property_type external-identifier -P4062 property_type external-identifier -P4063 property_type external-identifier -P4065 property_type external-identifier -P4066 property_type external-identifier -P4067 property_type external-identifier -P4068 property_type external-identifier -P4069 property_type external-identifier -P4070 property_type item -P4071 property_type external-identifier -P4072 property_type external-identifier -P4073 property_type external-identifier -P4074 property_type external-identifier -P4075 property_type external-identifier -P4076 property_type external-identifier -P4077 property_type external-identifier -P4078 property_type string -P4079 property_type external-identifier -P4080 property_type quantity -P4081 property_type external-identifier -P4082 property_type item -P4083 property_type external-identifier -P4084 property_type external-identifier -P4085 property_type external-identifier -P4086 property_type external-identifier -P4087 property_type external-identifier -P4088 property_type external-identifier -P4089 property_type external-identifier -P4090 property_type external-identifier -P4091 property_type string -P4092 property_type string -P4093 property_type external-identifier -P4094 property_type external-identifier -P4095 property_type external-identifier -P4096 property_type external-identifier -P4097 property_type external-identifier -P4098 property_type external-identifier -P4099 property_type item -P4100 property_type item -P4101 property_type item -P4102 property_type external-identifier -P4103 property_type quantity -P4104 property_type external-identifier -P4105 property_type quantity -P4106 property_type external-identifier -P4107 property_type external-identifier -P4108 property_type external-identifier -P4109 property_type external-identifier -P4110 property_type external-identifier -P4111 property_type external-identifier -P4112 property_type external-identifier -P4113 property_type external-identifier -P4114 property_type external-identifier -P4115 property_type external-identifier -P4116 property_type external-identifier -P4117 property_type external-identifier -P4118 property_type external-identifier -P4119 property_type external-identifier -P4120 property_type external-identifier -P4121 property_type external-identifier -P4122 property_type external-identifier -P4123 property_type external-identifier -P4124 property_type external-identifier -P4125 property_type external-identifier -P4126 property_type external-identifier -P4127 property_type external-identifier -P4128 property_type external-identifier -P4129 property_type external-identifier -P4130 property_type external-identifier -P4131 property_type quantity -P4132 property_type item -P4133 property_type external-identifier -P2450 property_type external-identifier -P2451 property_type external-identifier -P2452 property_type external-identifier -P2453 property_type item -P2454 property_type external-identifier -P2455 property_type external-identifier -P2456 property_type external-identifier -P2457 property_type external-identifier -P2458 property_type external-identifier -P2459 property_type external-identifier -P2460 property_type external-identifier -P2461 property_type external-identifier -P2462 property_type item -P2463 property_type external-identifier -P2464 property_type external-identifier -P2465 property_type external-identifier -P2467 property_type external-identifier -P2468 property_type external-identifier -P2469 property_type external-identifier -P2470 property_type external-identifier -P2471 property_type external-identifier -P2472 property_type external-identifier -P2473 property_type external-identifier -P2474 property_type external-identifier -P2475 property_type external-identifier -P2476 property_type external-identifier -P2477 property_type external-identifier -P2478 property_type external-identifier -P2479 property_type external-identifier -P2480 property_type external-identifier -P2481 property_type external-identifier -P2482 property_type external-identifier -P2483 property_type external-identifier -P2484 property_type external-identifier -P2485 property_type external-identifier -P2486 property_type external-identifier -P2487 property_type external-identifier -P2488 property_type url -P2489 property_type external-identifier -P2490 property_type string -P2491 property_type external-identifier -P2492 property_type external-identifier -P2493 property_type external-identifier -P2494 property_type external-identifier -P2496 property_type external-identifier -P2497 property_type external-identifier -P2498 property_type external-identifier -P2499 property_type item -P2500 property_type item -P2501 property_type item -P2502 property_type item -P2503 property_type external-identifier -P2504 property_type external-identifier -P2505 property_type item -P2506 property_type external-identifier -P2507 property_type item -P2508 property_type external-identifier -P2509 property_type external-identifier -P2510 property_type external-identifier -P2511 property_type external-identifier -P2512 property_type item -P2513 property_type external-identifier -P2514 property_type external-identifier -P2515 property_type item -P2516 property_type external-identifier -P2517 property_type item -P2518 property_type external-identifier -P2519 property_type external-identifier -P2520 property_type url -P2521 property_type monolingualtext -P2522 property_type item -P2524 property_type external-identifier -P2525 property_type external-identifier -P2526 property_type external-identifier -P2527 property_type quantity -P2528 property_type quantity -P2529 property_type external-identifier -P2530 property_type external-identifier -P2531 property_type external-identifier -P2532 property_type quantity -P2533 property_type external-identifier -P2534 property_type string -P2535 property_type string -P2536 property_type external-identifier -P2537 property_type external-identifier -P2538 property_type external-identifier -P2539 property_type external-identifier -P2540 property_type string -P2541 property_type item -P2542 property_type quantity -P2545 property_type item -P2546 property_type item -P2547 property_type quantity -P2548 property_type item -P2549 property_type external-identifier -P2550 property_type item -P2551 property_type item -P2552 property_type string -P2553 property_type item -P2554 property_type item -P4135 property_type quantity -P4136 property_type external-identifier -P4137 property_type quantity -P4138 property_type external-identifier -P4139 property_type external-identifier -P4140 property_type quantity -P4141 property_type external-identifier -P4142 property_type external-identifier -P4143 property_type external-identifier -P4144 property_type external-identifier -P4145 property_type external-identifier -P4146 property_type external-identifier -P4147 property_type item -P4149 property_type item -P4150 property_type string -P4151 property_type item -P4152 property_type string -P4153 property_type quantity -P4154 property_type external-identifier -P4155 property_type string -P4156 property_type external-identifier -P4157 property_type external-identifier -P4158 property_type external-identifier -P4159 property_type external-identifier -P4160 property_type external-identifier -P4161 property_type external-identifier -P4162 property_type external-identifier -P4163 property_type quantity -P4164 property_type external-identifier -P4165 property_type external-identifier -P4166 property_type external-identifier -P4167 property_type external-identifier -P4168 property_type external-identifier -P4169 property_type external-identifier -P4170 property_type external-identifier -P4171 property_type external-identifier -P4172 property_type external-identifier -P4173 property_type external-identifier -P4174 property_type external-identifier -P4175 property_type external-identifier -P4176 property_type quantity -P4177 property_type external-identifier -P4178 property_type external-identifier -P4179 property_type string -P4180 property_type external-identifier -P4181 property_type external-identifier -P4182 property_type external-identifier -P4183 property_type quantity -P4184 property_type quantity -P4185 property_type item -P4186 property_type external-identifier -P4187 property_type string -P4188 property_type string -P4189 property_type string -P4190 property_type external-identifier -P4191 property_type external-identifier -P4192 property_type external-identifier -P4193 property_type external-identifier -P4194 property_type external-identifier -P4195 property_type item -P4196 property_type string -P4197 property_type external-identifier -P4198 property_type external-identifier -P4199 property_type external-identifier -P4200 property_type external-identifier -P4201 property_type external-identifier -P4202 property_type item -P4203 property_type external-identifier -P4204 property_type external-identifier -P4206 property_type external-identifier -P4207 property_type external-identifier -P4208 property_type external-identifier -P4209 property_type external-identifier -P4210 property_type external-identifier -P4211 property_type external-identifier -P4212 property_type external-identifier -P4213 property_type string -P4214 property_type quantity -P4215 property_type external-identifier -P4216 property_type external-identifier -P4217 property_type external-identifier -P4218 property_type quantity -P4219 property_type external-identifier -P4220 property_type item -P4221 property_type external-identifier -P4222 property_type external-identifier -P4223 property_type external-identifier -P4224 property_type item -P4225 property_type string -P4226 property_type external-identifier -P4227 property_type external-identifier -P4228 property_type external-identifier -P4229 property_type external-identifier -P4230 property_type external-identifier -P4231 property_type external-identifier -P4232 property_type external-identifier -P4233 property_type external-identifier -P4235 property_type external-identifier -P4236 property_type external-identifier -P4238 property_type url -P2555 property_type quantity -P2556 property_type quantity -P2557 property_type quantity -P2558 property_type external-identifier -P2559 property_type monolingualtext -P2560 property_type item -P2561 property_type monolingualtext -P2562 property_type monolingualtext -P2563 property_type item -P2564 property_type item -P2565 property_type quantity -P2566 property_type external-identifier -P2567 property_type item -P2568 property_type item -P2571 property_type item -P2572 property_type string -P2573 property_type quantity -P2574 property_type external-identifier -P2575 property_type item -P2576 property_type external-identifier -P2577 property_type item -P2578 property_type item -P2579 property_type item -P2580 property_type external-identifier -P2581 property_type external-identifier -P2582 property_type external-identifier -P2583 property_type quantity -P2584 property_type external-identifier -P2585 property_type external-identifier -P2586 property_type external-identifier -P2587 property_type item -P2588 property_type external-identifier -P2589 property_type external-identifier -P2590 property_type external-identifier -P2591 property_type item -P2592 property_type external-identifier -P2593 property_type external-identifier -P2595 property_type quantity -P2596 property_type item -P2597 property_type item -P2598 property_type string -P2599 property_type quantity -P2600 property_type external-identifier -P2601 property_type external-identifier -P2602 property_type external-identifier -P2603 property_type external-identifier -P2604 property_type external-identifier -P2605 property_type external-identifier -P2606 property_type external-identifier -P2607 property_type external-identifier -P2610 property_type quantity -P2611 property_type external-identifier -P2612 property_type external-identifier -P2613 property_type external-identifier -P2614 property_type item -P2618 property_type external-identifier -P2619 property_type external-identifier -P2620 property_type external-identifier -P2621 property_type external-identifier -P2622 property_type external-identifier -P2623 property_type external-identifier -P2624 property_type external-identifier -P2625 property_type external-identifier -P2626 property_type external-identifier -P2627 property_type external-identifier -P2628 property_type external-identifier -P2629 property_type item -P2630 property_type quantity -P2631 property_type external-identifier -P2632 property_type item -P2633 property_type item -P2634 property_type item -P2635 property_type quantity -P2636 property_type external-identifier -P2637 property_type item -P2638 property_type external-identifier -P2639 property_type external-identifier -P2640 property_type external-identifier -P2641 property_type external-identifier -P2642 property_type external-identifier -P2643 property_type item -P2645 property_type quantity -P2646 property_type external-identifier -P2647 property_type item -P2648 property_type external-identifier -P2649 property_type url -P2650 property_type item -P2651 property_type external-identifier -P2652 property_type item -P2655 property_type external-identifier -P2657 property_type external-identifier -P2658 property_type quantity -P2659 property_type quantity -P2660 property_type quantity -P2661 property_type quantity -P2662 property_type quantity -P2663 property_type quantity -P2664 property_type quantity -P2665 property_type quantity -P2666 property_type external-identifier -P3099 property_type external-identifier -P3100 property_type external-identifier -P3101 property_type external-identifier -P3102 property_type external-identifier -P3103 property_type item -P3104 property_type external-identifier -P3105 property_type external-identifier -P3106 property_type external-identifier -P3107 property_type external-identifier -P3108 property_type external-identifier -P3109 property_type external-identifier -P3110 property_type external-identifier -P3111 property_type external-identifier -P3112 property_type external-identifier -P3113 property_type item -P3114 property_type external-identifier -P3115 property_type external-identifier -P3116 property_type external-identifier -P3117 property_type external-identifier -P3118 property_type external-identifier -P3119 property_type external-identifier -P3120 property_type external-identifier -P3121 property_type external-identifier -P3122 property_type external-identifier -P3123 property_type external-identifier -P3124 property_type external-identifier -P3125 property_type external-identifier -P3126 property_type external-identifier -P3127 property_type external-identifier -P3128 property_type external-identifier -P3129 property_type external-identifier -P3130 property_type external-identifier -P3131 property_type external-identifier -P3132 property_type monolingualtext -P3133 property_type external-identifier -P3134 property_type external-identifier -P3135 property_type external-identifier -P3136 property_type external-identifier -P3137 property_type item -P3138 property_type external-identifier -P3139 property_type external-identifier -P3140 property_type external-identifier -P3141 property_type external-identifier -P3142 property_type external-identifier -P3143 property_type external-identifier -P3144 property_type external-identifier -P3145 property_type external-identifier -P3146 property_type external-identifier -P3147 property_type external-identifier -P3148 property_type item -P3149 property_type item -P3150 property_type item -P3151 property_type external-identifier -P3152 property_type external-identifier -P3153 property_type external-identifier -P3154 property_type external-identifier -P3155 property_type external-identifier -P3156 property_type item -P3157 property_type quantity -P3158 property_type item -P3159 property_type external-identifier -P3160 property_type external-identifier -P3161 property_type item -P3162 property_type external-identifier -P3163 property_type external-identifier -P3165 property_type external-identifier -P3166 property_type external-identifier -P3167 property_type external-identifier -P3168 property_type external-identifier -P3169 property_type external-identifier -P3170 property_type external-identifier -P3171 property_type external-identifier -P3172 property_type external-identifier -P3173 property_type item -P3174 property_type item -P3175 property_type external-identifier -P3176 property_type string -P3177 property_type external-identifier -P3178 property_type external-identifier -P3179 property_type item -P3180 property_type external-identifier -P3181 property_type external-identifier -P3182 property_type external-identifier -P3183 property_type external-identifier -P3184 property_type external-identifier -P3185 property_type external-identifier -P3186 property_type external-identifier -P3187 property_type external-identifier -P3188 property_type external-identifier -P3189 property_type item -P3190 property_type item -P3191 property_type external-identifier -P3192 property_type external-identifier -P3193 property_type external-identifier -P3194 property_type external-identifier -P3195 property_type item -P3196 property_type external-identifier -P3197 property_type external-identifier -P3198 property_type external-identifier -P3199 property_type external-identifier -P948 property_type string -P949 property_type external-identifier -P950 property_type external-identifier -P951 property_type external-identifier -P952 property_type string -P953 property_type url -P954 property_type external-identifier -P957 property_type external-identifier -P958 property_type string -P959 property_type external-identifier -P960 property_type external-identifier -P961 property_type external-identifier -P962 property_type external-identifier -P963 property_type url -P964 property_type external-identifier -P965 property_type string -P966 property_type external-identifier -P967 property_type item -P968 property_type url -P969 property_type string -P970 property_type item -P971 property_type item -P972 property_type item -P973 property_type url -P974 property_type item -P980 property_type external-identifier -P981 property_type external-identifier -P982 property_type external-identifier -P984 property_type external-identifier -P988 property_type external-identifier -P989 property_type string -P990 property_type string -P991 property_type item -P993 property_type string -P994 property_type string -P995 property_type string -P996 property_type string -P998 property_type external-identifier -P999 property_type external-identifier -P1000 property_type item -P1001 property_type item -P1002 property_type item -P1003 property_type external-identifier -P1004 property_type external-identifier -P1005 property_type external-identifier -P1006 property_type external-identifier -P1007 property_type external-identifier -P1010 property_type external-identifier -P1011 property_type item -P1012 property_type item -P1013 property_type item -P1014 property_type external-identifier -P1015 property_type external-identifier -P1016 property_type item -P1017 property_type external-identifier -P1018 property_type item -P1019 property_type url -P1021 property_type external-identifier -P1022 property_type external-identifier -P1023 property_type external-identifier -P1024 property_type external-identifier -P1025 property_type external-identifier -P1026 property_type item -P1027 property_type item -P1028 property_type item -P1029 property_type item -P1030 property_type string -P1031 property_type string -P1032 property_type item -P1033 property_type item -P1034 property_type item -P1035 property_type item -P1036 property_type string -P1037 property_type item -P1038 property_type item -P1039 property_type item -P1040 property_type item -P1041 property_type item -P1042 property_type external-identifier -P1043 property_type external-identifier -P1044 property_type external-identifier -P1045 property_type external-identifier -P1046 property_type item -P1047 property_type external-identifier -P1048 property_type external-identifier -P1049 property_type item -P1050 property_type item -P1051 property_type external-identifier -P1052 property_type external-identifier -P1053 property_type external-identifier -P1054 property_type external-identifier -P1055 property_type external-identifier -P1056 property_type item -P1057 property_type item -P1058 property_type external-identifier -P1059 property_type external-identifier -P1060 property_type item -P1064 property_type item -P1065 property_type url -P1066 property_type item -P2667 property_type item -P2668 property_type item -P2669 property_type time -P2670 property_type item -P2671 property_type external-identifier -P2672 property_type external-identifier -P2673 property_type item -P2674 property_type item -P2675 property_type item -P2676 property_type string -P2677 property_type string -P2678 property_type external-identifier -P2679 property_type item -P2680 property_type item -P2681 property_type item -P2682 property_type item -P2683 property_type external-identifier -P2684 property_type item -P2685 property_type external-identifier -P2686 property_type external-identifier -P2687 property_type external-identifier -P2688 property_type external-identifier -P2689 property_type external-identifier -P2694 property_type external-identifier -P2695 property_type item -P2696 property_type external-identifier -P2697 property_type external-identifier -P2698 property_type external-identifier -P2699 property_type url -P2700 property_type item -P2701 property_type item -P2702 property_type item -P2703 property_type external-identifier -P2704 property_type external-identifier -P2705 property_type external-identifier -P2708 property_type external-identifier -P2709 property_type external-identifier -P2710 property_type quantity -P2712 property_type quantity -P2713 property_type string -P2715 property_type item -P2716 property_type string -P2717 property_type quantity -P2718 property_type quantity -P2719 property_type string -P2720 property_type string -P2721 property_type external-identifier -P2722 property_type external-identifier -P2723 property_type external-identifier -P2724 property_type external-identifier -P2725 property_type external-identifier -P2726 property_type external-identifier -P2727 property_type external-identifier -P2728 property_type external-identifier -P2729 property_type external-identifier -P2730 property_type external-identifier -P2732 property_type external-identifier -P2733 property_type external-identifier -P2734 property_type external-identifier -P2735 property_type external-identifier -P2736 property_type external-identifier -P2737 property_type item -P2738 property_type item -P2739 property_type item -P2740 property_type external-identifier -P2741 property_type external-identifier -P2742 property_type external-identifier -P2743 property_type item -P2744 property_type string -P2745 property_type external-identifier -P2746 property_type item -P2747 property_type item -P2748 property_type external-identifier -P2749 property_type external-identifier -P2750 property_type external-identifier -P2751 property_type external-identifier -P2752 property_type external-identifier -P2753 property_type external-identifier -P2754 property_type time -P2755 property_type external-identifier -P2756 property_type item -P2758 property_type item -P2759 property_type external-identifier -P2760 property_type external-identifier -P2761 property_type external-identifier -P2762 property_type external-identifier -P2763 property_type external-identifier -P2764 property_type external-identifier -P2765 property_type external-identifier -P2766 property_type external-identifier -P2767 property_type external-identifier -P2768 property_type external-identifier -P2769 property_type quantity -P2770 property_type item -P2771 property_type external-identifier -P2772 property_type external-identifier -P2773 property_type external-identifier -P2774 property_type external-identifier -P2775 property_type external-identifier -P2776 property_type external-identifier -P4851 property_type quantity -P4852 property_type external-identifier -P4853 property_type external-identifier -P4854 property_type external-identifier -P4855 property_type external-identifier -P4856 property_type string -P4857 property_type external-identifier -P4858 property_type external-identifier -P4859 property_type external-identifier -P4860 property_type external-identifier -P4861 property_type external-identifier -P4862 property_type external-identifier -P4863 property_type string -P4864 property_type string -P4866 property_type external-identifier -P4867 property_type string -P4868 property_type external-identifier -P4869 property_type external-identifier -P4870 property_type external-identifier -P4871 property_type external-identifier -P4872 property_type external-identifier -P4873 property_type item -P4875 property_type item -P4876 property_type quantity -P4878 property_type item -P4879 property_type external-identifier -P4880 property_type external-identifier -P4881 property_type external-identifier -P4882 property_type item -P4883 property_type external-identifier -P4884 property_type item -P4885 property_type external-identifier -P4886 property_type external-identifier -P4887 property_type external-identifier -P4888 property_type external-identifier -P4889 property_type external-identifier -P4890 property_type external-identifier -P4891 property_type external-identifier -P4892 property_type external-identifier -P4893 property_type external-identifier -P4894 property_type external-identifier -P4895 property_type quantity -P4896 property_type string -P4897 property_type external-identifier -P4898 property_type external-identifier -P4899 property_type external-identifier -P4900 property_type item -P4901 property_type external-identifier -P4902 property_type external-identifier -P4903 property_type external-identifier -P4904 property_type external-identifier -P4905 property_type external-identifier -P4906 property_type external-identifier -P4907 property_type external-identifier -P4908 property_type item -P4909 property_type quantity -P4910 property_type external-identifier -P4911 property_type external-identifier -P4912 property_type quantity -P4913 property_type item -P4914 property_type string -P4915 property_type item -P4916 property_type external-identifier -P4917 property_type external-identifier -P4919 property_type external-identifier -P4920 property_type external-identifier -P4921 property_type external-identifier -P4922 property_type external-identifier -P4923 property_type external-identifier -P4924 property_type external-identifier -P4925 property_type external-identifier -P4926 property_type external-identifier -P4927 property_type external-identifier -P4928 property_type external-identifier -P4929 property_type external-identifier -P4930 property_type external-identifier -P4931 property_type external-identifier -P4932 property_type external-identifier -P4933 property_type external-identifier -P4934 property_type item -P4935 property_type external-identifier -P4936 property_type external-identifier -P4937 property_type external-identifier -P4938 property_type external-identifier -P4939 property_type external-identifier -P4940 property_type external-identifier -P4941 property_type external-identifier -P4942 property_type external-identifier -P4943 property_type external-identifier -P4944 property_type external-identifier -P4945 property_type url -P4946 property_type external-identifier -P4947 property_type external-identifier -P4948 property_type external-identifier -P4949 property_type external-identifier -P4950 property_type external-identifier -P4951 property_type string -P4952 property_type item -P4953 property_type external-identifier -P4954 property_type item -P4239 property_type monolingualtext -P4240 property_type item -P4241 property_type item -P4242 property_type quantity -P4243 property_type string -P4244 property_type external-identifier -P4245 property_type external-identifier -P4246 property_type external-identifier -P4247 property_type external-identifier -P4248 property_type external-identifier -P4249 property_type external-identifier -P4250 property_type quantity -P4251 property_type external-identifier -P4252 property_type external-identifier -P4253 property_type quantity -P4254 property_type external-identifier -P4255 property_type external-identifier -P4256 property_type external-identifier -P4257 property_type external-identifier -P4258 property_type external-identifier -P4259 property_type external-identifier -P4260 property_type external-identifier -P4261 property_type external-identifier -P4262 property_type external-identifier -P4263 property_type external-identifier -P4264 property_type external-identifier -P4265 property_type external-identifier -P4266 property_type external-identifier -P4267 property_type external-identifier -P4268 property_type quantity -P4269 property_type quantity -P4270 property_type external-identifier -P4271 property_type item -P4272 property_type external-identifier -P4273 property_type external-identifier -P4274 property_type external-identifier -P4275 property_type external-identifier -P4276 property_type external-identifier -P4277 property_type external-identifier -P4278 property_type external-identifier -P4279 property_type external-identifier -P4280 property_type external-identifier -P4281 property_type external-identifier -P4282 property_type external-identifier -P4283 property_type external-identifier -P4284 property_type external-identifier -P4285 property_type external-identifier -P4286 property_type external-identifier -P4287 property_type external-identifier -P4288 property_type external-identifier -P4289 property_type external-identifier -P4290 property_type item -P4291 property_type string -P4292 property_type item -P4293 property_type external-identifier -P4294 property_type external-identifier -P4295 property_type quantity -P4296 property_type quantity -P4297 property_type external-identifier -P4298 property_type external-identifier -P4299 property_type external-identifier -P4300 property_type external-identifier -P4301 property_type external-identifier -P4302 property_type external-identifier -P4303 property_type external-identifier -P4304 property_type external-identifier -P4305 property_type external-identifier -P4306 property_type external-identifier -P4307 property_type external-identifier -P4308 property_type external-identifier -P4309 property_type external-identifier -P4310 property_type external-identifier -P4311 property_type external-identifier -P4312 property_type item -P4313 property_type external-identifier -P4314 property_type external-identifier -P4315 property_type external-identifier -P4316 property_type string -P4317 property_type external-identifier -P4318 property_type external-identifier -P4319 property_type external-identifier -P4320 property_type item -P4321 property_type item -P4322 property_type item -P4323 property_type item -P4324 property_type item -P4325 property_type string -P4326 property_type external-identifier -P4327 property_type external-identifier -P4328 property_type external-identifier -P4329 property_type item -P4330 property_type item -P4331 property_type external-identifier -P4332 property_type external-identifier -P4333 property_type external-identifier -P4334 property_type external-identifier -P4335 property_type external-identifier -P4336 property_type external-identifier -P4337 property_type external-identifier -P4338 property_type external-identifier -P3200 property_type external-identifier -P3201 property_type external-identifier -P3202 property_type external-identifier -P3203 property_type external-identifier -P3204 property_type external-identifier -P3205 property_type item -P3206 property_type external-identifier -P3207 property_type external-identifier -P3208 property_type external-identifier -P3209 property_type external-identifier -P3211 property_type external-identifier -P3212 property_type external-identifier -P3213 property_type external-identifier -P3215 property_type external-identifier -P3216 property_type item -P3217 property_type external-identifier -P3218 property_type external-identifier -P3219 property_type external-identifier -P3220 property_type external-identifier -P3221 property_type external-identifier -P3222 property_type external-identifier -P3223 property_type external-identifier -P3224 property_type external-identifier -P3225 property_type external-identifier -P3226 property_type external-identifier -P3227 property_type external-identifier -P3228 property_type string -P3229 property_type external-identifier -P3230 property_type external-identifier -P3231 property_type external-identifier -P3232 property_type external-identifier -P3233 property_type external-identifier -P3234 property_type external-identifier -P3235 property_type external-identifier -P3236 property_type external-identifier -P3237 property_type external-identifier -P3238 property_type string -P3240 property_type external-identifier -P3241 property_type external-identifier -P3242 property_type external-identifier -P3243 property_type external-identifier -P3245 property_type external-identifier -P3246 property_type external-identifier -P3248 property_type external-identifier -P3250 property_type external-identifier -P3251 property_type quantity -P3252 property_type quantity -P3253 property_type quantity -P3254 property_type url -P3256 property_type external-identifier -P3257 property_type external-identifier -P3258 property_type external-identifier -P3259 property_type item -P3260 property_type quantity -P3261 property_type item -P3262 property_type item -P3263 property_type item -P3264 property_type item -P3265 property_type external-identifier -P3266 property_type external-identifier -P3267 property_type external-identifier -P3268 property_type url -P3269 property_type external-identifier -P3270 property_type quantity -P3271 property_type quantity -P3272 property_type external-identifier -P3273 property_type external-identifier -P3274 property_type item -P3275 property_type item -P3276 property_type external-identifier -P3277 property_type external-identifier -P3279 property_type item -P3280 property_type external-identifier -P3281 property_type external-identifier -P3283 property_type external-identifier -P3284 property_type external-identifier -P3285 property_type external-identifier -P3286 property_type external-identifier -P3288 property_type external-identifier -P3289 property_type external-identifier -P3290 property_type external-identifier -P3291 property_type external-identifier -P3292 property_type external-identifier -P3293 property_type external-identifier -P3294 property_type item -P3295 property_type string -P3296 property_type external-identifier -P3297 property_type external-identifier -P3298 property_type external-identifier -P3299 property_type external-identifier -P3300 property_type item -P3301 property_type item -P3302 property_type external-identifier -P3303 property_type string -P3304 property_type external-identifier -P3305 property_type external-identifier -P3306 property_type item -P3307 property_type external-identifier -P3308 property_type external-identifier -P3309 property_type external-identifier -P1067 property_type external-identifier -P1068 property_type item -P1069 property_type external-identifier -P1070 property_type external-identifier -P1071 property_type item -P1072 property_type item -P1073 property_type item -P1074 property_type item -P1075 property_type item -P1076 property_type external-identifier -P1077 property_type string -P1078 property_type item -P1079 property_type item -P1080 property_type item -P1081 property_type quantity -P1082 property_type quantity -P1083 property_type quantity -P1084 property_type external-identifier -P1085 property_type external-identifier -P1086 property_type quantity -P1087 property_type quantity -P1088 property_type quantity -P1090 property_type quantity -P1092 property_type quantity -P1093 property_type quantity -P1096 property_type quantity -P1097 property_type quantity -P1098 property_type quantity -P1099 property_type quantity -P1100 property_type quantity -P1101 property_type quantity -P1102 property_type quantity -P1103 property_type quantity -P1104 property_type quantity -P1106 property_type quantity -P1107 property_type quantity -P1108 property_type quantity -P1109 property_type quantity -P1110 property_type quantity -P1111 property_type quantity -P1113 property_type quantity -P1114 property_type quantity -P1115 property_type external-identifier -P1116 property_type external-identifier -P1117 property_type quantity -P1120 property_type quantity -P1121 property_type quantity -P1122 property_type quantity -P1123 property_type quantity -P1125 property_type quantity -P1126 property_type quantity -P1127 property_type quantity -P1128 property_type quantity -P1129 property_type quantity -P1132 property_type quantity -P1133 property_type external-identifier -P1135 property_type item -P1136 property_type item -P1137 property_type item -P1138 property_type external-identifier -P1139 property_type quantity -P1140 property_type external-identifier -P1141 property_type quantity -P1142 property_type item -P1143 property_type external-identifier -P1144 property_type external-identifier -P1145 property_type item -P1146 property_type external-identifier -P1148 property_type quantity -P1149 property_type string -P1150 property_type string -P1151 property_type item -P1153 property_type external-identifier -P1154 property_type external-identifier -P1155 property_type external-identifier -P1156 property_type external-identifier -P1157 property_type external-identifier -P1158 property_type item -P1159 property_type external-identifier -P1160 property_type external-identifier -P1161 property_type string -P1162 property_type string -P1163 property_type string -P1164 property_type quantity -P1165 property_type item -P1167 property_type external-identifier -P1168 property_type external-identifier -P1170 property_type item -P1171 property_type item -P1172 property_type external-identifier -P1174 property_type quantity -P1181 property_type quantity -P1182 property_type external-identifier -P1183 property_type string -P1184 property_type external-identifier -P1185 property_type external-identifier -P1186 property_type external-identifier -P1187 property_type external-identifier -P1188 property_type external-identifier -P1189 property_type external-identifier -P5374 property_type external-identifier -P5375 property_type external-identifier -P5376 property_type external-identifier -P5377 property_type external-identifier -P5378 property_type external-identifier -P5379 property_type external-identifier -P5380 property_type external-identifier -P5381 property_type external-identifier -P5382 property_type external-identifier -P5383 property_type external-identifier -P5384 property_type external-identifier -P5385 property_type external-identifier -P5386 property_type item -P5387 property_type external-identifier -P5388 property_type external-identifier -P5389 property_type item -P5390 property_type external-identifier -P5391 property_type external-identifier -P5392 property_type external-identifier -P5393 property_type external-identifier -P5394 property_type external-identifier -P5395 property_type external-identifier -P5396 property_type external-identifier -P5397 property_type external-identifier -P5398 property_type external-identifier -P5400 property_type external-identifier -P5401 property_type string -P5402 property_type string -P5403 property_type external-identifier -P5404 property_type external-identifier -P5406 property_type external-identifier -P5407 property_type external-identifier -P5408 property_type external-identifier -P5409 property_type external-identifier -P5410 property_type external-identifier -P5411 property_type external-identifier -P5412 property_type string -P5413 property_type external-identifier -P5414 property_type external-identifier -P5415 property_type external-identifier -P5417 property_type external-identifier -P5418 property_type external-identifier -P5419 property_type external-identifier -P5420 property_type external-identifier -P5421 property_type external-identifier -P5422 property_type item -P5423 property_type string -P5424 property_type external-identifier -P5425 property_type item -P5426 property_type item -P5427 property_type quantity -P5428 property_type quantity -P5429 property_type external-identifier -P5430 property_type external-identifier -P5431 property_type external-identifier -P5432 property_type external-identifier -P5434 property_type external-identifier -P5435 property_type external-identifier -P5436 property_type quantity -P5437 property_type external-identifier -P5438 property_type item -P5439 property_type item -P5440 property_type external-identifier -P5441 property_type external-identifier -P5442 property_type external-identifier -P5443 property_type external-identifier -P5444 property_type item -P5445 property_type external-identifier -P5446 property_type item -P5447 property_type quantity -P5448 property_type quantity -P5449 property_type external-identifier -P5450 property_type external-identifier -P5451 property_type external-identifier -P5452 property_type external-identifier -P5453 property_type external-identifier -P5454 property_type external-identifier -P5455 property_type external-identifier -P5456 property_type external-identifier -P5457 property_type external-identifier -P5458 property_type external-identifier -P5459 property_type external-identifier -P5460 property_type item -P5461 property_type string -P5462 property_type external-identifier -P5463 property_type external-identifier -P5464 property_type external-identifier -P5465 property_type external-identifier -P5466 property_type external-identifier -P5467 property_type external-identifier -P5468 property_type external-identifier -P5469 property_type external-identifier -P5470 property_type external-identifier -P5471 property_type string -P5473 property_type external-identifier -P5474 property_type quantity -P5475 property_type item -P5476 property_type external-identifier -P5477 property_type external-identifier -P5478 property_type external-identifier -P4339 property_type external-identifier -P4340 property_type external-identifier -P4341 property_type quantity -P4342 property_type external-identifier -P4343 property_type external-identifier -P4344 property_type external-identifier -P4345 property_type item -P4346 property_type external-identifier -P4347 property_type external-identifier -P4348 property_type external-identifier -P4349 property_type external-identifier -P4350 property_type quantity -P4351 property_type external-identifier -P4352 property_type external-identifier -P4353 property_type item -P4354 property_type string -P4355 property_type external-identifier -P4356 property_type external-identifier -P4357 property_type external-identifier -P4358 property_type external-identifier -P4359 property_type external-identifier -P4360 property_type external-identifier -P4361 property_type external-identifier -P4362 property_type external-identifier -P4363 property_type external-identifier -P4364 property_type external-identifier -P4365 property_type external-identifier -P4366 property_type external-identifier -P4367 property_type external-identifier -P4368 property_type external-identifier -P4369 property_type external-identifier -P4370 property_type external-identifier -P4371 property_type external-identifier -P4372 property_type external-identifier -P4373 property_type external-identifier -P4374 property_type external-identifier -P4375 property_type external-identifier -P4376 property_type external-identifier -P4377 property_type external-identifier -P4379 property_type item -P4380 property_type external-identifier -P4381 property_type external-identifier -P4382 property_type external-identifier -P4383 property_type external-identifier -P4384 property_type external-identifier -P4385 property_type external-identifier -P4386 property_type external-identifier -P4387 property_type item -P4388 property_type external-identifier -P4389 property_type external-identifier -P4390 property_type item -P4391 property_type external-identifier -P4392 property_type external-identifier -P4393 property_type external-identifier -P4394 property_type external-identifier -P4395 property_type external-identifier -P4396 property_type external-identifier -P4397 property_type external-identifier -P4398 property_type external-identifier -P4399 property_type external-identifier -P4400 property_type external-identifier -P4401 property_type external-identifier -P4402 property_type external-identifier -P4403 property_type quantity -P4404 property_type external-identifier -P4405 property_type external-identifier -P4406 property_type external-identifier -P4407 property_type external-identifier -P4408 property_type external-identifier -P4409 property_type external-identifier -P4410 property_type external-identifier -P4411 property_type external-identifier -P4412 property_type external-identifier -P4413 property_type external-identifier -P4414 property_type external-identifier -P4415 property_type external-identifier -P4416 property_type external-identifier -P4417 property_type external-identifier -P4418 property_type external-identifier -P4419 property_type external-identifier -P4421 property_type external-identifier -P4422 property_type external-identifier -P4423 property_type external-identifier -P4424 property_type item -P4425 property_type item -P4426 property_type item -P4427 property_type external-identifier -P4428 property_type item -P4429 property_type external-identifier -P4430 property_type external-identifier -P4431 property_type external-identifier -P4432 property_type external-identifier -P4433 property_type external-identifier -P4434 property_type external-identifier -P4435 property_type external-identifier -P4436 property_type external-identifier -P4437 property_type item -P4438 property_type external-identifier -P4439 property_type external-identifier -P4440 property_type external-identifier -P4955 property_type external-identifier -P4956 property_type external-identifier -P4957 property_type external-identifier -P4958 property_type item -P4959 property_type external-identifier -P4960 property_type external-identifier -P4961 property_type external-identifier -P4962 property_type external-identifier -P4963 property_type external-identifier -P4964 property_type external-identifier -P4965 property_type external-identifier -P4966 property_type external-identifier -P4967 property_type item -P4968 property_type item -P4969 property_type item -P4970 property_type string -P4971 property_type external-identifier -P4972 property_type external-identifier -P4973 property_type external-identifier -P4974 property_type external-identifier -P4975 property_type external-identifier -P4976 property_type external-identifier -P4977 property_type external-identifier -P4978 property_type external-identifier -P4979 property_type external-identifier -P4980 property_type external-identifier -P4981 property_type external-identifier -P4982 property_type external-identifier -P4983 property_type external-identifier -P4985 property_type external-identifier -P4986 property_type external-identifier -P4987 property_type external-identifier -P4988 property_type item -P4989 property_type external-identifier -P4991 property_type external-identifier -P4992 property_type external-identifier -P4993 property_type external-identifier -P4994 property_type external-identifier -P4996 property_type external-identifier -P4997 property_type url -P4998 property_type string -P4999 property_type quantity -P5001 property_type external-identifier -P5002 property_type external-identifier -P5003 property_type external-identifier -P5004 property_type item -P5005 property_type external-identifier -P5006 property_type external-identifier -P5007 property_type external-identifier -P5008 property_type item -P5009 property_type item -P5010 property_type external-identifier -P5011 property_type external-identifier -P5012 property_type item -P5013 property_type external-identifier -P5014 property_type external-identifier -P5015 property_type external-identifier -P5016 property_type external-identifier -P5017 property_type time -P5018 property_type external-identifier -P5019 property_type external-identifier -P5020 property_type external-identifier -P5021 property_type item -P5022 property_type quantity -P5023 property_type item -P5024 property_type item -P5025 property_type item -P5026 property_type item -P5027 property_type quantity -P5028 property_type item -P5029 property_type external-identifier -P5030 property_type item -P5031 property_type external-identifier -P5032 property_type external-identifier -P5033 property_type external-identifier -P5034 property_type external-identifier -P5035 property_type external-identifier -P5036 property_type external-identifier -P5037 property_type external-identifier -P5038 property_type external-identifier -P5039 property_type external-identifier -P5040 property_type item -P5041 property_type item -P5042 property_type item -P5043 property_type quantity -P5044 property_type quantity -P5045 property_type quantity -P5046 property_type string -P5047 property_type external-identifier -P5048 property_type external-identifier -P5049 property_type external-identifier -P5050 property_type external-identifier -P5051 property_type item -P5052 property_type item -P5053 property_type item -P5054 property_type item -P5055 property_type external-identifier -P5056 property_type item -P5057 property_type external-identifier -P5058 property_type external-identifier -P3310 property_type item -P3311 property_type string -P3314 property_type external-identifier -P3315 property_type external-identifier -P3316 property_type external-identifier -P3318 property_type external-identifier -P3320 property_type item -P3321 property_type monolingualtext -P3322 property_type external-identifier -P3323 property_type item -P3324 property_type external-identifier -P3325 property_type external-identifier -P3326 property_type external-identifier -P3327 property_type external-identifier -P3328 property_type external-identifier -P3329 property_type external-identifier -P3330 property_type external-identifier -P3331 property_type external-identifier -P3332 property_type external-identifier -P3333 property_type external-identifier -P3335 property_type item -P3337 property_type quantity -P3338 property_type external-identifier -P3339 property_type external-identifier -P3340 property_type external-identifier -P3341 property_type external-identifier -P3342 property_type item -P3343 property_type external-identifier -P3344 property_type external-identifier -P3345 property_type external-identifier -P3346 property_type external-identifier -P3347 property_type external-identifier -P3348 property_type external-identifier -P3349 property_type item -P3350 property_type external-identifier -P3351 property_type external-identifier -P3352 property_type external-identifier -P3353 property_type external-identifier -P3354 property_type item -P3355 property_type item -P3356 property_type item -P3357 property_type item -P3358 property_type item -P3359 property_type item -P3360 property_type external-identifier -P3361 property_type external-identifier -P3362 property_type quantity -P3363 property_type external-identifier -P3364 property_type item -P3365 property_type external-identifier -P3366 property_type external-identifier -P3367 property_type external-identifier -P3368 property_type external-identifier -P3370 property_type external-identifier -P3371 property_type external-identifier -P3372 property_type external-identifier -P3373 property_type item -P3374 property_type item -P3375 property_type external-identifier -P3376 property_type external-identifier -P3377 property_type external-identifier -P3378 property_type external-identifier -P3379 property_type external-identifier -P3380 property_type external-identifier -P3381 property_type external-identifier -P3382 property_type external-identifier -P3383 property_type string -P3385 property_type external-identifier -P3386 property_type external-identifier -P3387 property_type quantity -P3388 property_type external-identifier -P3389 property_type external-identifier -P3390 property_type external-identifier -P3391 property_type external-identifier -P3392 property_type external-identifier -P3393 property_type external-identifier -P3394 property_type external-identifier -P3395 property_type quantity -P3396 property_type external-identifier -P3397 property_type external-identifier -P3398 property_type external-identifier -P3399 property_type external-identifier -P3400 property_type external-identifier -P3401 property_type external-identifier -P3402 property_type item -P3403 property_type item -P3404 property_type external-identifier -P3405 property_type external-identifier -P3406 property_type external-identifier -P3407 property_type external-identifier -P3408 property_type external-identifier -P3409 property_type external-identifier -P3410 property_type external-identifier -P3411 property_type external-identifier -P3412 property_type external-identifier -P3413 property_type external-identifier -P3414 property_type external-identifier -P3415 property_type item -P3416 property_type item -P3417 property_type external-identifier -P1190 property_type string -P1191 property_type time -P1192 property_type item -P1193 property_type quantity -P1194 property_type item -P1195 property_type string -P1196 property_type item -P1198 property_type quantity -P1199 property_type item -P1200 property_type item -P1201 property_type item -P1202 property_type item -P1203 property_type external-identifier -P1204 property_type item -P1207 property_type external-identifier -P1208 property_type external-identifier -P1209 property_type external-identifier -P1210 property_type item -P1211 property_type item -P1212 property_type external-identifier -P1213 property_type external-identifier -P1214 property_type external-identifier -P1215 property_type quantity -P1216 property_type external-identifier -P1217 property_type external-identifier -P1218 property_type external-identifier -P1219 property_type external-identifier -P1220 property_type external-identifier -P1221 property_type item -P1225 property_type external-identifier -P1227 property_type item -P1229 property_type external-identifier -P1230 property_type external-identifier -P1232 property_type external-identifier -P1233 property_type external-identifier -P1234 property_type external-identifier -P1235 property_type external-identifier -P1236 property_type external-identifier -P1237 property_type external-identifier -P1238 property_type external-identifier -P1239 property_type external-identifier -P1240 property_type string -P1241 property_type external-identifier -P1242 property_type external-identifier -P1243 property_type external-identifier -P1245 property_type external-identifier -P1246 property_type external-identifier -P1247 property_type quantity -P1248 property_type external-identifier -P1249 property_type time -P1250 property_type external-identifier -P1251 property_type external-identifier -P1252 property_type external-identifier -P1253 property_type external-identifier -P1254 property_type external-identifier -P1255 property_type external-identifier -P1256 property_type external-identifier -P1257 property_type string -P1258 property_type external-identifier -P1259 property_type globe-coordinate -P1260 property_type external-identifier -P1261 property_type external-identifier -P1262 property_type external-identifier -P1263 property_type external-identifier -P1264 property_type item -P1265 property_type external-identifier -P1266 property_type external-identifier -P1267 property_type external-identifier -P1268 property_type item -P1269 property_type item -P1270 property_type external-identifier -P1271 property_type external-identifier -P1272 property_type external-identifier -P1273 property_type external-identifier -P1274 property_type external-identifier -P1275 property_type external-identifier -P1276 property_type external-identifier -P1277 property_type external-identifier -P1278 property_type external-identifier -P1279 property_type quantity -P1280 property_type external-identifier -P1281 property_type external-identifier -P1282 property_type string -P1283 property_type item -P1284 property_type external-identifier -P1285 property_type external-identifier -P1286 property_type external-identifier -P1287 property_type external-identifier -P1288 property_type external-identifier -P1289 property_type external-identifier -P1290 property_type item -P1291 property_type external-identifier -P1292 property_type external-identifier -P1293 property_type external-identifier -P1294 property_type external-identifier -P1295 property_type quantity -P1296 property_type external-identifier -P1297 property_type external-identifier -P1299 property_type item -P1300 property_type external-identifier -P4441 property_type quantity -P4442 property_type quantity -P4443 property_type item -P4444 property_type item -P4445 property_type quantity -P4446 property_type item -P4447 property_type quantity -P4448 property_type quantity -P4449 property_type external-identifier -P4450 property_type external-identifier -P4451 property_type external-identifier -P4452 property_type item -P4453 property_type external-identifier -P4454 property_type external-identifier -P4455 property_type external-identifier -P4456 property_type external-identifier -P4457 property_type external-identifier -P4458 property_type external-identifier -P4459 property_type external-identifier -P4460 property_type external-identifier -P4461 property_type external-identifier -P4462 property_type external-identifier -P4463 property_type external-identifier -P4464 property_type external-identifier -P4465 property_type external-identifier -P4466 property_type external-identifier -P4467 property_type external-identifier -P4468 property_type external-identifier -P4469 property_type external-identifier -P4470 property_type external-identifier -P4471 property_type external-identifier -P4472 property_type external-identifier -P4473 property_type external-identifier -P4474 property_type external-identifier -P4475 property_type external-identifier -P4476 property_type external-identifier -P4477 property_type external-identifier -P4478 property_type external-identifier -P4479 property_type external-identifier -P4480 property_type external-identifier -P4481 property_type external-identifier -P4482 property_type external-identifier -P4483 property_type external-identifier -P4484 property_type external-identifier -P4485 property_type external-identifier -P4486 property_type external-identifier -P4487 property_type external-identifier -P4488 property_type external-identifier -P4489 property_type external-identifier -P4490 property_type external-identifier -P4491 property_type external-identifier -P4493 property_type external-identifier -P4494 property_type external-identifier -P4495 property_type external-identifier -P4496 property_type string -P4498 property_type external-identifier -P4500 property_type quantity -P4501 property_type quantity -P4502 property_type external-identifier -P4503 property_type external-identifier -P4504 property_type external-identifier -P4505 property_type external-identifier -P4506 property_type string -P4507 property_type external-identifier -P4508 property_type external-identifier -P4509 property_type external-identifier -P4510 property_type item -P4511 property_type quantity -P4512 property_type external-identifier -P4513 property_type external-identifier -P4514 property_type external-identifier -P4515 property_type external-identifier -P4516 property_type external-identifier -P4517 property_type external-identifier -P4518 property_type external-identifier -P4519 property_type quantity -P4520 property_type external-identifier -P4521 property_type external-identifier -P4522 property_type external-identifier -P4523 property_type external-identifier -P4524 property_type external-identifier -P4525 property_type external-identifier -P4526 property_type external-identifier -P4527 property_type external-identifier -P4528 property_type external-identifier -P4529 property_type external-identifier -P4530 property_type external-identifier -P4531 property_type external-identifier -P4532 property_type external-identifier -P4533 property_type external-identifier -P4534 property_type external-identifier -P4535 property_type external-identifier -P4536 property_type external-identifier -P4537 property_type external-identifier -P4538 property_type external-identifier -P4539 property_type external-identifier -P4540 property_type external-identifier -P4541 property_type external-identifier -P4542 property_type external-identifier -P4543 property_type item -P5479 property_type quantity -P5480 property_type quantity -P5481 property_type quantity -P5483 property_type quantity -P5485 property_type external-identifier -P5488 property_type external-identifier -P5489 property_type external-identifier -P5490 property_type external-identifier -P5491 property_type external-identifier -P5492 property_type external-identifier -P5493 property_type external-identifier -P5494 property_type external-identifier -P5495 property_type external-identifier -P5496 property_type external-identifier -P5497 property_type external-identifier -P5498 property_type external-identifier -P5499 property_type external-identifier -P5500 property_type external-identifier -P5501 property_type external-identifier -P5502 property_type external-identifier -P5503 property_type external-identifier -P5504 property_type external-identifier -P5505 property_type external-identifier -P5506 property_type external-identifier -P5507 property_type external-identifier -P5508 property_type external-identifier -P5509 property_type external-identifier -P5510 property_type external-identifier -P5513 property_type external-identifier -P5514 property_type item -P5515 property_type external-identifier -P5516 property_type external-identifier -P5517 property_type external-identifier -P5518 property_type string -P5519 property_type string -P5520 property_type quantity -P5522 property_type item -P5523 property_type item -P5524 property_type quantity -P5525 property_type external-identifier -P5526 property_type quantity -P5527 property_type external-identifier -P5528 property_type external-identifier -P5529 property_type quantity -P5530 property_type external-identifier -P5531 property_type external-identifier -P5532 property_type external-identifier -P5533 property_type external-identifier -P5534 property_type external-identifier -P5535 property_type external-identifier -P5536 property_type external-identifier -P5537 property_type item -P5538 property_type external-identifier -P5539 property_type external-identifier -P5540 property_type external-identifier -P5541 property_type external-identifier -P5542 property_type external-identifier -P5543 property_type external-identifier -P5544 property_type external-identifier -P5545 property_type external-identifier -P5546 property_type external-identifier -P5547 property_type external-identifier -P5548 property_type string -P5549 property_type external-identifier -P5550 property_type external-identifier -P5551 property_type external-identifier -P5552 property_type external-identifier -P5553 property_type external-identifier -P5554 property_type external-identifier -P5555 property_type string -P5556 property_type external-identifier -P5557 property_type external-identifier -P5558 property_type external-identifier -P5559 property_type external-identifier -P5560 property_type item -P5561 property_type external-identifier -P5562 property_type external-identifier -P5563 property_type external-identifier -P5564 property_type item -P5565 property_type external-identifier -P5566 property_type external-identifier -P5567 property_type external-identifier -P5568 property_type external-identifier -P5569 property_type external-identifier -P5570 property_type external-identifier -P5571 property_type external-identifier -P5572 property_type item -P5573 property_type external-identifier -P5574 property_type external-identifier -P5575 property_type quantity -P5576 property_type external-identifier -P5578 property_type external-identifier -P5579 property_type external-identifier -P5580 property_type external-identifier -P5581 property_type external-identifier -P5582 property_type quantity -P5584 property_type external-identifier -P5585 property_type external-identifier -P5586 property_type external-identifier -P5587 property_type external-identifier -P1301 property_type quantity -P1302 property_type item -P1303 property_type item -P1304 property_type item -P1305 property_type external-identifier -P1307 property_type external-identifier -P1308 property_type item -P1309 property_type external-identifier -P1310 property_type item -P1311 property_type external-identifier -P1312 property_type item -P1313 property_type item -P1314 property_type quantity -P1315 property_type external-identifier -P1316 property_type external-identifier -P1317 property_type time -P1318 property_type item -P1319 property_type time -P1320 property_type external-identifier -P1321 property_type item -P1322 property_type item -P1323 property_type external-identifier -P1324 property_type url -P1325 property_type url -P1326 property_type time -P1327 property_type item -P1329 property_type string -P1330 property_type external-identifier -P1331 property_type external-identifier -P1332 property_type globe-coordinate -P1333 property_type globe-coordinate -P1334 property_type globe-coordinate -P1335 property_type globe-coordinate -P1336 property_type item -P1338 property_type external-identifier -P1339 property_type quantity -P1340 property_type item -P1341 property_type external-identifier -P1342 property_type quantity -P1343 property_type item -P1344 property_type item -P1345 property_type quantity -P1346 property_type item -P1347 property_type item -P1348 property_type url -P1349 property_type item -P1350 property_type quantity -P1351 property_type quantity -P1352 property_type quantity -P1353 property_type string -P1354 property_type item -P1355 property_type quantity -P1356 property_type quantity -P1357 property_type quantity -P1358 property_type quantity -P1359 property_type quantity -P1360 property_type string -P1362 property_type external-identifier -P1363 property_type item -P1364 property_type external-identifier -P1365 property_type item -P1366 property_type item -P1367 property_type external-identifier -P1368 property_type external-identifier -P1369 property_type external-identifier -P1370 property_type external-identifier -P1371 property_type external-identifier -P1372 property_type item -P1373 property_type quantity -P1375 property_type external-identifier -P1376 property_type item -P1377 property_type external-identifier -P1378 property_type external-identifier -P1380 property_type external-identifier -P1381 property_type external-identifier -P1382 property_type item -P1383 property_type item -P1385 property_type external-identifier -P1386 property_type external-identifier -P1387 property_type item -P1388 property_type external-identifier -P1389 property_type item -P1390 property_type quantity -P1391 property_type external-identifier -P1392 property_type external-identifier -P1393 property_type item -P1394 property_type external-identifier -P1395 property_type external-identifier -P1396 property_type string -P1397 property_type external-identifier -P1398 property_type item -P1399 property_type item -P1400 property_type external-identifier -P1401 property_type url -P1402 property_type string -P1403 property_type item -P1404 property_type external-identifier -P1406 property_type item -P1407 property_type external-identifier -P1408 property_type item -P4544 property_type external-identifier -P4545 property_type item -P4546 property_type external-identifier -P4547 property_type external-identifier -P4548 property_type external-identifier -P4549 property_type external-identifier -P4550 property_type external-identifier -P4551 property_type external-identifier -P4552 property_type item -P4553 property_type external-identifier -P4554 property_type external-identifier -P4555 property_type external-identifier -P4556 property_type external-identifier -P4557 property_type external-identifier -P4558 property_type external-identifier -P4559 property_type external-identifier -P4560 property_type external-identifier -P4561 property_type external-identifier -P4562 property_type external-identifier -P4563 property_type external-identifier -P4564 property_type external-identifier -P4565 property_type string -P4566 property_type time -P4567 property_type external-identifier -P4568 property_type external-identifier -P4569 property_type external-identifier -P4571 property_type external-identifier -P4572 property_type external-identifier -P4573 property_type string -P4574 property_type external-identifier -P4575 property_type string -P4576 property_type external-identifier -P4577 property_type external-identifier -P4578 property_type external-identifier -P4579 property_type external-identifier -P4580 property_type external-identifier -P4581 property_type external-identifier -P4582 property_type external-identifier -P4583 property_type external-identifier -P4584 property_type item -P4585 property_type external-identifier -P4586 property_type item -P4587 property_type external-identifier -P4588 property_type external-identifier -P4589 property_type external-identifier -P4590 property_type external-identifier -P4591 property_type external-identifier -P4592 property_type external-identifier -P4593 property_type external-identifier -P4594 property_type external-identifier -P4595 property_type string -P4596 property_type external-identifier -P4597 property_type external-identifier -P4598 property_type external-identifier -P4599 property_type item -P4600 property_type item -P4601 property_type external-identifier -P4602 property_type time -P4604 property_type external-identifier -P4605 property_type external-identifier -P4606 property_type external-identifier -P4607 property_type external-identifier -P4608 property_type item -P4609 property_type external-identifier -P4610 property_type external-identifier -P4611 property_type external-identifier -P4612 property_type external-identifier -P4613 property_type external-identifier -P4614 property_type item -P4615 property_type external-identifier -P4616 property_type external-identifier -P4617 property_type external-identifier -P4618 property_type external-identifier -P4619 property_type external-identifier -P4620 property_type external-identifier -P4621 property_type external-identifier -P4622 property_type item -P4623 property_type external-identifier -P4624 property_type item -P4625 property_type external-identifier -P4626 property_type item -P4627 property_type external-identifier -P4628 property_type item -P4629 property_type external-identifier -P4630 property_type external-identifier -P4631 property_type external-identifier -P4632 property_type external-identifier -P4633 property_type string -P4634 property_type item -P4635 property_type external-identifier -P4636 property_type external-identifier -P4637 property_type external-identifier -P4638 property_type external-identifier -P4639 property_type external-identifier -P4640 property_type string -P4641 property_type external-identifier -P4642 property_type external-identifier -P4643 property_type external-identifier -P4644 property_type external-identifier -P4645 property_type external-identifier -P3418 property_type external-identifier -P3419 property_type external-identifier -P3420 property_type external-identifier -P3421 property_type external-identifier -P3422 property_type external-identifier -P3423 property_type external-identifier -P3424 property_type external-identifier -P3425 property_type external-identifier -P3426 property_type external-identifier -P3427 property_type external-identifier -P3428 property_type item -P3429 property_type external-identifier -P3430 property_type external-identifier -P3431 property_type external-identifier -P3432 property_type item -P3433 property_type item -P3434 property_type external-identifier -P3435 property_type external-identifier -P3436 property_type external-identifier -P3437 property_type item -P3438 property_type item -P3439 property_type quantity -P3440 property_type item -P3441 property_type string -P3442 property_type external-identifier -P3443 property_type external-identifier -P3444 property_type external-identifier -P3445 property_type external-identifier -P3446 property_type external-identifier -P3447 property_type item -P3448 property_type item -P3449 property_type external-identifier -P3450 property_type item -P3451 property_type string -P3452 property_type item -P3453 property_type external-identifier -P3454 property_type external-identifier -P3455 property_type external-identifier -P3456 property_type external-identifier -P3457 property_type quantity -P3458 property_type external-identifier -P3459 property_type external-identifier -P3460 property_type item -P3461 property_type item -P3462 property_type external-identifier -P3463 property_type external-identifier -P3464 property_type item -P3465 property_type quantity -P3466 property_type external-identifier -P3467 property_type external-identifier -P3468 property_type external-identifier -P3469 property_type external-identifier -P3470 property_type external-identifier -P3471 property_type external-identifier -P3472 property_type external-identifier -P3473 property_type external-identifier -P3475 property_type external-identifier -P3476 property_type external-identifier -P3477 property_type external-identifier -P3478 property_type external-identifier -P3479 property_type external-identifier -P3480 property_type external-identifier -P3481 property_type external-identifier -P3482 property_type external-identifier -P3483 property_type external-identifier -P3485 property_type quantity -P3486 property_type quantity -P3487 property_type quantity -P3488 property_type quantity -P3489 property_type item -P3490 property_type item -P3491 property_type item -P3492 property_type quantity -P3493 property_type item -P3494 property_type item -P3495 property_type external-identifier -P3496 property_type item -P3497 property_type item -P3498 property_type external-identifier -P3499 property_type external-identifier -P3500 property_type external-identifier -P3501 property_type item -P3502 property_type external-identifier -P3503 property_type external-identifier -P3504 property_type external-identifier -P3505 property_type external-identifier -P3506 property_type external-identifier -P3507 property_type external-identifier -P3509 property_type external-identifier -P3511 property_type external-identifier -P3512 property_type item -P3513 property_type external-identifier -P3514 property_type external-identifier -P3515 property_type external-identifier -P3516 property_type external-identifier -P3517 property_type external-identifier -P3518 property_type external-identifier -P3519 property_type external-identifier -P3520 property_type external-identifier -P3521 property_type external-identifier -P5059 property_type item -P5061 property_type monolingualtext -P5062 property_type external-identifier -P5063 property_type external-identifier -P5064 property_type external-identifier -P5065 property_type quantity -P5066 property_type quantity -P5067 property_type quantity -P5068 property_type external-identifier -P5069 property_type quantity -P5070 property_type item -P5071 property_type quantity -P5072 property_type item -P5073 property_type external-identifier -P5075 property_type external-identifier -P5076 property_type external-identifier -P5077 property_type external-identifier -P5078 property_type external-identifier -P5079 property_type external-identifier -P5080 property_type external-identifier -P5081 property_type external-identifier -P5082 property_type external-identifier -P5083 property_type external-identifier -P5084 property_type external-identifier -P5085 property_type external-identifier -P5086 property_type external-identifier -P5087 property_type external-identifier -P5088 property_type external-identifier -P5090 property_type external-identifier -P5091 property_type external-identifier -P5092 property_type external-identifier -P5093 property_type external-identifier -P5094 property_type external-identifier -P5095 property_type item -P5096 property_type item -P5097 property_type external-identifier -P5098 property_type external-identifier -P5099 property_type external-identifier -P5101 property_type external-identifier -P5102 property_type item -P5103 property_type external-identifier -P5104 property_type external-identifier -P5105 property_type item -P5106 property_type external-identifier -P5107 property_type external-identifier -P5108 property_type external-identifier -P5109 property_type item -P5110 property_type item -P5114 property_type external-identifier -P5115 property_type external-identifier -P5116 property_type external-identifier -P5117 property_type external-identifier -P5118 property_type external-identifier -P5119 property_type external-identifier -P5120 property_type external-identifier -P5121 property_type external-identifier -P5122 property_type external-identifier -P5123 property_type external-identifier -P5124 property_type external-identifier -P5125 property_type item -P5126 property_type item -P5127 property_type external-identifier -P5128 property_type external-identifier -P5129 property_type external-identifier -P5131 property_type item -P5132 property_type item -P5133 property_type item -P5134 property_type item -P5135 property_type item -P5136 property_type item -P5137 property_type item -P5138 property_type item -P5139 property_type string -P5140 property_type globe-coordinate -P5141 property_type quantity -P5142 property_type external-identifier -P5143 property_type external-identifier -P5144 property_type external-identifier -P5145 property_type external-identifier -P5146 property_type external-identifier -P5147 property_type external-identifier -P5148 property_type external-identifier -P5149 property_type external-identifier -P5150 property_type item -P5151 property_type external-identifier -P5152 property_type item -P5153 property_type external-identifier -P5154 property_type external-identifier -P5156 property_type external-identifier -P5157 property_type external-identifier -P5158 property_type external-identifier -P5159 property_type external-identifier -P5160 property_type external-identifier -P5161 property_type external-identifier -P5162 property_type external-identifier -P5163 property_type external-identifier -P5164 property_type external-identifier -P5165 property_type external-identifier -P5166 property_type item -P5167 property_type quantity -P5588 property_type item -P5589 property_type item -P5590 property_type external-identifier -P5591 property_type item -P5592 property_type quantity -P5593 property_type quantity -P5594 property_type quantity -P5595 property_type quantity -P5596 property_type quantity -P5597 property_type external-identifier -P5598 property_type external-identifier -P5599 property_type external-identifier -P5600 property_type external-identifier -P5601 property_type external-identifier -P5602 property_type external-identifier -P5603 property_type external-identifier -P5604 property_type external-identifier -P5605 property_type external-identifier -P5606 property_type item -P5607 property_type item -P5608 property_type quantity -P5609 property_type external-identifier -P5610 property_type external-identifier -P5611 property_type external-identifier -P5612 property_type external-identifier -P5613 property_type external-identifier -P5614 property_type external-identifier -P5615 property_type external-identifier -P5616 property_type external-identifier -P5617 property_type external-identifier -P5618 property_type external-identifier -P5619 property_type external-identifier -P5620 property_type external-identifier -P5621 property_type external-identifier -P5622 property_type external-identifier -P5623 property_type item -P5624 property_type quantity -P5625 property_type string -P5626 property_type external-identifier -P5627 property_type external-identifier -P5628 property_type external-identifier -P5629 property_type external-identifier -P5630 property_type quantity -P5631 property_type external-identifier -P5632 property_type external-identifier -P5633 property_type external-identifier -P5634 property_type external-identifier -P5635 property_type external-identifier -P5636 property_type external-identifier -P5637 property_type external-identifier -P5638 property_type external-identifier -P5639 property_type external-identifier -P5640 property_type external-identifier -P5641 property_type external-identifier -P5642 property_type item -P5643 property_type external-identifier -P5644 property_type external-identifier -P5645 property_type external-identifier -P5646 property_type external-identifier -P5647 property_type external-identifier -P5648 property_type external-identifier -P5649 property_type external-identifier -P5650 property_type external-identifier -P5651 property_type external-identifier -P5652 property_type external-identifier -P5653 property_type external-identifier -P5654 property_type external-identifier -P5655 property_type external-identifier -P5656 property_type external-identifier -P5657 property_type external-identifier -P5658 property_type item -P5659 property_type external-identifier -P5661 property_type external-identifier -P5662 property_type external-identifier -P5663 property_type external-identifier -P5664 property_type external-identifier -P5665 property_type external-identifier -P5666 property_type external-identifier -P5667 property_type external-identifier -P5668 property_type quantity -P5669 property_type quantity -P5670 property_type quantity -P5672 property_type quantity -P5673 property_type quantity -P5674 property_type quantity -P5675 property_type quantity -P5676 property_type quantity -P5677 property_type quantity -P5678 property_type quantity -P5679 property_type quantity -P5680 property_type external-identifier -P5681 property_type quantity -P5682 property_type quantity -P5683 property_type external-identifier -P5685 property_type quantity -P5686 property_type external-identifier -P5687 property_type external-identifier -P5688 property_type external-identifier -P5690 property_type external-identifier -P5691 property_type external-identifier -P4646 property_type item -P4647 property_type item -P4649 property_type item -P4650 property_type external-identifier -P4651 property_type external-identifier -P4652 property_type external-identifier -P4653 property_type item -P4654 property_type string -P4655 property_type external-identifier -P4656 property_type url -P4657 property_type external-identifier -P4658 property_type external-identifier -P4659 property_type external-identifier -P4660 property_type external-identifier -P4661 property_type item -P4662 property_type external-identifier -P4663 property_type external-identifier -P4664 property_type external-identifier -P4665 property_type external-identifier -P4666 property_type external-identifier -P4667 property_type external-identifier -P4668 property_type external-identifier -P4669 property_type string -P4670 property_type external-identifier -P4671 property_type external-identifier -P4672 property_type external-identifier -P4673 property_type external-identifier -P4674 property_type external-identifier -P4675 property_type item -P4676 property_type external-identifier -P4677 property_type external-identifier -P4678 property_type external-identifier -P4679 property_type external-identifier -P4680 property_type item -P4681 property_type external-identifier -P4682 property_type external-identifier -P4683 property_type external-identifier -P4684 property_type external-identifier -P4685 property_type external-identifier -P4686 property_type external-identifier -P4687 property_type external-identifier -P4688 property_type item -P4689 property_type external-identifier -P4690 property_type external-identifier -P4691 property_type external-identifier -P4692 property_type external-identifier -P4693 property_type external-identifier -P4694 property_type external-identifier -P4695 property_type external-identifier -P4696 property_type external-identifier -P4697 property_type external-identifier -P4698 property_type external-identifier -P4699 property_type external-identifier -P4700 property_type external-identifier -P4701 property_type external-identifier -P4702 property_type external-identifier -P4703 property_type external-identifier -P4704 property_type external-identifier -P4705 property_type external-identifier -P4706 property_type external-identifier -P4707 property_type external-identifier -P4708 property_type external-identifier -P4709 property_type external-identifier -P4710 property_type external-identifier -P4711 property_type external-identifier -P4712 property_type external-identifier -P4713 property_type external-identifier -P4714 property_type quantity -P4715 property_type external-identifier -P4716 property_type external-identifier -P4717 property_type external-identifier -P4718 property_type external-identifier -P4720 property_type external-identifier -P4721 property_type external-identifier -P4722 property_type external-identifier -P4723 property_type external-identifier -P4724 property_type external-identifier -P4725 property_type external-identifier -P4726 property_type external-identifier -P4727 property_type external-identifier -P4728 property_type external-identifier -P4729 property_type external-identifier -P4730 property_type external-identifier -P4731 property_type external-identifier -P4732 property_type external-identifier -P4733 property_type item -P4734 property_type external-identifier -P4735 property_type external-identifier -P4736 property_type external-identifier -P4737 property_type external-identifier -P4738 property_type external-identifier -P4739 property_type external-identifier -P4740 property_type external-identifier -P4741 property_type external-identifier -P4742 property_type external-identifier -P4743 property_type item -P4744 property_type external-identifier -P4745 property_type item -P4746 property_type external-identifier -P4747 property_type external-identifier -P3522 property_type external-identifier -P3523 property_type external-identifier -P3524 property_type external-identifier -P3525 property_type external-identifier -P3526 property_type external-identifier -P3527 property_type external-identifier -P3528 property_type external-identifier -P3529 property_type quantity -P3530 property_type quantity -P3531 property_type external-identifier -P3532 property_type external-identifier -P3533 property_type external-identifier -P3534 property_type external-identifier -P3535 property_type external-identifier -P3536 property_type external-identifier -P3537 property_type external-identifier -P3538 property_type external-identifier -P3539 property_type external-identifier -P3541 property_type external-identifier -P3542 property_type external-identifier -P3544 property_type external-identifier -P3545 property_type external-identifier -P3546 property_type external-identifier -P3547 property_type external-identifier -P3548 property_type external-identifier -P3549 property_type external-identifier -P3550 property_type external-identifier -P3551 property_type external-identifier -P3552 property_type external-identifier -P3553 property_type external-identifier -P3554 property_type external-identifier -P3555 property_type external-identifier -P3556 property_type external-identifier -P3557 property_type external-identifier -P3558 property_type external-identifier -P3559 property_type quantity -P3560 property_type external-identifier -P3561 property_type external-identifier -P3562 property_type external-identifier -P3563 property_type external-identifier -P3564 property_type external-identifier -P3565 property_type external-identifier -P3566 property_type external-identifier -P3567 property_type external-identifier -P3568 property_type external-identifier -P3569 property_type external-identifier -P3570 property_type external-identifier -P3571 property_type external-identifier -P3572 property_type external-identifier -P3573 property_type external-identifier -P3574 property_type external-identifier -P3575 property_type quantity -P3576 property_type external-identifier -P3577 property_type external-identifier -P3578 property_type item -P3579 property_type external-identifier -P3580 property_type external-identifier -P3581 property_type external-identifier -P3582 property_type external-identifier -P3583 property_type external-identifier -P3584 property_type external-identifier -P3585 property_type external-identifier -P3586 property_type external-identifier -P3587 property_type external-identifier -P3588 property_type external-identifier -P3589 property_type external-identifier -P3590 property_type external-identifier -P3591 property_type external-identifier -P3592 property_type item -P3593 property_type external-identifier -P3594 property_type external-identifier -P3595 property_type external-identifier -P3596 property_type external-identifier -P3597 property_type external-identifier -P3598 property_type external-identifier -P3599 property_type external-identifier -P3600 property_type external-identifier -P3601 property_type external-identifier -P3602 property_type item -P3603 property_type external-identifier -P3604 property_type external-identifier -P3605 property_type external-identifier -P3606 property_type external-identifier -P3607 property_type external-identifier -P3608 property_type external-identifier -P3609 property_type external-identifier -P3610 property_type item -P3611 property_type external-identifier -P3612 property_type external-identifier -P3613 property_type external-identifier -P3614 property_type external-identifier -P3615 property_type external-identifier -P3616 property_type external-identifier -P3618 property_type quantity -P3619 property_type external-identifier -P3620 property_type external-identifier -P3621 property_type external-identifier -P3622 property_type external-identifier -P3623 property_type external-identifier -P3624 property_type external-identifier -P1409 property_type external-identifier -P1410 property_type quantity -P1411 property_type item -P1412 property_type item -P1414 property_type item -P1415 property_type external-identifier -P1416 property_type item -P1417 property_type external-identifier -P1418 property_type quantity -P1419 property_type item -P1420 property_type item -P1421 property_type url -P1422 property_type external-identifier -P1423 property_type item -P1424 property_type item -P1425 property_type item -P1427 property_type item -P1428 property_type external-identifier -P1429 property_type item -P1430 property_type external-identifier -P1431 property_type item -P1433 property_type item -P1434 property_type item -P1435 property_type item -P1436 property_type quantity -P1437 property_type item -P1438 property_type string -P1439 property_type external-identifier -P1440 property_type external-identifier -P1441 property_type item -P1442 property_type string -P1443 property_type item -P1444 property_type item -P1445 property_type item -P1446 property_type quantity -P1447 property_type external-identifier -P1448 property_type monolingualtext -P1449 property_type monolingualtext -P1450 property_type monolingualtext -P1451 property_type monolingualtext -P1453 property_type external-identifier -P1454 property_type item -P1455 property_type item -P1456 property_type item -P1457 property_type quantity -P1458 property_type quantity -P1459 property_type external-identifier -P1460 property_type external-identifier -P1461 property_type string -P1462 property_type item -P1463 property_type external-identifier -P1464 property_type item -P1465 property_type item -P1466 property_type external-identifier -P1467 property_type external-identifier -P1468 property_type external-identifier -P1469 property_type external-identifier -P1470 property_type quantity -P1471 property_type string -P1472 property_type string -P1473 property_type external-identifier -P1474 property_type external-identifier -P1476 property_type monolingualtext -P1477 property_type monolingualtext -P1478 property_type item -P1479 property_type item -P1480 property_type item -P1481 property_type external-identifier -P1482 property_type url -P1483 property_type external-identifier -P1529 property_type external-identifier -P1531 property_type item -P1532 property_type item -P1533 property_type item -P1534 property_type item -P1535 property_type item -P1536 property_type item -P1537 property_type item -P1538 property_type quantity -P1539 property_type quantity -P1540 property_type quantity -P1541 property_type external-identifier -P1542 property_type item -P1543 property_type string -P1544 property_type external-identifier -P1545 property_type string -P1546 property_type item -P1547 property_type item -P1548 property_type quantity -P1549 property_type monolingualtext -P1550 property_type external-identifier -P1551 property_type external-identifier -P1552 property_type item -P1553 property_type external-identifier -P1554 property_type external-identifier -P1555 property_type external-identifier -P1556 property_type external-identifier -P1557 property_type item -P1558 property_type item -P1559 property_type monolingualtext -P5168 property_type monolingualtext -P5169 property_type external-identifier -P5170 property_type external-identifier -P5171 property_type external-identifier -P5172 property_type external-identifier -P5173 property_type external-identifier -P5174 property_type external-identifier -P5175 property_type external-identifier -P5176 property_type external-identifier -P5177 property_type external-identifier -P5178 property_type url -P5179 property_type external-identifier -P5180 property_type external-identifier -P5181 property_type external-identifier -P5182 property_type external-identifier -P5183 property_type external-identifier -P5184 property_type external-identifier -P5185 property_type item -P5186 property_type item -P5187 property_type monolingualtext -P5188 property_type string -P5189 property_type string -P5191 property_type string -P5192 property_type string -P5193 property_type string -P5194 property_type item -P5195 property_type url -P5196 property_type item -P5197 property_type external-identifier -P5198 property_type external-identifier -P5199 property_type external-identifier -P5200 property_type external-identifier -P5201 property_type item -P5202 property_type item -P5203 property_type item -P5204 property_type time -P5205 property_type quantity -P5206 property_type item -P5207 property_type external-identifier -P5208 property_type external-identifier -P5209 property_type external-identifier -P5210 property_type external-identifier -P5211 property_type external-identifier -P5212 property_type external-identifier -P5213 property_type external-identifier -P5214 property_type external-identifier -P5215 property_type external-identifier -P5216 property_type external-identifier -P5217 property_type external-identifier -P5218 property_type external-identifier -P5219 property_type external-identifier -P5220 property_type external-identifier -P5221 property_type external-identifier -P5222 property_type external-identifier -P5223 property_type external-identifier -P5224 property_type external-identifier -P5225 property_type external-identifier -P5226 property_type external-identifier -P5227 property_type external-identifier -P5229 property_type external-identifier -P5230 property_type quantity -P5231 property_type external-identifier -P5232 property_type external-identifier -P5233 property_type external-identifier -P5234 property_type external-identifier -P5235 property_type external-identifier -P5236 property_type item -P5237 property_type item -P5238 property_type string -P5239 property_type external-identifier -P5240 property_type external-identifier -P5241 property_type external-identifier -P5242 property_type external-identifier -P5243 property_type external-identifier -P5244 property_type item -P5245 property_type external-identifier -P5246 property_type external-identifier -P5247 property_type external-identifier -P5248 property_type item -P5249 property_type item -P5250 property_type external-identifier -P5251 property_type external-identifier -P5252 property_type string -P5253 property_type external-identifier -P5254 property_type external-identifier -P5255 property_type external-identifier -P5256 property_type external-identifier -P5257 property_type external-identifier -P5258 property_type external-identifier -P5259 property_type external-identifier -P5260 property_type external-identifier -P5261 property_type external-identifier -P5262 property_type external-identifier -P5263 property_type external-identifier -P5264 property_type external-identifier -P5265 property_type external-identifier -P5266 property_type external-identifier -P5267 property_type external-identifier -P5268 property_type external-identifier -P5269 property_type external-identifier -P5692 property_type string -P5693 property_type external-identifier -P5694 property_type external-identifier -P5695 property_type external-identifier -P5696 property_type external-identifier -P5698 property_type external-identifier -P5699 property_type external-identifier -P5700 property_type external-identifier -P5703 property_type string -P5704 property_type external-identifier -P5705 property_type external-identifier -P5706 property_type quantity -P5707 property_type item -P5708 property_type quantity -P5709 property_type quantity -P5710 property_type external-identifier -P5711 property_type external-identifier -P5712 property_type external-identifier -P5713 property_type item -P5714 property_type external-identifier -P5715 property_type url -P5716 property_type external-identifier -P5717 property_type external-identifier -P5718 property_type external-identifier -P5719 property_type external-identifier -P5720 property_type external-identifier -P5721 property_type external-identifier -P5722 property_type external-identifier -P5723 property_type external-identifier -P5724 property_type external-identifier -P5725 property_type external-identifier -P5726 property_type external-identifier -P5727 property_type external-identifier -P5731 property_type external-identifier -P5732 property_type external-identifier -P5733 property_type external-identifier -P5734 property_type external-identifier -P5735 property_type external-identifier -P5736 property_type external-identifier -P5737 property_type external-identifier -P5738 property_type external-identifier -P5739 property_type external-identifier -P5740 property_type external-identifier -P5742 property_type external-identifier -P5743 property_type external-identifier -P5744 property_type external-identifier -P5745 property_type external-identifier -P5746 property_type external-identifier -P5747 property_type external-identifier -P5748 property_type external-identifier -P5749 property_type external-identifier -P5750 property_type external-identifier -P5752 property_type external-identifier -P5753 property_type item -P5755 property_type external-identifier -P5756 property_type external-identifier -P5757 property_type external-identifier -P5758 property_type external-identifier -P5759 property_type external-identifier -P5760 property_type external-identifier -P5761 property_type external-identifier -P5762 property_type external-identifier -P5763 property_type external-identifier -P5764 property_type external-identifier -P5765 property_type external-identifier -P5768 property_type external-identifier -P5769 property_type item -P5770 property_type external-identifier -P5771 property_type external-identifier -P5772 property_type external-identifier -P5773 property_type external-identifier -P5774 property_type external-identifier -P5775 property_type string -P5776 property_type external-identifier -P5777 property_type external-identifier -P5778 property_type string -P5779 property_type external-identifier -P5780 property_type external-identifier -P5782 property_type external-identifier -P5783 property_type external-identifier -P5784 property_type external-identifier -P5785 property_type external-identifier -P5786 property_type external-identifier -P5787 property_type external-identifier -P5788 property_type external-identifier -P5789 property_type external-identifier -P5790 property_type external-identifier -P5791 property_type external-identifier -P5792 property_type external-identifier -P5793 property_type external-identifier -P5794 property_type external-identifier -P5795 property_type external-identifier -P5796 property_type external-identifier -P5797 property_type external-identifier -P5798 property_type string -P5799 property_type external-identifier -P5800 property_type item -P5801 property_type external-identifier -P5802 property_type item -P5803 property_type external-identifier -P3625 property_type string -P3626 property_type external-identifier -P3627 property_type external-identifier -P3628 property_type external-identifier -P3629 property_type quantity -P3630 property_type external-identifier -P3631 property_type external-identifier -P3632 property_type external-identifier -P3633 property_type external-identifier -P3634 property_type external-identifier -P3635 property_type external-identifier -P3636 property_type external-identifier -P3637 property_type external-identifier -P3638 property_type external-identifier -P3639 property_type external-identifier -P3640 property_type external-identifier -P3641 property_type external-identifier -P3642 property_type external-identifier -P3643 property_type item -P3644 property_type external-identifier -P3645 property_type external-identifier -P3646 property_type external-identifier -P3647 property_type external-identifier -P3648 property_type item -P3650 property_type item -P3651 property_type external-identifier -P3652 property_type external-identifier -P3653 property_type external-identifier -P3654 property_type external-identifier -P3655 property_type external-identifier -P3656 property_type external-identifier -P3657 property_type external-identifier -P3658 property_type external-identifier -P3659 property_type external-identifier -P3660 property_type external-identifier -P3661 property_type external-identifier -P3662 property_type external-identifier -P3663 property_type external-identifier -P3664 property_type external-identifier -P3665 property_type external-identifier -P3666 property_type external-identifier -P3667 property_type external-identifier -P3668 property_type external-identifier -P3669 property_type external-identifier -P3670 property_type external-identifier -P3671 property_type external-identifier -P3672 property_type external-identifier -P3673 property_type external-identifier -P3674 property_type external-identifier -P3675 property_type external-identifier -P3676 property_type external-identifier -P3677 property_type external-identifier -P3678 property_type external-identifier -P3679 property_type item -P3680 property_type item -P3681 property_type external-identifier -P3682 property_type external-identifier -P3683 property_type external-identifier -P3684 property_type external-identifier -P3685 property_type external-identifier -P3686 property_type external-identifier -P3687 property_type external-identifier -P3689 property_type external-identifier -P3690 property_type external-identifier -P3691 property_type external-identifier -P3692 property_type external-identifier -P3693 property_type external-identifier -P3694 property_type external-identifier -P3695 property_type external-identifier -P3696 property_type external-identifier -P3697 property_type external-identifier -P3698 property_type external-identifier -P3699 property_type external-identifier -P3700 property_type external-identifier -P3701 property_type item -P3702 property_type external-identifier -P3703 property_type external-identifier -P3704 property_type external-identifier -P3705 property_type external-identifier -P3706 property_type external-identifier -P3707 property_type external-identifier -P3708 property_type external-identifier -P3709 property_type item -P3710 property_type external-identifier -P3711 property_type external-identifier -P3712 property_type item -P3713 property_type item -P3714 property_type external-identifier -P3715 property_type external-identifier -P3716 property_type item -P3717 property_type external-identifier -P3718 property_type external-identifier -P3719 property_type item -P3720 property_type external-identifier -P3721 property_type string -P3723 property_type external-identifier -P3724 property_type external-identifier -P3725 property_type external-identifier -P3726 property_type external-identifier -P3727 property_type external-identifier -P4748 property_type external-identifier -P4749 property_type external-identifier -P4750 property_type external-identifier -P4751 property_type external-identifier -P4752 property_type external-identifier -P4753 property_type external-identifier -P4754 property_type external-identifier -P4755 property_type external-identifier -P4756 property_type external-identifier -P4757 property_type external-identifier -P4758 property_type external-identifier -P4759 property_type external-identifier -P4760 property_type external-identifier -P4761 property_type external-identifier -P4762 property_type external-identifier -P4763 property_type external-identifier -P4764 property_type external-identifier -P4765 property_type url -P4766 property_type external-identifier -P4768 property_type external-identifier -P4769 property_type external-identifier -P4770 property_type item -P4771 property_type external-identifier -P4772 property_type external-identifier -P4773 property_type external-identifier -P4774 property_type item -P4775 property_type string -P4776 property_type string -P4777 property_type item -P4778 property_type external-identifier -P4779 property_type external-identifier -P4780 property_type external-identifier -P4781 property_type external-identifier -P4782 property_type external-identifier -P4783 property_type external-identifier -P4784 property_type external-identifier -P4785 property_type external-identifier -P4786 property_type external-identifier -P4787 property_type external-identifier -P4788 property_type item -P4789 property_type external-identifier -P4790 property_type external-identifier -P4791 property_type item -P4792 property_type item -P4793 property_type external-identifier -P4794 property_type item -P4795 property_type external-identifier -P4796 property_type external-identifier -P4797 property_type external-identifier -P4798 property_type external-identifier -P4799 property_type external-identifier -P4800 property_type external-identifier -P4801 property_type external-identifier -P4802 property_type external-identifier -P4803 property_type external-identifier -P4804 property_type external-identifier -P4805 property_type item -P4806 property_type external-identifier -P4807 property_type external-identifier -P4808 property_type external-identifier -P4809 property_type item -P4810 property_type item -P4811 property_type external-identifier -P4812 property_type external-identifier -P4813 property_type external-identifier -P4814 property_type external-identifier -P4815 property_type quantity -P4816 property_type external-identifier -P4818 property_type external-identifier -P4819 property_type external-identifier -P4820 property_type external-identifier -P4821 property_type external-identifier -P4822 property_type external-identifier -P4823 property_type external-identifier -P4824 property_type external-identifier -P4825 property_type quantity -P4826 property_type quantity -P4827 property_type external-identifier -P4829 property_type external-identifier -P4830 property_type external-identifier -P4831 property_type external-identifier -P4832 property_type external-identifier -P4833 property_type external-identifier -P4834 property_type external-identifier -P4835 property_type external-identifier -P4836 property_type external-identifier -P4837 property_type string -P4838 property_type external-identifier -P4839 property_type external-identifier -P4840 property_type external-identifier -P4841 property_type quantity -P4842 property_type external-identifier -P4843 property_type item -P4844 property_type item -P4845 property_type external-identifier -P4846 property_type external-identifier -P4847 property_type external-identifier -P4848 property_type external-identifier -P4849 property_type external-identifier -P4850 property_type item -P5270 property_type external-identifier -P5271 property_type external-identifier -P5272 property_type external-identifier -P5273 property_type external-identifier -P5274 property_type external-identifier -P5275 property_type external-identifier -P5276 property_type string -P5277 property_type item -P5278 property_type item -P5279 property_type string -P5280 property_type item -P5281 property_type quantity -P5282 property_type url -P5283 property_type external-identifier -P5284 property_type external-identifier -P5285 property_type external-identifier -P5286 property_type string -P5287 property_type external-identifier -P5288 property_type external-identifier -P5289 property_type external-identifier -P5290 property_type external-identifier -P5291 property_type external-identifier -P5292 property_type external-identifier -P5293 property_type external-identifier -P5294 property_type external-identifier -P5295 property_type external-identifier -P5296 property_type external-identifier -P5297 property_type external-identifier -P5298 property_type external-identifier -P5299 property_type external-identifier -P5300 property_type external-identifier -P5301 property_type external-identifier -P5302 property_type external-identifier -P5303 property_type external-identifier -P5304 property_type item -P5305 property_type url -P5306 property_type external-identifier -P5307 property_type item -P5308 property_type external-identifier -P5309 property_type external-identifier -P5310 property_type external-identifier -P5311 property_type external-identifier -P5312 property_type external-identifier -P5313 property_type external-identifier -P5314 property_type item -P5315 property_type external-identifier -P5316 property_type external-identifier -P5317 property_type item -P5318 property_type external-identifier -P5319 property_type external-identifier -P5320 property_type external-identifier -P5321 property_type external-identifier -P5323 property_type item -P5324 property_type external-identifier -P5325 property_type external-identifier -P5326 property_type item -P5327 property_type external-identifier -P5328 property_type item -P5329 property_type external-identifier -P5330 property_type item -P5331 property_type external-identifier -P5332 property_type external-identifier -P5333 property_type external-identifier -P5334 property_type external-identifier -P5335 property_type external-identifier -P5336 property_type external-identifier -P5337 property_type external-identifier -P5338 property_type external-identifier -P5339 property_type external-identifier -P5340 property_type external-identifier -P5341 property_type external-identifier -P5343 property_type external-identifier -P5344 property_type external-identifier -P5345 property_type external-identifier -P5346 property_type external-identifier -P5348 property_type quantity -P5349 property_type quantity -P5350 property_type string -P5351 property_type string -P5352 property_type string -P5353 property_type item -P5354 property_type external-identifier -P5355 property_type external-identifier -P5356 property_type external-identifier -P5357 property_type external-identifier -P5358 property_type external-identifier -P5359 property_type external-identifier -P5360 property_type external-identifier -P5361 property_type external-identifier -P5362 property_type external-identifier -P5363 property_type external-identifier -P5364 property_type external-identifier -P5365 property_type external-identifier -P5366 property_type external-identifier -P5368 property_type external-identifier -P5369 property_type external-identifier -P5370 property_type external-identifier -P5371 property_type external-identifier -P5372 property_type external-identifier -P5373 property_type external-identifier -P1560 property_type item -P1561 property_type quantity -P1562 property_type external-identifier -P1563 property_type external-identifier -P1564 property_type external-identifier -P1565 property_type external-identifier -P1566 property_type external-identifier -P1567 property_type external-identifier -P1568 property_type item -P1571 property_type item -P1573 property_type external-identifier -P1574 property_type item -P1575 property_type external-identifier -P1576 property_type item -P1577 property_type external-identifier -P1578 property_type external-identifier -P1579 property_type external-identifier -P1580 property_type external-identifier -P1581 property_type url -P1582 property_type item -P1583 property_type external-identifier -P1584 property_type external-identifier -P1585 property_type external-identifier -P1586 property_type external-identifier -P1587 property_type external-identifier -P1588 property_type string -P1589 property_type item -P1590 property_type quantity -P1591 property_type item -P1592 property_type item -P1593 property_type item -P1594 property_type item -P1595 property_type item -P1596 property_type item -P1598 property_type item -P1599 property_type external-identifier -P1600 property_type external-identifier -P1601 property_type external-identifier -P1602 property_type external-identifier -P1603 property_type quantity -P1604 property_type item -P1605 property_type item -P1606 property_type item -P1607 property_type external-identifier -P1608 property_type external-identifier -P1609 property_type external-identifier -P1610 property_type external-identifier -P1611 property_type item -P1612 property_type string -P1613 property_type url -P1614 property_type external-identifier -P1615 property_type external-identifier -P1616 property_type external-identifier -P1617 property_type external-identifier -P1618 property_type string -P1619 property_type time -P1620 property_type item -P1621 property_type string -P1622 property_type item -P1624 property_type external-identifier -P1625 property_type item -P1626 property_type external-identifier -P1627 property_type external-identifier -P1628 property_type url -P1629 property_type item -P1630 property_type string -P1631 property_type external-identifier -P1632 property_type external-identifier -P1635 property_type monolingualtext -P1636 property_type time -P1637 property_type item -P1638 property_type monolingualtext -P1639 property_type item -P1640 property_type item -P1641 property_type quantity -P1642 property_type item -P1643 property_type item -P1644 property_type external-identifier -P1645 property_type external-identifier -P1647 property_type string -P1648 property_type external-identifier -P1649 property_type external-identifier -P1650 property_type external-identifier -P1651 property_type external-identifier -P1652 property_type item -P1653 property_type external-identifier -P1654 property_type item -P1656 property_type item -P1657 property_type item -P1659 property_type string -P1660 property_type item -P1661 property_type quantity -P1662 property_type external-identifier -P1663 property_type external-identifier -P1664 property_type external-identifier -P1665 property_type external-identifier -P1666 property_type external-identifier -P1667 property_type external-identifier -P1668 property_type external-identifier -P1669 property_type external-identifier -P3728 property_type external-identifier -P3729 property_type item -P3730 property_type item -P3731 property_type external-identifier -P3732 property_type external-identifier -P3733 property_type external-identifier -P3734 property_type item -P3735 property_type external-identifier -P3736 property_type external-identifier -P3737 property_type quantity -P3738 property_type quantity -P3739 property_type item -P3740 property_type quantity -P3741 property_type item -P3742 property_type external-identifier -P3743 property_type external-identifier -P3744 property_type quantity -P3745 property_type external-identifier -P3746 property_type external-identifier -P3747 property_type external-identifier -P3748 property_type external-identifier -P3749 property_type external-identifier -P3750 property_type external-identifier -P3751 property_type external-identifier -P3752 property_type string -P3753 property_type string -P3754 property_type string -P3755 property_type string -P3756 property_type string -P3757 property_type string -P3758 property_type external-identifier -P3759 property_type external-identifier -P3760 property_type external-identifier -P3761 property_type string -P3762 property_type external-identifier -P3763 property_type external-identifier -P3764 property_type item -P3765 property_type external-identifier -P3766 property_type external-identifier -P3767 property_type external-identifier -P3768 property_type external-identifier -P3769 property_type external-identifier -P3770 property_type external-identifier -P3771 property_type item -P3772 property_type item -P3773 property_type item -P3774 property_type item -P3775 property_type item -P3776 property_type item -P3777 property_type item -P3778 property_type item -P3779 property_type item -P3780 property_type item -P3781 property_type item -P3782 property_type external-identifier -P3783 property_type external-identifier -P3784 property_type external-identifier -P3785 property_type external-identifier -P3786 property_type external-identifier -P3787 property_type external-identifier -P3788 property_type external-identifier -P3789 property_type external-identifier -P3790 property_type external-identifier -P3791 property_type external-identifier -P3792 property_type quantity -P3793 property_type string -P3794 property_type external-identifier -P3795 property_type external-identifier -P3796 property_type external-identifier -P3797 property_type external-identifier -P3798 property_type external-identifier -P3799 property_type external-identifier -P3800 property_type external-identifier -P3801 property_type external-identifier -P3802 property_type external-identifier -P3803 property_type item -P3804 property_type external-identifier -P3805 property_type external-identifier -P3806 property_type external-identifier -P3807 property_type external-identifier -P3808 property_type external-identifier -P3809 property_type external-identifier -P3810 property_type external-identifier -P3811 property_type external-identifier -P3812 property_type external-identifier -P3813 property_type external-identifier -P3814 property_type external-identifier -P3815 property_type item -P3816 property_type item -P3817 property_type external-identifier -P3818 property_type item -P3819 property_type external-identifier -P3820 property_type external-identifier -P3821 property_type external-identifier -P3822 property_type item -P3823 property_type item -P3824 property_type external-identifier -P3825 property_type external-identifier -P3826 property_type external-identifier -P3827 property_type external-identifier -P5804 property_type item -P5805 property_type item -P5806 property_type external-identifier -P5807 property_type external-identifier -P5808 property_type external-identifier -P5809 property_type external-identifier -P5810 property_type string -P5811 property_type quantity -P5813 property_type external-identifier -P5814 property_type external-identifier -P5815 property_type external-identifier -P5816 property_type item -P5817 property_type item -P5818 property_type external-identifier -P5819 property_type external-identifier -P5820 property_type external-identifier -P5821 property_type external-identifier -P5822 property_type quantity -P5823 property_type external-identifier -P5824 property_type item -P5825 property_type string -P5826 property_type item -P5827 property_type external-identifier -P5828 property_type item -P5829 property_type external-identifier -P5830 property_type string -P5831 property_type monolingualtext -P5832 property_type item -P5833 property_type external-identifier -P5834 property_type external-identifier -P5835 property_type external-identifier -P5836 property_type external-identifier -P5838 property_type external-identifier -P5839 property_type external-identifier -P5840 property_type external-identifier -P5841 property_type item -P5842 property_type external-identifier -P5843 property_type external-identifier -P5844 property_type external-identifier -P5845 property_type external-identifier -P5846 property_type external-identifier -P5847 property_type external-identifier -P5848 property_type external-identifier -P5849 property_type external-identifier -P5851 property_type external-identifier -P5852 property_type item -P5858 property_type string -P5859 property_type external-identifier -P5860 property_type external-identifier -P5862 property_type external-identifier -P5863 property_type external-identifier -P5864 property_type external-identifier -P5865 property_type external-identifier -P5866 property_type external-identifier -P5867 property_type external-identifier -P5868 property_type external-identifier -P5869 property_type item -P5870 property_type external-identifier -P5871 property_type external-identifier -P5872 property_type item -P5873 property_type item -P5874 property_type external-identifier -P5875 property_type external-identifier -P5876 property_type external-identifier -P5877 property_type external-identifier -P5878 property_type string -P5879 property_type external-identifier -P5880 property_type item -P5881 property_type item -P5882 property_type external-identifier -P5883 property_type external-identifier -P5884 property_type external-identifier -P5885 property_type external-identifier -P5886 property_type item -P5887 property_type external-identifier -P5888 property_type external-identifier -P5890 property_type external-identifier -P5891 property_type external-identifier -P5892 property_type external-identifier -P5893 property_type quantity -P5894 property_type quantity -P5895 property_type quantity -P5896 property_type quantity -P5897 property_type quantity -P5898 property_type quantity -P5899 property_type quantity -P5900 property_type quantity -P5901 property_type string -P5902 property_type external-identifier -P5903 property_type external-identifier -P5904 property_type external-identifier -P5905 property_type external-identifier -P5906 property_type external-identifier -P5908 property_type external-identifier -P5909 property_type external-identifier -P5910 property_type string -P5911 property_type item -P5912 property_type external-identifier -P5913 property_type item -P5914 property_type external-identifier -P1670 property_type external-identifier -P1671 property_type string -P1672 property_type item -P1673 property_type string -P1674 property_type quantity -P1675 property_type quantity -P1676 property_type quantity -P1677 property_type item -P1678 property_type item -P1679 property_type external-identifier -P1680 property_type monolingualtext -P1683 property_type monolingualtext -P1684 property_type monolingualtext -P1685 property_type string -P1686 property_type item -P1687 property_type string -P1689 property_type quantity -P1690 property_type external-identifier -P1691 property_type external-identifier -P1692 property_type string -P1693 property_type external-identifier -P1694 property_type external-identifier -P1695 property_type external-identifier -P1696 property_type string -P1697 property_type quantity -P1699 property_type external-identifier -P1700 property_type external-identifier -P1702 property_type external-identifier -P1703 property_type item -P1704 property_type item -P1705 property_type monolingualtext -P1706 property_type item -P1707 property_type external-identifier -P1708 property_type external-identifier -P1709 property_type url -P1710 property_type external-identifier -P1711 property_type external-identifier -P1712 property_type external-identifier -P1713 property_type url -P1714 property_type external-identifier -P1715 property_type external-identifier -P1716 property_type item -P1717 property_type external-identifier -P1721 property_type string -P1725 property_type quantity -P1726 property_type external-identifier -P1727 property_type external-identifier -P1728 property_type external-identifier -P1729 property_type external-identifier -P1730 property_type external-identifier -P1731 property_type item -P1732 property_type external-identifier -P1733 property_type external-identifier -P1734 property_type time -P1735 property_type external-identifier -P1736 property_type external-identifier -P1738 property_type external-identifier -P1739 property_type external-identifier -P1740 property_type item -P1741 property_type external-identifier -P1743 property_type external-identifier -P1744 property_type external-identifier -P1745 property_type external-identifier -P1746 property_type external-identifier -P1747 property_type external-identifier -P1748 property_type string -P1749 property_type external-identifier -P1750 property_type item -P1751 property_type external-identifier -P1752 property_type quantity -P1753 property_type item -P1754 property_type item -P1755 property_type external-identifier -P1760 property_type external-identifier -P1761 property_type external-identifier -P1762 property_type string -P1763 property_type external-identifier -P1764 property_type external-identifier -P1766 property_type string -P1769 property_type external-identifier -P1770 property_type external-identifier -P1771 property_type external-identifier -P1772 property_type external-identifier -P1774 property_type item -P1775 property_type item -P1776 property_type item -P1777 property_type item -P1778 property_type item -P1779 property_type item -P1780 property_type item -P1782 property_type string -P1785 property_type string -P1786 property_type string -P1787 property_type string -P1788 property_type external-identifier -P1789 property_type item -P1791 property_type item -P1792 property_type item -P1793 property_type string -P1794 property_type external-identifier -P7486 property_type item -P7487 property_type external-identifier -P7488 property_type external-identifier -P7489 property_type external-identifier -P7490 property_type external-identifier -P7491 property_type external-identifier -P7492 property_type external-identifier -P7493 property_type external-identifier -P7494 property_type external-identifier -P7495 property_type external-identifier -P7496 property_type external-identifier -P7497 property_type external-identifier -P7498 property_type external-identifier -P7499 property_type external-identifier -P7500 property_type item -P7501 property_type item -P7502 property_type external-identifier -P7503 property_type external-identifier -P7504 property_type external-identifier -P7505 property_type external-identifier -P7506 property_type external-identifier -P7507 property_type external-identifier -P7508 property_type item -P7509 property_type external-identifier -P7510 property_type url -P7511 property_type external-identifier -P7512 property_type external-identifier -P7513 property_type external-identifier -P7514 property_type item -P7515 property_type external-identifier -P7516 property_type external-identifier -P7517 property_type external-identifier -P7518 property_type external-identifier -P7519 property_type external-identifier -P7520 property_type external-identifier -P7521 property_type external-identifier -P7522 property_type external-identifier -P7523 property_type external-identifier -P7524 property_type external-identifier -P7525 property_type external-identifier -P7526 property_type external-identifier -P7527 property_type quantity -P7528 property_type item -P7529 property_type external-identifier -P7530 property_type external-identifier -P7531 property_type external-identifier -P7532 property_type string -P7533 property_type external-identifier -P7534 property_type external-identifier -P7535 property_type monolingualtext -P7536 property_type external-identifier -P7537 property_type external-identifier -P7538 property_type external-identifier -P7539 property_type external-identifier -P7540 property_type external-identifier -P7541 property_type external-identifier -P7542 property_type external-identifier -P7543 property_type external-identifier -P7544 property_type external-identifier -P7545 property_type external-identifier -P7546 property_type external-identifier -P7547 property_type external-identifier -P7548 property_type external-identifier -P7549 property_type external-identifier -P7550 property_type external-identifier -P7551 property_type external-identifier -P7552 property_type external-identifier -P7553 property_type external-identifier -P7554 property_type external-identifier -P7555 property_type external-identifier -P7556 property_type external-identifier -P7558 property_type external-identifier -P7559 property_type external-identifier -P7560 property_type external-identifier -P7561 property_type item -P7562 property_type external-identifier -P7563 property_type external-identifier -P7564 property_type external-identifier -P7565 property_type external-identifier -P7566 property_type external-identifier -P7567 property_type external-identifier -P7568 property_type external-identifier -P7569 property_type url -P7570 property_type external-identifier -P7571 property_type external-identifier -P7572 property_type external-identifier -P7573 property_type item -P7574 property_type external-identifier -P7575 property_type external-identifier -P7576 property_type external-identifier -P7577 property_type external-identifier -P7578 property_type external-identifier -P7579 property_type external-identifier -P7580 property_type external-identifier -P7581 property_type string -P7582 property_type item -P7583 property_type external-identifier -P7584 property_type quantity -P7585 property_type external-identifier -P7586 property_type external-identifier -P3828 property_type item -P3829 property_type external-identifier -P3830 property_type external-identifier -P3831 property_type item -P3832 property_type external-identifier -P3833 property_type item -P3834 property_type item -P3835 property_type external-identifier -P3836 property_type external-identifier -P3837 property_type external-identifier -P3838 property_type external-identifier -P3839 property_type external-identifier -P3840 property_type quantity -P3841 property_type external-identifier -P3842 property_type item -P3843 property_type external-identifier -P3844 property_type external-identifier -P3845 property_type external-identifier -P3846 property_type external-identifier -P3847 property_type external-identifier -P3848 property_type external-identifier -P3849 property_type external-identifier -P3850 property_type external-identifier -P3851 property_type external-identifier -P3852 property_type external-identifier -P3853 property_type external-identifier -P3854 property_type external-identifier -P3855 property_type external-identifier -P3856 property_type external-identifier -P3857 property_type external-identifier -P3858 property_type item -P3859 property_type external-identifier -P3860 property_type external-identifier -P3861 property_type external-identifier -P3862 property_type external-identifier -P3863 property_type external-identifier -P3864 property_type quantity -P3865 property_type item -P3866 property_type external-identifier -P3867 property_type external-identifier -P3868 property_type external-identifier -P3869 property_type external-identifier -P3870 property_type external-identifier -P3871 property_type item -P3872 property_type quantity -P3874 property_type external-identifier -P3875 property_type external-identifier -P3876 property_type item -P3877 property_type external-identifier -P3878 property_type string -P3879 property_type string -P3880 property_type string -P3881 property_type external-identifier -P3882 property_type external-identifier -P3883 property_type external-identifier -P3884 property_type external-identifier -P3885 property_type external-identifier -P3886 property_type quantity -P3887 property_type external-identifier -P3888 property_type external-identifier -P3889 property_type external-identifier -P3890 property_type external-identifier -P3891 property_type quantity -P3892 property_type external-identifier -P3893 property_type time -P3894 property_type external-identifier -P3895 property_type external-identifier -P3896 property_type string -P3897 property_type external-identifier -P3898 property_type external-identifier -P3899 property_type external-identifier -P3900 property_type external-identifier -P3901 property_type external-identifier -P3902 property_type item -P3903 property_type string -P3904 property_type external-identifier -P3906 property_type external-identifier -P3907 property_type external-identifier -P3908 property_type external-identifier -P3909 property_type monolingualtext -P3910 property_type external-identifier -P3911 property_type external-identifier -P3912 property_type item -P3913 property_type external-identifier -P3914 property_type external-identifier -P3915 property_type external-identifier -P3916 property_type external-identifier -P3917 property_type quantity -P3918 property_type external-identifier -P3919 property_type item -P3920 property_type external-identifier -P3921 property_type string -P3922 property_type string -P3923 property_type external-identifier -P3924 property_type external-identifier -P3925 property_type external-identifier -P3926 property_type external-identifier -P3927 property_type external-identifier -P3928 property_type external-identifier -P3929 property_type external-identifier -P6437 property_type item -P6438 property_type quantity -P6439 property_type item -P6440 property_type item -P6441 property_type external-identifier -P6442 property_type external-identifier -P6443 property_type external-identifier -P6444 property_type external-identifier -P6445 property_type external-identifier -P6446 property_type external-identifier -P6447 property_type external-identifier -P6448 property_type external-identifier -P6449 property_type external-identifier -P6450 property_type external-identifier -P6451 property_type external-identifier -P6452 property_type item -P6453 property_type external-identifier -P6454 property_type external-identifier -P6455 property_type external-identifier -P6456 property_type external-identifier -P6457 property_type external-identifier -P6458 property_type external-identifier -P6459 property_type external-identifier -P6460 property_type external-identifier -P6461 property_type external-identifier -P6462 property_type external-identifier -P6463 property_type external-identifier -P6464 property_type external-identifier -P6465 property_type external-identifier -P6466 property_type external-identifier -P6467 property_type external-identifier -P6468 property_type external-identifier -P6469 property_type external-identifier -P6470 property_type external-identifier -P6471 property_type external-identifier -P6472 property_type external-identifier -P6473 property_type external-identifier -P6474 property_type external-identifier -P6475 property_type external-identifier -P6476 property_type external-identifier -P6477 property_type item -P6478 property_type external-identifier -P6479 property_type external-identifier -P6480 property_type external-identifier -P6481 property_type external-identifier -P6482 property_type external-identifier -P6483 property_type external-identifier -P6484 property_type external-identifier -P6485 property_type external-identifier -P6486 property_type external-identifier -P6487 property_type external-identifier -P6488 property_type external-identifier -P6489 property_type external-identifier -P6490 property_type external-identifier -P6491 property_type external-identifier -P6492 property_type external-identifier -P6493 property_type external-identifier -P6494 property_type external-identifier -P6495 property_type external-identifier -P6496 property_type external-identifier -P6497 property_type quantity -P6498 property_type quantity -P6499 property_type quantity -P6500 property_type url -P6501 property_type external-identifier -P6502 property_type external-identifier -P6503 property_type external-identifier -P6504 property_type external-identifier -P6506 property_type external-identifier -P6507 property_type string -P6509 property_type quantity -P6510 property_type quantity -P6512 property_type external-identifier -P6513 property_type external-identifier -P6514 property_type external-identifier -P6515 property_type external-identifier -P6516 property_type external-identifier -P6517 property_type external-identifier -P6518 property_type external-identifier -P6519 property_type external-identifier -P6520 property_type external-identifier -P6521 property_type external-identifier -P6524 property_type item -P6525 property_type external-identifier -P6526 property_type external-identifier -P6527 property_type external-identifier -P6528 property_type external-identifier -P6529 property_type string -P6530 property_type item -P6531 property_type item -P6532 property_type item -P6533 property_type item -P6534 property_type item -P6535 property_type external-identifier -P6536 property_type external-identifier -P6537 property_type external-identifier -P6538 property_type external-identifier -P6539 property_type external-identifier -P6540 property_type item -P6541 property_type url -P3930 property_type external-identifier -P3931 property_type item -P3932 property_type external-identifier -P3933 property_type external-identifier -P3934 property_type quantity -P3935 property_type external-identifier -P3936 property_type external-identifier -P3937 property_type external-identifier -P3938 property_type item -P3939 property_type external-identifier -P3940 property_type external-identifier -P3941 property_type external-identifier -P3942 property_type external-identifier -P3943 property_type external-identifier -P3944 property_type external-identifier -P3945 property_type external-identifier -P3946 property_type external-identifier -P3948 property_type external-identifier -P3949 property_type external-identifier -P3950 property_type url -P3951 property_type external-identifier -P3952 property_type external-identifier -P3953 property_type external-identifier -P3954 property_type external-identifier -P3955 property_type external-identifier -P3956 property_type external-identifier -P3957 property_type external-identifier -P3958 property_type external-identifier -P3959 property_type external-identifier -P3960 property_type external-identifier -P3961 property_type external-identifier -P3962 property_type external-identifier -P3963 property_type external-identifier -P3964 property_type external-identifier -P3965 property_type external-identifier -P3966 property_type item -P3967 property_type item -P3968 property_type external-identifier -P3969 property_type item -P3970 property_type string -P3971 property_type external-identifier -P3972 property_type external-identifier -P3973 property_type external-identifier -P3974 property_type external-identifier -P3975 property_type item -P3976 property_type external-identifier -P3977 property_type external-identifier -P3978 property_type external-identifier -P3979 property_type external-identifier -P3980 property_type external-identifier -P3981 property_type external-identifier -P3982 property_type external-identifier -P3983 property_type quantity -P3984 property_type external-identifier -P3985 property_type item -P3986 property_type external-identifier -P3987 property_type external-identifier -P3988 property_type external-identifier -P3989 property_type item -P3990 property_type external-identifier -P3991 property_type external-identifier -P3992 property_type external-identifier -P3993 property_type external-identifier -P3994 property_type string -P3995 property_type external-identifier -P3996 property_type external-identifier -P3997 property_type external-identifier -P3998 property_type external-identifier -P3999 property_type time -P4000 property_type item -P4001 property_type url -P4002 property_type item -P4003 property_type external-identifier -P4004 property_type string -P4005 property_type external-identifier -P4006 property_type item -P4007 property_type external-identifier -P4008 property_type external-identifier -P4009 property_type external-identifier -P4010 property_type quantity -P4011 property_type external-identifier -P4012 property_type external-identifier -P4013 property_type external-identifier -P4014 property_type external-identifier -P4015 property_type external-identifier -P4016 property_type external-identifier -P4017 property_type external-identifier -P4018 property_type external-identifier -P4019 property_type external-identifier -P4020 property_type string -P4021 property_type external-identifier -P4022 property_type external-identifier -P4023 property_type external-identifier -P4024 property_type external-identifier -P4025 property_type external-identifier -P4026 property_type external-identifier -P4027 property_type external-identifier -P4028 property_type external-identifier -P4029 property_type external-identifier -P4030 property_type external-identifier -P5915 property_type external-identifier -P5916 property_type external-identifier -P5917 property_type external-identifier -P5918 property_type external-identifier -P5920 property_type string -P5921 property_type external-identifier -P5922 property_type external-identifier -P5923 property_type item -P5925 property_type external-identifier -P5926 property_type external-identifier -P5927 property_type external-identifier -P5928 property_type external-identifier -P5929 property_type quantity -P5930 property_type external-identifier -P5931 property_type external-identifier -P5932 property_type external-identifier -P5933 property_type external-identifier -P5934 property_type external-identifier -P5935 property_type external-identifier -P5936 property_type external-identifier -P5937 property_type external-identifier -P5938 property_type external-identifier -P5939 property_type external-identifier -P5940 property_type item -P5941 property_type external-identifier -P5942 property_type external-identifier -P5944 property_type external-identifier -P5945 property_type external-identifier -P5946 property_type external-identifier -P5947 property_type quantity -P5948 property_type external-identifier -P5949 property_type string -P5950 property_type external-identifier -P5951 property_type external-identifier -P5952 property_type external-identifier -P5953 property_type external-identifier -P5954 property_type external-identifier -P5955 property_type external-identifier -P5956 property_type external-identifier -P5957 property_type external-identifier -P5958 property_type external-identifier -P5959 property_type external-identifier -P5960 property_type external-identifier -P5961 property_type item -P5962 property_type string -P5963 property_type external-identifier -P5964 property_type external-identifier -P5965 property_type external-identifier -P5966 property_type external-identifier -P5967 property_type item -P5968 property_type external-identifier -P5969 property_type external-identifier -P5970 property_type item -P5971 property_type external-identifier -P5972 property_type string -P5973 property_type string -P5974 property_type string -P5975 property_type string -P5976 property_type string -P5977 property_type string -P5978 property_type string -P5979 property_type string -P5980 property_type string -P5981 property_type external-identifier -P5982 property_type quantity -P5983 property_type external-identifier -P5984 property_type external-identifier -P5985 property_type external-identifier -P5986 property_type external-identifier -P5987 property_type external-identifier -P5988 property_type external-identifier -P5989 property_type external-identifier -P5990 property_type external-identifier -P5991 property_type quantity -P5992 property_type quantity -P5993 property_type quantity -P5994 property_type string -P5995 property_type item -P5996 property_type item -P5997 property_type string -P5998 property_type item -P5999 property_type external-identifier -P6000 property_type quantity -P6001 property_type item -P6002 property_type external-identifier -P6003 property_type external-identifier -P6004 property_type external-identifier -P6005 property_type external-identifier -P6006 property_type external-identifier -P6007 property_type external-identifier -P6008 property_type external-identifier -P6009 property_type external-identifier -P6010 property_type external-identifier -P6011 property_type external-identifier -P6012 property_type external-identifier -P6013 property_type external-identifier -P6014 property_type quantity -P6015 property_type external-identifier -P6016 property_type external-identifier -P6017 property_type external-identifier -P1795 property_type external-identifier -P1796 property_type string -P1798 property_type external-identifier -P1799 property_type external-identifier -P1800 property_type external-identifier -P1801 property_type string -P1802 property_type external-identifier -P1803 property_type external-identifier -P1804 property_type external-identifier -P1806 property_type external-identifier -P1807 property_type external-identifier -P1808 property_type external-identifier -P1809 property_type item -P1810 property_type string -P1811 property_type item -P1813 property_type monolingualtext -P1814 property_type string -P1815 property_type string -P1816 property_type external-identifier -P1817 property_type item -P1818 property_type external-identifier -P1819 property_type external-identifier -P1820 property_type string -P1821 property_type external-identifier -P1822 property_type external-identifier -P1823 property_type external-identifier -P1824 property_type string -P1825 property_type external-identifier -P1826 property_type external-identifier -P1827 property_type external-identifier -P1828 property_type external-identifier -P1829 property_type external-identifier -P1830 property_type item -P1831 property_type quantity -P1832 property_type external-identifier -P1833 property_type quantity -P1836 property_type string -P1837 property_type external-identifier -P1838 property_type external-identifier -P1839 property_type external-identifier -P1840 property_type item -P1841 property_type external-identifier -P1842 property_type external-identifier -P1843 property_type monolingualtext -P1844 property_type external-identifier -P1845 property_type string -P1846 property_type string -P1847 property_type external-identifier -P1848 property_type external-identifier -P1849 property_type external-identifier -P1850 property_type external-identifier -P1851 property_type item -P1852 property_type external-identifier -P1853 property_type item -P1854 property_type external-identifier -P1855 property_type item -P1866 property_type external-identifier -P1867 property_type quantity -P1868 property_type quantity -P1869 property_type external-identifier -P1870 property_type external-identifier -P1871 property_type external-identifier -P1872 property_type quantity -P1873 property_type quantity -P1874 property_type external-identifier -P1875 property_type item -P1876 property_type item -P1877 property_type item -P1878 property_type item -P1879 property_type item -P1880 property_type item -P1881 property_type item -P1882 property_type external-identifier -P1883 property_type external-identifier -P1884 property_type item -P1885 property_type item -P1886 property_type external-identifier -P1887 property_type item -P1888 property_type external-identifier -P1889 property_type item -P1890 property_type external-identifier -P1891 property_type item -P1893 property_type external-identifier -P1894 property_type external-identifier -P1895 property_type external-identifier -P1896 property_type url -P1897 property_type item -P1898 property_type item -P1899 property_type external-identifier -P1900 property_type external-identifier -P1901 property_type external-identifier -P1902 property_type external-identifier -P1903 property_type item -P1906 property_type item -P1907 property_type external-identifier -P1908 property_type external-identifier -P1909 property_type item -P1910 property_type item -P1911 property_type item -P1912 property_type item -P7587 property_type external-identifier -P7588 property_type time -P7589 property_type time -P7590 property_type external-identifier -P7591 property_type external-identifier -P7592 property_type external-identifier -P7593 property_type external-identifier -P7594 property_type external-identifier -P7595 property_type external-identifier -P7596 property_type external-identifier -P7597 property_type external-identifier -P7598 property_type string -P7599 property_type string -P7600 property_type item -P7601 property_type item -P7602 property_type external-identifier -P7603 property_type item -P7604 property_type item -P7605 property_type string -P7606 property_type external-identifier -P7607 property_type external-identifier -P7608 property_type external-identifier -P7609 property_type external-identifier -P7610 property_type external-identifier -P7611 property_type external-identifier -P7612 property_type external-identifier -P7613 property_type external-identifier -P7614 property_type external-identifier -P7615 property_type external-identifier -P7616 property_type external-identifier -P7617 property_type external-identifier -P7618 property_type external-identifier -P7619 property_type external-identifier -P7620 property_type external-identifier -P7621 property_type external-identifier -P7622 property_type external-identifier -P7623 property_type external-identifier -P7624 property_type external-identifier -P7625 property_type external-identifier -P7626 property_type external-identifier -P7627 property_type external-identifier -P7630 property_type external-identifier -P7631 property_type external-identifier -P7632 property_type external-identifier -P7633 property_type external-identifier -P7634 property_type external-identifier -P7635 property_type external-identifier -P7636 property_type external-identifier -P7637 property_type external-identifier -P7638 property_type external-identifier -P7639 property_type external-identifier -P7641 property_type external-identifier -P7642 property_type external-identifier -P7643 property_type item -P7644 property_type external-identifier -P7645 property_type external-identifier -P7646 property_type external-identifier -P7647 property_type external-identifier -P7648 property_type external-identifier -P7649 property_type external-identifier -P7650 property_type external-identifier -P7651 property_type external-identifier -P7652 property_type external-identifier -P7653 property_type external-identifier -P7654 property_type external-identifier -P7655 property_type external-identifier -P7656 property_type external-identifier -P7657 property_type external-identifier -P7658 property_type external-identifier -P7659 property_type external-identifier -P7660 property_type external-identifier -P7661 property_type external-identifier -P7662 property_type external-identifier -P7663 property_type external-identifier -P7665 property_type external-identifier -P7666 property_type external-identifier -P7667 property_type external-identifier -P7668 property_type quantity -P7669 property_type external-identifier -P7670 property_type external-identifier -P7671 property_type external-identifier -P7672 property_type external-identifier -P7673 property_type external-identifier -P7674 property_type external-identifier -P7675 property_type external-identifier -P7676 property_type external-identifier -P7677 property_type external-identifier -P7678 property_type external-identifier -P7679 property_type external-identifier -P7680 property_type external-identifier -P7681 property_type external-identifier -P7682 property_type external-identifier -P7683 property_type external-identifier -P7684 property_type external-identifier -P7685 property_type external-identifier -P7686 property_type external-identifier -P7687 property_type external-identifier -P7688 property_type external-identifier -P7689 property_type external-identifier -P7690 property_type external-identifier -P6542 property_type external-identifier -P6543 property_type quantity -P6544 property_type quantity -P6545 property_type quantity -P6546 property_type quantity -P6547 property_type quantity -P6548 property_type external-identifier -P6549 property_type external-identifier -P6550 property_type external-identifier -P6551 property_type external-identifier -P6552 property_type external-identifier -P6553 property_type string -P6554 property_type external-identifier -P6555 property_type external-identifier -P6556 property_type external-identifier -P6557 property_type external-identifier -P6558 property_type external-identifier -P6559 property_type external-identifier -P6560 property_type external-identifier -P6561 property_type external-identifier -P6562 property_type external-identifier -P6563 property_type item -P6564 property_type external-identifier -P6565 property_type external-identifier -P6566 property_type external-identifier -P6567 property_type external-identifier -P6568 property_type item -P6569 property_type item -P6570 property_type quantity -P6571 property_type string -P6572 property_type external-identifier -P6573 property_type external-identifier -P6574 property_type external-identifier -P6575 property_type external-identifier -P6576 property_type external-identifier -P6577 property_type external-identifier -P6578 property_type external-identifier -P6579 property_type external-identifier -P6580 property_type external-identifier -P6581 property_type external-identifier -P6582 property_type external-identifier -P6583 property_type external-identifier -P6584 property_type external-identifier -P6585 property_type external-identifier -P6586 property_type string -P6587 property_type item -P6589 property_type quantity -P6590 property_type quantity -P6591 property_type quantity -P6592 property_type string -P6593 property_type string -P6594 property_type external-identifier -P6595 property_type external-identifier -P6596 property_type external-identifier -P6597 property_type external-identifier -P6598 property_type external-identifier -P6599 property_type external-identifier -P6600 property_type external-identifier -P6601 property_type external-identifier -P6602 property_type external-identifier -P6603 property_type external-identifier -P6604 property_type string -P6605 property_type external-identifier -P6606 property_type item -P6607 property_type monolingualtext -P6608 property_type item -P6609 property_type string -P6610 property_type external-identifier -P6611 property_type external-identifier -P6612 property_type external-identifier -P6613 property_type external-identifier -P6614 property_type external-identifier -P6615 property_type external-identifier -P6616 property_type external-identifier -P6617 property_type external-identifier -P6618 property_type external-identifier -P6619 property_type external-identifier -P6620 property_type external-identifier -P6621 property_type external-identifier -P6622 property_type external-identifier -P6623 property_type external-identifier -P6624 property_type external-identifier -P6625 property_type external-identifier -P6626 property_type external-identifier -P6627 property_type external-identifier -P6628 property_type external-identifier -P6629 property_type external-identifier -P6630 property_type external-identifier -P6631 property_type external-identifier -P6632 property_type external-identifier -P6633 property_type external-identifier -P6634 property_type external-identifier -P6635 property_type external-identifier -P6636 property_type external-identifier -P6637 property_type external-identifier -P6639 property_type quantity -P6640 property_type external-identifier -P6641 property_type external-identifier -P6643 property_type external-identifier -P6644 property_type external-identifier -P7792 property_type external-identifier -P7793 property_type string -P7794 property_type external-identifier -P7795 property_type external-identifier -P7796 property_type external-identifier -P7797 property_type external-identifier -P7798 property_type external-identifier -P7799 property_type external-identifier -P7800 property_type external-identifier -P7801 property_type external-identifier -P7802 property_type external-identifier -P7803 property_type external-identifier -P7804 property_type external-identifier -P7805 property_type external-identifier -P7806 property_type external-identifier -P7807 property_type external-identifier -P7808 property_type external-identifier -P7809 property_type external-identifier -P7810 property_type external-identifier -P7811 property_type external-identifier -P7812 property_type external-identifier -P7813 property_type external-identifier -P7814 property_type external-identifier -P7815 property_type external-identifier -P7816 property_type external-identifier -P7817 property_type external-identifier -P7818 property_type external-identifier -P7819 property_type external-identifier -P7820 property_type external-identifier -P7821 property_type external-identifier -P7822 property_type external-identifier -P7823 property_type external-identifier -P7824 property_type external-identifier -P7825 property_type external-identifier -P7826 property_type external-identifier -P7827 property_type external-identifier -P7828 property_type external-identifier -P7829 property_type external-identifier -P7830 property_type external-identifier -P7831 property_type external-identifier -P7832 property_type external-identifier -P7834 property_type external-identifier -P7835 property_type external-identifier -P7836 property_type external-identifier -P7837 property_type external-identifier -P7838 property_type external-identifier -P7839 property_type external-identifier -P7840 property_type external-identifier -P7841 property_type external-identifier -P7842 property_type external-identifier -P7843 property_type external-identifier -P7844 property_type external-identifier -P7845 property_type external-identifier -P7846 property_type external-identifier -P7847 property_type external-identifier -P7848 property_type external-identifier -P7849 property_type external-identifier -P7850 property_type external-identifier -P7851 property_type external-identifier -P7852 property_type external-identifier -P7853 property_type external-identifier -P7854 property_type external-identifier -P7855 property_type string -P7856 property_type external-identifier -P7857 property_type external-identifier -P7858 property_type external-identifier -P7859 property_type external-identifier -P7860 property_type external-identifier -P7861 property_type item -P7862 property_type quantity -P7863 property_type quantity -P7864 property_type external-identifier -P7865 property_type external-identifier -P7866 property_type external-identifier -P7867 property_type item -P7868 property_type external-identifier -P7869 property_type external-identifier -P7870 property_type external-identifier -P7871 property_type external-identifier -P7872 property_type external-identifier -P7873 property_type external-identifier -P7874 property_type external-identifier -P7875 property_type external-identifier -P7876 property_type external-identifier -P7877 property_type external-identifier -P7878 property_type external-identifier -P7879 property_type external-identifier -P7880 property_type external-identifier -P7881 property_type external-identifier -P7882 property_type external-identifier -P7883 property_type external-identifier -P7884 property_type external-identifier -P7885 property_type external-identifier -P7886 property_type external-identifier -P7887 property_type quantity -P7888 property_type item -P7889 property_type external-identifier -P7890 property_type url -P7891 property_type external-identifier -P7892 property_type external-identifier -P6018 property_type external-identifier -P6019 property_type external-identifier -P6020 property_type external-identifier -P6021 property_type external-identifier -P6022 property_type item -P6023 property_type external-identifier -P6024 property_type external-identifier -P6025 property_type external-identifier -P6028 property_type external-identifier -P6030 property_type external-identifier -P6032 property_type external-identifier -P6033 property_type external-identifier -P6034 property_type external-identifier -P6035 property_type external-identifier -P6036 property_type external-identifier -P6037 property_type external-identifier -P6038 property_type external-identifier -P6039 property_type external-identifier -P6040 property_type external-identifier -P6041 property_type external-identifier -P6042 property_type external-identifier -P6043 property_type external-identifier -P6044 property_type external-identifier -P6045 property_type external-identifier -P6046 property_type external-identifier -P6047 property_type external-identifier -P6048 property_type external-identifier -P6049 property_type external-identifier -P6050 property_type external-identifier -P6051 property_type external-identifier -P6052 property_type external-identifier -P6053 property_type external-identifier -P6054 property_type external-identifier -P6055 property_type external-identifier -P6056 property_type external-identifier -P6057 property_type external-identifier -P6058 property_type external-identifier -P6059 property_type external-identifier -P6060 property_type external-identifier -P6061 property_type external-identifier -P6062 property_type external-identifier -P6063 property_type external-identifier -P6064 property_type external-identifier -P6065 property_type external-identifier -P6066 property_type external-identifier -P6067 property_type external-identifier -P6068 property_type external-identifier -P6069 property_type quantity -P6070 property_type external-identifier -P6071 property_type external-identifier -P6072 property_type string -P6073 property_type quantity -P6075 property_type quantity -P6076 property_type quantity -P6077 property_type external-identifier -P6078 property_type external-identifier -P6079 property_type external-identifier -P6080 property_type external-identifier -P6081 property_type external-identifier -P6082 property_type external-identifier -P6083 property_type external-identifier -P6084 property_type item -P6086 property_type item -P6087 property_type item -P6088 property_type quantity -P6089 property_type quantity -P6090 property_type external-identifier -P6091 property_type external-identifier -P6092 property_type external-identifier -P6093 property_type external-identifier -P6094 property_type external-identifier -P6095 property_type item -P6096 property_type external-identifier -P6097 property_type external-identifier -P6098 property_type external-identifier -P6099 property_type item -P6100 property_type external-identifier -P6101 property_type external-identifier -P6102 property_type external-identifier -P6103 property_type external-identifier -P6104 property_type item -P6105 property_type external-identifier -P6106 property_type item -P6107 property_type url -P6108 property_type url -P6109 property_type external-identifier -P6110 property_type external-identifier -P6111 property_type external-identifier -P6112 property_type item -P6113 property_type external-identifier -P6114 property_type external-identifier -P6115 property_type external-identifier -P6116 property_type item -P6117 property_type external-identifier -P6118 property_type item -P6119 property_type external-identifier -P6120 property_type external-identifier -P6122 property_type external-identifier -P6123 property_type external-identifier -P6124 property_type external-identifier -P7691 property_type external-identifier -P7692 property_type external-identifier -P7693 property_type external-identifier -P7694 property_type external-identifier -P7695 property_type external-identifier -P7696 property_type external-identifier -P7697 property_type external-identifier -P7698 property_type external-identifier -P7699 property_type external-identifier -P7700 property_type external-identifier -P7701 property_type external-identifier -P7702 property_type external-identifier -P7703 property_type external-identifier -P7704 property_type external-identifier -P7705 property_type url -P7706 property_type string -P7707 property_type url -P7708 property_type external-identifier -P7709 property_type external-identifier -P7710 property_type external-identifier -P7711 property_type external-identifier -P7712 property_type external-identifier -P7713 property_type external-identifier -P7714 property_type external-identifier -P7715 property_type external-identifier -P7716 property_type external-identifier -P7717 property_type external-identifier -P7718 property_type external-identifier -P7719 property_type item -P7720 property_type external-identifier -P7721 property_type external-identifier -P7722 property_type external-identifier -P7723 property_type external-identifier -P7724 property_type external-identifier -P7725 property_type quantity -P7726 property_type external-identifier -P7727 property_type item -P7729 property_type external-identifier -P7730 property_type external-identifier -P7731 property_type external-identifier -P7732 property_type external-identifier -P7733 property_type external-identifier -P7734 property_type external-identifier -P7735 property_type external-identifier -P7736 property_type external-identifier -P7737 property_type external-identifier -P7738 property_type external-identifier -P7739 property_type external-identifier -P7740 property_type external-identifier -P7741 property_type external-identifier -P7742 property_type external-identifier -P7743 property_type external-identifier -P7744 property_type external-identifier -P7745 property_type external-identifier -P7746 property_type external-identifier -P7747 property_type external-identifier -P7748 property_type external-identifier -P7749 property_type external-identifier -P7750 property_type external-identifier -P7751 property_type external-identifier -P7752 property_type external-identifier -P7753 property_type external-identifier -P7754 property_type external-identifier -P7755 property_type external-identifier -P7756 property_type external-identifier -P7757 property_type external-identifier -P7758 property_type external-identifier -P7759 property_type external-identifier -P7760 property_type external-identifier -P7761 property_type external-identifier -P7762 property_type external-identifier -P7763 property_type item -P7764 property_type external-identifier -P7765 property_type external-identifier -P7766 property_type external-identifier -P7767 property_type item -P7768 property_type external-identifier -P7769 property_type external-identifier -P7770 property_type quantity -P7771 property_type external-identifier -P7772 property_type external-identifier -P7773 property_type external-identifier -P7774 property_type external-identifier -P7775 property_type external-identifier -P7776 property_type external-identifier -P7777 property_type external-identifier -P7778 property_type external-identifier -P7779 property_type item -P7780 property_type external-identifier -P7781 property_type item -P7782 property_type item -P7783 property_type external-identifier -P7784 property_type external-identifier -P7785 property_type external-identifier -P7786 property_type external-identifier -P7787 property_type quantity -P7788 property_type external-identifier -P7789 property_type external-identifier -P7790 property_type external-identifier -P7791 property_type external-identifier -P7893 property_type external-identifier -P7894 property_type external-identifier -P7895 property_type external-identifier -P7896 property_type external-identifier -P7897 property_type external-identifier -P7898 property_type external-identifier -P7899 property_type external-identifier -P7900 property_type external-identifier -P7901 property_type external-identifier -P7902 property_type external-identifier -P7903 property_type item -P7904 property_type item -P7905 property_type external-identifier -P7906 property_type external-identifier -P7907 property_type external-identifier -P7908 property_type external-identifier -P7909 property_type external-identifier -P7910 property_type external-identifier -P7911 property_type external-identifier -P7912 property_type external-identifier -P7913 property_type external-identifier -P7914 property_type external-identifier -P7915 property_type external-identifier -P7916 property_type external-identifier -P7917 property_type external-identifier -P7918 property_type external-identifier -P7919 property_type external-identifier -P7920 property_type external-identifier -P7921 property_type external-identifier -P7922 property_type external-identifier -P7923 property_type external-identifier -P7924 property_type external-identifier -P7925 property_type external-identifier -P7926 property_type external-identifier -P7927 property_type external-identifier -P7928 property_type external-identifier -P7929 property_type external-identifier -P7930 property_type url -P7931 property_type external-identifier -P7932 property_type external-identifier -P7934 property_type external-identifier -P7935 property_type external-identifier -P7936 property_type item -P7937 property_type item -P7938 property_type item -P7939 property_type external-identifier -P7940 property_type external-identifier -P7941 property_type external-identifier -P7942 property_type external-identifier -P7943 property_type external-identifier -P7944 property_type external-identifier -P7945 property_type external-identifier -P7946 property_type external-identifier -P7947 property_type external-identifier -P7948 property_type external-identifier -P7949 property_type external-identifier -P7950 property_type external-identifier -P7951 property_type external-identifier -P7952 property_type external-identifier -P7953 property_type external-identifier -P7954 property_type external-identifier -P7955 property_type external-identifier -P7956 property_type external-identifier -P7957 property_type external-identifier -P7958 property_type external-identifier -P7959 property_type item -P7960 property_type external-identifier -P7961 property_type external-identifier -P7962 property_type external-identifier -P7963 property_type external-identifier -P7964 property_type string -P7965 property_type external-identifier -P7966 property_type external-identifier -P7967 property_type external-identifier -P7968 property_type external-identifier -P7969 property_type external-identifier -P7970 property_type external-identifier -P7971 property_type quantity -P7972 property_type external-identifier -P7973 property_type string -P7974 property_type external-identifier -P7975 property_type external-identifier -P7976 property_type external-identifier -P7977 property_type external-identifier -P7978 property_type external-identifier -P7979 property_type external-identifier -P7980 property_type external-identifier -P7981 property_type external-identifier -P7982 property_type external-identifier -P7983 property_type external-identifier -P7984 property_type item -P7985 property_type external-identifier -P7986 property_type external-identifier -P7987 property_type external-identifier -P7988 property_type external-identifier -P7989 property_type external-identifier -P7990 property_type external-identifier -P7991 property_type external-identifier -P7992 property_type external-identifier -P7993 property_type external-identifier -P6125 property_type quantity -P6126 property_type external-identifier -P6127 property_type external-identifier -P6128 property_type external-identifier -P6130 property_type external-identifier -P6131 property_type external-identifier -P6132 property_type external-identifier -P6133 property_type external-identifier -P6134 property_type external-identifier -P6135 property_type external-identifier -P6136 property_type external-identifier -P6137 property_type external-identifier -P6138 property_type external-identifier -P6139 property_type external-identifier -P6140 property_type external-identifier -P6141 property_type external-identifier -P6142 property_type external-identifier -P6143 property_type external-identifier -P6144 property_type external-identifier -P6145 property_type external-identifier -P6146 property_type external-identifier -P6147 property_type external-identifier -P6148 property_type external-identifier -P6149 property_type item -P6150 property_type external-identifier -P6151 property_type external-identifier -P6152 property_type external-identifier -P6153 property_type item -P6154 property_type external-identifier -P6155 property_type external-identifier -P6156 property_type external-identifier -P6157 property_type external-identifier -P6158 property_type external-identifier -P6159 property_type external-identifier -P6160 property_type external-identifier -P6161 property_type external-identifier -P6162 property_type external-identifier -P6163 property_type external-identifier -P6164 property_type external-identifier -P6165 property_type external-identifier -P6166 property_type item -P6167 property_type external-identifier -P6168 property_type external-identifier -P6169 property_type external-identifier -P6170 property_type external-identifier -P6171 property_type external-identifier -P6172 property_type external-identifier -P6173 property_type external-identifier -P6174 property_type external-identifier -P6175 property_type external-identifier -P6176 property_type external-identifier -P6177 property_type external-identifier -P6178 property_type external-identifier -P6179 property_type external-identifier -P6180 property_type external-identifier -P6181 property_type external-identifier -P6182 property_type external-identifier -P6183 property_type external-identifier -P6184 property_type item -P6185 property_type item -P6186 property_type item -P6187 property_type external-identifier -P6188 property_type external-identifier -P6189 property_type external-identifier -P6190 property_type external-identifier -P6191 property_type item -P6192 property_type external-identifier -P6193 property_type item -P6194 property_type external-identifier -P6195 property_type item -P6196 property_type external-identifier -P6197 property_type external-identifier -P6198 property_type external-identifier -P6199 property_type external-identifier -P6200 property_type external-identifier -P6201 property_type external-identifier -P6202 property_type external-identifier -P6204 property_type external-identifier -P6205 property_type external-identifier -P6206 property_type external-identifier -P6208 property_type monolingualtext -P6209 property_type external-identifier -P6210 property_type external-identifier -P6211 property_type external-identifier -P6212 property_type item -P6213 property_type external-identifier -P6214 property_type external-identifier -P6215 property_type external-identifier -P6216 property_type item -P6217 property_type external-identifier -P6218 property_type external-identifier -P6219 property_type external-identifier -P6220 property_type external-identifier -P6221 property_type external-identifier -P6222 property_type external-identifier -P6223 property_type external-identifier -P6224 property_type item -P6225 property_type external-identifier -P6226 property_type external-identifier -P6227 property_type external-identifier -P6645 property_type external-identifier -P6646 property_type external-identifier -P6647 property_type external-identifier -P6648 property_type string -P6649 property_type external-identifier -P6650 property_type external-identifier -P6652 property_type external-identifier -P6653 property_type external-identifier -P6654 property_type external-identifier -P6655 property_type string -P6656 property_type external-identifier -P6657 property_type item -P6658 property_type item -P6659 property_type external-identifier -P6660 property_type external-identifier -P6661 property_type external-identifier -P6662 property_type external-identifier -P6663 property_type external-identifier -P6664 property_type external-identifier -P6665 property_type external-identifier -P6666 property_type external-identifier -P6667 property_type external-identifier -P6668 property_type external-identifier -P6669 property_type external-identifier -P6670 property_type string -P6671 property_type external-identifier -P6672 property_type external-identifier -P6673 property_type external-identifier -P6674 property_type external-identifier -P6676 property_type external-identifier -P6677 property_type external-identifier -P6678 property_type external-identifier -P6679 property_type external-identifier -P6680 property_type external-identifier -P6681 property_type external-identifier -P6682 property_type external-identifier -P6683 property_type external-identifier -P6684 property_type item -P6685 property_type string -P6686 property_type string -P6687 property_type external-identifier -P6688 property_type external-identifier -P6689 property_type external-identifier -P6690 property_type external-identifier -P6691 property_type external-identifier -P6692 property_type external-identifier -P6693 property_type external-identifier -P6694 property_type external-identifier -P6695 property_type quantity -P6696 property_type external-identifier -P6697 property_type quantity -P6698 property_type external-identifier -P6699 property_type external-identifier -P6700 property_type external-identifier -P6701 property_type external-identifier -P6702 property_type external-identifier -P6703 property_type external-identifier -P6704 property_type external-identifier -P6705 property_type external-identifier -P6706 property_type external-identifier -P6707 property_type quantity -P6708 property_type quantity -P6709 property_type string -P6710 property_type quantity -P6711 property_type quantity -P6712 property_type string -P6713 property_type external-identifier -P6714 property_type external-identifier -P6715 property_type external-identifier -P6716 property_type external-identifier -P6717 property_type external-identifier -P6718 property_type item -P6719 property_type string -P6720 property_type external-identifier -P6721 property_type external-identifier -P6722 property_type external-identifier -P6723 property_type external-identifier -P6724 property_type external-identifier -P6725 property_type external-identifier -P6726 property_type external-identifier -P6727 property_type external-identifier -P6728 property_type external-identifier -P6729 property_type external-identifier -P6730 property_type external-identifier -P6731 property_type item -P6732 property_type external-identifier -P6733 property_type string -P6734 property_type external-identifier -P6735 property_type external-identifier -P6736 property_type external-identifier -P6737 property_type external-identifier -P6738 property_type external-identifier -P6739 property_type external-identifier -P6740 property_type external-identifier -P6741 property_type external-identifier -P6742 property_type external-identifier -P6743 property_type external-identifier -P6744 property_type external-identifier -P6745 property_type external-identifier -P6746 property_type external-identifier -P7994 property_type external-identifier -P7995 property_type external-identifier -P7996 property_type external-identifier -P7997 property_type external-identifier -P7998 property_type external-identifier -P7999 property_type external-identifier -P8000 property_type string -P8001 property_type item -P8002 property_type external-identifier -P8003 property_type external-identifier -P8004 property_type item -P8005 property_type item -P8006 property_type item -P8007 property_type external-identifier -P8008 property_type external-identifier -P8009 property_type string -P8010 property_type quantity -P8011 property_type quantity -P8012 property_type external-identifier -P8013 property_type external-identifier -P8014 property_type external-identifier -P8015 property_type external-identifier -P8016 property_type external-identifier -P8017 property_type string -P8018 property_type external-identifier -P8019 property_type external-identifier -P8020 property_type external-identifier -P8021 property_type external-identifier -P8022 property_type external-identifier -P8023 property_type external-identifier -P8024 property_type external-identifier -P8025 property_type external-identifier -P8026 property_type item -P8027 property_type external-identifier -P8028 property_type external-identifier -P8029 property_type external-identifier -P8030 property_type item -P8031 property_type item -P8032 property_type item -P8033 property_type external-identifier -P8034 property_type external-identifier -P8035 property_type external-identifier -P8036 property_type external-identifier -P8037 property_type external-identifier -P8038 property_type external-identifier -P8039 property_type external-identifier -P8040 property_type external-identifier -P8041 property_type external-identifier -P8042 property_type external-identifier -P8043 property_type external-identifier -P8044 property_type external-identifier -P8045 property_type item -P8046 property_type string -P8047 property_type item -P8048 property_type external-identifier -P8049 property_type quantity -P8050 property_type external-identifier -P8051 property_type external-identifier -P8052 property_type external-identifier -P8053 property_type external-identifier -P8054 property_type string -P8055 property_type external-identifier -P8056 property_type external-identifier -P8057 property_type external-identifier -P8058 property_type item -P8059 property_type external-identifier -P8060 property_type external-identifier -P8061 property_type external-identifier -P8062 property_type external-identifier -P8063 property_type external-identifier -P8064 property_type external-identifier -P8065 property_type external-identifier -P8066 property_type external-identifier -P8067 property_type external-identifier -P8068 property_type external-identifier -P8069 property_type external-identifier -P8070 property_type external-identifier -P8071 property_type external-identifier -P8072 property_type external-identifier -P8073 property_type external-identifier -P8074 property_type external-identifier -P8075 property_type external-identifier -P8076 property_type external-identifier -P8077 property_type external-identifier -P8078 property_type external-identifier -P8079 property_type external-identifier -P8080 property_type external-identifier -P8081 property_type external-identifier -P8082 property_type external-identifier -P8083 property_type external-identifier -P8084 property_type external-identifier -P8085 property_type external-identifier -P8086 property_type external-identifier -P8087 property_type external-identifier -P8088 property_type external-identifier -P8089 property_type external-identifier -P8090 property_type external-identifier -P8091 property_type external-identifier -P8092 property_type external-identifier -P8093 property_type quantity +P4135 property_type quantity +P4136 property_type external-identifier +P4137 property_type quantity +P4138 property_type external-identifier +P4139 property_type external-identifier +P4140 property_type quantity +P4141 property_type external-identifier +P4142 property_type external-identifier +P4143 property_type external-identifier +P4144 property_type external-identifier +P4145 property_type external-identifier +P4146 property_type external-identifier +P4147 property_type item +P4149 property_type item +P4150 property_type string +P4151 property_type item +P4152 property_type string +P4153 property_type quantity +P4154 property_type external-identifier +P4155 property_type property +P4156 property_type external-identifier +P4157 property_type external-identifier +P4158 property_type external-identifier +P4159 property_type external-identifier +P4160 property_type external-identifier +P4161 property_type external-identifier +P4162 property_type external-identifier +P4163 property_type quantity +P4164 property_type external-identifier +P4165 property_type external-identifier +P4166 property_type external-identifier +P4167 property_type external-identifier +P4168 property_type external-identifier +P4169 property_type external-identifier +P4170 property_type external-identifier +P4171 property_type external-identifier +P4172 property_type external-identifier +P4173 property_type external-identifier +P4174 property_type external-identifier +P4175 property_type external-identifier +P4176 property_type quantity +P4177 property_type external-identifier +P4178 property_type external-identifier +P4179 property_type string +P4180 property_type external-identifier +P4181 property_type external-identifier +P4182 property_type external-identifier +P4183 property_type quantity +P4184 property_type quantity +P4185 property_type item +P4186 property_type external-identifier +P4187 property_type string +P4188 property_type string +P4189 property_type string +P4190 property_type external-identifier +P4191 property_type external-identifier +P4192 property_type external-identifier +P4193 property_type external-identifier +P4194 property_type external-identifier +P4195 property_type item +P4196 property_type string +P4197 property_type external-identifier +P4198 property_type external-identifier +P4199 property_type external-identifier +P4200 property_type external-identifier +P4201 property_type external-identifier +P4202 property_type item +P4203 property_type external-identifier +P4204 property_type external-identifier +P4206 property_type external-identifier +P4207 property_type external-identifier +P4208 property_type external-identifier +P4209 property_type external-identifier +P4210 property_type external-identifier +P4211 property_type external-identifier +P4212 property_type external-identifier +P4213 property_type string +P4214 property_type quantity +P4215 property_type external-identifier +P4216 property_type external-identifier +P4217 property_type external-identifier +P4218 property_type quantity +P4219 property_type external-identifier +P4220 property_type item +P4221 property_type external-identifier +P4222 property_type external-identifier +P4223 property_type external-identifier +P4224 property_type item +P4225 property_type string +P4226 property_type external-identifier +P4227 property_type external-identifier +P4228 property_type external-identifier +P4229 property_type external-identifier +P4230 property_type external-identifier +P4231 property_type external-identifier +P4232 property_type external-identifier +P4233 property_type external-identifier +P4235 property_type external-identifier +P4236 property_type external-identifier +P4238 property_type url +P3099 property_type external-identifier +P3100 property_type external-identifier +P3101 property_type external-identifier +P3102 property_type external-identifier +P3103 property_type item +P3104 property_type external-identifier +P3105 property_type external-identifier +P3106 property_type external-identifier +P3107 property_type external-identifier +P3108 property_type external-identifier +P3109 property_type external-identifier +P3110 property_type external-identifier +P3111 property_type external-identifier +P3112 property_type external-identifier +P3113 property_type item +P3114 property_type external-identifier +P3115 property_type external-identifier +P3116 property_type external-identifier +P3117 property_type external-identifier +P3118 property_type external-identifier +P3119 property_type external-identifier +P3120 property_type external-identifier +P3121 property_type external-identifier +P3122 property_type external-identifier +P3123 property_type external-identifier +P3124 property_type external-identifier +P3125 property_type external-identifier +P3126 property_type external-identifier +P3127 property_type external-identifier +P3128 property_type external-identifier +P3129 property_type external-identifier +P3130 property_type external-identifier +P3131 property_type external-identifier +P3132 property_type monolingualtext +P3133 property_type external-identifier +P3134 property_type external-identifier +P3135 property_type external-identifier +P3136 property_type external-identifier +P3137 property_type item +P3138 property_type external-identifier +P3139 property_type external-identifier +P3140 property_type external-identifier +P3141 property_type external-identifier +P3142 property_type external-identifier +P3143 property_type external-identifier +P3144 property_type external-identifier +P3145 property_type external-identifier +P3146 property_type external-identifier +P3147 property_type external-identifier +P3148 property_type item +P3149 property_type item +P3150 property_type item +P3151 property_type external-identifier +P3152 property_type external-identifier +P3153 property_type external-identifier +P3154 property_type external-identifier +P3155 property_type external-identifier +P3156 property_type item +P3157 property_type quantity +P3158 property_type item +P3159 property_type external-identifier +P3160 property_type external-identifier +P3161 property_type item +P3162 property_type external-identifier +P3163 property_type external-identifier +P3165 property_type external-identifier +P3166 property_type external-identifier +P3167 property_type external-identifier +P3168 property_type external-identifier +P3169 property_type external-identifier +P3170 property_type external-identifier +P3171 property_type external-identifier +P3172 property_type external-identifier +P3173 property_type item +P3174 property_type item +P3175 property_type external-identifier +P3176 property_type property +P3177 property_type external-identifier +P3178 property_type external-identifier +P3179 property_type item +P3180 property_type external-identifier +P3181 property_type external-identifier +P3182 property_type external-identifier +P3183 property_type external-identifier +P3184 property_type external-identifier +P3185 property_type external-identifier +P3186 property_type external-identifier +P3187 property_type external-identifier +P3188 property_type external-identifier +P3189 property_type item +P3190 property_type item +P3191 property_type external-identifier +P3192 property_type external-identifier +P3193 property_type external-identifier +P3194 property_type external-identifier +P3195 property_type item +P3196 property_type external-identifier +P3197 property_type external-identifier +P3198 property_type external-identifier +P3199 property_type external-identifier +P948 property_type string +P949 property_type external-identifier +P950 property_type external-identifier +P951 property_type external-identifier +P952 property_type string +P953 property_type url +P954 property_type external-identifier +P957 property_type external-identifier +P958 property_type string +P959 property_type external-identifier +P960 property_type external-identifier +P961 property_type external-identifier +P962 property_type external-identifier +P963 property_type url +P964 property_type external-identifier +P965 property_type string +P966 property_type external-identifier +P967 property_type item +P968 property_type url +P969 property_type string +P970 property_type item +P971 property_type item +P972 property_type item +P973 property_type url +P974 property_type item +P980 property_type external-identifier +P981 property_type external-identifier +P982 property_type external-identifier +P984 property_type external-identifier +P988 property_type external-identifier +P989 property_type string +P990 property_type string +P991 property_type item +P993 property_type string +P994 property_type string +P995 property_type string +P996 property_type string +P998 property_type external-identifier +P999 property_type external-identifier +P1000 property_type item +P1001 property_type item +P1002 property_type item +P1003 property_type external-identifier +P1004 property_type external-identifier +P1005 property_type external-identifier +P1006 property_type external-identifier +P1007 property_type external-identifier +P1010 property_type external-identifier +P1011 property_type item +P1012 property_type item +P1013 property_type item +P1014 property_type external-identifier +P1015 property_type external-identifier +P1016 property_type item +P1017 property_type external-identifier +P1018 property_type item +P1019 property_type url +P1021 property_type external-identifier +P1022 property_type external-identifier +P1023 property_type external-identifier +P1024 property_type external-identifier +P1025 property_type external-identifier +P1026 property_type item +P1027 property_type item +P1028 property_type item +P1029 property_type item +P1030 property_type string +P1031 property_type string +P1032 property_type item +P1033 property_type item +P1034 property_type item +P1035 property_type item +P1036 property_type string +P1037 property_type item +P1038 property_type item +P1039 property_type item +P1040 property_type item +P1041 property_type item +P1042 property_type external-identifier +P1043 property_type external-identifier +P1044 property_type external-identifier +P1045 property_type external-identifier +P1046 property_type item +P1047 property_type external-identifier +P1048 property_type external-identifier +P1049 property_type item +P1050 property_type item +P1051 property_type external-identifier +P1052 property_type external-identifier +P1053 property_type external-identifier +P1054 property_type external-identifier +P1055 property_type external-identifier +P1056 property_type item +P1057 property_type item +P1058 property_type external-identifier +P1059 property_type external-identifier +P1060 property_type item +P1064 property_type item +P1065 property_type url +P1066 property_type item +P2992 property_type item +P2993 property_type quantity +P2997 property_type quantity +P2998 property_type quantity +P2999 property_type quantity +P3000 property_type quantity +P3001 property_type quantity +P3002 property_type external-identifier +P3003 property_type external-identifier +P3004 property_type external-identifier +P3005 property_type item +P3006 property_type external-identifier +P3007 property_type external-identifier +P3008 property_type external-identifier +P3009 property_type external-identifier +P3010 property_type external-identifier +P3012 property_type external-identifier +P3013 property_type quantity +P3014 property_type item +P3015 property_type item +P3016 property_type external-identifier +P3017 property_type external-identifier +P3018 property_type item +P3019 property_type item +P3020 property_type quantity +P3021 property_type external-identifier +P3022 property_type item +P3023 property_type external-identifier +P3024 property_type external-identifier +P3025 property_type item +P3026 property_type item +P3027 property_type item +P3028 property_type item +P3029 property_type external-identifier +P3030 property_type string +P3031 property_type external-identifier +P3032 property_type item +P3033 property_type item +P3034 property_type external-identifier +P3035 property_type external-identifier +P3036 property_type quantity +P3037 property_type item +P3038 property_type external-identifier +P3039 property_type quantity +P3040 property_type external-identifier +P3041 property_type quantity +P3042 property_type external-identifier +P3043 property_type external-identifier +P3044 property_type external-identifier +P3045 property_type external-identifier +P3046 property_type external-identifier +P3047 property_type external-identifier +P3048 property_type external-identifier +P3049 property_type external-identifier +P3050 property_type external-identifier +P3051 property_type external-identifier +P3052 property_type external-identifier +P3053 property_type external-identifier +P3054 property_type external-identifier +P3055 property_type external-identifier +P3056 property_type external-identifier +P3057 property_type external-identifier +P3058 property_type external-identifier +P3059 property_type external-identifier +P3060 property_type external-identifier +P3061 property_type external-identifier +P3063 property_type quantity +P3064 property_type external-identifier +P3065 property_type external-identifier +P3066 property_type external-identifier +P3067 property_type string +P3068 property_type external-identifier +P3069 property_type external-identifier +P3070 property_type quantity +P3071 property_type quantity +P3072 property_type external-identifier +P3073 property_type external-identifier +P3074 property_type external-identifier +P3075 property_type item +P3076 property_type external-identifier +P3077 property_type external-identifier +P3078 property_type quantity +P3080 property_type item +P3081 property_type item +P3082 property_type item +P3083 property_type external-identifier +P3085 property_type item +P3086 property_type quantity +P3087 property_type quantity +P3088 property_type external-identifier +P3089 property_type external-identifier +P3090 property_type string +P3091 property_type item +P3092 property_type item +P3093 property_type item +P3094 property_type item +P3095 property_type item +P3096 property_type item +P3097 property_type external-identifier +P3098 property_type external-identifier +P1067 property_type external-identifier +P1068 property_type item +P1069 property_type external-identifier +P1070 property_type external-identifier +P1071 property_type item +P1072 property_type item +P1073 property_type item +P1074 property_type item +P1075 property_type item +P1076 property_type external-identifier +P1077 property_type string +P1078 property_type item +P1079 property_type item +P1080 property_type item +P1081 property_type quantity +P1082 property_type quantity +P1083 property_type quantity +P1084 property_type external-identifier +P1085 property_type external-identifier +P1086 property_type quantity +P1087 property_type quantity +P1088 property_type quantity +P1090 property_type quantity +P1092 property_type quantity +P1093 property_type quantity +P1096 property_type quantity +P1097 property_type quantity +P1098 property_type quantity +P1099 property_type quantity +P1100 property_type quantity +P1101 property_type quantity +P1102 property_type quantity +P1103 property_type quantity +P1104 property_type quantity +P1106 property_type quantity +P1107 property_type quantity +P1108 property_type quantity +P1109 property_type quantity +P1110 property_type quantity +P1111 property_type quantity +P1113 property_type quantity +P1114 property_type quantity +P1115 property_type external-identifier +P1116 property_type external-identifier +P1117 property_type quantity +P1120 property_type quantity +P1121 property_type quantity +P1122 property_type quantity +P1123 property_type quantity +P1125 property_type quantity +P1126 property_type quantity +P1127 property_type quantity +P1128 property_type quantity +P1129 property_type quantity +P1132 property_type quantity +P1133 property_type external-identifier +P1135 property_type item +P1136 property_type item +P1137 property_type item +P1138 property_type external-identifier +P1139 property_type quantity +P1140 property_type external-identifier +P1141 property_type quantity +P1142 property_type item +P1143 property_type external-identifier +P1144 property_type external-identifier +P1145 property_type item +P1146 property_type external-identifier +P1148 property_type quantity +P1149 property_type string +P1150 property_type string +P1151 property_type item +P1153 property_type external-identifier +P1154 property_type external-identifier +P1155 property_type external-identifier +P1156 property_type external-identifier +P1157 property_type external-identifier +P1158 property_type item +P1159 property_type external-identifier +P1160 property_type external-identifier +P1161 property_type string +P1162 property_type string +P1163 property_type string +P1164 property_type quantity +P1165 property_type item +P1167 property_type external-identifier +P1168 property_type external-identifier +P1170 property_type item +P1171 property_type item +P1172 property_type external-identifier +P1174 property_type quantity +P1181 property_type quantity +P1182 property_type external-identifier +P1183 property_type string +P1184 property_type external-identifier +P1185 property_type external-identifier +P1186 property_type external-identifier +P1187 property_type external-identifier +P1188 property_type external-identifier +P1189 property_type external-identifier +P4239 property_type monolingualtext +P4240 property_type item +P4241 property_type item +P4242 property_type quantity +P4243 property_type string +P4244 property_type external-identifier +P4245 property_type external-identifier +P4246 property_type external-identifier +P4247 property_type external-identifier +P4248 property_type external-identifier +P4249 property_type external-identifier +P4250 property_type quantity +P4251 property_type external-identifier +P4252 property_type external-identifier +P4253 property_type quantity +P4254 property_type external-identifier +P4255 property_type external-identifier +P4256 property_type external-identifier +P4257 property_type external-identifier +P4258 property_type external-identifier +P4259 property_type external-identifier +P4260 property_type external-identifier +P4261 property_type external-identifier +P4262 property_type external-identifier +P4263 property_type external-identifier +P4264 property_type external-identifier +P4265 property_type external-identifier +P4266 property_type external-identifier +P4267 property_type external-identifier +P4268 property_type quantity +P4269 property_type quantity +P4270 property_type external-identifier +P4271 property_type item +P4272 property_type external-identifier +P4273 property_type external-identifier +P4274 property_type external-identifier +P4275 property_type external-identifier +P4276 property_type external-identifier +P4277 property_type external-identifier +P4278 property_type external-identifier +P4279 property_type external-identifier +P4280 property_type external-identifier +P4281 property_type external-identifier +P4282 property_type external-identifier +P4283 property_type external-identifier +P4284 property_type external-identifier +P4285 property_type external-identifier +P4286 property_type external-identifier +P4287 property_type external-identifier +P4288 property_type external-identifier +P4289 property_type external-identifier +P4290 property_type item +P4291 property_type string +P4292 property_type item +P4293 property_type external-identifier +P4294 property_type external-identifier +P4295 property_type quantity +P4296 property_type quantity +P4297 property_type external-identifier +P4298 property_type external-identifier +P4299 property_type external-identifier +P4300 property_type external-identifier +P4301 property_type external-identifier +P4302 property_type external-identifier +P4303 property_type external-identifier +P4304 property_type external-identifier +P4305 property_type external-identifier +P4306 property_type external-identifier +P4307 property_type external-identifier +P4308 property_type external-identifier +P4309 property_type external-identifier +P4310 property_type external-identifier +P4311 property_type external-identifier +P4312 property_type item +P4313 property_type external-identifier +P4314 property_type external-identifier +P4315 property_type external-identifier +P4316 property_type string +P4317 property_type external-identifier +P4318 property_type external-identifier +P4319 property_type external-identifier +P4320 property_type item +P4321 property_type item +P4322 property_type item +P4323 property_type item +P4324 property_type item +P4325 property_type string +P4326 property_type external-identifier +P4327 property_type external-identifier +P4328 property_type external-identifier +P4329 property_type item +P4330 property_type item +P4331 property_type external-identifier +P4332 property_type external-identifier +P4333 property_type external-identifier +P4334 property_type external-identifier +P4335 property_type external-identifier +P4336 property_type external-identifier +P4337 property_type external-identifier +P4338 property_type external-identifier +P2344 property_type external-identifier +P2345 property_type external-identifier +P2346 property_type external-identifier +P2347 property_type external-identifier +P2348 property_type item +P2349 property_type external-identifier +P2350 property_type external-identifier +P2351 property_type quantity +P2352 property_type item +P2353 property_type item +P2354 property_type item +P2355 property_type external-identifier +P2357 property_type string +P2358 property_type item +P2359 property_type item +P2360 property_type item +P2361 property_type item +P2362 property_type quantity +P2363 property_type item +P2364 property_type string +P2365 property_type item +P2366 property_type item +P2367 property_type external-identifier +P2368 property_type property +P2369 property_type external-identifier +P2370 property_type quantity +P2371 property_type item +P2372 property_type external-identifier +P2373 property_type external-identifier +P2374 property_type quantity +P2375 property_type item +P2376 property_type item +P2377 property_type item +P2378 property_type item +P2379 property_type item +P2380 property_type external-identifier +P2381 property_type external-identifier +P2382 property_type external-identifier +P2383 property_type external-identifier +P2384 property_type item +P2385 property_type external-identifier +P2386 property_type quantity +P2387 property_type external-identifier +P2388 property_type item +P2389 property_type item +P2390 property_type external-identifier +P2391 property_type external-identifier +P2392 property_type item +P2393 property_type external-identifier +P2394 property_type external-identifier +P2396 property_type item +P2397 property_type external-identifier +P2398 property_type external-identifier +P2399 property_type external-identifier +P2400 property_type external-identifier +P2401 property_type external-identifier +P2402 property_type quantity +P2403 property_type quantity +P2404 property_type quantity +P2405 property_type quantity +P2406 property_type quantity +P2407 property_type quantity +P2408 property_type item +P2409 property_type external-identifier +P2410 property_type string +P2411 property_type string +P2412 property_type external-identifier +P2413 property_type external-identifier +P2414 property_type item +P2415 property_type quantity +P2416 property_type item +P2417 property_type item +P2418 property_type external-identifier +P2421 property_type external-identifier +P2423 property_type external-identifier +P2424 property_type external-identifier +P2425 property_type string +P2426 property_type external-identifier +P2427 property_type external-identifier +P2428 property_type external-identifier +P2429 property_type item +P2430 property_type quantity +P2431 property_type external-identifier +P2432 property_type external-identifier +P2433 property_type item +P2434 property_type external-identifier +P2435 property_type external-identifier +P2436 property_type quantity +P2437 property_type quantity +P2438 property_type item +P2440 property_type string +P2441 property_type monolingualtext +P2442 property_type quantity +P2443 property_type item +P2444 property_type item +P2445 property_type item +P2446 property_type external-identifier +P2447 property_type external-identifier +P2448 property_type external-identifier +P2449 property_type external-identifier +P1190 property_type string +P1191 property_type time +P1192 property_type item +P1193 property_type quantity +P1194 property_type item +P1195 property_type string +P1196 property_type item +P1198 property_type quantity +P1199 property_type item +P1200 property_type item +P1201 property_type item +P1202 property_type item +P1203 property_type external-identifier +P1204 property_type item +P1207 property_type external-identifier +P1208 property_type external-identifier +P1209 property_type external-identifier +P1210 property_type item +P1211 property_type item +P1212 property_type external-identifier +P1213 property_type external-identifier +P1214 property_type external-identifier +P1215 property_type quantity +P1216 property_type external-identifier +P1217 property_type external-identifier +P1218 property_type external-identifier +P1219 property_type external-identifier +P1220 property_type external-identifier +P1221 property_type item +P1225 property_type external-identifier +P1227 property_type item +P1229 property_type external-identifier +P1230 property_type external-identifier +P1232 property_type external-identifier +P1233 property_type external-identifier +P1234 property_type external-identifier +P1235 property_type external-identifier +P1236 property_type external-identifier +P1237 property_type external-identifier +P1238 property_type external-identifier +P1239 property_type external-identifier +P1240 property_type string +P1241 property_type external-identifier +P1242 property_type external-identifier +P1243 property_type external-identifier +P1245 property_type external-identifier +P1246 property_type external-identifier +P1247 property_type quantity +P1248 property_type external-identifier +P1249 property_type time +P1250 property_type external-identifier +P1251 property_type external-identifier +P1252 property_type external-identifier +P1253 property_type external-identifier +P1254 property_type external-identifier +P1255 property_type external-identifier +P1256 property_type external-identifier +P1257 property_type string +P1258 property_type external-identifier +P1259 property_type globe-coordinate +P1260 property_type external-identifier +P1261 property_type external-identifier +P1262 property_type external-identifier +P1263 property_type external-identifier +P1264 property_type item +P1265 property_type external-identifier +P1266 property_type external-identifier +P1267 property_type external-identifier +P1268 property_type item +P1269 property_type item +P1270 property_type external-identifier +P1271 property_type external-identifier +P1272 property_type external-identifier +P1273 property_type external-identifier +P1274 property_type external-identifier +P1275 property_type external-identifier +P1276 property_type external-identifier +P1277 property_type external-identifier +P1278 property_type external-identifier +P1279 property_type quantity +P1280 property_type external-identifier +P1281 property_type external-identifier +P1282 property_type string +P1283 property_type item +P1284 property_type external-identifier +P1285 property_type external-identifier +P1286 property_type external-identifier +P1287 property_type external-identifier +P1288 property_type external-identifier +P1289 property_type external-identifier +P1290 property_type item +P1291 property_type external-identifier +P1292 property_type external-identifier +P1293 property_type external-identifier +P1294 property_type external-identifier +P1295 property_type quantity +P1296 property_type external-identifier +P1297 property_type external-identifier +P1299 property_type item +P1300 property_type external-identifier +P5168 property_type monolingualtext +P5169 property_type external-identifier +P5170 property_type external-identifier +P5171 property_type external-identifier +P5172 property_type external-identifier +P5173 property_type external-identifier +P5174 property_type external-identifier +P5175 property_type external-identifier +P5176 property_type external-identifier +P5177 property_type external-identifier +P5178 property_type url +P5179 property_type external-identifier +P5180 property_type external-identifier +P5181 property_type external-identifier +P5182 property_type external-identifier +P5183 property_type external-identifier +P5184 property_type external-identifier +P5185 property_type item +P5186 property_type item +P5187 property_type monolingualtext +P5188 property_type string +P5189 property_type string +P5191 property_type string +P5192 property_type string +P5193 property_type string +P5194 property_type item +P5195 property_type url +P5196 property_type item +P5197 property_type external-identifier +P5198 property_type external-identifier +P5199 property_type external-identifier +P5200 property_type external-identifier +P5201 property_type item +P5202 property_type item +P5203 property_type item +P5204 property_type time +P5205 property_type quantity +P5206 property_type item +P5207 property_type external-identifier +P5208 property_type external-identifier +P5209 property_type external-identifier +P5210 property_type external-identifier +P5211 property_type external-identifier +P5212 property_type external-identifier +P5213 property_type external-identifier +P5214 property_type external-identifier +P5215 property_type external-identifier +P5216 property_type external-identifier +P5217 property_type external-identifier +P5218 property_type external-identifier +P5219 property_type external-identifier +P5220 property_type external-identifier +P5221 property_type external-identifier +P5222 property_type external-identifier +P5223 property_type external-identifier +P5224 property_type external-identifier +P5225 property_type external-identifier +P5226 property_type external-identifier +P5227 property_type external-identifier +P5229 property_type external-identifier +P5230 property_type quantity +P5231 property_type external-identifier +P5232 property_type external-identifier +P5233 property_type external-identifier +P5234 property_type external-identifier +P5235 property_type external-identifier +P5236 property_type item +P5237 property_type item +P5238 property_type string +P5239 property_type external-identifier +P5240 property_type external-identifier +P5241 property_type external-identifier +P5242 property_type external-identifier +P5243 property_type external-identifier +P5244 property_type item +P5245 property_type external-identifier +P5246 property_type external-identifier +P5247 property_type external-identifier +P5248 property_type item +P5249 property_type item +P5250 property_type external-identifier +P5251 property_type external-identifier +P5252 property_type string +P5253 property_type external-identifier +P5254 property_type external-identifier +P5255 property_type external-identifier +P5256 property_type external-identifier +P5257 property_type external-identifier +P5258 property_type external-identifier +P5259 property_type external-identifier +P5260 property_type external-identifier +P5261 property_type external-identifier +P5262 property_type external-identifier +P5263 property_type external-identifier +P5264 property_type external-identifier +P5265 property_type external-identifier +P5266 property_type external-identifier +P5267 property_type external-identifier +P5268 property_type external-identifier +P5269 property_type external-identifier +P3200 property_type external-identifier +P3201 property_type external-identifier +P3202 property_type external-identifier +P3203 property_type external-identifier +P3204 property_type external-identifier +P3205 property_type item +P3206 property_type external-identifier +P3207 property_type external-identifier +P3208 property_type external-identifier +P3209 property_type external-identifier +P3211 property_type external-identifier +P3212 property_type external-identifier +P3213 property_type external-identifier +P3215 property_type external-identifier +P3216 property_type item +P3217 property_type external-identifier +P3218 property_type external-identifier +P3219 property_type external-identifier +P3220 property_type external-identifier +P3221 property_type external-identifier +P3222 property_type external-identifier +P3223 property_type external-identifier +P3224 property_type external-identifier +P3225 property_type external-identifier +P3226 property_type external-identifier +P3227 property_type external-identifier +P3228 property_type string +P3229 property_type external-identifier +P3230 property_type external-identifier +P3231 property_type external-identifier +P3232 property_type external-identifier +P3233 property_type external-identifier +P3234 property_type external-identifier +P3235 property_type external-identifier +P3236 property_type external-identifier +P3237 property_type external-identifier +P3238 property_type string +P3240 property_type external-identifier +P3241 property_type external-identifier +P3242 property_type external-identifier +P3243 property_type external-identifier +P3245 property_type external-identifier +P3246 property_type external-identifier +P3248 property_type external-identifier +P3250 property_type external-identifier +P3251 property_type quantity +P3252 property_type quantity +P3253 property_type quantity +P3254 property_type url +P3256 property_type external-identifier +P3257 property_type external-identifier +P3258 property_type external-identifier +P3259 property_type item +P3260 property_type quantity +P3261 property_type item +P3262 property_type item +P3263 property_type item +P3264 property_type item +P3265 property_type external-identifier +P3266 property_type external-identifier +P3267 property_type external-identifier +P3268 property_type url +P3269 property_type external-identifier +P3270 property_type quantity +P3271 property_type quantity +P3272 property_type external-identifier +P3273 property_type external-identifier +P3274 property_type item +P3275 property_type item +P3276 property_type external-identifier +P3277 property_type external-identifier +P3279 property_type item +P3280 property_type external-identifier +P3281 property_type external-identifier +P3283 property_type external-identifier +P3284 property_type external-identifier +P3285 property_type external-identifier +P3286 property_type external-identifier +P3288 property_type external-identifier +P3289 property_type external-identifier +P3290 property_type external-identifier +P3291 property_type external-identifier +P3292 property_type external-identifier +P3293 property_type external-identifier +P3294 property_type item +P3295 property_type string +P3296 property_type external-identifier +P3297 property_type external-identifier +P3298 property_type external-identifier +P3299 property_type external-identifier +P3300 property_type item +P3301 property_type item +P3302 property_type external-identifier +P3303 property_type string +P3304 property_type external-identifier +P3305 property_type external-identifier +P3306 property_type item +P3307 property_type external-identifier +P3308 property_type external-identifier +P3309 property_type external-identifier +P2450 property_type external-identifier +P2451 property_type external-identifier +P2452 property_type external-identifier +P2453 property_type item +P2454 property_type external-identifier +P2455 property_type external-identifier +P2456 property_type external-identifier +P2457 property_type external-identifier +P2458 property_type external-identifier +P2459 property_type external-identifier +P2460 property_type external-identifier +P2461 property_type external-identifier +P2462 property_type item +P2463 property_type external-identifier +P2464 property_type external-identifier +P2465 property_type external-identifier +P2467 property_type external-identifier +P2468 property_type external-identifier +P2469 property_type external-identifier +P2470 property_type external-identifier +P2471 property_type external-identifier +P2472 property_type external-identifier +P2473 property_type external-identifier +P2474 property_type external-identifier +P2475 property_type external-identifier +P2476 property_type external-identifier +P2477 property_type external-identifier +P2478 property_type external-identifier +P2479 property_type external-identifier +P2480 property_type external-identifier +P2481 property_type external-identifier +P2482 property_type external-identifier +P2483 property_type external-identifier +P2484 property_type external-identifier +P2485 property_type external-identifier +P2486 property_type external-identifier +P2487 property_type external-identifier +P2488 property_type url +P2489 property_type external-identifier +P2490 property_type string +P2491 property_type external-identifier +P2492 property_type external-identifier +P2493 property_type external-identifier +P2494 property_type external-identifier +P2496 property_type external-identifier +P2497 property_type external-identifier +P2498 property_type external-identifier +P2499 property_type item +P2500 property_type item +P2501 property_type item +P2502 property_type item +P2503 property_type external-identifier +P2504 property_type external-identifier +P2505 property_type item +P2506 property_type external-identifier +P2507 property_type item +P2508 property_type external-identifier +P2509 property_type external-identifier +P2510 property_type external-identifier +P2511 property_type external-identifier +P2512 property_type item +P2513 property_type external-identifier +P2514 property_type external-identifier +P2515 property_type item +P2516 property_type external-identifier +P2517 property_type item +P2518 property_type external-identifier +P2519 property_type external-identifier +P2520 property_type url +P2521 property_type monolingualtext +P2522 property_type item +P2524 property_type external-identifier +P2525 property_type external-identifier +P2526 property_type external-identifier +P2527 property_type quantity +P2528 property_type quantity +P2529 property_type external-identifier +P2530 property_type external-identifier +P2531 property_type external-identifier +P2532 property_type quantity +P2533 property_type external-identifier +P2534 property_type string +P2535 property_type string +P2536 property_type external-identifier +P2537 property_type external-identifier +P2538 property_type external-identifier +P2539 property_type external-identifier +P2540 property_type string +P2541 property_type item +P2542 property_type quantity +P2545 property_type item +P2546 property_type item +P2547 property_type quantity +P2548 property_type item +P2549 property_type external-identifier +P2550 property_type item +P2551 property_type item +P2552 property_type string +P2553 property_type item +P2554 property_type item +P4339 property_type external-identifier +P4340 property_type external-identifier +P4341 property_type quantity +P4342 property_type external-identifier +P4343 property_type external-identifier +P4344 property_type external-identifier +P4345 property_type item +P4346 property_type external-identifier +P4347 property_type external-identifier +P4348 property_type external-identifier +P4349 property_type external-identifier +P4350 property_type quantity +P4351 property_type external-identifier +P4352 property_type external-identifier +P4353 property_type item +P4354 property_type string +P4355 property_type external-identifier +P4356 property_type external-identifier +P4357 property_type external-identifier +P4358 property_type external-identifier +P4359 property_type external-identifier +P4360 property_type external-identifier +P4361 property_type external-identifier +P4362 property_type external-identifier +P4363 property_type external-identifier +P4364 property_type external-identifier +P4365 property_type external-identifier +P4366 property_type external-identifier +P4367 property_type external-identifier +P4368 property_type external-identifier +P4369 property_type external-identifier +P4370 property_type external-identifier +P4371 property_type external-identifier +P4372 property_type external-identifier +P4373 property_type external-identifier +P4374 property_type external-identifier +P4375 property_type external-identifier +P4376 property_type external-identifier +P4377 property_type external-identifier +P4379 property_type item +P4380 property_type external-identifier +P4381 property_type external-identifier +P4382 property_type external-identifier +P4383 property_type external-identifier +P4384 property_type external-identifier +P4385 property_type external-identifier +P4386 property_type external-identifier +P4387 property_type item +P4388 property_type external-identifier +P4389 property_type external-identifier +P4390 property_type item +P4391 property_type external-identifier +P4392 property_type external-identifier +P4393 property_type external-identifier +P4394 property_type external-identifier +P4395 property_type external-identifier +P4396 property_type external-identifier +P4397 property_type external-identifier +P4398 property_type external-identifier +P4399 property_type external-identifier +P4400 property_type external-identifier +P4401 property_type external-identifier +P4402 property_type external-identifier +P4403 property_type quantity +P4404 property_type external-identifier +P4405 property_type external-identifier +P4406 property_type external-identifier +P4407 property_type external-identifier +P4408 property_type external-identifier +P4409 property_type external-identifier +P4410 property_type external-identifier +P4411 property_type external-identifier +P4412 property_type external-identifier +P4413 property_type external-identifier +P4414 property_type external-identifier +P4415 property_type external-identifier +P4416 property_type external-identifier +P4417 property_type external-identifier +P4418 property_type external-identifier +P4419 property_type external-identifier +P4421 property_type external-identifier +P4422 property_type external-identifier +P4423 property_type external-identifier +P4424 property_type item +P4425 property_type item +P4426 property_type item +P4427 property_type external-identifier +P4428 property_type item +P4429 property_type external-identifier +P4430 property_type external-identifier +P4431 property_type external-identifier +P4432 property_type external-identifier +P4433 property_type external-identifier +P4434 property_type external-identifier +P4435 property_type external-identifier +P4436 property_type external-identifier +P4437 property_type item +P4438 property_type external-identifier +P4439 property_type external-identifier +P4440 property_type external-identifier +P1301 property_type quantity +P1302 property_type item +P1303 property_type item +P1304 property_type item +P1305 property_type external-identifier +P1307 property_type external-identifier +P1308 property_type item +P1309 property_type external-identifier +P1310 property_type item +P1311 property_type external-identifier +P1312 property_type item +P1313 property_type item +P1314 property_type quantity +P1315 property_type external-identifier +P1316 property_type external-identifier +P1317 property_type time +P1318 property_type item +P1319 property_type time +P1320 property_type external-identifier +P1321 property_type item +P1322 property_type item +P1323 property_type external-identifier +P1324 property_type url +P1325 property_type url +P1326 property_type time +P1327 property_type item +P1329 property_type string +P1330 property_type external-identifier +P1331 property_type external-identifier +P1332 property_type globe-coordinate +P1333 property_type globe-coordinate +P1334 property_type globe-coordinate +P1335 property_type globe-coordinate +P1336 property_type item +P1338 property_type external-identifier +P1339 property_type quantity +P1340 property_type item +P1341 property_type external-identifier +P1342 property_type quantity +P1343 property_type item +P1344 property_type item +P1345 property_type quantity +P1346 property_type item +P1347 property_type item +P1348 property_type url +P1349 property_type item +P1350 property_type quantity +P1351 property_type quantity +P1352 property_type quantity +P1353 property_type string +P1354 property_type item +P1355 property_type quantity +P1356 property_type quantity +P1357 property_type quantity +P1358 property_type quantity +P1359 property_type quantity +P1360 property_type string +P1362 property_type external-identifier +P1363 property_type item +P1364 property_type external-identifier +P1365 property_type item +P1366 property_type item +P1367 property_type external-identifier +P1368 property_type external-identifier +P1369 property_type external-identifier +P1370 property_type external-identifier +P1371 property_type external-identifier +P1372 property_type item +P1373 property_type quantity +P1375 property_type external-identifier +P1376 property_type item +P1377 property_type external-identifier +P1378 property_type external-identifier +P1380 property_type external-identifier +P1381 property_type external-identifier +P1382 property_type item +P1383 property_type item +P1385 property_type external-identifier +P1386 property_type external-identifier +P1387 property_type item +P1388 property_type external-identifier +P1389 property_type item +P1390 property_type quantity +P1391 property_type external-identifier +P1392 property_type external-identifier +P1393 property_type item +P1394 property_type external-identifier +P1395 property_type external-identifier +P1396 property_type string +P1397 property_type external-identifier +P1398 property_type item +P1399 property_type item +P1400 property_type external-identifier +P1401 property_type url +P1402 property_type string +P1403 property_type item +P1404 property_type external-identifier +P1406 property_type item +P1407 property_type external-identifier +P1408 property_type item +P2555 property_type quantity +P2556 property_type quantity +P2557 property_type quantity +P2558 property_type external-identifier +P2559 property_type monolingualtext +P2560 property_type item +P2561 property_type monolingualtext +P2562 property_type monolingualtext +P2563 property_type item +P2564 property_type item +P2565 property_type quantity +P2566 property_type external-identifier +P2567 property_type item +P2568 property_type item +P2571 property_type item +P2572 property_type string +P2573 property_type quantity +P2574 property_type external-identifier +P2575 property_type item +P2576 property_type external-identifier +P2577 property_type item +P2578 property_type item +P2579 property_type item +P2580 property_type external-identifier +P2581 property_type external-identifier +P2582 property_type external-identifier +P2583 property_type quantity +P2584 property_type external-identifier +P2585 property_type external-identifier +P2586 property_type external-identifier +P2587 property_type item +P2588 property_type external-identifier +P2589 property_type external-identifier +P2590 property_type external-identifier +P2591 property_type item +P2592 property_type external-identifier +P2593 property_type external-identifier +P2595 property_type quantity +P2596 property_type item +P2597 property_type item +P2598 property_type string +P2599 property_type quantity +P2600 property_type external-identifier +P2601 property_type external-identifier +P2602 property_type external-identifier +P2603 property_type external-identifier +P2604 property_type external-identifier +P2605 property_type external-identifier +P2606 property_type external-identifier +P2607 property_type external-identifier +P2610 property_type quantity +P2611 property_type external-identifier +P2612 property_type external-identifier +P2613 property_type external-identifier +P2614 property_type item +P2618 property_type external-identifier +P2619 property_type external-identifier +P2620 property_type external-identifier +P2621 property_type external-identifier +P2622 property_type external-identifier +P2623 property_type external-identifier +P2624 property_type external-identifier +P2625 property_type external-identifier +P2626 property_type external-identifier +P2627 property_type external-identifier +P2628 property_type external-identifier +P2629 property_type item +P2630 property_type quantity +P2631 property_type external-identifier +P2632 property_type item +P2633 property_type item +P2634 property_type item +P2635 property_type quantity +P2636 property_type external-identifier +P2637 property_type item +P2638 property_type external-identifier +P2639 property_type external-identifier +P2640 property_type external-identifier +P2641 property_type external-identifier +P2642 property_type external-identifier +P2643 property_type item +P2645 property_type quantity +P2646 property_type external-identifier +P2647 property_type item +P2648 property_type external-identifier +P2649 property_type url +P2650 property_type item +P2651 property_type external-identifier +P2652 property_type item +P2655 property_type external-identifier +P2657 property_type external-identifier +P2658 property_type quantity +P2659 property_type quantity +P2660 property_type quantity +P2661 property_type quantity +P2662 property_type quantity +P2663 property_type quantity +P2664 property_type quantity +P2665 property_type quantity +P2666 property_type external-identifier +P4441 property_type quantity +P4442 property_type quantity +P4443 property_type item +P4444 property_type item +P4445 property_type quantity +P4446 property_type item +P4447 property_type quantity +P4448 property_type quantity +P4449 property_type external-identifier +P4450 property_type external-identifier +P4451 property_type external-identifier +P4452 property_type item +P4453 property_type external-identifier +P4454 property_type external-identifier +P4455 property_type external-identifier +P4456 property_type external-identifier +P4457 property_type external-identifier +P4458 property_type external-identifier +P4459 property_type external-identifier +P4460 property_type external-identifier +P4461 property_type external-identifier +P4462 property_type external-identifier +P4463 property_type external-identifier +P4464 property_type external-identifier +P4465 property_type external-identifier +P4466 property_type external-identifier +P4467 property_type external-identifier +P4468 property_type external-identifier +P4469 property_type external-identifier +P4470 property_type external-identifier +P4471 property_type external-identifier +P4472 property_type external-identifier +P4473 property_type external-identifier +P4474 property_type external-identifier +P4475 property_type external-identifier +P4476 property_type external-identifier +P4477 property_type external-identifier +P4478 property_type external-identifier +P4479 property_type external-identifier +P4480 property_type external-identifier +P4481 property_type external-identifier +P4482 property_type external-identifier +P4483 property_type external-identifier +P4484 property_type external-identifier +P4485 property_type external-identifier +P4486 property_type external-identifier +P4487 property_type external-identifier +P4488 property_type external-identifier +P4489 property_type external-identifier +P4490 property_type external-identifier +P4491 property_type external-identifier +P4493 property_type external-identifier +P4494 property_type external-identifier +P4495 property_type external-identifier +P4496 property_type string +P4498 property_type external-identifier +P4500 property_type quantity +P4501 property_type quantity +P4502 property_type external-identifier +P4503 property_type external-identifier +P4504 property_type external-identifier +P4505 property_type external-identifier +P4506 property_type string +P4507 property_type external-identifier +P4508 property_type external-identifier +P4509 property_type external-identifier +P4510 property_type item +P4511 property_type quantity +P4512 property_type external-identifier +P4513 property_type external-identifier +P4514 property_type external-identifier +P4515 property_type external-identifier +P4516 property_type external-identifier +P4517 property_type external-identifier +P4518 property_type external-identifier +P4519 property_type quantity +P4520 property_type external-identifier +P4521 property_type external-identifier +P4522 property_type external-identifier +P4523 property_type external-identifier +P4524 property_type external-identifier +P4525 property_type external-identifier +P4526 property_type external-identifier +P4527 property_type external-identifier +P4528 property_type external-identifier +P4529 property_type external-identifier +P4530 property_type external-identifier +P4531 property_type external-identifier +P4532 property_type external-identifier +P4533 property_type external-identifier +P4534 property_type external-identifier +P4535 property_type external-identifier +P4536 property_type external-identifier +P4537 property_type external-identifier +P4538 property_type external-identifier +P4539 property_type external-identifier +P4540 property_type external-identifier +P4541 property_type external-identifier +P4542 property_type external-identifier +P4543 property_type item +P1409 property_type external-identifier +P1410 property_type quantity +P1411 property_type item +P1412 property_type item +P1414 property_type item +P1415 property_type external-identifier +P1416 property_type item +P1417 property_type external-identifier +P1418 property_type quantity +P1419 property_type item +P1420 property_type item +P1421 property_type url +P1422 property_type external-identifier +P1423 property_type item +P1424 property_type item +P1425 property_type item +P1427 property_type item +P1428 property_type external-identifier +P1429 property_type item +P1430 property_type external-identifier +P1431 property_type item +P1433 property_type item +P1434 property_type item +P1435 property_type item +P1436 property_type quantity +P1437 property_type item +P1438 property_type string +P1439 property_type external-identifier +P1440 property_type external-identifier +P1441 property_type item +P1442 property_type string +P1443 property_type item +P1444 property_type item +P1445 property_type item +P1446 property_type quantity +P1447 property_type external-identifier +P1448 property_type monolingualtext +P1449 property_type monolingualtext +P1450 property_type monolingualtext +P1451 property_type monolingualtext +P1453 property_type external-identifier +P1454 property_type item +P1455 property_type item +P1456 property_type item +P1457 property_type quantity +P1458 property_type quantity +P1459 property_type external-identifier +P1460 property_type external-identifier +P1461 property_type string +P1462 property_type item +P1463 property_type external-identifier +P1464 property_type item +P1465 property_type item +P1466 property_type external-identifier +P1467 property_type external-identifier +P1468 property_type external-identifier +P1469 property_type external-identifier +P1470 property_type quantity +P1471 property_type string +P1472 property_type string +P1473 property_type external-identifier +P1474 property_type external-identifier +P1476 property_type monolingualtext +P1477 property_type monolingualtext +P1478 property_type item +P1479 property_type item +P1480 property_type item +P1481 property_type external-identifier +P1482 property_type url +P1483 property_type external-identifier +P1529 property_type external-identifier +P1531 property_type item +P1532 property_type item +P1533 property_type item +P1534 property_type item +P1535 property_type item +P1536 property_type item +P1537 property_type item +P1538 property_type quantity +P1539 property_type quantity +P1540 property_type quantity +P1541 property_type external-identifier +P1542 property_type item +P1543 property_type string +P1544 property_type external-identifier +P1545 property_type string +P1546 property_type item +P1547 property_type item +P1548 property_type quantity +P1549 property_type monolingualtext +P1550 property_type external-identifier +P1551 property_type external-identifier +P1552 property_type item +P1553 property_type external-identifier +P1554 property_type external-identifier +P1555 property_type external-identifier +P1556 property_type external-identifier +P1557 property_type item +P1558 property_type item +P1559 property_type monolingualtext +P5270 property_type external-identifier +P5271 property_type external-identifier +P5272 property_type external-identifier +P5273 property_type external-identifier +P5274 property_type external-identifier +P5275 property_type external-identifier +P5276 property_type string +P5277 property_type item +P5278 property_type item +P5279 property_type string +P5280 property_type item +P5281 property_type quantity +P5282 property_type url +P5283 property_type external-identifier +P5284 property_type external-identifier +P5285 property_type external-identifier +P5286 property_type string +P5287 property_type external-identifier +P5288 property_type external-identifier +P5289 property_type external-identifier +P5290 property_type external-identifier +P5291 property_type external-identifier +P5292 property_type external-identifier +P5293 property_type external-identifier +P5294 property_type external-identifier +P5295 property_type external-identifier +P5296 property_type external-identifier +P5297 property_type external-identifier +P5298 property_type external-identifier +P5299 property_type external-identifier +P5300 property_type external-identifier +P5301 property_type external-identifier +P5302 property_type external-identifier +P5303 property_type external-identifier +P5304 property_type item +P5305 property_type url +P5306 property_type external-identifier +P5307 property_type item +P5308 property_type external-identifier +P5309 property_type external-identifier +P5310 property_type external-identifier +P5311 property_type external-identifier +P5312 property_type external-identifier +P5313 property_type external-identifier +P5314 property_type item +P5315 property_type external-identifier +P5316 property_type external-identifier +P5317 property_type item +P5318 property_type external-identifier +P5319 property_type external-identifier +P5320 property_type external-identifier +P5321 property_type external-identifier +P5323 property_type item +P5324 property_type external-identifier +P5325 property_type external-identifier +P5326 property_type item +P5327 property_type external-identifier +P5328 property_type item +P5329 property_type external-identifier +P5330 property_type item +P5331 property_type external-identifier +P5332 property_type external-identifier +P5333 property_type external-identifier +P5334 property_type external-identifier +P5335 property_type external-identifier +P5336 property_type external-identifier +P5337 property_type external-identifier +P5338 property_type external-identifier +P5339 property_type external-identifier +P5340 property_type external-identifier +P5341 property_type external-identifier +P5343 property_type external-identifier +P5344 property_type external-identifier +P5345 property_type external-identifier +P5346 property_type external-identifier +P5348 property_type quantity +P5349 property_type quantity +P5350 property_type string +P5351 property_type string +P5352 property_type string +P5353 property_type item +P5354 property_type external-identifier +P5355 property_type external-identifier +P5356 property_type external-identifier +P5357 property_type external-identifier +P5358 property_type external-identifier +P5359 property_type external-identifier +P5360 property_type external-identifier +P5361 property_type external-identifier +P5362 property_type external-identifier +P5363 property_type external-identifier +P5364 property_type external-identifier +P5365 property_type external-identifier +P5366 property_type external-identifier +P5368 property_type external-identifier +P5369 property_type external-identifier +P5370 property_type external-identifier +P5371 property_type external-identifier +P5372 property_type external-identifier +P5373 property_type external-identifier +P3310 property_type item +P3311 property_type string +P3314 property_type external-identifier +P3315 property_type external-identifier +P3316 property_type external-identifier +P3318 property_type external-identifier +P3320 property_type item +P3321 property_type monolingualtext +P3322 property_type external-identifier +P3323 property_type item +P3324 property_type external-identifier +P3325 property_type external-identifier +P3326 property_type external-identifier +P3327 property_type external-identifier +P3328 property_type external-identifier +P3329 property_type external-identifier +P3330 property_type external-identifier +P3331 property_type external-identifier +P3332 property_type external-identifier +P3333 property_type external-identifier +P3335 property_type item +P3337 property_type quantity +P3338 property_type external-identifier +P3339 property_type external-identifier +P3340 property_type external-identifier +P3341 property_type external-identifier +P3342 property_type item +P3343 property_type external-identifier +P3344 property_type external-identifier +P3345 property_type external-identifier +P3346 property_type external-identifier +P3347 property_type external-identifier +P3348 property_type external-identifier +P3349 property_type item +P3350 property_type external-identifier +P3351 property_type external-identifier +P3352 property_type external-identifier +P3353 property_type external-identifier +P3354 property_type item +P3355 property_type item +P3356 property_type item +P3357 property_type item +P3358 property_type item +P3359 property_type item +P3360 property_type external-identifier +P3361 property_type external-identifier +P3362 property_type quantity +P3363 property_type external-identifier +P3364 property_type item +P3365 property_type external-identifier +P3366 property_type external-identifier +P3367 property_type external-identifier +P3368 property_type external-identifier +P3370 property_type external-identifier +P3371 property_type external-identifier +P3372 property_type external-identifier +P3373 property_type item +P3374 property_type item +P3375 property_type external-identifier +P3376 property_type external-identifier +P3377 property_type external-identifier +P3378 property_type external-identifier +P3379 property_type external-identifier +P3380 property_type external-identifier +P3381 property_type external-identifier +P3382 property_type external-identifier +P3383 property_type string +P3385 property_type external-identifier +P3386 property_type external-identifier +P3387 property_type quantity +P3388 property_type external-identifier +P3389 property_type external-identifier +P3390 property_type external-identifier +P3391 property_type external-identifier +P3392 property_type external-identifier +P3393 property_type external-identifier +P3394 property_type external-identifier +P3395 property_type quantity +P3396 property_type external-identifier +P3397 property_type external-identifier +P3398 property_type external-identifier +P3399 property_type external-identifier +P3400 property_type external-identifier +P3401 property_type external-identifier +P3402 property_type item +P3403 property_type item +P3404 property_type external-identifier +P3405 property_type external-identifier +P3406 property_type external-identifier +P3407 property_type external-identifier +P3408 property_type external-identifier +P3409 property_type external-identifier +P3410 property_type external-identifier +P3411 property_type external-identifier +P3412 property_type external-identifier +P3413 property_type external-identifier +P3414 property_type external-identifier +P3415 property_type item +P3416 property_type item +P3417 property_type external-identifier +P2667 property_type item +P2668 property_type item +P2669 property_type time +P2670 property_type item +P2671 property_type external-identifier +P2672 property_type external-identifier +P2673 property_type item +P2674 property_type item +P2675 property_type item +P2676 property_type string +P2677 property_type string +P2678 property_type external-identifier +P2679 property_type item +P2680 property_type item +P2681 property_type item +P2682 property_type item +P2683 property_type external-identifier +P2684 property_type item +P2685 property_type external-identifier +P2686 property_type external-identifier +P2687 property_type external-identifier +P2688 property_type external-identifier +P2689 property_type external-identifier +P2694 property_type external-identifier +P2695 property_type item +P2696 property_type external-identifier +P2697 property_type external-identifier +P2698 property_type external-identifier +P2699 property_type url +P2700 property_type item +P2701 property_type item +P2702 property_type item +P2703 property_type external-identifier +P2704 property_type external-identifier +P2705 property_type external-identifier +P2708 property_type external-identifier +P2709 property_type external-identifier +P2710 property_type quantity +P2712 property_type quantity +P2713 property_type string +P2715 property_type item +P2716 property_type string +P2717 property_type quantity +P2718 property_type quantity +P2719 property_type string +P2720 property_type string +P2721 property_type external-identifier +P2722 property_type external-identifier +P2723 property_type external-identifier +P2724 property_type external-identifier +P2725 property_type external-identifier +P2726 property_type external-identifier +P2727 property_type external-identifier +P2728 property_type external-identifier +P2729 property_type external-identifier +P2730 property_type external-identifier +P2732 property_type external-identifier +P2733 property_type external-identifier +P2734 property_type external-identifier +P2735 property_type external-identifier +P2736 property_type external-identifier +P2737 property_type item +P2738 property_type item +P2739 property_type item +P2740 property_type external-identifier +P2741 property_type external-identifier +P2742 property_type external-identifier +P2743 property_type item +P2744 property_type string +P2745 property_type external-identifier +P2746 property_type item +P2747 property_type item +P2748 property_type external-identifier +P2749 property_type external-identifier +P2750 property_type external-identifier +P2751 property_type external-identifier +P2752 property_type external-identifier +P2753 property_type external-identifier +P2754 property_type time +P2755 property_type external-identifier +P2756 property_type item +P2758 property_type item +P2759 property_type external-identifier +P2760 property_type external-identifier +P2761 property_type external-identifier +P2762 property_type external-identifier +P2763 property_type external-identifier +P2764 property_type external-identifier +P2765 property_type external-identifier +P2766 property_type external-identifier +P2767 property_type external-identifier +P2768 property_type external-identifier +P2769 property_type quantity +P2770 property_type item +P2771 property_type external-identifier +P2772 property_type external-identifier +P2773 property_type external-identifier +P2774 property_type external-identifier +P2775 property_type external-identifier +P2776 property_type external-identifier +P4544 property_type external-identifier +P4545 property_type item +P4546 property_type external-identifier +P4547 property_type external-identifier +P4548 property_type external-identifier +P4549 property_type external-identifier +P4550 property_type external-identifier +P4551 property_type external-identifier +P4552 property_type item +P4553 property_type external-identifier +P4554 property_type external-identifier +P4555 property_type external-identifier +P4556 property_type external-identifier +P4557 property_type external-identifier +P4558 property_type external-identifier +P4559 property_type external-identifier +P4560 property_type external-identifier +P4561 property_type external-identifier +P4562 property_type external-identifier +P4563 property_type external-identifier +P4564 property_type external-identifier +P4565 property_type string +P4566 property_type time +P4567 property_type external-identifier +P4568 property_type external-identifier +P4569 property_type external-identifier +P4571 property_type external-identifier +P4572 property_type external-identifier +P4573 property_type string +P4574 property_type external-identifier +P4575 property_type string +P4576 property_type external-identifier +P4577 property_type external-identifier +P4578 property_type external-identifier +P4579 property_type external-identifier +P4580 property_type external-identifier +P4581 property_type external-identifier +P4582 property_type external-identifier +P4583 property_type external-identifier +P4584 property_type item +P4585 property_type external-identifier +P4586 property_type item +P4587 property_type external-identifier +P4588 property_type external-identifier +P4589 property_type external-identifier +P4590 property_type external-identifier +P4591 property_type external-identifier +P4592 property_type external-identifier +P4593 property_type external-identifier +P4594 property_type external-identifier +P4595 property_type string +P4596 property_type external-identifier +P4597 property_type external-identifier +P4598 property_type external-identifier +P4599 property_type item +P4600 property_type item +P4601 property_type external-identifier +P4602 property_type time +P4604 property_type external-identifier +P4605 property_type external-identifier +P4606 property_type external-identifier +P4607 property_type external-identifier +P4608 property_type item +P4609 property_type external-identifier +P4610 property_type external-identifier +P4611 property_type external-identifier +P4612 property_type external-identifier +P4613 property_type external-identifier +P4614 property_type item +P4615 property_type external-identifier +P4616 property_type external-identifier +P4617 property_type external-identifier +P4618 property_type external-identifier +P4619 property_type external-identifier +P4620 property_type external-identifier +P4621 property_type external-identifier +P4622 property_type item +P4623 property_type external-identifier +P4624 property_type item +P4625 property_type external-identifier +P4626 property_type item +P4627 property_type external-identifier +P4628 property_type item +P4629 property_type external-identifier +P4630 property_type external-identifier +P4631 property_type external-identifier +P4632 property_type external-identifier +P4633 property_type string +P4634 property_type item +P4635 property_type external-identifier +P4636 property_type external-identifier +P4637 property_type external-identifier +P4638 property_type external-identifier +P4639 property_type external-identifier +P4640 property_type string +P4641 property_type external-identifier +P4642 property_type external-identifier +P4643 property_type external-identifier +P4644 property_type external-identifier +P4645 property_type external-identifier +P1560 property_type item +P1561 property_type quantity +P1562 property_type external-identifier +P1563 property_type external-identifier +P1564 property_type external-identifier +P1565 property_type external-identifier +P1566 property_type external-identifier +P1567 property_type external-identifier +P1568 property_type item +P1571 property_type item +P1573 property_type external-identifier +P1574 property_type item +P1575 property_type external-identifier +P1576 property_type item +P1577 property_type external-identifier +P1578 property_type external-identifier +P1579 property_type external-identifier +P1580 property_type external-identifier +P1581 property_type url +P1582 property_type item +P1583 property_type external-identifier +P1584 property_type external-identifier +P1585 property_type external-identifier +P1586 property_type external-identifier +P1587 property_type external-identifier +P1588 property_type string +P1589 property_type item +P1590 property_type quantity +P1591 property_type item +P1592 property_type item +P1593 property_type item +P1594 property_type item +P1595 property_type item +P1596 property_type item +P1598 property_type item +P1599 property_type external-identifier +P1600 property_type external-identifier +P1601 property_type external-identifier +P1602 property_type external-identifier +P1603 property_type quantity +P1604 property_type item +P1605 property_type item +P1606 property_type item +P1607 property_type external-identifier +P1608 property_type external-identifier +P1609 property_type external-identifier +P1610 property_type external-identifier +P1611 property_type item +P1612 property_type string +P1613 property_type url +P1614 property_type external-identifier +P1615 property_type external-identifier +P1616 property_type external-identifier +P1617 property_type external-identifier +P1618 property_type string +P1619 property_type time +P1620 property_type item +P1621 property_type string +P1622 property_type item +P1624 property_type external-identifier +P1625 property_type item +P1626 property_type external-identifier +P1627 property_type external-identifier +P1628 property_type url +P1629 property_type item +P1630 property_type string +P1631 property_type external-identifier +P1632 property_type external-identifier +P1635 property_type monolingualtext +P1636 property_type time +P1637 property_type item +P1638 property_type monolingualtext +P1639 property_type item +P1640 property_type item +P1641 property_type quantity +P1642 property_type item +P1643 property_type item +P1644 property_type external-identifier +P1645 property_type external-identifier +P1647 property_type property +P1648 property_type external-identifier +P1649 property_type external-identifier +P1650 property_type external-identifier +P1651 property_type external-identifier +P1652 property_type item +P1653 property_type external-identifier +P1654 property_type item +P1656 property_type item +P1657 property_type item +P1659 property_type property +P1660 property_type item +P1661 property_type quantity +P1662 property_type external-identifier +P1663 property_type external-identifier +P1664 property_type external-identifier +P1665 property_type external-identifier +P1666 property_type external-identifier +P1667 property_type external-identifier +P1668 property_type external-identifier +P1669 property_type external-identifier +P3418 property_type external-identifier +P3419 property_type external-identifier +P3420 property_type external-identifier +P3421 property_type external-identifier +P3422 property_type external-identifier +P3423 property_type external-identifier +P3424 property_type external-identifier +P3425 property_type external-identifier +P3426 property_type external-identifier +P3427 property_type external-identifier +P3428 property_type item +P3429 property_type external-identifier +P3430 property_type external-identifier +P3431 property_type external-identifier +P3432 property_type item +P3433 property_type item +P3434 property_type external-identifier +P3435 property_type external-identifier +P3436 property_type external-identifier +P3437 property_type item +P3438 property_type item +P3439 property_type quantity +P3440 property_type item +P3441 property_type string +P3442 property_type external-identifier +P3443 property_type external-identifier +P3444 property_type external-identifier +P3445 property_type external-identifier +P3446 property_type external-identifier +P3447 property_type item +P3448 property_type item +P3449 property_type external-identifier +P3450 property_type item +P3451 property_type string +P3452 property_type item +P3453 property_type external-identifier +P3454 property_type external-identifier +P3455 property_type external-identifier +P3456 property_type external-identifier +P3457 property_type quantity +P3458 property_type external-identifier +P3459 property_type external-identifier +P3460 property_type item +P3461 property_type item +P3462 property_type external-identifier +P3463 property_type external-identifier +P3464 property_type item +P3465 property_type quantity +P3466 property_type external-identifier +P3467 property_type external-identifier +P3468 property_type external-identifier +P3469 property_type external-identifier +P3470 property_type external-identifier +P3471 property_type external-identifier +P3472 property_type external-identifier +P3473 property_type external-identifier +P3475 property_type external-identifier +P3476 property_type external-identifier +P3477 property_type external-identifier +P3478 property_type external-identifier +P3479 property_type external-identifier +P3480 property_type external-identifier +P3481 property_type external-identifier +P3482 property_type external-identifier +P3483 property_type external-identifier +P3485 property_type quantity +P3486 property_type quantity +P3487 property_type quantity +P3488 property_type quantity +P3489 property_type item +P3490 property_type item +P3491 property_type item +P3492 property_type quantity +P3493 property_type item +P3494 property_type item +P3495 property_type external-identifier +P3496 property_type item +P3497 property_type item +P3498 property_type external-identifier +P3499 property_type external-identifier +P3500 property_type external-identifier +P3501 property_type item +P3502 property_type external-identifier +P3503 property_type external-identifier +P3504 property_type external-identifier +P3505 property_type external-identifier +P3506 property_type external-identifier +P3507 property_type external-identifier +P3509 property_type external-identifier +P3511 property_type external-identifier +P3512 property_type item +P3513 property_type external-identifier +P3514 property_type external-identifier +P3515 property_type external-identifier +P3516 property_type external-identifier +P3517 property_type external-identifier +P3518 property_type external-identifier +P3519 property_type external-identifier +P3520 property_type external-identifier +P3521 property_type external-identifier +P5374 property_type external-identifier +P5375 property_type external-identifier +P5376 property_type external-identifier +P5377 property_type external-identifier +P5378 property_type external-identifier +P5379 property_type external-identifier +P5380 property_type external-identifier +P5381 property_type external-identifier +P5382 property_type external-identifier +P5383 property_type external-identifier +P5384 property_type external-identifier +P5385 property_type external-identifier +P5386 property_type item +P5387 property_type external-identifier +P5388 property_type external-identifier +P5389 property_type item +P5390 property_type external-identifier +P5391 property_type external-identifier +P5392 property_type external-identifier +P5393 property_type external-identifier +P5394 property_type external-identifier +P5395 property_type external-identifier +P5396 property_type external-identifier +P5397 property_type external-identifier +P5398 property_type external-identifier +P5400 property_type external-identifier +P5401 property_type string +P5402 property_type string +P5403 property_type external-identifier +P5404 property_type external-identifier +P5406 property_type external-identifier +P5407 property_type external-identifier +P5408 property_type external-identifier +P5409 property_type external-identifier +P5410 property_type external-identifier +P5411 property_type external-identifier +P5412 property_type string +P5413 property_type external-identifier +P5414 property_type external-identifier +P5415 property_type external-identifier +P5417 property_type external-identifier +P5418 property_type external-identifier +P5419 property_type external-identifier +P5420 property_type external-identifier +P5421 property_type external-identifier +P5422 property_type item +P5423 property_type string +P5424 property_type external-identifier +P5425 property_type item +P5426 property_type item +P5427 property_type quantity +P5428 property_type quantity +P5429 property_type external-identifier +P5430 property_type external-identifier +P5431 property_type external-identifier +P5432 property_type external-identifier +P5434 property_type external-identifier +P5435 property_type external-identifier +P5436 property_type quantity +P5437 property_type external-identifier +P5438 property_type item +P5439 property_type item +P5440 property_type external-identifier +P5441 property_type external-identifier +P5442 property_type external-identifier +P5443 property_type external-identifier +P5444 property_type item +P5445 property_type external-identifier +P5446 property_type item +P5447 property_type quantity +P5448 property_type quantity +P5449 property_type external-identifier +P5450 property_type external-identifier +P5451 property_type external-identifier +P5452 property_type external-identifier +P5453 property_type external-identifier +P5454 property_type external-identifier +P5455 property_type external-identifier +P5456 property_type external-identifier +P5457 property_type external-identifier +P5458 property_type external-identifier +P5459 property_type external-identifier +P5460 property_type item +P5461 property_type string +P5462 property_type external-identifier +P5463 property_type external-identifier +P5464 property_type external-identifier +P5465 property_type external-identifier +P5466 property_type external-identifier +P5467 property_type external-identifier +P5468 property_type external-identifier +P5469 property_type external-identifier +P5470 property_type external-identifier +P5471 property_type string +P5473 property_type external-identifier +P5474 property_type quantity +P5475 property_type item +P5476 property_type external-identifier +P5477 property_type external-identifier +P5478 property_type external-identifier +P4646 property_type item +P4647 property_type item +P4649 property_type item +P4650 property_type external-identifier +P4651 property_type external-identifier +P4652 property_type external-identifier +P4653 property_type item +P4654 property_type string +P4655 property_type external-identifier +P4656 property_type url +P4657 property_type external-identifier +P4658 property_type external-identifier +P4659 property_type external-identifier +P4660 property_type external-identifier +P4661 property_type item +P4662 property_type external-identifier +P4663 property_type external-identifier +P4664 property_type external-identifier +P4665 property_type external-identifier +P4666 property_type external-identifier +P4667 property_type external-identifier +P4668 property_type external-identifier +P4669 property_type string +P4670 property_type external-identifier +P4671 property_type external-identifier +P4672 property_type external-identifier +P4673 property_type external-identifier +P4674 property_type external-identifier +P4675 property_type item +P4676 property_type external-identifier +P4677 property_type external-identifier +P4678 property_type external-identifier +P4679 property_type external-identifier +P4680 property_type item +P4681 property_type external-identifier +P4682 property_type external-identifier +P4683 property_type external-identifier +P4684 property_type external-identifier +P4685 property_type external-identifier +P4686 property_type external-identifier +P4687 property_type external-identifier +P4688 property_type item +P4689 property_type external-identifier +P4690 property_type external-identifier +P4691 property_type external-identifier +P4692 property_type external-identifier +P4693 property_type external-identifier +P4694 property_type external-identifier +P4695 property_type external-identifier +P4696 property_type external-identifier +P4697 property_type external-identifier +P4698 property_type external-identifier +P4699 property_type external-identifier +P4700 property_type external-identifier +P4701 property_type external-identifier +P4702 property_type external-identifier +P4703 property_type external-identifier +P4704 property_type external-identifier +P4705 property_type external-identifier +P4706 property_type external-identifier +P4707 property_type external-identifier +P4708 property_type external-identifier +P4709 property_type external-identifier +P4710 property_type external-identifier +P4711 property_type external-identifier +P4712 property_type external-identifier +P4713 property_type external-identifier +P4714 property_type quantity +P4715 property_type external-identifier +P4716 property_type external-identifier +P4717 property_type external-identifier +P4718 property_type external-identifier +P4720 property_type external-identifier +P4721 property_type external-identifier +P4722 property_type external-identifier +P4723 property_type external-identifier +P4724 property_type external-identifier +P4725 property_type external-identifier +P4726 property_type external-identifier +P4727 property_type external-identifier +P4728 property_type external-identifier +P4729 property_type external-identifier +P4730 property_type external-identifier +P4731 property_type external-identifier +P4732 property_type external-identifier +P4733 property_type item +P4734 property_type external-identifier +P4735 property_type external-identifier +P4736 property_type external-identifier +P4737 property_type external-identifier +P4738 property_type external-identifier +P4739 property_type external-identifier +P4740 property_type external-identifier +P4741 property_type external-identifier +P4742 property_type external-identifier +P4743 property_type item +P4744 property_type external-identifier +P4745 property_type item +P4746 property_type external-identifier +P4747 property_type external-identifier +P1670 property_type external-identifier +P1671 property_type string +P1672 property_type item +P1673 property_type string +P1674 property_type quantity +P1675 property_type quantity +P1676 property_type quantity +P1677 property_type item +P1678 property_type item +P1679 property_type external-identifier +P1680 property_type monolingualtext +P1683 property_type monolingualtext +P1684 property_type monolingualtext +P1685 property_type string +P1686 property_type item +P1687 property_type property +P1689 property_type quantity +P1690 property_type external-identifier +P1691 property_type external-identifier +P1692 property_type string +P1693 property_type external-identifier +P1694 property_type external-identifier +P1695 property_type external-identifier +P1696 property_type property +P1697 property_type quantity +P1699 property_type external-identifier +P1700 property_type external-identifier +P1702 property_type external-identifier +P1703 property_type item +P1704 property_type item +P1705 property_type monolingualtext +P1706 property_type item +P1707 property_type external-identifier +P1708 property_type external-identifier +P1709 property_type url +P1710 property_type external-identifier +P1711 property_type external-identifier +P1712 property_type external-identifier +P1713 property_type url +P1714 property_type external-identifier +P1715 property_type external-identifier +P1716 property_type item +P1717 property_type external-identifier +P1721 property_type string +P1725 property_type quantity +P1726 property_type external-identifier +P1727 property_type external-identifier +P1728 property_type external-identifier +P1729 property_type external-identifier +P1730 property_type external-identifier +P1731 property_type item +P1732 property_type external-identifier +P1733 property_type external-identifier +P1734 property_type time +P1735 property_type external-identifier +P1736 property_type external-identifier +P1738 property_type external-identifier +P1739 property_type external-identifier +P1740 property_type item +P1741 property_type external-identifier +P1743 property_type external-identifier +P1744 property_type external-identifier +P1745 property_type external-identifier +P1746 property_type external-identifier +P1747 property_type external-identifier +P1748 property_type string +P1749 property_type external-identifier +P1750 property_type item +P1751 property_type external-identifier +P1752 property_type quantity +P1753 property_type item +P1754 property_type item +P1755 property_type external-identifier +P1760 property_type external-identifier +P1761 property_type external-identifier +P1762 property_type string +P1763 property_type external-identifier +P1764 property_type external-identifier +P1766 property_type string +P1769 property_type external-identifier +P1770 property_type external-identifier +P1771 property_type external-identifier +P1772 property_type external-identifier +P1774 property_type item +P1775 property_type item +P1776 property_type item +P1777 property_type item +P1778 property_type item +P1779 property_type item +P1780 property_type item +P1782 property_type string +P1785 property_type string +P1786 property_type string +P1787 property_type string +P1788 property_type external-identifier +P1789 property_type item +P1791 property_type item +P1792 property_type item +P1793 property_type string +P1794 property_type external-identifier +P2777 property_type external-identifier +P2778 property_type external-identifier +P2779 property_type external-identifier +P2780 property_type external-identifier +P2781 property_type quantity +P2782 property_type external-identifier +P2783 property_type external-identifier +P2784 property_type item +P2786 property_type globe-coordinate +P2787 property_type quantity +P2788 property_type external-identifier +P2789 property_type item +P2790 property_type quantity +P2791 property_type quantity +P2792 property_type external-identifier +P2793 property_type quantity +P2794 property_type external-identifier +P2795 property_type monolingualtext +P2796 property_type external-identifier +P2797 property_type quantity +P2798 property_type external-identifier +P2799 property_type external-identifier +P2800 property_type external-identifier +P2801 property_type external-identifier +P2802 property_type string +P2803 property_type quantity +P2804 property_type external-identifier +P2805 property_type external-identifier +P2806 property_type quantity +P2807 property_type quantity +P2808 property_type quantity +P2809 property_type external-identifier +P2810 property_type external-identifier +P2811 property_type external-identifier +P2812 property_type external-identifier +P2813 property_type item +P2814 property_type external-identifier +P2815 property_type external-identifier +P2816 property_type external-identifier +P2817 property_type item +P2818 property_type external-identifier +P2819 property_type external-identifier +P2820 property_type item +P2821 property_type item +P2822 property_type item +P2823 property_type external-identifier +P2824 property_type external-identifier +P2825 property_type item +P2826 property_type external-identifier +P2827 property_type item +P2828 property_type item +P2829 property_type external-identifier +P2830 property_type external-identifier +P2831 property_type item +P2832 property_type external-identifier +P2833 property_type external-identifier +P2834 property_type quantity +P2835 property_type quantity +P2836 property_type quantity +P2838 property_type item +P2839 property_type item +P2840 property_type external-identifier +P2841 property_type item +P2842 property_type item +P2843 property_type external-identifier +P2844 property_type quantity +P2845 property_type external-identifier +P2846 property_type item +P2847 property_type external-identifier +P2848 property_type item +P2849 property_type item +P2850 property_type external-identifier +P2851 property_type item +P2852 property_type item +P2853 property_type item +P2854 property_type quantity +P2855 property_type quantity +P2856 property_type external-identifier +P2857 property_type external-identifier +P2858 property_type external-identifier +P2859 property_type string +P2860 property_type item +P2861 property_type external-identifier +P2862 property_type external-identifier +P2863 property_type external-identifier +P2864 property_type external-identifier +P2865 property_type external-identifier +P2866 property_type external-identifier +P2867 property_type external-identifier +P2868 property_type item +P2869 property_type item +P2870 property_type external-identifier +P2871 property_type external-identifier +P2872 property_type item +P2873 property_type quantity +P2874 property_type external-identifier +P2875 property_type item +P2876 property_type item +P2877 property_type external-identifier +P2878 property_type external-identifier +P3522 property_type external-identifier +P3523 property_type external-identifier +P3524 property_type external-identifier +P3525 property_type external-identifier +P3526 property_type external-identifier +P3527 property_type external-identifier +P3528 property_type external-identifier +P3529 property_type quantity +P3530 property_type quantity +P3531 property_type external-identifier +P3532 property_type external-identifier +P3533 property_type external-identifier +P3534 property_type external-identifier +P3535 property_type external-identifier +P3536 property_type external-identifier +P3537 property_type external-identifier +P3538 property_type external-identifier +P3539 property_type external-identifier +P3541 property_type external-identifier +P3542 property_type external-identifier +P3544 property_type external-identifier +P3545 property_type external-identifier +P3546 property_type external-identifier +P3547 property_type external-identifier +P3548 property_type external-identifier +P3549 property_type external-identifier +P3550 property_type external-identifier +P3551 property_type external-identifier +P3552 property_type external-identifier +P3553 property_type external-identifier +P3554 property_type external-identifier +P3555 property_type external-identifier +P3556 property_type external-identifier +P3557 property_type external-identifier +P3558 property_type external-identifier +P3559 property_type quantity +P3560 property_type external-identifier +P3561 property_type external-identifier +P3562 property_type external-identifier +P3563 property_type external-identifier +P3564 property_type external-identifier +P3565 property_type external-identifier +P3566 property_type external-identifier +P3567 property_type external-identifier +P3568 property_type external-identifier +P3569 property_type external-identifier +P3570 property_type external-identifier +P3571 property_type external-identifier +P3572 property_type external-identifier +P3573 property_type external-identifier +P3574 property_type external-identifier +P3575 property_type quantity +P3576 property_type external-identifier +P3577 property_type external-identifier +P3578 property_type item +P3579 property_type external-identifier +P3580 property_type external-identifier +P3581 property_type external-identifier +P3582 property_type external-identifier +P3583 property_type external-identifier +P3584 property_type external-identifier +P3585 property_type external-identifier +P3586 property_type external-identifier +P3587 property_type external-identifier +P3588 property_type external-identifier +P3589 property_type external-identifier +P3590 property_type external-identifier +P3591 property_type external-identifier +P3592 property_type item +P3593 property_type external-identifier +P3594 property_type external-identifier +P3595 property_type external-identifier +P3596 property_type external-identifier +P3597 property_type external-identifier +P3598 property_type external-identifier +P3599 property_type external-identifier +P3600 property_type external-identifier +P3601 property_type external-identifier +P3602 property_type item +P3603 property_type external-identifier +P3604 property_type external-identifier +P3605 property_type external-identifier +P3606 property_type external-identifier +P3607 property_type external-identifier +P3608 property_type external-identifier +P3609 property_type external-identifier +P3610 property_type item +P3611 property_type external-identifier +P3612 property_type external-identifier +P3613 property_type external-identifier +P3614 property_type external-identifier +P3615 property_type external-identifier +P3616 property_type external-identifier +P3618 property_type quantity +P3619 property_type external-identifier +P3620 property_type external-identifier +P3621 property_type external-identifier +P3622 property_type external-identifier +P3623 property_type external-identifier +P3624 property_type external-identifier +P4748 property_type external-identifier +P4749 property_type external-identifier +P4750 property_type external-identifier +P4751 property_type external-identifier +P4752 property_type external-identifier +P4753 property_type external-identifier +P4754 property_type external-identifier +P4755 property_type external-identifier +P4756 property_type external-identifier +P4757 property_type external-identifier +P4758 property_type external-identifier +P4759 property_type external-identifier +P4760 property_type external-identifier +P4761 property_type external-identifier +P4762 property_type external-identifier +P4763 property_type external-identifier +P4764 property_type external-identifier +P4765 property_type url +P4766 property_type external-identifier +P4768 property_type external-identifier +P4769 property_type external-identifier +P4770 property_type item +P4771 property_type external-identifier +P4772 property_type external-identifier +P4773 property_type external-identifier +P4774 property_type item +P4775 property_type string +P4776 property_type string +P4777 property_type item +P4778 property_type external-identifier +P4779 property_type external-identifier +P4780 property_type external-identifier +P4781 property_type external-identifier +P4782 property_type external-identifier +P4783 property_type external-identifier +P4784 property_type external-identifier +P4785 property_type external-identifier +P4786 property_type external-identifier +P4787 property_type external-identifier +P4788 property_type item +P4789 property_type external-identifier +P4790 property_type external-identifier +P4791 property_type item +P4792 property_type item +P4793 property_type external-identifier +P4794 property_type item +P4795 property_type external-identifier +P4796 property_type external-identifier +P4797 property_type external-identifier +P4798 property_type external-identifier +P4799 property_type external-identifier +P4800 property_type external-identifier +P4801 property_type external-identifier +P4802 property_type external-identifier +P4803 property_type external-identifier +P4804 property_type external-identifier +P4805 property_type item +P4806 property_type external-identifier +P4807 property_type external-identifier +P4808 property_type external-identifier +P4809 property_type item +P4810 property_type item +P4811 property_type external-identifier +P4812 property_type external-identifier +P4813 property_type external-identifier +P4814 property_type external-identifier +P4815 property_type quantity +P4816 property_type external-identifier +P4818 property_type external-identifier +P4819 property_type external-identifier +P4820 property_type external-identifier +P4821 property_type external-identifier +P4822 property_type external-identifier +P4823 property_type external-identifier +P4824 property_type external-identifier +P4825 property_type quantity +P4826 property_type quantity +P4827 property_type external-identifier +P4829 property_type external-identifier +P4830 property_type external-identifier +P4831 property_type external-identifier +P4832 property_type external-identifier +P4833 property_type external-identifier +P4834 property_type external-identifier +P4835 property_type external-identifier +P4836 property_type external-identifier +P4837 property_type string +P4838 property_type external-identifier +P4839 property_type external-identifier +P4840 property_type external-identifier +P4841 property_type quantity +P4842 property_type external-identifier +P4843 property_type item +P4844 property_type item +P4845 property_type external-identifier +P4846 property_type external-identifier +P4847 property_type external-identifier +P4848 property_type external-identifier +P4849 property_type external-identifier +P4850 property_type item +P5479 property_type quantity +P5480 property_type quantity +P5481 property_type quantity +P5483 property_type quantity +P5485 property_type external-identifier +P5488 property_type external-identifier +P5489 property_type external-identifier +P5490 property_type external-identifier +P5491 property_type external-identifier +P5492 property_type external-identifier +P5493 property_type external-identifier +P5494 property_type external-identifier +P5495 property_type external-identifier +P5496 property_type external-identifier +P5497 property_type external-identifier +P5498 property_type external-identifier +P5499 property_type external-identifier +P5500 property_type external-identifier +P5501 property_type external-identifier +P5502 property_type external-identifier +P5503 property_type external-identifier +P5504 property_type external-identifier +P5505 property_type external-identifier +P5506 property_type external-identifier +P5507 property_type external-identifier +P5508 property_type external-identifier +P5509 property_type external-identifier +P5510 property_type external-identifier +P5513 property_type external-identifier +P5514 property_type item +P5515 property_type external-identifier +P5516 property_type external-identifier +P5517 property_type external-identifier +P5518 property_type string +P5519 property_type string +P5520 property_type quantity +P5522 property_type item +P5523 property_type item +P5524 property_type quantity +P5525 property_type external-identifier +P5526 property_type quantity +P5527 property_type external-identifier +P5528 property_type external-identifier +P5529 property_type quantity +P5530 property_type external-identifier +P5531 property_type external-identifier +P5532 property_type external-identifier +P5533 property_type external-identifier +P5534 property_type external-identifier +P5535 property_type external-identifier +P5536 property_type external-identifier +P5537 property_type item +P5538 property_type external-identifier +P5539 property_type external-identifier +P5540 property_type external-identifier +P5541 property_type external-identifier +P5542 property_type external-identifier +P5543 property_type external-identifier +P5544 property_type external-identifier +P5545 property_type external-identifier +P5546 property_type external-identifier +P5547 property_type external-identifier +P5548 property_type string +P5549 property_type external-identifier +P5550 property_type external-identifier +P5551 property_type external-identifier +P5552 property_type external-identifier +P5553 property_type external-identifier +P5554 property_type external-identifier +P5555 property_type string +P5556 property_type external-identifier +P5557 property_type external-identifier +P5558 property_type external-identifier +P5559 property_type external-identifier +P5560 property_type item +P5561 property_type external-identifier +P5562 property_type external-identifier +P5563 property_type external-identifier +P5564 property_type item +P5565 property_type external-identifier +P5566 property_type external-identifier +P5567 property_type external-identifier +P5568 property_type external-identifier +P5569 property_type external-identifier +P5570 property_type external-identifier +P5571 property_type external-identifier +P5572 property_type item +P5573 property_type external-identifier +P5574 property_type external-identifier +P5575 property_type quantity +P5576 property_type external-identifier +P5578 property_type external-identifier +P5579 property_type external-identifier +P5580 property_type external-identifier +P5581 property_type external-identifier +P5582 property_type quantity +P5584 property_type external-identifier +P5585 property_type external-identifier +P5586 property_type external-identifier +P5587 property_type external-identifier +P3625 property_type string +P3626 property_type external-identifier +P3627 property_type external-identifier +P3628 property_type external-identifier +P3629 property_type quantity +P3630 property_type external-identifier +P3631 property_type external-identifier +P3632 property_type external-identifier +P3633 property_type external-identifier +P3634 property_type external-identifier +P3635 property_type external-identifier +P3636 property_type external-identifier +P3637 property_type external-identifier +P3638 property_type external-identifier +P3639 property_type external-identifier +P3640 property_type external-identifier +P3641 property_type external-identifier +P3642 property_type external-identifier +P3643 property_type item +P3644 property_type external-identifier +P3645 property_type external-identifier +P3646 property_type external-identifier +P3647 property_type external-identifier +P3648 property_type item +P3650 property_type item +P3651 property_type external-identifier +P3652 property_type external-identifier +P3653 property_type external-identifier +P3654 property_type external-identifier +P3655 property_type external-identifier +P3656 property_type external-identifier +P3657 property_type external-identifier +P3658 property_type external-identifier +P3659 property_type external-identifier +P3660 property_type external-identifier +P3661 property_type external-identifier +P3662 property_type external-identifier +P3663 property_type external-identifier +P3664 property_type external-identifier +P3665 property_type external-identifier +P3666 property_type external-identifier +P3667 property_type external-identifier +P3668 property_type external-identifier +P3669 property_type external-identifier +P3670 property_type external-identifier +P3671 property_type external-identifier +P3672 property_type external-identifier +P3673 property_type external-identifier +P3674 property_type external-identifier +P3675 property_type external-identifier +P3676 property_type external-identifier +P3677 property_type external-identifier +P3678 property_type external-identifier +P3679 property_type item +P3680 property_type item +P3681 property_type external-identifier +P3682 property_type external-identifier +P3683 property_type external-identifier +P3684 property_type external-identifier +P3685 property_type external-identifier +P3686 property_type external-identifier +P3687 property_type external-identifier +P3689 property_type external-identifier +P3690 property_type external-identifier +P3691 property_type external-identifier +P3692 property_type external-identifier +P3693 property_type external-identifier +P3694 property_type external-identifier +P3695 property_type external-identifier +P3696 property_type external-identifier +P3697 property_type external-identifier +P3698 property_type external-identifier +P3699 property_type external-identifier +P3700 property_type external-identifier +P3701 property_type item +P3702 property_type external-identifier +P3703 property_type external-identifier +P3704 property_type external-identifier +P3705 property_type external-identifier +P3706 property_type external-identifier +P3707 property_type external-identifier +P3708 property_type external-identifier +P3709 property_type item +P3710 property_type external-identifier +P3711 property_type external-identifier +P3712 property_type item +P3713 property_type item +P3714 property_type external-identifier +P3715 property_type external-identifier +P3716 property_type item +P3717 property_type external-identifier +P3718 property_type external-identifier +P3719 property_type item +P3720 property_type external-identifier +P3721 property_type string +P3723 property_type external-identifier +P3724 property_type external-identifier +P3725 property_type external-identifier +P3726 property_type external-identifier +P3727 property_type external-identifier +P1795 property_type external-identifier +P1796 property_type string +P1798 property_type external-identifier +P1799 property_type external-identifier +P1800 property_type external-identifier +P1801 property_type string +P1802 property_type external-identifier +P1803 property_type external-identifier +P1804 property_type external-identifier +P1806 property_type external-identifier +P1807 property_type external-identifier +P1808 property_type external-identifier +P1809 property_type item +P1810 property_type string +P1811 property_type item +P1813 property_type monolingualtext +P1814 property_type string +P1815 property_type string +P1816 property_type external-identifier +P1817 property_type item +P1818 property_type external-identifier +P1819 property_type external-identifier +P1820 property_type string +P1821 property_type external-identifier +P1822 property_type external-identifier +P1823 property_type external-identifier +P1824 property_type string +P1825 property_type external-identifier +P1826 property_type external-identifier +P1827 property_type external-identifier +P1828 property_type external-identifier +P1829 property_type external-identifier +P1830 property_type item +P1831 property_type quantity +P1832 property_type external-identifier +P1833 property_type quantity +P1836 property_type string +P1837 property_type external-identifier +P1838 property_type external-identifier +P1839 property_type external-identifier +P1840 property_type item +P1841 property_type external-identifier +P1842 property_type external-identifier +P1843 property_type monolingualtext +P1844 property_type external-identifier +P1845 property_type string +P1846 property_type string +P1847 property_type external-identifier +P1848 property_type external-identifier +P1849 property_type external-identifier +P1850 property_type external-identifier +P1851 property_type item +P1852 property_type external-identifier +P1853 property_type item +P1854 property_type external-identifier +P1855 property_type item +P1866 property_type external-identifier +P1867 property_type quantity +P1868 property_type quantity +P1869 property_type external-identifier +P1870 property_type external-identifier +P1871 property_type external-identifier +P1872 property_type quantity +P1873 property_type quantity +P1874 property_type external-identifier +P1875 property_type item +P1876 property_type item +P1877 property_type item +P1878 property_type item +P1879 property_type item +P1880 property_type item +P1881 property_type item +P1882 property_type external-identifier +P1883 property_type external-identifier +P1884 property_type item +P1885 property_type item +P1886 property_type external-identifier +P1887 property_type item +P1888 property_type external-identifier +P1889 property_type item +P1890 property_type external-identifier +P1891 property_type item +P1893 property_type external-identifier +P1894 property_type external-identifier +P1895 property_type external-identifier +P1896 property_type url +P1897 property_type item +P1898 property_type item +P1899 property_type external-identifier +P1900 property_type external-identifier +P1901 property_type external-identifier +P1902 property_type external-identifier +P1903 property_type item +P1906 property_type item +P1907 property_type external-identifier +P1908 property_type external-identifier +P1909 property_type item +P1910 property_type item +P1911 property_type item +P1912 property_type item +P4851 property_type quantity +P4852 property_type external-identifier +P4853 property_type external-identifier +P4854 property_type external-identifier +P4855 property_type external-identifier +P4856 property_type string +P4857 property_type external-identifier +P4858 property_type external-identifier +P4859 property_type external-identifier +P4860 property_type external-identifier +P4861 property_type external-identifier +P4862 property_type external-identifier +P4863 property_type string +P4864 property_type string +P4866 property_type external-identifier +P4867 property_type string +P4868 property_type external-identifier +P4869 property_type external-identifier +P4870 property_type external-identifier +P4871 property_type external-identifier +P4872 property_type external-identifier +P4873 property_type item +P4875 property_type item +P4876 property_type quantity +P4878 property_type item +P4879 property_type external-identifier +P4880 property_type external-identifier +P4881 property_type external-identifier +P4882 property_type item +P4883 property_type external-identifier +P4884 property_type item +P4885 property_type external-identifier +P4886 property_type external-identifier +P4887 property_type external-identifier +P4888 property_type external-identifier +P4889 property_type external-identifier +P4890 property_type external-identifier +P4891 property_type external-identifier +P4892 property_type external-identifier +P4893 property_type external-identifier +P4894 property_type external-identifier +P4895 property_type quantity +P4896 property_type string +P4897 property_type external-identifier +P4898 property_type external-identifier +P4899 property_type external-identifier +P4900 property_type item +P4901 property_type external-identifier +P4902 property_type external-identifier +P4903 property_type external-identifier +P4904 property_type external-identifier +P4905 property_type external-identifier +P4906 property_type external-identifier +P4907 property_type external-identifier +P4908 property_type item +P4909 property_type quantity +P4910 property_type external-identifier +P4911 property_type external-identifier +P4912 property_type quantity +P4913 property_type item +P4914 property_type string +P4915 property_type item +P4916 property_type external-identifier +P4917 property_type external-identifier +P4919 property_type external-identifier +P4920 property_type external-identifier +P4921 property_type external-identifier +P4922 property_type external-identifier +P4923 property_type external-identifier +P4924 property_type external-identifier +P4925 property_type external-identifier +P4926 property_type external-identifier +P4927 property_type external-identifier +P4928 property_type external-identifier +P4929 property_type external-identifier +P4930 property_type external-identifier +P4931 property_type external-identifier +P4932 property_type external-identifier +P4933 property_type external-identifier +P4934 property_type item +P4935 property_type external-identifier +P4936 property_type external-identifier +P4937 property_type external-identifier +P4938 property_type external-identifier +P4939 property_type external-identifier +P4940 property_type external-identifier +P4941 property_type external-identifier +P4942 property_type external-identifier +P4943 property_type external-identifier +P4944 property_type external-identifier +P4945 property_type url +P4946 property_type external-identifier +P4947 property_type external-identifier +P4948 property_type external-identifier +P4949 property_type external-identifier +P4950 property_type external-identifier +P4951 property_type string +P4952 property_type item +P4953 property_type external-identifier +P4954 property_type item +P3728 property_type external-identifier +P3729 property_type item +P3730 property_type item +P3731 property_type external-identifier +P3732 property_type external-identifier +P3733 property_type external-identifier +P3734 property_type item +P3735 property_type external-identifier +P3736 property_type external-identifier +P3737 property_type quantity +P3738 property_type quantity +P3739 property_type item +P3740 property_type quantity +P3741 property_type item +P3742 property_type external-identifier +P3743 property_type external-identifier +P3744 property_type quantity +P3745 property_type external-identifier +P3746 property_type external-identifier +P3747 property_type external-identifier +P3748 property_type external-identifier +P3749 property_type external-identifier +P3750 property_type external-identifier +P3751 property_type external-identifier +P3752 property_type string +P3753 property_type string +P3754 property_type string +P3755 property_type string +P3756 property_type string +P3757 property_type string +P3758 property_type external-identifier +P3759 property_type external-identifier +P3760 property_type external-identifier +P3761 property_type string +P3762 property_type external-identifier +P3763 property_type external-identifier +P3764 property_type item +P3765 property_type external-identifier +P3766 property_type external-identifier +P3767 property_type external-identifier +P3768 property_type external-identifier +P3769 property_type external-identifier +P3770 property_type external-identifier +P3771 property_type item +P3772 property_type item +P3773 property_type item +P3774 property_type item +P3775 property_type item +P3776 property_type item +P3777 property_type item +P3778 property_type item +P3779 property_type item +P3780 property_type item +P3781 property_type item +P3782 property_type external-identifier +P3783 property_type external-identifier +P3784 property_type external-identifier +P3785 property_type external-identifier +P3786 property_type external-identifier +P3787 property_type external-identifier +P3788 property_type external-identifier +P3789 property_type external-identifier +P3790 property_type external-identifier +P3791 property_type external-identifier +P3792 property_type quantity +P3793 property_type string +P3794 property_type external-identifier +P3795 property_type external-identifier +P3796 property_type external-identifier +P3797 property_type external-identifier +P3798 property_type external-identifier +P3799 property_type external-identifier +P3800 property_type external-identifier +P3801 property_type external-identifier +P3802 property_type external-identifier +P3803 property_type item +P3804 property_type external-identifier +P3805 property_type external-identifier +P3806 property_type external-identifier +P3807 property_type external-identifier +P3808 property_type external-identifier +P3809 property_type external-identifier +P3810 property_type external-identifier +P3811 property_type external-identifier +P3812 property_type external-identifier +P3813 property_type external-identifier +P3814 property_type external-identifier +P3815 property_type item +P3816 property_type item +P3817 property_type external-identifier +P3818 property_type item +P3819 property_type external-identifier +P3820 property_type external-identifier +P3821 property_type external-identifier +P3822 property_type item +P3823 property_type item +P3824 property_type external-identifier +P3825 property_type external-identifier +P3826 property_type external-identifier +P3827 property_type external-identifier +P5588 property_type item +P5589 property_type item +P5590 property_type external-identifier +P5591 property_type item +P5592 property_type quantity +P5593 property_type quantity +P5594 property_type quantity +P5595 property_type quantity +P5596 property_type quantity +P5597 property_type external-identifier +P5598 property_type external-identifier +P5599 property_type external-identifier +P5600 property_type external-identifier +P5601 property_type external-identifier +P5602 property_type external-identifier +P5603 property_type external-identifier +P5604 property_type external-identifier +P5605 property_type external-identifier +P5606 property_type item +P5607 property_type item +P5608 property_type quantity +P5609 property_type external-identifier +P5610 property_type external-identifier +P5611 property_type external-identifier +P5612 property_type external-identifier +P5613 property_type external-identifier +P5614 property_type external-identifier +P5615 property_type external-identifier +P5616 property_type external-identifier +P5617 property_type external-identifier +P5618 property_type external-identifier +P5619 property_type external-identifier +P5620 property_type external-identifier +P5621 property_type external-identifier +P5622 property_type external-identifier +P5623 property_type item +P5624 property_type quantity +P5625 property_type string +P5626 property_type external-identifier +P5627 property_type external-identifier +P5628 property_type external-identifier +P5629 property_type external-identifier +P5630 property_type quantity +P5631 property_type external-identifier +P5632 property_type external-identifier +P5633 property_type external-identifier +P5634 property_type external-identifier +P5635 property_type external-identifier +P5636 property_type external-identifier +P5637 property_type external-identifier +P5638 property_type external-identifier +P5639 property_type external-identifier +P5640 property_type external-identifier +P5641 property_type external-identifier +P5642 property_type item +P5643 property_type external-identifier +P5644 property_type external-identifier +P5645 property_type external-identifier +P5646 property_type external-identifier +P5647 property_type external-identifier +P5648 property_type external-identifier +P5649 property_type external-identifier +P5650 property_type external-identifier +P5651 property_type external-identifier +P5652 property_type external-identifier +P5653 property_type external-identifier +P5654 property_type external-identifier +P5655 property_type external-identifier +P5656 property_type external-identifier +P5657 property_type external-identifier +P5658 property_type item +P5659 property_type external-identifier +P5661 property_type external-identifier +P5662 property_type external-identifier +P5663 property_type external-identifier +P5664 property_type external-identifier +P5665 property_type external-identifier +P5666 property_type external-identifier +P5667 property_type external-identifier +P5668 property_type quantity +P5669 property_type quantity +P5670 property_type quantity +P5672 property_type quantity +P5673 property_type quantity +P5674 property_type quantity +P5675 property_type quantity +P5676 property_type quantity +P5677 property_type quantity +P5678 property_type quantity +P5679 property_type quantity +P5680 property_type external-identifier +P5681 property_type quantity +P5682 property_type quantity +P5683 property_type external-identifier +P5685 property_type quantity +P5686 property_type external-identifier +P5687 property_type external-identifier +P5688 property_type external-identifier +P5690 property_type external-identifier +P5691 property_type external-identifier +P6228 property_type external-identifier +P6229 property_type external-identifier +P6230 property_type external-identifier +P6231 property_type external-identifier +P6232 property_type external-identifier +P6233 property_type external-identifier +P6234 property_type external-identifier +P6235 property_type external-identifier +P6237 property_type item +P6238 property_type external-identifier +P6239 property_type external-identifier +P6240 property_type external-identifier +P6241 property_type item +P6242 property_type external-identifier +P6243 property_type item +P6244 property_type external-identifier +P6245 property_type external-identifier +P6246 property_type external-identifier +P6247 property_type external-identifier +P6248 property_type external-identifier +P6249 property_type quantity +P6250 property_type external-identifier +P6251 property_type monolingualtext +P6252 property_type external-identifier +P6253 property_type external-identifier +P6254 property_type string +P6255 property_type external-identifier +P6256 property_type external-identifier +P6257 property_type quantity +P6258 property_type quantity +P6259 property_type item +P6260 property_type quantity +P6261 property_type quantity +P6262 property_type external-identifier +P6263 property_type external-identifier +P6264 property_type external-identifier +P6265 property_type external-identifier +P6266 property_type external-identifier +P6267 property_type external-identifier +P6268 property_type external-identifier +P6269 property_type url +P6271 property_type item +P6272 property_type quantity +P6274 property_type quantity +P6275 property_type item +P6276 property_type external-identifier +P6277 property_type external-identifier +P6278 property_type external-identifier +P6279 property_type external-identifier +P6280 property_type string +P6281 property_type external-identifier +P6282 property_type external-identifier +P6283 property_type external-identifier +P6284 property_type external-identifier +P6285 property_type external-identifier +P6286 property_type external-identifier +P6287 property_type external-identifier +P6288 property_type external-identifier +P6289 property_type external-identifier +P6290 property_type external-identifier +P6291 property_type item +P6292 property_type external-identifier +P6293 property_type external-identifier +P6294 property_type external-identifier +P6295 property_type external-identifier +P6296 property_type external-identifier +P6297 property_type external-identifier +P6298 property_type external-identifier +P6299 property_type external-identifier +P6300 property_type external-identifier +P6301 property_type external-identifier +P6302 property_type external-identifier +P6303 property_type external-identifier +P6304 property_type external-identifier +P6305 property_type external-identifier +P6306 property_type external-identifier +P6307 property_type external-identifier +P6308 property_type external-identifier +P6309 property_type external-identifier +P6310 property_type external-identifier +P6311 property_type external-identifier +P6312 property_type external-identifier +P6313 property_type external-identifier +P6314 property_type external-identifier +P6315 property_type external-identifier +P6316 property_type external-identifier +P6317 property_type external-identifier +P6318 property_type external-identifier +P6319 property_type external-identifier +P6320 property_type external-identifier +P6321 property_type external-identifier +P6322 property_type external-identifier +P6323 property_type external-identifier +P6324 property_type external-identifier +P6325 property_type external-identifier +P6326 property_type external-identifier +P6327 property_type external-identifier +P6328 property_type external-identifier +P6329 property_type external-identifier +P6330 property_type external-identifier +P4955 property_type external-identifier +P4956 property_type external-identifier +P4957 property_type external-identifier +P4958 property_type item +P4959 property_type external-identifier +P4960 property_type external-identifier +P4961 property_type external-identifier +P4962 property_type external-identifier +P4963 property_type external-identifier +P4964 property_type external-identifier +P4965 property_type external-identifier +P4966 property_type external-identifier +P4967 property_type item +P4968 property_type item +P4969 property_type item +P4970 property_type string +P4971 property_type external-identifier +P4972 property_type external-identifier +P4973 property_type external-identifier +P4974 property_type external-identifier +P4975 property_type external-identifier +P4976 property_type external-identifier +P4977 property_type external-identifier +P4978 property_type external-identifier +P4979 property_type external-identifier +P4980 property_type external-identifier +P4981 property_type external-identifier +P4982 property_type external-identifier +P4983 property_type external-identifier +P4985 property_type external-identifier +P4986 property_type external-identifier +P4987 property_type external-identifier +P4988 property_type item +P4989 property_type external-identifier +P4991 property_type external-identifier +P4992 property_type external-identifier +P4993 property_type external-identifier +P4994 property_type external-identifier +P4996 property_type external-identifier +P4997 property_type url +P4998 property_type string +P4999 property_type quantity +P5001 property_type external-identifier +P5002 property_type external-identifier +P5003 property_type external-identifier +P5004 property_type item +P5005 property_type external-identifier +P5006 property_type external-identifier +P5007 property_type external-identifier +P5008 property_type item +P5009 property_type item +P5010 property_type external-identifier +P5011 property_type external-identifier +P5012 property_type item +P5013 property_type external-identifier +P5014 property_type external-identifier +P5015 property_type external-identifier +P5016 property_type external-identifier +P5017 property_type time +P5018 property_type external-identifier +P5019 property_type external-identifier +P5020 property_type external-identifier +P5021 property_type item +P5022 property_type quantity +P5023 property_type item +P5024 property_type item +P5025 property_type item +P5026 property_type item +P5027 property_type quantity +P5028 property_type item +P5029 property_type external-identifier +P5030 property_type item +P5031 property_type external-identifier +P5032 property_type external-identifier +P5033 property_type external-identifier +P5034 property_type external-identifier +P5035 property_type external-identifier +P5036 property_type external-identifier +P5037 property_type external-identifier +P5038 property_type external-identifier +P5039 property_type external-identifier +P5040 property_type item +P5041 property_type item +P5042 property_type item +P5043 property_type quantity +P5044 property_type quantity +P5045 property_type quantity +P5046 property_type string +P5047 property_type external-identifier +P5048 property_type external-identifier +P5049 property_type external-identifier +P5050 property_type external-identifier +P5051 property_type item +P5052 property_type item +P5053 property_type item +P5054 property_type item +P5055 property_type external-identifier +P5056 property_type item +P5057 property_type external-identifier +P5058 property_type external-identifier +P3828 property_type item +P3829 property_type external-identifier +P3830 property_type external-identifier +P3831 property_type item +P3832 property_type external-identifier +P3833 property_type item +P3834 property_type item +P3835 property_type external-identifier +P3836 property_type external-identifier +P3837 property_type external-identifier +P3838 property_type external-identifier +P3839 property_type external-identifier +P3840 property_type quantity +P3841 property_type external-identifier +P3842 property_type item +P3843 property_type external-identifier +P3844 property_type external-identifier +P3845 property_type external-identifier +P3846 property_type external-identifier +P3847 property_type external-identifier +P3848 property_type external-identifier +P3849 property_type external-identifier +P3850 property_type external-identifier +P3851 property_type external-identifier +P3852 property_type external-identifier +P3853 property_type external-identifier +P3854 property_type external-identifier +P3855 property_type external-identifier +P3856 property_type external-identifier +P3857 property_type external-identifier +P3858 property_type item +P3859 property_type external-identifier +P3860 property_type external-identifier +P3861 property_type external-identifier +P3862 property_type external-identifier +P3863 property_type external-identifier +P3864 property_type quantity +P3865 property_type item +P3866 property_type external-identifier +P3867 property_type external-identifier +P3868 property_type external-identifier +P3869 property_type external-identifier +P3870 property_type external-identifier +P3871 property_type item +P3872 property_type quantity +P3874 property_type external-identifier +P3875 property_type external-identifier +P3876 property_type item +P3877 property_type external-identifier +P3878 property_type string +P3879 property_type string +P3880 property_type string +P3881 property_type external-identifier +P3882 property_type external-identifier +P3883 property_type external-identifier +P3884 property_type external-identifier +P3885 property_type external-identifier +P3886 property_type quantity +P3887 property_type external-identifier +P3888 property_type external-identifier +P3889 property_type external-identifier +P3890 property_type external-identifier +P3891 property_type quantity +P3892 property_type external-identifier +P3893 property_type time +P3894 property_type external-identifier +P3895 property_type external-identifier +P3896 property_type string +P3897 property_type external-identifier +P3898 property_type external-identifier +P3899 property_type external-identifier +P3900 property_type external-identifier +P3901 property_type external-identifier +P3902 property_type item +P3903 property_type string +P3904 property_type external-identifier +P3906 property_type external-identifier +P3907 property_type external-identifier +P3908 property_type external-identifier +P3909 property_type monolingualtext +P3910 property_type external-identifier +P3911 property_type external-identifier +P3912 property_type item +P3913 property_type external-identifier +P3914 property_type external-identifier +P3915 property_type external-identifier +P3916 property_type external-identifier +P3917 property_type quantity +P3918 property_type external-identifier +P3919 property_type item +P3920 property_type external-identifier +P3921 property_type string +P3922 property_type string +P3923 property_type external-identifier +P3924 property_type external-identifier +P3925 property_type external-identifier +P3926 property_type external-identifier +P3927 property_type external-identifier +P3928 property_type external-identifier +P3929 property_type external-identifier +P5692 property_type string +P5693 property_type external-identifier +P5694 property_type external-identifier +P5695 property_type external-identifier +P5696 property_type external-identifier +P5698 property_type external-identifier +P5699 property_type external-identifier +P5700 property_type external-identifier +P5703 property_type string +P5704 property_type external-identifier +P5705 property_type external-identifier +P5706 property_type quantity +P5707 property_type item +P5708 property_type quantity +P5709 property_type quantity +P5710 property_type external-identifier +P5711 property_type external-identifier +P5712 property_type external-identifier +P5713 property_type item +P5714 property_type external-identifier +P5715 property_type url +P5716 property_type external-identifier +P5717 property_type external-identifier +P5718 property_type external-identifier +P5719 property_type external-identifier +P5720 property_type external-identifier +P5721 property_type external-identifier +P5722 property_type external-identifier +P5723 property_type external-identifier +P5724 property_type external-identifier +P5725 property_type external-identifier +P5726 property_type external-identifier +P5727 property_type external-identifier +P5731 property_type external-identifier +P5732 property_type external-identifier +P5733 property_type external-identifier +P5734 property_type external-identifier +P5735 property_type external-identifier +P5736 property_type external-identifier +P5737 property_type external-identifier +P5738 property_type external-identifier +P5739 property_type external-identifier +P5740 property_type external-identifier +P5742 property_type external-identifier +P5743 property_type external-identifier +P5744 property_type external-identifier +P5745 property_type external-identifier +P5746 property_type external-identifier +P5747 property_type external-identifier +P5748 property_type external-identifier +P5749 property_type external-identifier +P5750 property_type external-identifier +P5752 property_type external-identifier +P5753 property_type item +P5755 property_type external-identifier +P5756 property_type external-identifier +P5757 property_type external-identifier +P5758 property_type external-identifier +P5759 property_type external-identifier +P5760 property_type external-identifier +P5761 property_type external-identifier +P5762 property_type external-identifier +P5763 property_type external-identifier +P5764 property_type external-identifier +P5765 property_type external-identifier +P5768 property_type external-identifier +P5769 property_type item +P5770 property_type external-identifier +P5771 property_type external-identifier +P5772 property_type external-identifier +P5773 property_type external-identifier +P5774 property_type external-identifier +P5775 property_type string +P5776 property_type external-identifier +P5777 property_type external-identifier +P5778 property_type string +P5779 property_type external-identifier +P5780 property_type external-identifier +P5782 property_type external-identifier +P5783 property_type external-identifier +P5784 property_type external-identifier +P5785 property_type external-identifier +P5786 property_type external-identifier +P5787 property_type external-identifier +P5788 property_type external-identifier +P5789 property_type external-identifier +P5790 property_type external-identifier +P5791 property_type external-identifier +P5792 property_type external-identifier +P5793 property_type external-identifier +P5794 property_type external-identifier +P5795 property_type external-identifier +P5796 property_type external-identifier +P5797 property_type external-identifier +P5798 property_type string +P5799 property_type external-identifier +P5800 property_type item +P5801 property_type external-identifier +P5802 property_type item +P5803 property_type external-identifier +P3930 property_type external-identifier +P3931 property_type item +P3932 property_type external-identifier +P3933 property_type external-identifier +P3934 property_type quantity +P3935 property_type external-identifier +P3936 property_type external-identifier +P3937 property_type external-identifier +P3938 property_type item +P3939 property_type external-identifier +P3940 property_type external-identifier +P3941 property_type external-identifier +P3942 property_type external-identifier +P3943 property_type external-identifier +P3944 property_type external-identifier +P3945 property_type external-identifier +P3946 property_type external-identifier +P3948 property_type external-identifier +P3949 property_type external-identifier +P3950 property_type url +P3951 property_type external-identifier +P3952 property_type external-identifier +P3953 property_type external-identifier +P3954 property_type external-identifier +P3955 property_type external-identifier +P3956 property_type external-identifier +P3957 property_type external-identifier +P3958 property_type external-identifier +P3959 property_type external-identifier +P3960 property_type external-identifier +P3961 property_type external-identifier +P3962 property_type external-identifier +P3963 property_type external-identifier +P3964 property_type external-identifier +P3965 property_type external-identifier +P3966 property_type item +P3967 property_type item +P3968 property_type external-identifier +P3969 property_type item +P3970 property_type string +P3971 property_type external-identifier +P3972 property_type external-identifier +P3973 property_type external-identifier +P3974 property_type external-identifier +P3975 property_type item +P3976 property_type external-identifier +P3977 property_type external-identifier +P3978 property_type external-identifier +P3979 property_type external-identifier +P3980 property_type external-identifier +P3981 property_type external-identifier +P3982 property_type external-identifier +P3983 property_type quantity +P3984 property_type external-identifier +P3985 property_type item +P3986 property_type external-identifier +P3987 property_type external-identifier +P3988 property_type external-identifier +P3989 property_type item +P3990 property_type external-identifier +P3991 property_type external-identifier +P3992 property_type external-identifier +P3993 property_type external-identifier +P3994 property_type string +P3995 property_type external-identifier +P3996 property_type external-identifier +P3997 property_type external-identifier +P3998 property_type external-identifier +P3999 property_type time +P4000 property_type item +P4001 property_type url +P4002 property_type item +P4003 property_type external-identifier +P4004 property_type string +P4005 property_type external-identifier +P4006 property_type item +P4007 property_type external-identifier +P4008 property_type external-identifier +P4009 property_type external-identifier +P4010 property_type quantity +P4011 property_type external-identifier +P4012 property_type external-identifier +P4013 property_type external-identifier +P4014 property_type external-identifier +P4015 property_type external-identifier +P4016 property_type external-identifier +P4017 property_type external-identifier +P4018 property_type external-identifier +P4019 property_type external-identifier +P4020 property_type string +P4021 property_type external-identifier +P4022 property_type external-identifier +P4023 property_type external-identifier +P4024 property_type external-identifier +P4025 property_type external-identifier +P4026 property_type external-identifier +P4027 property_type external-identifier +P4028 property_type external-identifier +P4029 property_type external-identifier +P4030 property_type external-identifier +P5059 property_type item +P5061 property_type monolingualtext +P5062 property_type external-identifier +P5063 property_type external-identifier +P5064 property_type external-identifier +P5065 property_type quantity +P5066 property_type quantity +P5067 property_type quantity +P5068 property_type external-identifier +P5069 property_type quantity +P5070 property_type item +P5071 property_type quantity +P5072 property_type item +P5073 property_type external-identifier +P5075 property_type external-identifier +P5076 property_type external-identifier +P5077 property_type external-identifier +P5078 property_type external-identifier +P5079 property_type external-identifier +P5080 property_type external-identifier +P5081 property_type external-identifier +P5082 property_type external-identifier +P5083 property_type external-identifier +P5084 property_type external-identifier +P5085 property_type external-identifier +P5086 property_type external-identifier +P5087 property_type external-identifier +P5088 property_type external-identifier +P5090 property_type external-identifier +P5091 property_type external-identifier +P5092 property_type external-identifier +P5093 property_type external-identifier +P5094 property_type external-identifier +P5095 property_type item +P5096 property_type item +P5097 property_type external-identifier +P5098 property_type external-identifier +P5099 property_type external-identifier +P5101 property_type external-identifier +P5102 property_type item +P5103 property_type external-identifier +P5104 property_type external-identifier +P5105 property_type item +P5106 property_type external-identifier +P5107 property_type external-identifier +P5108 property_type external-identifier +P5109 property_type item +P5110 property_type item +P5114 property_type external-identifier +P5115 property_type external-identifier +P5116 property_type external-identifier +P5117 property_type external-identifier +P5118 property_type external-identifier +P5119 property_type external-identifier +P5120 property_type external-identifier +P5121 property_type external-identifier +P5122 property_type external-identifier +P5123 property_type external-identifier +P5124 property_type external-identifier +P5125 property_type item +P5126 property_type item +P5127 property_type external-identifier +P5128 property_type external-identifier +P5129 property_type external-identifier +P5131 property_type item +P5132 property_type item +P5133 property_type item +P5134 property_type item +P5135 property_type item +P5136 property_type item +P5137 property_type item +P5138 property_type item +P5139 property_type string +P5140 property_type globe-coordinate +P5141 property_type quantity +P5142 property_type external-identifier +P5143 property_type external-identifier +P5144 property_type external-identifier +P5145 property_type external-identifier +P5146 property_type external-identifier +P5147 property_type external-identifier +P5148 property_type external-identifier +P5149 property_type external-identifier +P5150 property_type item +P5151 property_type external-identifier +P5152 property_type item +P5153 property_type external-identifier +P5154 property_type external-identifier +P5156 property_type external-identifier +P5157 property_type external-identifier +P5158 property_type external-identifier +P5159 property_type external-identifier +P5160 property_type external-identifier +P5161 property_type external-identifier +P5162 property_type external-identifier +P5163 property_type external-identifier +P5164 property_type external-identifier +P5165 property_type external-identifier +P5166 property_type item +P5167 property_type quantity +P5804 property_type item +P5805 property_type item +P5806 property_type external-identifier +P5807 property_type external-identifier +P5808 property_type external-identifier +P5809 property_type external-identifier +P5810 property_type string +P5811 property_type quantity +P5813 property_type external-identifier +P5814 property_type external-identifier +P5815 property_type external-identifier +P5816 property_type item +P5817 property_type item +P5818 property_type external-identifier +P5819 property_type external-identifier +P5820 property_type external-identifier +P5821 property_type external-identifier +P5822 property_type quantity +P5823 property_type external-identifier +P5824 property_type item +P5825 property_type string +P5826 property_type item +P5827 property_type external-identifier +P5828 property_type item +P5829 property_type external-identifier +P5830 property_type string +P5831 property_type monolingualtext +P5832 property_type item +P5833 property_type external-identifier +P5834 property_type external-identifier +P5835 property_type external-identifier +P5836 property_type external-identifier +P5838 property_type external-identifier +P5839 property_type external-identifier +P5840 property_type external-identifier +P5841 property_type item +P5842 property_type external-identifier +P5843 property_type external-identifier +P5844 property_type external-identifier +P5845 property_type external-identifier +P5846 property_type external-identifier +P5847 property_type external-identifier +P5848 property_type external-identifier +P5849 property_type external-identifier +P5851 property_type external-identifier +P5852 property_type item +P5858 property_type string +P5859 property_type external-identifier +P5860 property_type external-identifier +P5862 property_type external-identifier +P5863 property_type external-identifier +P5864 property_type external-identifier +P5865 property_type external-identifier +P5866 property_type external-identifier +P5867 property_type external-identifier +P5868 property_type external-identifier +P5869 property_type item +P5870 property_type external-identifier +P5871 property_type external-identifier +P5872 property_type item +P5873 property_type item +P5874 property_type external-identifier +P5875 property_type external-identifier +P5876 property_type external-identifier +P5877 property_type external-identifier +P5878 property_type string +P5879 property_type external-identifier +P5880 property_type item +P5881 property_type item +P5882 property_type external-identifier +P5883 property_type external-identifier +P5884 property_type external-identifier +P5885 property_type external-identifier +P5886 property_type item +P5887 property_type external-identifier +P5888 property_type external-identifier +P5890 property_type external-identifier +P5891 property_type external-identifier +P5892 property_type external-identifier +P5893 property_type quantity +P5894 property_type quantity +P5895 property_type quantity +P5896 property_type quantity +P5897 property_type quantity +P5898 property_type quantity +P5899 property_type quantity +P5900 property_type quantity +P5901 property_type string +P5902 property_type external-identifier +P5903 property_type external-identifier +P5904 property_type external-identifier +P5905 property_type external-identifier +P5906 property_type external-identifier +P5908 property_type external-identifier +P5909 property_type external-identifier +P5910 property_type string +P5911 property_type item +P5912 property_type external-identifier +P5913 property_type item +P5914 property_type external-identifier +P4031 property_type external-identifier +P4032 property_type item +P4033 property_type external-identifier +P4034 property_type external-identifier +P4035 property_type external-identifier +P4036 property_type quantity +P4037 property_type external-identifier +P4038 property_type external-identifier +P4040 property_type external-identifier +P4041 property_type external-identifier +P4042 property_type external-identifier +P4043 property_type item +P4044 property_type item +P4045 property_type string +P4046 property_type external-identifier +P4047 property_type string +P4048 property_type external-identifier +P4050 property_type external-identifier +P4051 property_type external-identifier +P4052 property_type external-identifier +P4053 property_type external-identifier +P4054 property_type external-identifier +P4055 property_type external-identifier +P4056 property_type external-identifier +P4057 property_type external-identifier +P4058 property_type external-identifier +P4059 property_type external-identifier +P4060 property_type external-identifier +P4061 property_type external-identifier +P4062 property_type external-identifier +P4063 property_type external-identifier +P4065 property_type external-identifier +P4066 property_type external-identifier +P4067 property_type external-identifier +P4068 property_type external-identifier +P4069 property_type external-identifier +P4070 property_type item +P4071 property_type external-identifier +P4072 property_type external-identifier +P4073 property_type external-identifier +P4074 property_type external-identifier +P4075 property_type external-identifier +P4076 property_type external-identifier +P4077 property_type external-identifier +P4078 property_type string +P4079 property_type external-identifier +P4080 property_type quantity +P4081 property_type external-identifier +P4082 property_type item +P4083 property_type external-identifier +P4084 property_type external-identifier +P4085 property_type external-identifier +P4086 property_type external-identifier +P4087 property_type external-identifier +P4088 property_type external-identifier +P4089 property_type external-identifier +P4090 property_type external-identifier +P4091 property_type string +P4092 property_type string +P4093 property_type external-identifier +P4094 property_type external-identifier +P4095 property_type external-identifier +P4096 property_type external-identifier +P4097 property_type external-identifier +P4098 property_type external-identifier +P4099 property_type item +P4100 property_type item +P4101 property_type item +P4102 property_type external-identifier +P4103 property_type quantity +P4104 property_type external-identifier +P4105 property_type quantity +P4106 property_type external-identifier +P4107 property_type external-identifier +P4108 property_type external-identifier +P4109 property_type external-identifier +P4110 property_type external-identifier +P4111 property_type external-identifier +P4112 property_type external-identifier +P4113 property_type external-identifier +P4114 property_type external-identifier +P4115 property_type external-identifier +P4116 property_type external-identifier +P4117 property_type external-identifier +P4118 property_type external-identifier +P4119 property_type external-identifier +P4120 property_type external-identifier +P4121 property_type external-identifier +P4122 property_type external-identifier +P4123 property_type external-identifier +P4124 property_type external-identifier +P4125 property_type external-identifier +P4126 property_type external-identifier +P4127 property_type external-identifier +P4128 property_type external-identifier +P4129 property_type external-identifier +P4130 property_type external-identifier +P4131 property_type quantity +P4132 property_type item +P4133 property_type external-identifier +P7278 property_type external-identifier +P7279 property_type external-identifier +P7280 property_type external-identifier +P7281 property_type external-identifier +P7282 property_type external-identifier +P7283 property_type external-identifier +P7284 property_type external-identifier +P7285 property_type external-identifier +P7286 property_type external-identifier +P7287 property_type external-identifier +P7288 property_type external-identifier +P7289 property_type external-identifier +P7290 property_type string +P7291 property_type external-identifier +P7292 property_type external-identifier +P7293 property_type external-identifier +P7294 property_type url +P7295 property_type time +P7296 property_type external-identifier +P7297 property_type quantity +P7298 property_type external-identifier +P7299 property_type external-identifier +P7300 property_type external-identifier +P7301 property_type external-identifier +P7302 property_type external-identifier +P7303 property_type external-identifier +P7304 property_type external-identifier +P7305 property_type external-identifier +P7306 property_type external-identifier +P7307 property_type external-identifier +P7308 property_type external-identifier +P7309 property_type item +P7310 property_type external-identifier +P7311 property_type external-identifier +P7312 property_type external-identifier +P7313 property_type external-identifier +P7314 property_type external-identifier +P7315 property_type string +P7316 property_type quantity +P7317 property_type external-identifier +P7318 property_type external-identifier +P7319 property_type external-identifier +P7320 property_type external-identifier +P7321 property_type external-identifier +P7322 property_type external-identifier +P7323 property_type external-identifier +P7324 property_type external-identifier +P7325 property_type external-identifier +P7326 property_type external-identifier +P7327 property_type item +P7328 property_type quantity +P7329 property_type external-identifier +P7330 property_type string +P7331 property_type external-identifier +P7332 property_type external-identifier +P7333 property_type external-identifier +P7334 property_type external-identifier +P7335 property_type external-identifier +P7336 property_type external-identifier +P7337 property_type external-identifier +P7338 property_type string +P7339 property_type external-identifier +P7340 property_type external-identifier +P7341 property_type external-identifier +P7342 property_type external-identifier +P7343 property_type external-identifier +P7344 property_type external-identifier +P7345 property_type external-identifier +P7346 property_type external-identifier +P7347 property_type url +P7348 property_type external-identifier +P7349 property_type external-identifier +P7350 property_type external-identifier +P7351 property_type external-identifier +P7352 property_type external-identifier +P7353 property_type external-identifier +P7354 property_type external-identifier +P7355 property_type external-identifier +P7356 property_type external-identifier +P7357 property_type external-identifier +P7358 property_type external-identifier +P7359 property_type external-identifier +P7360 property_type external-identifier +P7361 property_type external-identifier +P7362 property_type external-identifier +P7363 property_type external-identifier +P7364 property_type external-identifier +P7365 property_type external-identifier +P7366 property_type external-identifier +P7367 property_type item +P7368 property_type external-identifier +P7369 property_type external-identifier +P7370 property_type external-identifier +P7371 property_type external-identifier +P7372 property_type external-identifier +P7374 property_type item +P7375 property_type url +P7376 property_type item +P7377 property_type item +P7378 property_type item +P6331 property_type external-identifier +P6332 property_type external-identifier +P6333 property_type monolingualtext +P6334 property_type external-identifier +P6335 property_type external-identifier +P6336 property_type external-identifier +P6337 property_type external-identifier +P6338 property_type item +P6339 property_type item +P6340 property_type external-identifier +P6341 property_type external-identifier +P6342 property_type external-identifier +P6343 property_type quantity +P6344 property_type quantity +P6346 property_type monolingualtext +P6347 property_type external-identifier +P6348 property_type external-identifier +P6349 property_type external-identifier +P6350 property_type external-identifier +P6351 property_type external-identifier +P6352 property_type external-identifier +P6353 property_type external-identifier +P6354 property_type quantity +P6355 property_type external-identifier +P6356 property_type external-identifier +P6357 property_type external-identifier +P6358 property_type external-identifier +P6359 property_type external-identifier +P6360 property_type external-identifier +P6361 property_type external-identifier +P6362 property_type external-identifier +P6363 property_type url +P6364 property_type item +P6365 property_type item +P6366 property_type external-identifier +P6367 property_type external-identifier +P6368 property_type external-identifier +P6369 property_type external-identifier +P6370 property_type external-identifier +P6371 property_type external-identifier +P6372 property_type external-identifier +P6373 property_type external-identifier +P6374 property_type external-identifier +P6375 property_type monolingualtext +P6376 property_type external-identifier +P6377 property_type external-identifier +P6378 property_type url +P6379 property_type item +P6381 property_type external-identifier +P6382 property_type external-identifier +P6383 property_type external-identifier +P6384 property_type external-identifier +P6385 property_type external-identifier +P6386 property_type external-identifier +P6387 property_type external-identifier +P6388 property_type external-identifier +P6389 property_type external-identifier +P6390 property_type external-identifier +P6391 property_type external-identifier +P6392 property_type external-identifier +P6394 property_type external-identifier +P6395 property_type external-identifier +P6398 property_type external-identifier +P6399 property_type external-identifier +P6400 property_type external-identifier +P6401 property_type external-identifier +P6402 property_type external-identifier +P6403 property_type external-identifier +P6404 property_type external-identifier +P6405 property_type external-identifier +P6406 property_type external-identifier +P6407 property_type external-identifier +P6408 property_type external-identifier +P6409 property_type external-identifier +P6410 property_type external-identifier +P6411 property_type external-identifier +P6412 property_type external-identifier +P6413 property_type external-identifier +P6414 property_type external-identifier +P6415 property_type external-identifier +P6416 property_type external-identifier +P6417 property_type external-identifier +P6418 property_type external-identifier +P6419 property_type external-identifier +P6420 property_type external-identifier +P6421 property_type external-identifier +P6422 property_type external-identifier +P6423 property_type external-identifier +P6424 property_type string +P6425 property_type external-identifier +P6426 property_type item +P6427 property_type monolingualtext +P6428 property_type external-identifier +P6429 property_type external-identifier +P6430 property_type external-identifier +P6431 property_type external-identifier +P6432 property_type string +P6433 property_type external-identifier +P6434 property_type external-identifier +P6436 property_type external-identifier +P5915 property_type external-identifier +P5916 property_type external-identifier +P5917 property_type external-identifier +P5918 property_type external-identifier +P5920 property_type string +P5921 property_type external-identifier +P5922 property_type external-identifier +P5923 property_type item +P5925 property_type external-identifier +P5926 property_type external-identifier +P5927 property_type external-identifier +P5928 property_type external-identifier +P5929 property_type quantity +P5930 property_type external-identifier +P5931 property_type external-identifier +P5932 property_type external-identifier +P5933 property_type external-identifier +P5934 property_type external-identifier +P5935 property_type external-identifier +P5936 property_type external-identifier +P5937 property_type external-identifier +P5938 property_type external-identifier +P5939 property_type external-identifier +P5940 property_type item +P5941 property_type external-identifier +P5942 property_type external-identifier +P5944 property_type external-identifier +P5945 property_type external-identifier +P5946 property_type external-identifier +P5947 property_type quantity +P5948 property_type external-identifier +P5949 property_type string +P5950 property_type external-identifier +P5951 property_type external-identifier +P5952 property_type external-identifier +P5953 property_type external-identifier +P5954 property_type external-identifier +P5955 property_type external-identifier +P5956 property_type external-identifier +P5957 property_type external-identifier +P5958 property_type external-identifier +P5959 property_type external-identifier +P5960 property_type external-identifier +P5961 property_type item +P5962 property_type string +P5963 property_type external-identifier +P5964 property_type external-identifier +P5965 property_type external-identifier +P5966 property_type external-identifier +P5967 property_type item +P5968 property_type external-identifier +P5969 property_type external-identifier +P5970 property_type item +P5971 property_type external-identifier +P5972 property_type string +P5973 property_type string +P5974 property_type string +P5975 property_type string +P5976 property_type string +P5977 property_type string +P5978 property_type string +P5979 property_type string +P5980 property_type string +P5981 property_type external-identifier +P5982 property_type quantity +P5983 property_type external-identifier +P5984 property_type external-identifier +P5985 property_type external-identifier +P5986 property_type external-identifier +P5987 property_type external-identifier +P5988 property_type external-identifier +P5989 property_type external-identifier +P5990 property_type external-identifier +P5991 property_type quantity +P5992 property_type quantity +P5993 property_type quantity +P5994 property_type string +P5995 property_type item +P5996 property_type item +P5997 property_type string +P5998 property_type item +P5999 property_type external-identifier +P6000 property_type quantity +P6001 property_type item +P6002 property_type external-identifier +P6003 property_type external-identifier +P6004 property_type external-identifier +P6005 property_type external-identifier +P6006 property_type external-identifier +P6007 property_type external-identifier +P6008 property_type external-identifier +P6009 property_type external-identifier +P6010 property_type external-identifier +P6011 property_type external-identifier +P6012 property_type external-identifier +P6013 property_type external-identifier +P6014 property_type quantity +P6015 property_type external-identifier +P6016 property_type external-identifier +P6017 property_type external-identifier P8094 property_type external-identifier P8095 property_type external-identifier P8096 property_type external-identifier @@ -6524,119 +5724,1007 @@ P8116 property_type external-identifier P8117 property_type external-identifier P8118 property_type external-identifier P8119 property_type external-identifier -P8120 property_type external-identifier -P8121 property_type external-identifier -P8122 property_type external-identifier -P8123 property_type external-identifier -P8124 property_type external-identifier -P8125 property_type external-identifier -P8126 property_type external-identifier -P8127 property_type item -P8128 property_type external-identifier -P8129 property_type external-identifier -P8130 property_type external-identifier -P8131 property_type item -P8132 property_type external-identifier -P6228 property_type external-identifier -P6229 property_type external-identifier -P6230 property_type external-identifier -P6231 property_type external-identifier -P6232 property_type external-identifier -P6233 property_type external-identifier -P6234 property_type external-identifier -P6235 property_type external-identifier -P6237 property_type item -P6238 property_type external-identifier -P6239 property_type external-identifier -P6240 property_type external-identifier -P6241 property_type item -P6242 property_type external-identifier -P6243 property_type item -P6244 property_type external-identifier -P6245 property_type external-identifier -P6246 property_type external-identifier -P6247 property_type external-identifier -P6248 property_type external-identifier -P6249 property_type quantity -P6250 property_type external-identifier -P6251 property_type monolingualtext -P6252 property_type external-identifier -P6253 property_type external-identifier -P6254 property_type string -P6255 property_type external-identifier -P6256 property_type external-identifier -P6257 property_type quantity -P6258 property_type quantity -P6259 property_type item -P6260 property_type quantity -P6261 property_type quantity -P6262 property_type external-identifier -P6263 property_type external-identifier -P6264 property_type external-identifier -P6265 property_type external-identifier -P6266 property_type external-identifier -P6267 property_type external-identifier -P6268 property_type external-identifier -P6269 property_type url -P6271 property_type item -P6272 property_type quantity -P6274 property_type quantity -P6275 property_type item -P6276 property_type external-identifier -P6277 property_type external-identifier -P6278 property_type external-identifier -P6279 property_type external-identifier -P6280 property_type string -P6281 property_type external-identifier -P6282 property_type external-identifier -P6283 property_type external-identifier -P6284 property_type external-identifier -P6285 property_type external-identifier -P6286 property_type external-identifier -P6287 property_type external-identifier -P6288 property_type external-identifier -P6289 property_type external-identifier -P6290 property_type external-identifier -P6291 property_type item -P6292 property_type external-identifier -P6293 property_type external-identifier -P6294 property_type external-identifier -P6295 property_type external-identifier -P6296 property_type external-identifier -P6297 property_type external-identifier -P6298 property_type external-identifier -P6299 property_type external-identifier -P6300 property_type external-identifier -P6301 property_type external-identifier -P6302 property_type external-identifier -P6303 property_type external-identifier -P6304 property_type external-identifier -P6305 property_type external-identifier -P6306 property_type external-identifier -P6307 property_type external-identifier -P6308 property_type external-identifier -P6309 property_type external-identifier -P6310 property_type external-identifier -P6311 property_type external-identifier -P6312 property_type external-identifier -P6313 property_type external-identifier -P6314 property_type external-identifier -P6315 property_type external-identifier -P6316 property_type external-identifier -P6317 property_type external-identifier -P6318 property_type external-identifier -P6319 property_type external-identifier -P6320 property_type external-identifier -P6321 property_type external-identifier -P6322 property_type external-identifier -P6323 property_type external-identifier -P6324 property_type external-identifier -P6325 property_type external-identifier -P6326 property_type external-identifier -P6327 property_type external-identifier -P6328 property_type external-identifier -P6329 property_type external-identifier -P6330 property_type external-identifier +P8120 property_type external-identifier +P8121 property_type external-identifier +P8122 property_type external-identifier +P8123 property_type external-identifier +P8124 property_type external-identifier +P8125 property_type external-identifier +P8126 property_type external-identifier +P8127 property_type item +P8128 property_type external-identifier +P8129 property_type external-identifier +P8130 property_type external-identifier +P8131 property_type item +P8132 property_type external-identifier +P8133 property_type external-identifier +P8134 property_type external-identifier +P8135 property_type external-identifier +P8136 property_type external-identifier +P8137 property_type external-identifier +P8138 property_type item +P8139 property_type external-identifier +P8140 property_type external-identifier +P8141 property_type external-identifier +P8142 property_type external-identifier +P8143 property_type external-identifier +P8144 property_type external-identifier +P8145 property_type external-identifier +P8146 property_type external-identifier +P8147 property_type external-identifier +P8148 property_type external-identifier +P8149 property_type external-identifier +P8150 property_type external-identifier +P8151 property_type external-identifier +P8152 property_type external-identifier +P8153 property_type external-identifier +P8155 property_type external-identifier +P8156 property_type external-identifier +P8157 property_type external-identifier +P8158 property_type external-identifier +P8159 property_type external-identifier +P8160 property_type external-identifier +P8161 property_type external-identifier +P8162 property_type external-identifier +P8163 property_type external-identifier +P8164 property_type external-identifier +P8165 property_type external-identifier +P8166 property_type external-identifier +P8167 property_type external-identifier +P8168 property_type external-identifier +P8169 property_type external-identifier +P8170 property_type external-identifier +P8171 property_type external-identifier +P8172 property_type external-identifier +P8173 property_type external-identifier +P8174 property_type external-identifier +P8175 property_type external-identifier +P8176 property_type external-identifier +P8177 property_type external-identifier +P8178 property_type external-identifier +P8179 property_type external-identifier +P8180 property_type external-identifier +P8181 property_type external-identifier +P8182 property_type external-identifier +P8183 property_type string +P8184 property_type external-identifier +P8185 property_type external-identifier +P8186 property_type external-identifier +P8187 property_type external-identifier +P8188 property_type external-identifier +P8189 property_type external-identifier +P8190 property_type external-identifier +P8191 property_type external-identifier +P8192 property_type external-identifier +P8193 property_type item +P8194 property_type item +P8195 property_type string +P8196 property_type item +P8197 property_type external-identifier +P8198 property_type external-identifier +P8199 property_type external-identifier +P8200 property_type external-identifier +P8201 property_type external-identifier +P8202 property_type external-identifier +P8203 property_type item +P8204 property_type string +P8205 property_type external-identifier +P8206 property_type string +P8207 property_type external-identifier +P8208 property_type quantity +P8209 property_type external-identifier +P8210 property_type external-identifier +P8211 property_type external-identifier +P8212 property_type external-identifier +P8213 property_type external-identifier +P8214 property_type url +P8215 property_type external-identifier +P8216 property_type external-identifier +P8217 property_type external-identifier +P8218 property_type external-identifier +P8219 property_type external-identifier +P8220 property_type external-identifier +P8221 property_type external-identifier +P6437 property_type item +P6438 property_type quantity +P6439 property_type item +P6440 property_type item +P6441 property_type external-identifier +P6442 property_type external-identifier +P6443 property_type external-identifier +P6444 property_type external-identifier +P6445 property_type external-identifier +P6446 property_type external-identifier +P6447 property_type external-identifier +P6448 property_type external-identifier +P6449 property_type external-identifier +P6450 property_type external-identifier +P6451 property_type external-identifier +P6452 property_type item +P6453 property_type external-identifier +P6454 property_type external-identifier +P6455 property_type external-identifier +P6456 property_type external-identifier +P6457 property_type external-identifier +P6458 property_type external-identifier +P6459 property_type external-identifier +P6460 property_type external-identifier +P6461 property_type external-identifier +P6462 property_type external-identifier +P6463 property_type external-identifier +P6464 property_type external-identifier +P6465 property_type external-identifier +P6466 property_type external-identifier +P6467 property_type external-identifier +P6468 property_type external-identifier +P6469 property_type external-identifier +P6470 property_type external-identifier +P6471 property_type external-identifier +P6472 property_type external-identifier +P6473 property_type external-identifier +P6474 property_type external-identifier +P6475 property_type external-identifier +P6476 property_type external-identifier +P6477 property_type item +P6478 property_type external-identifier +P6479 property_type external-identifier +P6480 property_type external-identifier +P6481 property_type external-identifier +P6482 property_type external-identifier +P6483 property_type external-identifier +P6484 property_type external-identifier +P6485 property_type external-identifier +P6486 property_type external-identifier +P6487 property_type external-identifier +P6488 property_type external-identifier +P6489 property_type external-identifier +P6490 property_type external-identifier +P6491 property_type external-identifier +P6492 property_type external-identifier +P6493 property_type external-identifier +P6494 property_type external-identifier +P6495 property_type external-identifier +P6496 property_type external-identifier +P6497 property_type quantity +P6498 property_type quantity +P6499 property_type quantity +P6500 property_type url +P6501 property_type external-identifier +P6502 property_type external-identifier +P6503 property_type external-identifier +P6504 property_type external-identifier +P6506 property_type external-identifier +P6507 property_type string +P6509 property_type quantity +P6510 property_type quantity +P6512 property_type external-identifier +P6513 property_type external-identifier +P6514 property_type external-identifier +P6515 property_type external-identifier +P6516 property_type external-identifier +P6517 property_type external-identifier +P6518 property_type external-identifier +P6519 property_type external-identifier +P6520 property_type external-identifier +P6521 property_type external-identifier +P6524 property_type item +P6525 property_type external-identifier +P6526 property_type external-identifier +P6527 property_type external-identifier +P6528 property_type external-identifier +P6529 property_type string +P6530 property_type item +P6531 property_type item +P6532 property_type item +P6533 property_type item +P6534 property_type item +P6535 property_type external-identifier +P6536 property_type external-identifier +P6537 property_type external-identifier +P6538 property_type external-identifier +P6539 property_type external-identifier +P6540 property_type item +P6541 property_type url +P6018 property_type external-identifier +P6019 property_type external-identifier +P6020 property_type external-identifier +P6021 property_type external-identifier +P6022 property_type item +P6023 property_type external-identifier +P6024 property_type external-identifier +P6025 property_type external-identifier +P6028 property_type external-identifier +P6030 property_type external-identifier +P6032 property_type external-identifier +P6033 property_type external-identifier +P6034 property_type external-identifier +P6035 property_type external-identifier +P6036 property_type external-identifier +P6037 property_type external-identifier +P6038 property_type external-identifier +P6039 property_type external-identifier +P6040 property_type external-identifier +P6041 property_type external-identifier +P6042 property_type external-identifier +P6043 property_type external-identifier +P6044 property_type external-identifier +P6045 property_type external-identifier +P6046 property_type external-identifier +P6047 property_type external-identifier +P6048 property_type external-identifier +P6049 property_type external-identifier +P6050 property_type external-identifier +P6051 property_type external-identifier +P6052 property_type external-identifier +P6053 property_type external-identifier +P6054 property_type external-identifier +P6055 property_type external-identifier +P6056 property_type external-identifier +P6057 property_type external-identifier +P6058 property_type external-identifier +P6059 property_type external-identifier +P6060 property_type external-identifier +P6061 property_type external-identifier +P6062 property_type external-identifier +P6063 property_type external-identifier +P6064 property_type external-identifier +P6065 property_type external-identifier +P6066 property_type external-identifier +P6067 property_type external-identifier +P6068 property_type external-identifier +P6069 property_type quantity +P6070 property_type external-identifier +P6071 property_type external-identifier +P6072 property_type string +P6073 property_type quantity +P6075 property_type quantity +P6076 property_type quantity +P6077 property_type external-identifier +P6078 property_type external-identifier +P6079 property_type external-identifier +P6080 property_type external-identifier +P6081 property_type external-identifier +P6082 property_type external-identifier +P6083 property_type external-identifier +P6084 property_type item +P6086 property_type item +P6087 property_type item +P6088 property_type quantity +P6089 property_type quantity +P6090 property_type external-identifier +P6091 property_type external-identifier +P6092 property_type external-identifier +P6093 property_type external-identifier +P6094 property_type external-identifier +P6095 property_type item +P6096 property_type external-identifier +P6097 property_type external-identifier +P6098 property_type external-identifier +P6099 property_type item +P6100 property_type external-identifier +P6101 property_type external-identifier +P6102 property_type external-identifier +P6103 property_type external-identifier +P6104 property_type item +P6105 property_type external-identifier +P6106 property_type item +P6107 property_type url +P6108 property_type url +P6109 property_type external-identifier +P6110 property_type external-identifier +P6111 property_type external-identifier +P6112 property_type item +P6113 property_type external-identifier +P6114 property_type external-identifier +P6115 property_type external-identifier +P6116 property_type item +P6117 property_type external-identifier +P6118 property_type item +P6119 property_type external-identifier +P6120 property_type external-identifier +P6122 property_type external-identifier +P6123 property_type external-identifier +P6124 property_type external-identifier +P7379 property_type quantity +P7380 property_type string +P7381 property_type external-identifier +P7382 property_type external-identifier +P7383 property_type string +P7384 property_type external-identifier +P7387 property_type external-identifier +P7388 property_type external-identifier +P7389 property_type external-identifier +P7390 property_type external-identifier +P7391 property_type quantity +P7395 property_type external-identifier +P7396 property_type external-identifier +P7397 property_type external-identifier +P7398 property_type external-identifier +P7399 property_type external-identifier +P7400 property_type external-identifier +P7401 property_type external-identifier +P7402 property_type external-identifier +P7403 property_type external-identifier +P7404 property_type external-identifier +P7405 property_type external-identifier +P7406 property_type item +P7407 property_type string +P7408 property_type external-identifier +P7409 property_type external-identifier +P7410 property_type external-identifier +P7411 property_type external-identifier +P7412 property_type external-identifier +P7413 property_type external-identifier +P7414 property_type external-identifier +P7415 property_type string +P7416 property_type string +P7417 property_type string +P7418 property_type string +P7419 property_type item +P7420 property_type string +P7421 property_type string +P7422 property_type quantity +P7423 property_type external-identifier +P7425 property_type external-identifier +P7427 property_type external-identifier +P7428 property_type external-identifier +P7429 property_type external-identifier +P7430 property_type external-identifier +P7431 property_type external-identifier +P7432 property_type external-identifier +P7433 property_type external-identifier +P7434 property_type external-identifier +P7435 property_type external-identifier +P7436 property_type external-identifier +P7437 property_type external-identifier +P7438 property_type external-identifier +P7439 property_type external-identifier +P7440 property_type external-identifier +P7441 property_type external-identifier +P7442 property_type item +P7443 property_type quantity +P7444 property_type external-identifier +P7445 property_type external-identifier +P7446 property_type external-identifier +P7447 property_type external-identifier +P7448 property_type external-identifier +P7449 property_type external-identifier +P7450 property_type external-identifier +P7451 property_type external-identifier +P7452 property_type item +P7453 property_type external-identifier +P7454 property_type external-identifier +P7455 property_type external-identifier +P7456 property_type external-identifier +P7457 property_type string +P7458 property_type external-identifier +P7459 property_type external-identifier +P7460 property_type external-identifier +P7461 property_type external-identifier +P7462 property_type quantity +P7463 property_type external-identifier +P7464 property_type external-identifier +P7465 property_type external-identifier +P7466 property_type external-identifier +P7467 property_type external-identifier +P7468 property_type external-identifier +P7469 property_type item +P7470 property_type string +P7471 property_type external-identifier +P7472 property_type external-identifier +P7473 property_type external-identifier +P7474 property_type external-identifier +P7475 property_type external-identifier +P7476 property_type external-identifier +P7477 property_type external-identifier +P7478 property_type string +P7479 property_type item +P7480 property_type external-identifier +P7481 property_type item +P7482 property_type item +P7483 property_type external-identifier +P7484 property_type external-identifier +P7485 property_type external-identifier +P6125 property_type quantity +P6126 property_type external-identifier +P6127 property_type external-identifier +P6128 property_type external-identifier +P6130 property_type external-identifier +P6131 property_type external-identifier +P6132 property_type external-identifier +P6133 property_type external-identifier +P6134 property_type external-identifier +P6135 property_type external-identifier +P6136 property_type external-identifier +P6137 property_type external-identifier +P6138 property_type external-identifier +P6139 property_type external-identifier +P6140 property_type external-identifier +P6141 property_type external-identifier +P6142 property_type external-identifier +P6143 property_type external-identifier +P6144 property_type external-identifier +P6145 property_type external-identifier +P6146 property_type external-identifier +P6147 property_type external-identifier +P6148 property_type external-identifier +P6149 property_type item +P6150 property_type external-identifier +P6151 property_type external-identifier +P6152 property_type external-identifier +P6153 property_type item +P6154 property_type external-identifier +P6155 property_type external-identifier +P6156 property_type external-identifier +P6157 property_type external-identifier +P6158 property_type external-identifier +P6159 property_type external-identifier +P6160 property_type external-identifier +P6161 property_type external-identifier +P6162 property_type external-identifier +P6163 property_type external-identifier +P6164 property_type external-identifier +P6165 property_type external-identifier +P6166 property_type item +P6167 property_type external-identifier +P6168 property_type external-identifier +P6169 property_type external-identifier +P6170 property_type external-identifier +P6171 property_type external-identifier +P6172 property_type external-identifier +P6173 property_type external-identifier +P6174 property_type external-identifier +P6175 property_type external-identifier +P6176 property_type external-identifier +P6177 property_type external-identifier +P6178 property_type external-identifier +P6179 property_type external-identifier +P6180 property_type external-identifier +P6181 property_type external-identifier +P6182 property_type external-identifier +P6183 property_type external-identifier +P6184 property_type item +P6185 property_type item +P6186 property_type item +P6187 property_type external-identifier +P6188 property_type external-identifier +P6189 property_type external-identifier +P6190 property_type external-identifier +P6191 property_type item +P6192 property_type external-identifier +P6193 property_type item +P6194 property_type external-identifier +P6195 property_type item +P6196 property_type external-identifier +P6197 property_type external-identifier +P6198 property_type external-identifier +P6199 property_type external-identifier +P6200 property_type external-identifier +P6201 property_type external-identifier +P6202 property_type external-identifier +P6204 property_type external-identifier +P6205 property_type external-identifier +P6206 property_type external-identifier +P6208 property_type monolingualtext +P6209 property_type external-identifier +P6210 property_type external-identifier +P6211 property_type external-identifier +P6212 property_type item +P6213 property_type external-identifier +P6214 property_type external-identifier +P6215 property_type external-identifier +P6216 property_type item +P6217 property_type external-identifier +P6218 property_type external-identifier +P6219 property_type external-identifier +P6220 property_type external-identifier +P6221 property_type external-identifier +P6222 property_type external-identifier +P6223 property_type external-identifier +P6224 property_type item +P6225 property_type external-identifier +P6226 property_type external-identifier +P6227 property_type external-identifier +P6542 property_type external-identifier +P6543 property_type quantity +P6544 property_type quantity +P6545 property_type quantity +P6546 property_type quantity +P6547 property_type quantity +P6548 property_type external-identifier +P6549 property_type external-identifier +P6550 property_type external-identifier +P6551 property_type external-identifier +P6552 property_type external-identifier +P6553 property_type string +P6554 property_type external-identifier +P6555 property_type external-identifier +P6556 property_type external-identifier +P6557 property_type external-identifier +P6558 property_type external-identifier +P6559 property_type external-identifier +P6560 property_type external-identifier +P6561 property_type external-identifier +P6562 property_type external-identifier +P6563 property_type item +P6564 property_type external-identifier +P6565 property_type external-identifier +P6566 property_type external-identifier +P6567 property_type external-identifier +P6568 property_type item +P6569 property_type item +P6570 property_type quantity +P6571 property_type string +P6572 property_type external-identifier +P6573 property_type external-identifier +P6574 property_type external-identifier +P6575 property_type external-identifier +P6576 property_type external-identifier +P6577 property_type external-identifier +P6578 property_type external-identifier +P6579 property_type external-identifier +P6580 property_type external-identifier +P6581 property_type external-identifier +P6582 property_type external-identifier +P6583 property_type external-identifier +P6584 property_type external-identifier +P6585 property_type external-identifier +P6586 property_type string +P6587 property_type item +P6589 property_type quantity +P6590 property_type quantity +P6591 property_type quantity +P6592 property_type string +P6593 property_type string +P6594 property_type external-identifier +P6595 property_type external-identifier +P6596 property_type external-identifier +P6597 property_type external-identifier +P6598 property_type external-identifier +P6599 property_type external-identifier +P6600 property_type external-identifier +P6601 property_type external-identifier +P6602 property_type external-identifier +P6603 property_type external-identifier +P6604 property_type string +P6605 property_type external-identifier +P6606 property_type item +P6607 property_type monolingualtext +P6608 property_type item +P6609 property_type property +P6610 property_type external-identifier +P6611 property_type external-identifier +P6612 property_type external-identifier +P6613 property_type external-identifier +P6614 property_type external-identifier +P6615 property_type external-identifier +P6616 property_type external-identifier +P6617 property_type external-identifier +P6618 property_type external-identifier +P6619 property_type external-identifier +P6620 property_type external-identifier +P6621 property_type external-identifier +P6622 property_type external-identifier +P6623 property_type external-identifier +P6624 property_type external-identifier +P6625 property_type external-identifier +P6626 property_type external-identifier +P6627 property_type external-identifier +P6628 property_type external-identifier +P6629 property_type external-identifier +P6630 property_type external-identifier +P6631 property_type external-identifier +P6632 property_type external-identifier +P6633 property_type external-identifier +P6634 property_type external-identifier +P6635 property_type external-identifier +P6636 property_type external-identifier +P6637 property_type external-identifier +P6639 property_type quantity +P6640 property_type external-identifier +P6641 property_type external-identifier +P6643 property_type external-identifier +P6644 property_type external-identifier +P7486 property_type item +P7487 property_type external-identifier +P7488 property_type external-identifier +P7489 property_type external-identifier +P7490 property_type external-identifier +P7491 property_type external-identifier +P7492 property_type external-identifier +P7493 property_type external-identifier +P7494 property_type external-identifier +P7495 property_type external-identifier +P7496 property_type external-identifier +P7497 property_type external-identifier +P7498 property_type external-identifier +P7499 property_type external-identifier +P7500 property_type item +P7501 property_type item +P7502 property_type external-identifier +P7503 property_type external-identifier +P7504 property_type external-identifier +P7505 property_type external-identifier +P7506 property_type external-identifier +P7507 property_type external-identifier +P7508 property_type item +P7509 property_type external-identifier +P7510 property_type url +P7511 property_type external-identifier +P7512 property_type external-identifier +P7513 property_type external-identifier +P7514 property_type item +P7515 property_type external-identifier +P7516 property_type external-identifier +P7517 property_type external-identifier +P7518 property_type external-identifier +P7519 property_type external-identifier +P7520 property_type external-identifier +P7521 property_type external-identifier +P7522 property_type external-identifier +P7523 property_type external-identifier +P7524 property_type external-identifier +P7525 property_type external-identifier +P7526 property_type external-identifier +P7527 property_type quantity +P7528 property_type item +P7529 property_type external-identifier +P7530 property_type external-identifier +P7531 property_type external-identifier +P7532 property_type string +P7533 property_type external-identifier +P7534 property_type external-identifier +P7535 property_type monolingualtext +P7536 property_type external-identifier +P7537 property_type external-identifier +P7538 property_type external-identifier +P7539 property_type external-identifier +P7540 property_type external-identifier +P7541 property_type external-identifier +P7542 property_type external-identifier +P7543 property_type external-identifier +P7544 property_type external-identifier +P7545 property_type external-identifier +P7546 property_type external-identifier +P7547 property_type external-identifier +P7548 property_type external-identifier +P7549 property_type external-identifier +P7550 property_type external-identifier +P7551 property_type external-identifier +P7552 property_type external-identifier +P7553 property_type external-identifier +P7554 property_type external-identifier +P7555 property_type external-identifier +P7556 property_type external-identifier +P7558 property_type external-identifier +P7559 property_type external-identifier +P7560 property_type external-identifier +P7561 property_type item +P7562 property_type external-identifier +P7563 property_type external-identifier +P7564 property_type external-identifier +P7565 property_type external-identifier +P7566 property_type external-identifier +P7567 property_type external-identifier +P7568 property_type external-identifier +P7569 property_type url +P7570 property_type external-identifier +P7571 property_type external-identifier +P7572 property_type external-identifier +P7573 property_type item +P7574 property_type external-identifier +P7575 property_type external-identifier +P7576 property_type external-identifier +P7577 property_type external-identifier +P7578 property_type external-identifier +P7579 property_type external-identifier +P7580 property_type external-identifier +P7581 property_type string +P7582 property_type item +P7583 property_type external-identifier +P7584 property_type quantity +P7585 property_type external-identifier +P7586 property_type external-identifier +P6645 property_type external-identifier +P6646 property_type external-identifier +P6647 property_type external-identifier +P6648 property_type string +P6649 property_type external-identifier +P6650 property_type external-identifier +P6652 property_type external-identifier +P6653 property_type external-identifier +P6654 property_type external-identifier +P6655 property_type string +P6656 property_type external-identifier +P6657 property_type item +P6658 property_type item +P6659 property_type external-identifier +P6660 property_type external-identifier +P6661 property_type external-identifier +P6662 property_type external-identifier +P6663 property_type external-identifier +P6664 property_type external-identifier +P6665 property_type external-identifier +P6666 property_type external-identifier +P6667 property_type external-identifier +P6668 property_type external-identifier +P6669 property_type external-identifier +P6670 property_type string +P6671 property_type external-identifier +P6672 property_type external-identifier +P6673 property_type external-identifier +P6674 property_type external-identifier +P6676 property_type external-identifier +P6677 property_type external-identifier +P6678 property_type external-identifier +P6679 property_type external-identifier +P6680 property_type external-identifier +P6681 property_type external-identifier +P6682 property_type external-identifier +P6683 property_type external-identifier +P6684 property_type item +P6685 property_type string +P6686 property_type string +P6687 property_type external-identifier +P6688 property_type external-identifier +P6689 property_type external-identifier +P6690 property_type external-identifier +P6691 property_type external-identifier +P6692 property_type external-identifier +P6693 property_type external-identifier +P6694 property_type external-identifier +P6695 property_type quantity +P6696 property_type external-identifier +P6697 property_type quantity +P6698 property_type external-identifier +P6699 property_type external-identifier +P6700 property_type external-identifier +P6701 property_type external-identifier +P6702 property_type external-identifier +P6703 property_type external-identifier +P6704 property_type external-identifier +P6705 property_type external-identifier +P6706 property_type external-identifier +P6707 property_type quantity +P6708 property_type quantity +P6709 property_type string +P6710 property_type quantity +P6711 property_type quantity +P6712 property_type string +P6713 property_type external-identifier +P6714 property_type external-identifier +P6715 property_type external-identifier +P6716 property_type external-identifier +P6717 property_type external-identifier +P6718 property_type item +P6719 property_type string +P6720 property_type external-identifier +P6721 property_type external-identifier +P6722 property_type external-identifier +P6723 property_type external-identifier +P6724 property_type external-identifier +P6725 property_type external-identifier +P6726 property_type external-identifier +P6727 property_type external-identifier +P6728 property_type external-identifier +P6729 property_type external-identifier +P6730 property_type external-identifier +P6731 property_type item +P6732 property_type external-identifier +P6733 property_type string +P6734 property_type external-identifier +P6735 property_type external-identifier +P6736 property_type external-identifier +P6737 property_type external-identifier +P6738 property_type external-identifier +P6739 property_type external-identifier +P6740 property_type external-identifier +P6741 property_type external-identifier +P6742 property_type external-identifier +P6743 property_type external-identifier +P6744 property_type external-identifier +P6745 property_type external-identifier +P6746 property_type external-identifier +P7587 property_type external-identifier +P7588 property_type time +P7589 property_type time +P7590 property_type external-identifier +P7591 property_type external-identifier +P7592 property_type external-identifier +P7593 property_type external-identifier +P7594 property_type external-identifier +P7595 property_type external-identifier +P7596 property_type external-identifier +P7597 property_type external-identifier +P7598 property_type string +P7599 property_type string +P7600 property_type item +P7601 property_type item +P7602 property_type external-identifier +P7603 property_type item +P7604 property_type item +P7605 property_type string +P7606 property_type external-identifier +P7607 property_type external-identifier +P7608 property_type external-identifier +P7609 property_type external-identifier +P7610 property_type external-identifier +P7611 property_type external-identifier +P7612 property_type external-identifier +P7613 property_type external-identifier +P7614 property_type external-identifier +P7615 property_type external-identifier +P7616 property_type external-identifier +P7617 property_type external-identifier +P7618 property_type external-identifier +P7619 property_type external-identifier +P7620 property_type external-identifier +P7621 property_type external-identifier +P7622 property_type external-identifier +P7623 property_type external-identifier +P7624 property_type external-identifier +P7625 property_type external-identifier +P7626 property_type external-identifier +P7627 property_type external-identifier +P7630 property_type external-identifier +P7631 property_type external-identifier +P7632 property_type external-identifier +P7633 property_type external-identifier +P7634 property_type external-identifier +P7635 property_type external-identifier +P7636 property_type external-identifier +P7637 property_type external-identifier +P7638 property_type external-identifier +P7639 property_type external-identifier +P7641 property_type external-identifier +P7642 property_type external-identifier +P7643 property_type item +P7644 property_type external-identifier +P7645 property_type external-identifier +P7646 property_type external-identifier +P7647 property_type external-identifier +P7648 property_type external-identifier +P7649 property_type external-identifier +P7650 property_type external-identifier +P7651 property_type external-identifier +P7652 property_type external-identifier +P7653 property_type external-identifier +P7654 property_type external-identifier +P7655 property_type external-identifier +P7656 property_type external-identifier +P7657 property_type external-identifier +P7658 property_type external-identifier +P7659 property_type external-identifier +P7660 property_type external-identifier +P7661 property_type external-identifier +P7662 property_type external-identifier +P7663 property_type external-identifier +P7665 property_type external-identifier +P7666 property_type external-identifier +P7667 property_type external-identifier +P7668 property_type quantity +P7669 property_type external-identifier +P7670 property_type external-identifier +P7671 property_type external-identifier +P7672 property_type external-identifier +P7673 property_type external-identifier +P7674 property_type external-identifier +P7675 property_type external-identifier +P7676 property_type external-identifier +P7677 property_type external-identifier +P7678 property_type external-identifier +P7679 property_type external-identifier +P7680 property_type external-identifier +P7681 property_type external-identifier +P7682 property_type external-identifier +P7683 property_type external-identifier +P7684 property_type external-identifier +P7685 property_type external-identifier +P7686 property_type external-identifier +P7687 property_type external-identifier +P7688 property_type external-identifier +P7689 property_type external-identifier +P7690 property_type external-identifier +P7691 property_type external-identifier +P7692 property_type external-identifier +P7693 property_type external-identifier +P7694 property_type external-identifier +P7695 property_type external-identifier +P7696 property_type external-identifier +P7697 property_type external-identifier +P7698 property_type external-identifier +P7699 property_type external-identifier +P7700 property_type external-identifier +P7701 property_type external-identifier +P7702 property_type external-identifier +P7703 property_type external-identifier +P7704 property_type external-identifier +P7705 property_type url +P7706 property_type string +P7707 property_type url +P7708 property_type external-identifier +P7709 property_type external-identifier +P7710 property_type external-identifier +P7711 property_type external-identifier +P7712 property_type external-identifier +P7713 property_type external-identifier +P7714 property_type external-identifier +P7715 property_type external-identifier +P7716 property_type external-identifier +P7717 property_type external-identifier +P7718 property_type external-identifier +P7719 property_type item +P7720 property_type external-identifier +P7721 property_type external-identifier +P7722 property_type external-identifier +P7723 property_type external-identifier +P7724 property_type external-identifier +P7725 property_type quantity +P7726 property_type external-identifier +P7727 property_type item +P7729 property_type external-identifier +P7730 property_type external-identifier +P7731 property_type external-identifier +P7732 property_type external-identifier +P7733 property_type external-identifier +P7734 property_type external-identifier +P7735 property_type external-identifier +P7736 property_type external-identifier +P7737 property_type external-identifier +P7738 property_type external-identifier +P7739 property_type external-identifier +P7740 property_type external-identifier +P7741 property_type external-identifier +P7742 property_type external-identifier +P7743 property_type external-identifier +P7744 property_type external-identifier +P7745 property_type external-identifier +P7746 property_type external-identifier +P7747 property_type external-identifier +P7748 property_type external-identifier +P7749 property_type external-identifier +P7750 property_type external-identifier +P7751 property_type external-identifier +P7752 property_type external-identifier +P7753 property_type external-identifier +P7754 property_type external-identifier +P7755 property_type external-identifier +P7756 property_type external-identifier +P7757 property_type external-identifier +P7758 property_type external-identifier +P7759 property_type external-identifier +P7760 property_type external-identifier +P7761 property_type external-identifier +P7762 property_type external-identifier +P7763 property_type item +P7764 property_type external-identifier +P7765 property_type external-identifier +P7766 property_type external-identifier +P7767 property_type item +P7768 property_type external-identifier +P7769 property_type external-identifier +P7770 property_type quantity +P7771 property_type external-identifier +P7772 property_type external-identifier +P7773 property_type external-identifier +P7774 property_type external-identifier +P7775 property_type external-identifier +P7776 property_type external-identifier +P7777 property_type external-identifier +P7778 property_type external-identifier +P7779 property_type item +P7780 property_type external-identifier +P7781 property_type item +P7782 property_type item +P7783 property_type external-identifier +P7784 property_type external-identifier +P7785 property_type external-identifier +P7786 property_type external-identifier +P7787 property_type quantity +P7788 property_type external-identifier +P7789 property_type external-identifier +P7790 property_type external-identifier +P7791 property_type external-identifier P6747 property_type external-identifier P6748 property_type external-identifier P6749 property_type external-identifier @@ -6712,7 +6800,7 @@ P6820 property_type external-identifier P6821 property_type external-identifier P6822 property_type external-identifier P6823 property_type external-identifier -P6824 property_type string +P6824 property_type property P6825 property_type external-identifier P6826 property_type quantity P6827 property_type external-identifier @@ -6725,118 +6813,118 @@ P6833 property_type monolingualtext P6835 property_type string P6836 property_type external-identifier P6837 property_type external-identifier -P6838 property_type external-identifier -P6839 property_type external-identifier -P6840 property_type item -P6841 property_type external-identifier -P6842 property_type external-identifier -P6843 property_type external-identifier -P6844 property_type external-identifier -P6845 property_type external-identifier -P6846 property_type external-identifier -P6847 property_type external-identifier -P6848 property_type external-identifier -P6849 property_type external-identifier -P6331 property_type external-identifier -P6332 property_type external-identifier -P6333 property_type monolingualtext -P6334 property_type external-identifier -P6335 property_type external-identifier -P6336 property_type external-identifier -P6337 property_type external-identifier -P6338 property_type item -P6339 property_type item -P6340 property_type external-identifier -P6341 property_type external-identifier -P6342 property_type external-identifier -P6343 property_type quantity -P6344 property_type quantity -P6346 property_type monolingualtext -P6347 property_type external-identifier -P6348 property_type external-identifier -P6349 property_type external-identifier -P6350 property_type external-identifier -P6351 property_type external-identifier -P6352 property_type external-identifier -P6353 property_type external-identifier -P6354 property_type quantity -P6355 property_type external-identifier -P6356 property_type external-identifier -P6357 property_type external-identifier -P6358 property_type external-identifier -P6359 property_type external-identifier -P6360 property_type external-identifier -P6361 property_type external-identifier -P6362 property_type external-identifier -P6363 property_type url -P6364 property_type item -P6365 property_type item -P6366 property_type external-identifier -P6367 property_type external-identifier -P6368 property_type external-identifier -P6369 property_type external-identifier -P6370 property_type external-identifier -P6371 property_type external-identifier -P6372 property_type external-identifier -P6373 property_type external-identifier -P6374 property_type external-identifier -P6375 property_type monolingualtext -P6376 property_type external-identifier -P6377 property_type external-identifier -P6378 property_type url -P6379 property_type item -P6381 property_type external-identifier -P6382 property_type external-identifier -P6383 property_type external-identifier -P6384 property_type external-identifier -P6385 property_type external-identifier -P6386 property_type external-identifier -P6387 property_type external-identifier -P6388 property_type external-identifier -P6389 property_type external-identifier -P6390 property_type external-identifier -P6391 property_type external-identifier -P6392 property_type external-identifier -P6394 property_type external-identifier -P6395 property_type external-identifier -P6398 property_type external-identifier -P6399 property_type external-identifier -P6400 property_type external-identifier -P6401 property_type external-identifier -P6402 property_type external-identifier -P6403 property_type external-identifier -P6404 property_type external-identifier -P6405 property_type external-identifier -P6406 property_type external-identifier -P6407 property_type external-identifier -P6408 property_type external-identifier -P6409 property_type external-identifier -P6410 property_type external-identifier -P6411 property_type external-identifier -P6412 property_type external-identifier -P6413 property_type external-identifier -P6414 property_type external-identifier -P6415 property_type external-identifier -P6416 property_type external-identifier -P6417 property_type external-identifier -P6418 property_type external-identifier -P6419 property_type external-identifier -P6420 property_type external-identifier -P6421 property_type external-identifier -P6422 property_type external-identifier -P6423 property_type external-identifier -P6424 property_type string -P6425 property_type external-identifier -P6426 property_type item -P6427 property_type monolingualtext -P6428 property_type external-identifier -P6429 property_type external-identifier -P6430 property_type external-identifier -P6431 property_type external-identifier -P6432 property_type string -P6433 property_type external-identifier -P6434 property_type external-identifier -P6436 property_type external-identifier +P6838 property_type external-identifier +P6839 property_type external-identifier +P6840 property_type item +P6841 property_type external-identifier +P6842 property_type external-identifier +P6843 property_type external-identifier +P6844 property_type external-identifier +P6845 property_type external-identifier +P6846 property_type external-identifier +P6847 property_type external-identifier +P6848 property_type external-identifier +P6849 property_type external-identifier +P7792 property_type external-identifier +P7793 property_type string +P7794 property_type external-identifier +P7795 property_type external-identifier +P7796 property_type external-identifier +P7797 property_type external-identifier +P7798 property_type external-identifier +P7799 property_type external-identifier +P7800 property_type external-identifier +P7801 property_type external-identifier +P7802 property_type external-identifier +P7803 property_type external-identifier +P7804 property_type external-identifier +P7805 property_type external-identifier +P7806 property_type external-identifier +P7807 property_type external-identifier +P7808 property_type external-identifier +P7809 property_type external-identifier +P7810 property_type external-identifier +P7811 property_type external-identifier +P7812 property_type external-identifier +P7813 property_type external-identifier +P7814 property_type external-identifier +P7815 property_type external-identifier +P7816 property_type external-identifier +P7817 property_type external-identifier +P7818 property_type external-identifier +P7819 property_type external-identifier +P7820 property_type external-identifier +P7821 property_type external-identifier +P7822 property_type external-identifier +P7823 property_type external-identifier +P7824 property_type external-identifier +P7825 property_type external-identifier +P7826 property_type external-identifier +P7827 property_type external-identifier +P7828 property_type external-identifier +P7829 property_type external-identifier +P7830 property_type external-identifier +P7831 property_type external-identifier +P7832 property_type external-identifier +P7834 property_type external-identifier +P7835 property_type external-identifier +P7836 property_type external-identifier +P7837 property_type external-identifier +P7838 property_type external-identifier +P7839 property_type external-identifier +P7840 property_type external-identifier +P7841 property_type external-identifier +P7842 property_type external-identifier +P7843 property_type external-identifier +P7844 property_type external-identifier +P7845 property_type external-identifier +P7846 property_type external-identifier +P7847 property_type external-identifier +P7848 property_type external-identifier +P7849 property_type external-identifier +P7850 property_type external-identifier +P7851 property_type external-identifier +P7852 property_type external-identifier +P7853 property_type external-identifier +P7854 property_type external-identifier +P7855 property_type string +P7856 property_type external-identifier +P7857 property_type external-identifier +P7858 property_type external-identifier +P7859 property_type external-identifier +P7860 property_type external-identifier +P7861 property_type item +P7862 property_type quantity +P7863 property_type quantity +P7864 property_type external-identifier +P7865 property_type external-identifier +P7866 property_type external-identifier +P7867 property_type item +P7868 property_type external-identifier +P7869 property_type external-identifier +P7870 property_type external-identifier +P7871 property_type external-identifier +P7872 property_type external-identifier +P7873 property_type external-identifier +P7874 property_type external-identifier +P7875 property_type external-identifier +P7876 property_type external-identifier +P7877 property_type external-identifier +P7878 property_type external-identifier +P7879 property_type external-identifier +P7880 property_type external-identifier +P7881 property_type external-identifier +P7882 property_type external-identifier +P7883 property_type external-identifier +P7884 property_type external-identifier +P7885 property_type external-identifier +P7886 property_type external-identifier +P7887 property_type quantity +P7888 property_type item +P7889 property_type external-identifier +P7890 property_type url +P7891 property_type external-identifier +P7892 property_type external-identifier P6850 property_type external-identifier P6851 property_type external-identifier P6852 property_type external-identifier @@ -7037,6 +7125,106 @@ P7055 property_type external-identifier P7056 property_type external-identifier P7057 property_type external-identifier P7058 property_type external-identifier +P7893 property_type external-identifier +P7894 property_type external-identifier +P7895 property_type external-identifier +P7896 property_type external-identifier +P7897 property_type external-identifier +P7898 property_type external-identifier +P7899 property_type external-identifier +P7900 property_type external-identifier +P7901 property_type external-identifier +P7902 property_type external-identifier +P7903 property_type item +P7904 property_type item +P7905 property_type external-identifier +P7906 property_type external-identifier +P7907 property_type external-identifier +P7908 property_type external-identifier +P7909 property_type external-identifier +P7910 property_type external-identifier +P7911 property_type external-identifier +P7912 property_type external-identifier +P7913 property_type external-identifier +P7914 property_type external-identifier +P7915 property_type external-identifier +P7916 property_type external-identifier +P7917 property_type external-identifier +P7918 property_type external-identifier +P7919 property_type external-identifier +P7920 property_type external-identifier +P7921 property_type external-identifier +P7922 property_type external-identifier +P7923 property_type external-identifier +P7924 property_type external-identifier +P7925 property_type external-identifier +P7926 property_type external-identifier +P7927 property_type external-identifier +P7928 property_type external-identifier +P7929 property_type external-identifier +P7930 property_type url +P7931 property_type external-identifier +P7932 property_type external-identifier +P7934 property_type external-identifier +P7935 property_type external-identifier +P7936 property_type item +P7937 property_type item +P7938 property_type item +P7939 property_type external-identifier +P7940 property_type external-identifier +P7941 property_type external-identifier +P7942 property_type external-identifier +P7943 property_type external-identifier +P7944 property_type external-identifier +P7945 property_type external-identifier +P7946 property_type external-identifier +P7947 property_type external-identifier +P7948 property_type external-identifier +P7949 property_type external-identifier +P7950 property_type external-identifier +P7951 property_type external-identifier +P7952 property_type external-identifier +P7953 property_type external-identifier +P7954 property_type external-identifier +P7955 property_type external-identifier +P7956 property_type external-identifier +P7957 property_type external-identifier +P7958 property_type external-identifier +P7959 property_type item +P7960 property_type external-identifier +P7961 property_type external-identifier +P7962 property_type external-identifier +P7963 property_type external-identifier +P7964 property_type string +P7965 property_type external-identifier +P7966 property_type external-identifier +P7967 property_type external-identifier +P7968 property_type external-identifier +P7969 property_type external-identifier +P7970 property_type external-identifier +P7971 property_type quantity +P7972 property_type external-identifier +P7973 property_type string +P7974 property_type external-identifier +P7975 property_type external-identifier +P7976 property_type external-identifier +P7977 property_type external-identifier +P7978 property_type external-identifier +P7979 property_type external-identifier +P7980 property_type external-identifier +P7981 property_type external-identifier +P7982 property_type external-identifier +P7983 property_type external-identifier +P7984 property_type item +P7985 property_type external-identifier +P7986 property_type external-identifier +P7987 property_type external-identifier +P7988 property_type external-identifier +P7989 property_type external-identifier +P7990 property_type external-identifier +P7991 property_type external-identifier +P7992 property_type external-identifier +P7993 property_type external-identifier P7059 property_type external-identifier P7060 property_type external-identifier P7063 property_type external-identifier @@ -7137,6 +7325,106 @@ P7166 property_type external-identifier P7167 property_type item P7168 property_type external-identifier P7169 property_type item +P7994 property_type external-identifier +P7995 property_type external-identifier +P7996 property_type external-identifier +P7997 property_type external-identifier +P7998 property_type external-identifier +P7999 property_type external-identifier +P8000 property_type string +P8001 property_type item +P8002 property_type external-identifier +P8003 property_type external-identifier +P8004 property_type item +P8005 property_type item +P8006 property_type item +P8007 property_type external-identifier +P8008 property_type external-identifier +P8009 property_type string +P8010 property_type quantity +P8011 property_type quantity +P8012 property_type external-identifier +P8013 property_type external-identifier +P8014 property_type external-identifier +P8015 property_type external-identifier +P8016 property_type external-identifier +P8017 property_type string +P8018 property_type external-identifier +P8019 property_type external-identifier +P8020 property_type external-identifier +P8021 property_type external-identifier +P8022 property_type external-identifier +P8023 property_type external-identifier +P8024 property_type external-identifier +P8025 property_type external-identifier +P8026 property_type item +P8027 property_type external-identifier +P8028 property_type external-identifier +P8029 property_type external-identifier +P8030 property_type item +P8031 property_type item +P8032 property_type item +P8033 property_type external-identifier +P8034 property_type external-identifier +P8035 property_type external-identifier +P8036 property_type external-identifier +P8037 property_type external-identifier +P8038 property_type external-identifier +P8039 property_type external-identifier +P8040 property_type external-identifier +P8041 property_type external-identifier +P8042 property_type external-identifier +P8043 property_type external-identifier +P8044 property_type external-identifier +P8045 property_type item +P8046 property_type string +P8047 property_type item +P8048 property_type external-identifier +P8049 property_type quantity +P8050 property_type external-identifier +P8051 property_type external-identifier +P8052 property_type external-identifier +P8053 property_type external-identifier +P8054 property_type string +P8055 property_type external-identifier +P8056 property_type external-identifier +P8057 property_type external-identifier +P8058 property_type item +P8059 property_type external-identifier +P8060 property_type external-identifier +P8061 property_type external-identifier +P8062 property_type external-identifier +P8063 property_type external-identifier +P8064 property_type external-identifier +P8065 property_type external-identifier +P8066 property_type external-identifier +P8067 property_type external-identifier +P8068 property_type external-identifier +P8069 property_type external-identifier +P8070 property_type external-identifier +P8071 property_type external-identifier +P8072 property_type external-identifier +P8073 property_type external-identifier +P8074 property_type external-identifier +P8075 property_type external-identifier +P8076 property_type external-identifier +P8077 property_type external-identifier +P8078 property_type external-identifier +P8079 property_type external-identifier +P8080 property_type external-identifier +P8081 property_type external-identifier +P8082 property_type external-identifier +P8083 property_type external-identifier +P8084 property_type external-identifier +P8085 property_type external-identifier +P8086 property_type external-identifier +P8087 property_type external-identifier +P8088 property_type external-identifier +P8089 property_type external-identifier +P8090 property_type external-identifier +P8091 property_type external-identifier +P8092 property_type external-identifier +P8093 property_type quantity P7170 property_type external-identifier P7171 property_type external-identifier P7172 property_type external-identifier @@ -7237,203 +7525,3 @@ P7274 property_type external-identifier P7275 property_type external-identifier P7276 property_type external-identifier P7277 property_type external-identifier -P7278 property_type external-identifier -P7279 property_type external-identifier -P7280 property_type external-identifier -P7281 property_type external-identifier -P7282 property_type external-identifier -P7283 property_type external-identifier -P7284 property_type external-identifier -P7285 property_type external-identifier -P7286 property_type external-identifier -P7287 property_type external-identifier -P7288 property_type external-identifier -P7289 property_type external-identifier -P7290 property_type string -P7291 property_type external-identifier -P7292 property_type external-identifier -P7293 property_type external-identifier -P7294 property_type url -P7295 property_type time -P7296 property_type external-identifier -P7297 property_type quantity -P7298 property_type external-identifier -P7299 property_type external-identifier -P7300 property_type external-identifier -P7301 property_type external-identifier -P7302 property_type external-identifier -P7303 property_type external-identifier -P7304 property_type external-identifier -P7305 property_type external-identifier -P7306 property_type external-identifier -P7307 property_type external-identifier -P7308 property_type external-identifier -P7309 property_type item -P7310 property_type external-identifier -P7311 property_type external-identifier -P7312 property_type external-identifier -P7313 property_type external-identifier -P7314 property_type external-identifier -P7315 property_type string -P7316 property_type quantity -P7317 property_type external-identifier -P7318 property_type external-identifier -P7319 property_type external-identifier -P7320 property_type external-identifier -P7321 property_type external-identifier -P7322 property_type external-identifier -P7323 property_type external-identifier -P7324 property_type external-identifier -P7325 property_type external-identifier -P7326 property_type external-identifier -P7327 property_type item -P7328 property_type quantity -P7329 property_type external-identifier -P7330 property_type string -P7331 property_type external-identifier -P7332 property_type external-identifier -P7333 property_type external-identifier -P7334 property_type external-identifier -P7335 property_type external-identifier -P7336 property_type external-identifier -P7337 property_type external-identifier -P7338 property_type string -P7339 property_type external-identifier -P7340 property_type external-identifier -P7341 property_type external-identifier -P7342 property_type external-identifier -P7343 property_type external-identifier -P7344 property_type external-identifier -P7345 property_type external-identifier -P7346 property_type external-identifier -P7347 property_type url -P7348 property_type external-identifier -P7349 property_type external-identifier -P7350 property_type external-identifier -P7351 property_type external-identifier -P7352 property_type external-identifier -P7353 property_type external-identifier -P7354 property_type external-identifier -P7355 property_type external-identifier -P7356 property_type external-identifier -P7357 property_type external-identifier -P7358 property_type external-identifier -P7359 property_type external-identifier -P7360 property_type external-identifier -P7361 property_type external-identifier -P7362 property_type external-identifier -P7363 property_type external-identifier -P7364 property_type external-identifier -P7365 property_type external-identifier -P7366 property_type external-identifier -P7367 property_type item -P7368 property_type external-identifier -P7369 property_type external-identifier -P7370 property_type external-identifier -P7371 property_type external-identifier -P7372 property_type external-identifier -P7374 property_type item -P7375 property_type url -P7376 property_type item -P7377 property_type item -P7378 property_type item -P7379 property_type quantity -P7380 property_type string -P7381 property_type external-identifier -P7382 property_type external-identifier -P7383 property_type string -P7384 property_type external-identifier -P7387 property_type external-identifier -P7388 property_type external-identifier -P7389 property_type external-identifier -P7390 property_type external-identifier -P7391 property_type quantity -P7395 property_type external-identifier -P7396 property_type external-identifier -P7397 property_type external-identifier -P7398 property_type external-identifier -P7399 property_type external-identifier -P7400 property_type external-identifier -P7401 property_type external-identifier -P7402 property_type external-identifier -P7403 property_type external-identifier -P7404 property_type external-identifier -P7405 property_type external-identifier -P7406 property_type item -P7407 property_type string -P7408 property_type external-identifier -P7409 property_type external-identifier -P7410 property_type external-identifier -P7411 property_type external-identifier -P7412 property_type external-identifier -P7413 property_type external-identifier -P7414 property_type external-identifier -P7415 property_type string -P7416 property_type string -P7417 property_type string -P7418 property_type string -P7419 property_type item -P7420 property_type string -P7421 property_type string -P7422 property_type quantity -P7423 property_type external-identifier -P7425 property_type external-identifier -P7427 property_type external-identifier -P7428 property_type external-identifier -P7429 property_type external-identifier -P7430 property_type external-identifier -P7431 property_type external-identifier -P7432 property_type external-identifier -P7433 property_type external-identifier -P7434 property_type external-identifier -P7435 property_type external-identifier -P7436 property_type external-identifier -P7437 property_type external-identifier -P7438 property_type external-identifier -P7439 property_type external-identifier -P7440 property_type external-identifier -P7441 property_type external-identifier -P7442 property_type item -P7443 property_type quantity -P7444 property_type external-identifier -P7445 property_type external-identifier -P7446 property_type external-identifier -P7447 property_type external-identifier -P7448 property_type external-identifier -P7449 property_type external-identifier -P7450 property_type external-identifier -P7451 property_type external-identifier -P7452 property_type item -P7453 property_type external-identifier -P7454 property_type external-identifier -P7455 property_type external-identifier -P7456 property_type external-identifier -P7457 property_type string -P7458 property_type external-identifier -P7459 property_type external-identifier -P7460 property_type external-identifier -P7461 property_type external-identifier -P7462 property_type quantity -P7463 property_type external-identifier -P7464 property_type external-identifier -P7465 property_type external-identifier -P7466 property_type external-identifier -P7467 property_type external-identifier -P7468 property_type external-identifier -P7469 property_type item -P7470 property_type string -P7471 property_type external-identifier -P7472 property_type external-identifier -P7473 property_type external-identifier -P7474 property_type external-identifier -P7475 property_type external-identifier -P7476 property_type external-identifier -P7477 property_type external-identifier -P7478 property_type string -P7479 property_type item -P7480 property_type external-identifier -P7481 property_type item -P7482 property_type item -P7483 property_type external-identifier -P7484 property_type external-identifier -P7485 property_type external-identifier diff --git a/examples/obtain_wikidata_properties.py b/examples/obtain_wikidata_properties.py index 4c3c3fe89..9e049c372 100644 --- a/examples/obtain_wikidata_properties.py +++ b/examples/obtain_wikidata_properties.py @@ -35,7 +35,8 @@ def get_results(endpoint_url, query): "Monolingualtext": "monolingualtext", "String": "string", "ExternalId":"external-identifier", - "Url":"url" + "Url":"url", + "WikibaseProperty":"property" } results = get_results(endpoint_url, query) diff --git a/kgtk/json_generator.py b/kgtk/json_generator.py index 87cddf7de..f7710b341 100644 --- a/kgtk/json_generator.py +++ b/kgtk/json_generator.py @@ -1,65 +1,3 @@ - -# labels: - -# "P1855": { -# "type": "property", -# "datatype": "wikibase-item", -# "id": "P1855", -# "labels": { -# "en": { "language": "en", "value": "Wikidata property example" } -# } -# }, - -# "Q20898239": { -# "type": "item", -# "id": "Q20898239", -# "labels": { -# "en": { -# "language": "en", -# "value": "The Hitch Hiker's Guide to the Galaxy (1979 edition)" -# } -# } -# }, - -# info: - -# "Q42": { -# "pageid": 138, -# "ns": 0, -# "title": "Q42", -# "lastrevid": 1175340593, -# "modified": "2020-05-06T19:28:31Z", -# "type": "item", -# "id": "Q42" -# } - -# "P31": { -# "pageid": 3918489, -# "ns": 120, -# "title": "Property:P31", -# "lastrevid": 1179261400, -# "modified": "2020-05-11T22:37:17Z", -# "type": "property", -# "datatype": "wikibase-item", -# "id": "P31" -# } - -# misc: - -# "Q42": { -# "pageid": 138, -# "ns": 0, -# "title": "Q42", -# "lastrevid": 1175340593, -# "modified": "2020-05-06T19:28:31Z", -# "type": "item", -# "id": "Q42", -# "labels": { "en": { "language": "en", "value": "Douglas Adams" } }, -# "descriptions:{}, -# "aliases":{}, -# "claims":{}, -# "sitelinks:{} -# } import sys import re import json diff --git a/kgtk/triple_generator.py b/kgtk/triple_generator.py index 2b6edd5f0..d8016957f 100644 --- a/kgtk/triple_generator.py +++ b/kgtk/triple_generator.py @@ -52,7 +52,8 @@ def __init__( "monolingualtext": MonolingualText, "string": StringValue, "external-identifier": ExternalIdentifier, - "url": StringValue + "url": StringValue, + "property":WDProperty, } self.prop_types = self.set_properties(prop_file) self.label_set, self.alias_set, self.description_set = self.set_sets( @@ -220,6 +221,8 @@ def generate_normal_triple( edge_type = self.prop_types[label] if edge_type == Item: object = WDItem(TripleGenerator.replace_illegal_string(node2)) + elif edge_type == WDProperty: + object = WDProperty(TripleGenerator.replace_illegal_string(node2)) elif edge_type == TimeValue: # https://www.wikidata.org/wiki/Help:Dates # ^2013-01-01T00:00:00Z/11 @@ -312,20 +315,19 @@ def generate_normal_triple( else: # treat everything else as stringValue object = StringValue(node2) + + if type(object) == WDItem or type(object) == WDProperty: + self.doc.kg.add_subject(object) + if is_qualifier_edge: # edge: e8 p9 ^2013-01-01T00:00:00Z/11 # create qualifier edge on previous STATEMENT and return the updated STATEMENT - if type(object) == WDItem: - self.doc.kg.add_subject(object) self.to_append_statement.add_qualifier(label, object) # TODO maybe can be positioned better for the edge cases. self.doc.kg.add_subject(self.to_append_statement) - else: # edge: q1 p8 q2 e8 # create brand new property edge and replace STATEMENT - if type(object) == WDItem: - self.doc.kg.add_subject(object) if self.truthy: self.to_append_statement = entity.add_truthy_statement( label, object, statement_id=e_id) if self.use_id else entity.add_truthy_statement(label, object) From 161ade006a7a6d9a0a001d50743ebc53aa5c01cc Mon Sep 17 00:00:00 2001 From: Rongpeng Date: Tue, 19 May 2020 09:10:23 -0700 Subject: [PATCH 010/217] added property type for WDProperty generation --- kgtk/triple_generator.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kgtk/triple_generator.py b/kgtk/triple_generator.py index d8016957f..a9382a907 100644 --- a/kgtk/triple_generator.py +++ b/kgtk/triple_generator.py @@ -222,7 +222,7 @@ def generate_normal_triple( if edge_type == Item: object = WDItem(TripleGenerator.replace_illegal_string(node2)) elif edge_type == WDProperty: - object = WDProperty(TripleGenerator.replace_illegal_string(node2)) + object = WDProperty(TripleGenerator.replace_illegal_string(node2),self.prop_types[node2]) elif edge_type == TimeValue: # https://www.wikidata.org/wiki/Help:Dates # ^2013-01-01T00:00:00Z/11 From 574e52295043e67f0d856c341b7751017b31a3fc Mon Sep 17 00:00:00 2001 From: Rongpeng Date: Thu, 21 May 2020 09:21:12 -0700 Subject: [PATCH 011/217] PEP8 --- examples/obtain_wikidata_properties.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/examples/obtain_wikidata_properties.py b/examples/obtain_wikidata_properties.py index 9e049c372..9775cd5b2 100644 --- a/examples/obtain_wikidata_properties.py +++ b/examples/obtain_wikidata_properties.py @@ -40,9 +40,9 @@ def get_results(endpoint_url, query): } results = get_results(endpoint_url, query) -with open("../data/wikidataProps.tsv", "w") as fp: +with open("wikidata_props.tsv", "w") as fp: for prop in results["results"]["bindings"]: - pID = prop["property"]["value"].split("/")[-1] - pType = prop["propertyType"]["value"].split("#")[-1] - pType = dataTypeMappings.get(pType,"string") - fp.write(pID + "\tproperty_type\t" + pType+"\n") \ No newline at end of file + p_id = prop["property"]["value"].split("/")[-1] + p_type = prop["propertyType"]["value"].split("#")[-1] + p_type = dataTypeMappings.get(p_type,"string") + fp.write(p_id + "\tproperty_type\t" + p_type+"\n") \ No newline at end of file From 71a2777ea16ec8d323a72161e3a62a25863e44a1 Mon Sep 17 00:00:00 2001 From: Rongpeng Date: Thu, 21 May 2020 10:56:02 -0700 Subject: [PATCH 012/217] 1. closed unclosed file in test_triple_generation 2. unified Triple Generator in the Generator Class --- kgtk/cli/generate_wikidata_triples.py | 10 +- kgtk/generator.py | 475 ++++++++++++++++++++++++++ kgtk/json_generator.py | 4 - kgtk/tests/test_triple_generation.py | 36 +- kgtk/triple_generator.py | 22 +- 5 files changed, 513 insertions(+), 34 deletions(-) create mode 100644 kgtk/generator.py diff --git a/kgtk/cli/generate_wikidata_triples.py b/kgtk/cli/generate_wikidata_triples.py index 474ee51d5..77c01ccef 100644 --- a/kgtk/cli/generate_wikidata_triples.py +++ b/kgtk/cli/generate_wikidata_triples.py @@ -1,7 +1,5 @@ """ -Generate wikidata triples from two edge files: -1. A statement and qualifier edge file that contains an edge id, node1, label, and node2 -2. A kgtk file that contains the mapping information from property identifier to its datatype +Generate wikidata triples from two a kgtk edge file """ @@ -137,7 +135,8 @@ def run( ): # import modules locally import gzip - from kgtk.triple_generator import TripleGenerator + # from kgtk.triple_generator import TripleGenerator + from kgtk.generator import TripleGenerator import sys generator = TripleGenerator( prop_file=prop_file, @@ -147,7 +146,8 @@ def run( n=n, ignore=ignore, truthy=truthy, - use_id=use_id + use_id=use_id, + dest_fp=sys.stdout ) # process stdin if use_gz: diff --git a/kgtk/generator.py b/kgtk/generator.py new file mode 100644 index 000000000..f8852b438 --- /dev/null +++ b/kgtk/generator.py @@ -0,0 +1,475 @@ +import sys +import re +from typing import TextIO +from kgtk.exceptions import KGTKException +from etk.wikidata.entity import WDItem, WDProperty +from etk.etk_module import ETKModule +from etk.etk import ETK +from etk.knowledge_graph import KGSchema +from etk.wikidata import wiki_namespaces +from etk.wikidata.statement import Rank +import rfc3986 +import json +from etk.wikidata.value import ( + Precision, + Item, + StringValue, + TimeValue, + QuantityValue, + MonolingualText, + GlobeCoordinate, + ExternalIdentifier, + URLValue +) +from etk.knowledge_graph.node import LiteralType + +BAD_CHARS = [":", "&", ",", " ", + "(", ")", "\'", '\"', "/", "\\", "[", "]", ";", "|"] + +class Generator: + def __init__(self,**kwargs): + label_set = kwargs.pop("label_set") + description_set = kwargs.pop("description_set") + alias_set = kwargs.pop("alias_set") + n = int(kwargs.pop("n")) + # set sets + self.set_sets(label_set,description_set,alias_set) + # column name order_map + self.order_map = {} + self.n = n + def serialize(self): + raise NotImplemented + def finalize(self): + self.serialize() + def set_sets(self,label_set:str,description_set:str,alias_set:str): + self.label_set, self.alias_set, self.description_set = set(label_set.split(",")), set(alias_set.split(",")), set(description_set.split(",")) + + @staticmethod + def process_text_string(string: str) -> [str, str]: + ''' + Language detection is removed from triple generation. The user is responsible for detect the language + ''' + if len(string) == 0: + return ["", "en"] + if "@" in string: + res = string.split("@") + text_string = "@".join(res[:-1]).replace('"', "").replace("'", "") + lang = res[-1].replace('"', '').replace("'", "") + if len(lang) > 2: + lang = "en" + else: + text_string = string.replace('"', "").replace("'", "") + lang = "en" + return [text_string, lang] + + @staticmethod + def is_invalid_decimal_string(num_string)->bool: + ''' + if a decimal string too small, return True TODO + ''' + if num_string == None: + return False + else: + if abs(float(num_string)) < 0.0001 and float(num_string) != 0: + return True + return False + + @staticmethod + def is_valid_uri_with_scheme_and_host(uri: str)->bool: + ''' + https://github.com/python-hyper/rfc3986/issues/30#issuecomment-461661883 + ''' + try: + uri = rfc3986.URIReference.from_string(uri) + rfc3986.validators.Validator().require_presence_of( + "scheme", "host").check_validity_of("scheme", "host").validate(uri) + return True + except: + return False + + @staticmethod + def clean_number_string(num:str)->str: + from numpy import format_float_positional + if num == None: + return None + else: + return format_float_positional(float(num), trim="-") + + @staticmethod + def replace_illegal_string(s: str) -> str: + ''' + this function serves as the last gate of keeping illegal characters outside of entity creation. + ''' + for char in BAD_CHARS: + s = s.replace(char, "_") + return s + +class TripleGenerator(Generator): + def __init__(self, **kwargs): + super().__init__(**kwargs) + prop_file = kwargs.pop("prop_file") + ignore = kwargs.pop("ignore") + dest_fp = kwargs.pop("dest_fp") + truthy = kwargs.pop("truthy") + use_id = kwargs.pop("use_id") + self.ignore = ignore + self.datatype_mapping = { + "item": Item, + "time": TimeValue, + "globe-coordinate": GlobeCoordinate, + "quantity": QuantityValue, + "monolingualtext": MonolingualText, + "string": StringValue, + "external-identifier": ExternalIdentifier, + "url": StringValue, + "property":WDProperty, + } + self.set_properties(prop_file) + self.fp = dest_fp + self.read_num_of_lines = 0 + if not self.ignore: + self.ignore_file = open("ignored.log", "w") + self.corrupted_statement_id = None + self.truthy = truthy + self.reset_etk_doc() + self.serialize_prefix() + self.yyyy_mm_dd_pattern = re.compile( + "[12]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])") + self.yyyy_pattern = re.compile("[12]\d{3}") + self.quantity_pattern = re.compile( + "([\+|\-]?[0-9]+\.?[0-9]*[e|E]?[\-]?[0-9]*)(?:\[([\+|\-]?[0-9]+\.?[0-9]*),([\+|\-]?[0-9]+\.?[0-9]*)\])?([U|Q](?:[0-9]+))?") + self.use_id = use_id + + def set_properties(self,prop_file:str): + self.datatype_mapping = { + "item": Item, + "time": TimeValue, + "globe-coordinate": GlobeCoordinate, + "quantity": QuantityValue, + "monolingualtext": MonolingualText, + "string": StringValue, + "external-identifier": ExternalIdentifier, + "url": StringValue, + "property":WDProperty, + } + with open(prop_file, "r") as fp: + props = fp.readlines() + self.prop_types = {} + for line in props[1:]: + node1, _, node2 = line.split("\t") + try: + self.prop_types[node1] = self.datatype_mapping[node2.strip()] + except: + if not self.ignore: + raise KGTKException( + "DataType {} of node {} is not supported.\n".format( + node2, node1 + ) + ) + + def _node_2_entity(self, node: str): + ''' + A node can be Qxxx or Pxxx, return the proper entity. + ''' + if node in self.prop_types: + entity = WDProperty(node, self.prop_types[node]) + else: + entity = WDItem(TripleGenerator.replace_illegal_string(node)) + return entity + + def reset_etk_doc(self, doc_id: str = "http://isi.edu/default-ns/projects"): + """ + reset the doc object and return it. Called at initialization and after outputting triples. + """ + kg_schema = KGSchema() + kg_schema.add_schema("@prefix : .", "ttl") + self.etk = ETK(kg_schema=kg_schema, modules=ETKModule) + self.doc = self.etk.create_document({}, doc_id=doc_id) + for k, v in wiki_namespaces.items(): + self.doc.kg.bind(k, v) + + def serialize(self): + """ + Seriealize the triples. Used a hack to avoid serializing the prefix again. + """ + docs = self.etk.process_ems(self.doc) + self.fp.write("\n\n".join( + docs[0].kg.serialize("ttl").split("\n\n")[1:])) + self.fp.flush() + self.reset() + + def serialize_prefix(self): + """ + This function should be called only once after the doc object is initialized. + In order to serialize the prefix at the very begining it has to be printed per the change of rdflib 4.2.2->5.0.0 + Relevent issue: https://github.com/RDFLib/rdflib/issues/965 + """ + for k, v in wiki_namespaces.items(): + line = "@prefix " + k + ": <" + v + "> .\n" + self.fp.write(line) + self.fp.write("\n") + self.fp.flush() + self.reset() + + def reset(self): + self.to_append_statement_id = None + self.to_append_statement = None + self.read_num_of_lines = 0 + self.reset_etk_doc() + + def generate_label_triple(self, node1: str, label: str, node2: str) -> bool: + entity = self._node_2_entity(node1) + text_string, lang = TripleGenerator.process_text_string(node2) + entity.add_label(text_string, lang=lang) + self.doc.kg.add_subject(entity) + return True + + def generate_description_triple(self, node1: str, label: str, node2: str) -> bool: + entity = self._node_2_entity(node1) + text_string, lang = TripleGenerator.process_text_string(node2) + entity.add_description(text_string, lang=lang) + self.doc.kg.add_subject(entity) + return True + + def generate_alias_triple(self, node1: str, label: str, node2: str) -> bool: + entity = self._node_2_entity(node1) + text_string, lang = TripleGenerator.process_text_string(node2) + entity.add_alias(text_string, lang=lang) + self.doc.kg.add_subject(entity) + return True + + def generate_prop_declaration_triple(self, node1: str, label: str, node2: str) -> bool: + # update the known prop_types + if node1 in self.prop_types: + raise KGTKException("Duplicated property definition of {} found!".format(node1)) + self.prop_types[node1] = node2 + prop = WDProperty(node1, self.datatype_mapping[node2]) + self.doc.kg.add_subject(prop) + return True + + def generate_normal_triple( + self, node1: str, label: str, node2: str, is_qualifier_edge: bool, e_id: str) -> bool: + if self.use_id: + e_id = TripleGenerator.replace_illegal_string(e_id) + entity = self._node_2_entity(node1) + # determine the edge type + edge_type = self.prop_types[label] + if edge_type == Item: + object = WDItem(TripleGenerator.replace_illegal_string(node2)) + elif edge_type == WDProperty: + object = WDProperty(TripleGenerator.replace_illegal_string(node2),self.prop_types[node2]) + elif edge_type == TimeValue: + # https://www.wikidata.org/wiki/Help:Dates + # ^2013-01-01T00:00:00Z/11 + # ^8000000-00-00T00:00:00Z/3 + if self.yyyy_mm_dd_pattern.match(node2): + try: + dateTimeString = node2 + object = TimeValue( + value=dateTimeString, # TODO + calendar=Item("Q1985727"), + precision=Precision.year, + time_zone=0, + ) + except: + return False + elif self.yyyy_pattern.match(node2): + try: + dateTimeString = node2 + "-01-01" + object = TimeValue( + value=dateTimeString, # TODO + calendar=Item("Q1985727"), + precision=Precision.year, + time_zone=0, + ) + except: + return False + else: + try: + dateTimeString, precision = node2[1:].split("/") + dateTimeString = dateTimeString[:-1] # remove "Z" + # 2016-00-00T00:00:00 case + if "-00-00" in dateTimeString: + dateTimeString = "-01-01".join( + dateTimeString.split("-00-00")) + elif dateTimeString[8:10] == "00": + dateTimeString = dateTimeString[:8] + \ + "01" + dateTimeString[10:] + object = TimeValue( + value=dateTimeString, + calendar=Item("Q1985727"), + precision=precision, + time_zone=0, + ) + except: + return False + + # TODO other than that, not supported. Creation of normal triple fails + + elif edge_type == GlobeCoordinate: + latitude, longitude = node2[1:].split("/") + latitude = float(latitude) + longitude = float(longitude) + object = GlobeCoordinate( + latitude, longitude, 0.0001, globe=Item("Q2")) # earth + + elif edge_type == QuantityValue: + # +70[+60,+80]Q743895 + + res = self.quantity_pattern.match(node2).groups() + amount, lower_bound, upper_bound, unit = res + + amount = TripleGenerator.clean_number_string(amount) + num_type = self.xsd_number_type(amount) + + lower_bound = TripleGenerator.clean_number_string(lower_bound) + upper_bound = TripleGenerator.clean_number_string(upper_bound) + if unit != None: + if upper_bound != None and lower_bound != None: + object = QuantityValue(amount, unit=Item( + unit), upper_bound=upper_bound, lower_bound=lower_bound, type=num_type) + else: + object = QuantityValue(amount, unit=Item(unit), type=num_type) + else: + if upper_bound != None and lower_bound != None: + object = QuantityValue( + amount, upper_bound=upper_bound, lower_bound=lower_bound, type=num_type) + else: + object = QuantityValue(amount, type=num_type) + + elif edge_type == MonolingualText: + text_string, lang = TripleGenerator.process_text_string(node2) + object = MonolingualText(text_string, lang) + elif edge_type == ExternalIdentifier: + object = ExternalIdentifier(node2) + elif edge_type == URLValue: + if TripleGenerator.is_valid_uri_with_scheme_and_host(node2): + object = URLValue(node2) + else: + return False + else: + # treat everything else as stringValue + object = StringValue(node2) + + if type(object) == WDItem or type(object) == WDProperty: + self.doc.kg.add_subject(object) + + if is_qualifier_edge: + # edge: e8 p9 ^2013-01-01T00:00:00Z/11 + # create qualifier edge on previous STATEMENT and return the updated STATEMENT + self.to_append_statement.add_qualifier(label, object) + # TODO maybe can be positioned better for the edge cases. + self.doc.kg.add_subject(self.to_append_statement) + else: + # edge: q1 p8 q2 e8 + # create brand new property edge and replace STATEMENT + if self.truthy: + self.to_append_statement = entity.add_truthy_statement( + label, object, statement_id=e_id) if self.use_id else entity.add_truthy_statement(label, object) + else: + self.to_append_statement = entity.add_statement( + label, object, statement_id=e_id) if self.use_id else entity.add_statement(label, object) + self.doc.kg.add_subject(entity) + return True + + def initialize_order_map(self, edge_list:list): + node1_index = edge_list.index("node1") + node2_index = edge_list.index("node2") + prop_index = edge_list.index("property") + id_index = edge_list.index("id") + if not all([node1_index > -1, node2_index > -1, prop_index > -1, id_index > -1]): + raise KGTKException( + "Header of kgtk file misses at least one of required column names: (node1, node2, property and id)") + else: + self.order_map["node1"] = node1_index + self.order_map["node2"] = node2_index + self.order_map["prop"] = prop_index + self.order_map["id"] = id_index + + def entry_point(self, line_number: int, edge: str): + """ + generates a list of two, the first element is the determination of the edge type using corresponding edge type + the second element is a bool indicating whether this is a valid property edge or qualifier edge. + Call corresponding downstream functions + """ + + edge_list = edge.strip("\n").split("\t") + if line_number == 1: + # initialize the order_map + self.initialize_order_map(edge_list) + return + + # use the order_map to map the node + node1 = edge_list[self.order_map["node1"]].strip() + node2 = edge_list[self.order_map["node2"]].strip() + prop = edge_list[self.order_map["prop"]].strip() + e_id = edge_list[self.order_map["id"]].strip() + if line_number == 2: + # by default a statement edge + is_qualifier_edge = False + # print("#Debug Info: ",line_number, self.to_append_statement_id, e_id, is_qualifier_edge,self.to_append_statement) + self.to_append_statement_id = e_id + self.corrupted_statement_id = None + else: + if node1 != self.to_append_statement_id: + # also a new statement edge + if self.read_num_of_lines >= self.n: + self.serialize() + is_qualifier_edge = False + # print("#Debug Info: ",line_number, self.to_append_statement_id, node1, is_qualifier_edge,self.to_append_statement) + self.to_append_statement_id = e_id + self.corrupted_statement_id = None + else: + # qualifier edge or property declaration edge + is_qualifier_edge = True + if self.corrupted_statement_id == e_id: + # Met a qualifier which associates with a corrupted statement + return + if prop != "type" and node1 != self.to_append_statement_id: + # 1. not a property declaration edge and + # 2. the current qualifier's node1 is not the latest property edge id, throw errors. + if not self.ignore: + raise KGTKException( + "Node1 {} at line {} doesn't agree with latest property edge id {}.\n".format( + node1, line_number, self.to_append_statement_id + ) + ) + if prop in self.label_set: + success = self.generate_label_triple(node1, prop, node2) + elif prop in self.description_set: + success = self.generate_description_triple(node1, prop, node2) + elif prop in self.alias_set: + success = self.generate_alias_triple(node1, prop, node2) + elif prop == "data_type": + # special edge of prop declaration + success = self.generate_prop_declaration_triple( + node1, prop, node2) + else: + if prop in self.prop_types: + success = self.generate_normal_triple( + node1, prop, node2, is_qualifier_edge, e_id) + else: + if not self.ignore: + raise KGTKException( + "property {}'s type is unknown at line {}.\n".format( + prop, line_number) + ) + success = False + if (not success) and (not is_qualifier_edge) and (not self.ignore): + # We have a corrupted edge here. + self.ignore_file.write( + "Corrupted statement at line number: {} with id {} with current corrupted id {}\n".format( + line_number, e_id, self.corrupted_statement_id)) + self.ignore_file.flush() + self.corrupted_statement_id = e_id + else: + self.read_num_of_lines += 1 + self.corrupted_statement_id = None + + @staticmethod + def xsd_number_type(num): + if isinstance(num, float) and 'e' in str(num).lower(): + return LiteralType.double + return LiteralType.decimal + + diff --git a/kgtk/json_generator.py b/kgtk/json_generator.py index f7710b341..f2efb4fb7 100644 --- a/kgtk/json_generator.py +++ b/kgtk/json_generator.py @@ -1,7 +1,6 @@ import sys import re import json -from time import sleep from kgtk.exceptions import KGTKException BAD_CHARS = [":", "-", "&", ",", " ", @@ -18,7 +17,6 @@ def __init__( label_set: str, alias_set: str, description_set: str, - use_gz:bool, # output_prefix:str="", n:int, ): @@ -43,7 +41,6 @@ def __init__( def entry_point(self,line_number, edge): # TODO # first version only handles statement, not qualifiers - # serialization edge_list = edge.strip("\n").split("\t") l = len(edge_list) @@ -447,7 +444,6 @@ def serialize(self): def finalize(self): # finalize the generator self.serialize() - return def set_json_dict(self): self.label_json_dict = {} diff --git a/kgtk/tests/test_triple_generation.py b/kgtk/tests/test_triple_generation.py index 91cc7e432..76125f826 100644 --- a/kgtk/tests/test_triple_generation.py +++ b/kgtk/tests/test_triple_generation.py @@ -1,5 +1,6 @@ import unittest -from kgtk.triple_generator import TripleGenerator +# from kgtk.triple_generator import TripleGenerator +from kgtk.generator import TripleGenerator from pathlib import Path @@ -9,16 +10,18 @@ def test_truthy_property_triple_generation(self): property_tsv_file = 'data/P10.tsv' wikidata_property_file = 'data/wikidata_properties.tsv' o = open('data/P10_truthy_tmp.ttl', 'w') - generator = TripleGenerator(wikidata_property_file, label_set='label', alias_set='aliases', + generator = TripleGenerator(prop_file = wikidata_property_file, label_set='label', alias_set='aliases', description_set='descriptions', ignore=True, n=100, truthy=True, use_id=True, dest_fp=o) - for line_num, edge in enumerate(open(property_tsv_file)): + fp = open(property_tsv_file) + for line_num, edge in enumerate(fp): if edge.startswith("#"): continue else: generator.entry_point(line_num + 1, edge) generator.finalize() o.close() + fp.close() f1 = open('data/P10_truthy.ttl') f2 = open('data/P10_truthy_tmp.ttl') self.assertEqual(f1.readlines(), f2.readlines()) @@ -31,15 +34,17 @@ def test_property_triple_generation(self): property_tsv_file = 'data/P10.tsv' wikidata_property_file = 'data/wikidata_properties.tsv' o = open('data/P10_not_truthy_tmp.ttl', 'w') - generator = TripleGenerator(wikidata_property_file, label_set='label', alias_set='aliases', + generator = TripleGenerator(prop_file = wikidata_property_file, label_set='label', alias_set='aliases', description_set='descriptions', ignore=True, n=100, truthy=False, use_id=True, dest_fp=o) - for line_num, edge in enumerate(open(property_tsv_file)): + fp = open(property_tsv_file) + for line_num, edge in enumerate(fp): if edge.startswith("#"): continue else: generator.entry_point(line_num + 1, edge) generator.finalize() + fp.close() o.close() f1 = open('data/P10_not_truthy.ttl') f2 = open('data/P10_not_truthy_tmp.ttl') @@ -53,10 +58,11 @@ def test_truthy_qnode_triple_generation(self): qnode_tsv_file = 'data/Q57160439.tsv' wikidata_property_file = 'data/wikidata_properties.tsv' o = open('data/Q57160439_truthy_tmp.ttl', 'w') - generator = TripleGenerator(wikidata_property_file, label_set='label', alias_set='aliases', + generator = TripleGenerator(prop_file = wikidata_property_file, label_set='label', alias_set='aliases', description_set='descriptions', ignore=True, n=100, truthy=True, use_id=True, dest_fp=o) - for line_num, edge in enumerate(open(qnode_tsv_file)): + fp = open(qnode_tsv_file) + for line_num, edge in enumerate(fp): if edge.startswith("#"): continue else: @@ -64,7 +70,7 @@ def test_truthy_qnode_triple_generation(self): generator.finalize() o.close() - + fp.close() f1 = open('data/Q57160439_truthy.ttl') f2 = open('data/Q57160439_truthy_tmp.ttl') self.assertEqual(f1.readlines(), f2.readlines()) @@ -77,16 +83,17 @@ def test_not_truthy_qnode_triple_generation(self): qnode_tsv_file = 'data/Q57160439.tsv' wikidata_property_file = 'data/wikidata_properties.tsv' o = open('data/Q57160439_not_truthy_tmp.ttl', 'w') - generator = TripleGenerator(wikidata_property_file, label_set='label', alias_set='aliases', + generator = TripleGenerator(prop_file = wikidata_property_file, label_set='label', alias_set='aliases', description_set='descriptions', ignore=True, n=100, truthy=False, use_id=True, dest_fp=o) - for line_num, edge in enumerate(open(qnode_tsv_file)): + fp = open(qnode_tsv_file) + for line_num, edge in enumerate(fp): if edge.startswith("#"): continue else: generator.entry_point(line_num + 1, edge) generator.finalize() - + fp.close() o.close() f1 = open('data/Q57160439_not_truthy.ttl') f2 = open('data/Q57160439_not_truthy_tmp.ttl') @@ -100,10 +107,11 @@ def test_triple_small_values(self): small_values_file = 'data/small_values.tsv' wikidata_property_file = 'data/wikidata_properties.tsv' o = open('data/small_values_tmp.ttl', 'w') - generator = TripleGenerator(wikidata_property_file, label_set='label', alias_set='aliases', + generator = TripleGenerator(prop_file = wikidata_property_file, label_set='label', alias_set='aliases', description_set='descriptions', ignore=True, n=100, truthy=True, use_id=True, dest_fp=o) - for line_num, edge in enumerate(open(small_values_file)): + fp = open(small_values_file) + for line_num, edge in enumerate(fp): if edge.startswith("#"): continue else: @@ -111,7 +119,7 @@ def test_triple_small_values(self): generator.finalize() o.close() - + fp.close() f1 = open('data/small_values.ttl') f2 = open('data/small_values_tmp.ttl') self.assertEqual(f1.readlines(), f2.readlines()) diff --git a/kgtk/triple_generator.py b/kgtk/triple_generator.py index b29374b92..4e32ae221 100644 --- a/kgtk/triple_generator.py +++ b/kgtk/triple_generator.py @@ -44,17 +44,6 @@ def __init__( ): from etk.wikidata.statement import Rank self.ignore = ignore - self.datatype_mapping = { - "item": Item, - "time": TimeValue, - "globe-coordinate": GlobeCoordinate, - "quantity": QuantityValue, - "monolingualtext": MonolingualText, - "string": StringValue, - "external-identifier": ExternalIdentifier, - "url": StringValue, - "property":WDProperty, - } self.prop_types = self.set_properties(prop_file) self.label_set, self.alias_set, self.description_set = self.set_sets( label_set, alias_set, description_set @@ -92,6 +81,17 @@ def _node_2_entity(self, node: str): return entity def set_properties(self, prop_file: str): + self.datatype_mapping = { + "item": Item, + "time": TimeValue, + "globe-coordinate": GlobeCoordinate, + "quantity": QuantityValue, + "monolingualtext": MonolingualText, + "string": StringValue, + "external-identifier": ExternalIdentifier, + "url": StringValue, + "property":WDProperty, + } with open(prop_file, "r") as fp: props = fp.readlines() prop_types = {} From f7f937493cd80e937a5430116156f4f53cc6e50d Mon Sep 17 00:00:00 2001 From: Rongpeng Date: Thu, 21 May 2020 13:29:24 -0700 Subject: [PATCH 013/217] unify json generator and triple generator in one file --- kgtk/cli/generate_mediawiki_jsons.py | 3 +- kgtk/generator.py | 456 +++++++++++++++++++++++-- kgtk/json_generator.py | 484 --------------------------- kgtk/triple_generator.py | 471 -------------------------- 4 files changed, 428 insertions(+), 986 deletions(-) delete mode 100644 kgtk/json_generator.py delete mode 100644 kgtk/triple_generator.py diff --git a/kgtk/cli/generate_mediawiki_jsons.py b/kgtk/cli/generate_mediawiki_jsons.py index c005e20cc..495a6d6e1 100644 --- a/kgtk/cli/generate_mediawiki_jsons.py +++ b/kgtk/cli/generate_mediawiki_jsons.py @@ -114,7 +114,7 @@ def run( n:int, ): # import modules locally - from kgtk.json_generator import JsonGenerator + from kgtk.generator import JsonGenerator import sys import gzip @@ -123,7 +123,6 @@ def run( alias_set=aliases, description_set=descriptions, prop_file=prop_file, - use_gz = use_gz, # ouput_prefix = ouput_prefix, n = n, ) diff --git a/kgtk/generator.py b/kgtk/generator.py index f8852b438..49d413202 100644 --- a/kgtk/generator.py +++ b/kgtk/generator.py @@ -37,6 +37,11 @@ def __init__(self,**kwargs): # column name order_map self.order_map = {} self.n = n + self.yyyy_mm_dd_pattern = re.compile( + "[12]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])") + self.yyyy_pattern = re.compile("[12]\d{3}") + self.quantity_pattern = re.compile( + "([\+|\-]?[0-9]+\.?[0-9]*[e|E]?[\-]?[0-9]*)(?:\[([\+|\-]?[0-9]+\.?[0-9]*),([\+|\-]?[0-9]+\.?[0-9]*)\])?([U|Q](?:[0-9]+))?") def serialize(self): raise NotImplemented def finalize(self): @@ -44,6 +49,20 @@ def finalize(self): def set_sets(self,label_set:str,description_set:str,alias_set:str): self.label_set, self.alias_set, self.description_set = set(label_set.split(",")), set(alias_set.split(",")), set(description_set.split(",")) + def initialize_order_map(self, edge_list:list): + node1_index = edge_list.index("node1") + node2_index = edge_list.index("node2") + prop_index = edge_list.index("property") + id_index = edge_list.index("id") + if not all([node1_index > -1, node2_index > -1, prop_index > -1, id_index > -1]): + raise KGTKException( + "Header of kgtk file misses at least one of required column names: (node1, node2, property and id)") + else: + self.order_map["node1"] = node1_index + self.order_map["node2"] = node2_index + self.order_map["prop"] = prop_index + self.order_map["id"] = id_index + @staticmethod def process_text_string(string: str) -> [str, str]: ''' @@ -113,17 +132,6 @@ def __init__(self, **kwargs): truthy = kwargs.pop("truthy") use_id = kwargs.pop("use_id") self.ignore = ignore - self.datatype_mapping = { - "item": Item, - "time": TimeValue, - "globe-coordinate": GlobeCoordinate, - "quantity": QuantityValue, - "monolingualtext": MonolingualText, - "string": StringValue, - "external-identifier": ExternalIdentifier, - "url": StringValue, - "property":WDProperty, - } self.set_properties(prop_file) self.fp = dest_fp self.read_num_of_lines = 0 @@ -133,11 +141,6 @@ def __init__(self, **kwargs): self.truthy = truthy self.reset_etk_doc() self.serialize_prefix() - self.yyyy_mm_dd_pattern = re.compile( - "[12]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])") - self.yyyy_pattern = re.compile("[12]\d{3}") - self.quantity_pattern = re.compile( - "([\+|\-]?[0-9]+\.?[0-9]*[e|E]?[\-]?[0-9]*)(?:\[([\+|\-]?[0-9]+\.?[0-9]*),([\+|\-]?[0-9]+\.?[0-9]*)\])?([U|Q](?:[0-9]+))?") self.use_id = use_id def set_properties(self,prop_file:str): @@ -372,19 +375,6 @@ def generate_normal_triple( self.doc.kg.add_subject(entity) return True - def initialize_order_map(self, edge_list:list): - node1_index = edge_list.index("node1") - node2_index = edge_list.index("node2") - prop_index = edge_list.index("property") - id_index = edge_list.index("id") - if not all([node1_index > -1, node2_index > -1, prop_index > -1, id_index > -1]): - raise KGTKException( - "Header of kgtk file misses at least one of required column names: (node1, node2, property and id)") - else: - self.order_map["node1"] = node1_index - self.order_map["node2"] = node2_index - self.order_map["prop"] = prop_index - self.order_map["id"] = id_index def entry_point(self, line_number: int, edge: str): """ @@ -473,3 +463,411 @@ def xsd_number_type(num): return LiteralType.decimal +class JsonGenerator(Generator): + def __init__(self,**kwargs): + super().__init__(**kwargs) + prop_file = kwargs.pop("prop_file") + self.output_prefix = "kgtk" + self.e_ids = set() + self.file_num = 0 + self.set_properties(prop_file) + self.set_json_file_names() + # curret dictionaries + self.set_json_dict() + + def entry_point(self,line_number, edge): + edge_list = edge.strip("\n").split("\t") + l = len(edge_list) + if line_number == 1: + # initialize the order_map + self.initialize_order_map(edge_list) + return + + node1 = edge_list[self.order_map["node1"]].strip() + node2 = edge_list[self.order_map["node2"]].strip() + prop = edge_list[self.order_map["prop"]].strip() + e_id = edge_list[self.order_map["id"]].strip() + self.e_ids.add(e_id) + if node1 in self.e_ids: + return #TODO not handling qualifiers + + # update info_json_dict + if node1 in self.prop_types: + self.update_info_json_dict(node1, self.prop_types[node1]) + else: + self.update_info_json_dict(node1, None) + + if prop in self.prop_types: + self.update_info_json_dict(prop,self.prop_types[prop]) + if self.prop_types[prop] == "wikibase-item": + self.update_info_json_dict(node2) + + # update label_json_dict + if prop in self.label_set: + self.update_label_json_dict(node1, prop, node2) + return + else : + # update with empty label + if node1 not in self.label_json_dict: + self.update_label_json_dict(node1, prop, None) + + # update alias and descriptions + if prop in self.description_set: + self.update_misc_json_dict(node1, prop, node2, line_number,"descriptions") + return + + if prop in self.alias_set: + self.update_misc_json_dict(node1, prop, node2, line_number,"aliases") + return + + # normal update for claims + self.update_misc_json_dict(node1,prop,node2,line_number,None) + return + + def update_label_json_dict(self,node1:str, prop:str, node2:str): + # for label_dict + if node1 not in self.prop_types: + label_type = "item" + self.label_json_dict[node1] = { + "type":label_type + } + else: + label_type = "property" + label_datatype = self.prop_types[node1] + self.label_json_dict[node1] = { + "type":label_type, + "datatype":label_datatype, + } + self.label_json_dict[node1]["id"] = node1 + self.label_json_dict[node1]["labels"] = {} + if node2 != None: + text_string, lang = JsonGenerator.process_text_string(node2) + self.label_json_dict[node1]["labels"][lang] = {"language":lang, "value": text_string} + return + + def update_info_json_dict(self, node:str,data_type = None): + # if node in self.info_json_dict: + # return + #TODO, not robust but no easy way to figure it out + if node.startswith("Q"): + self.info_json_dict[node] = { + "pageid":-1, + "ns":-1, + "title":node, + "lastrevid":"2000-01-01T00:00:00Z", #TODO + "type":"item", + "id":node} + elif node.startswith("P"): + self.info_json_dict[node] = { + "pageid":-1, + "ns":-1, + "title":"Property:"+node, + "lastrevid":"2000-01-01T00:00:00Z", + "type":"property", + "datatype":data_type, + "id":node} + else: + raise KGTKException("node {} is neither an entity nor a property.".format(node)) + def update_misc_json_dict(self, node1:str, prop:str, node2:str, line_number:int, field:str): + if node1 not in self.misc_json_dict: + self.misc_json_dict[node1] = {**self.label_json_dict[node1], **self.info_json_dict[node1]} + self.misc_json_dict[node1]["descriptions"] = {} + self.misc_json_dict[node1]["aliases"] = {} + self.misc_json_dict[node1]["claims"] = {} + self.misc_json_dict[node1]["sitelinks"] = {} + + if field == "descriptions": + description_text, lang = JsonGenerator.process_text_string(node2) + temp_des_dict = {lang:{"languange":lang,"value":description_text}} + self.misc_json_dict[node1]["descriptions"] = {**self.misc_json_dict[node1]["descriptions"], **temp_des_dict} + return + + if field == "aliases": + alias_text, lang = JsonGenerator.process_text_string(node2) + temp_alias_dict = {lang, {"languange": lang, "value":alias_text}} + if lang in self.misc_json_dict[node1]["aliases"]: + self.misc_json_dict[node1]["aliases"][lang].append(temp_alias_dict) + else: + self.misc_json_dict[node1]["aliases"][lang] = [temp_alias_dict] + return + + assert(field==None) #TODO better handling + + if prop not in self.prop_types: + raise KGTKException("property {} at line {} is not defined.".format(prop,line_number)) + + if prop not in self.misc_json_dict[node1]["claims"]: + self.misc_json_dict[node1]["claims"][prop] = [] + try: + if self.prop_types[prop] == "wikibase-item": + self.update_misc_json_dict_item(node1,prop,node2) + elif self.prop_types[prop] == "time": + self.update_misc_json_dict_time(node1,prop,node2) + elif self.prop_types[prop] == "globe-coordinate": + self.update_misc_json_dict_coordinate(node1,prop,node2) + elif self.prop_types[prop] == "quantity": + self.update_misc_json_dict_quantity(node1,prop,node2) + elif self.prop_types[prop] == "monolingualtext": + self.update_misc_json_dict_monolingualtext(node1,prop,node2) + elif self.prop_types[prop] == "string": + self.update_misc_json_dict_string(node1,prop,node2) + elif self.prop_types[prop] == "external-id": + self.update_misc_json_dict_external_id(node1,prop,node2) + elif self.prop_types[prop] == "url": + self.update_misc_json_dict_url(node1,prop,node2) + else: + raise KGTKException("property tyepe {} of property {} at line {} is not defined.".format(self.prop_types[prop],prop,line_number)) + except: + raise KGTKException("illegal edge at line {}.".format(line_number)) + def update_misc_json_dict_item(self,node1:str,prop:str,node2:str): + temp_item_dict = { + "mainsnak":{ + "snaktype":"value", + "property":prop, + "hash":"hashplaceholder", + "datavalue":{ + "value":{ + "entity-type":"item","numeric-id":0,"id":node2 # place holder for numeric id + }, + "type":"wikibase-entityid" + }, + "datatype":"wikibase-item" + }, + "type":"statement", + "id":"id-place-holder", + "rank":"normal", #TODO + "references":[], + "qualifiers":{} + } + self.misc_json_dict[node1]["claims"][prop].append(temp_item_dict) + return + def update_misc_json_dict_time(self,node1,prop,node2): + if self.yyyy_pattern.match(node2): + time_string = node2 + "-01-01" + precision = 9 + elif self.yyyy_mm_dd_pattern.match(node2): + time_string = node2 + precision = 11 + try: + time_string, precision = node2.split("/") + precision = int(precision) + except: + return # ignore the illegal time format for now + temp_time_dict = { + "mainsnak":{ + "snaktype":"value", + "property":prop, + "hash":"hashplaceholder", + "datavalue":{ + "value":{ + "time":time_string, + "timezone": 0, + "before": 0, + "after": 0, + "precision": precision, + "calendarmodel": "http://www.wikidata.org/entity/Q1985727" + }, + "type":"time" + }, + "datatype":"time" + }, + "type":"statement", + "id":"id-place-holder", + "rank":"normal", #TODO + "references":[], + "qualifiers":{} + } + self.misc_json_dict[node1]["claims"][prop].append(temp_time_dict) + return + def update_misc_json_dict_coordinate(self,node1,prop,node2): + latitude, longitude = node2[1:].split("/") + latitude = float(latitude) + longitude = float(longitude) + temp_coordinate_dict = { + "mainsnak":{ + "snaktype":"value", + "property":prop, + "hash":"hashplaceholder", + "datavalue":{ + "value":{ + "latitude":latitude, + "longitude": longitude, + "altitude": None, + "precision": 0.00027777777777778, # TODO + "globe": "http://www.wikidata.org/entity/Q2" + }, + "type":"globecoordinate" + }, + "datatype":"globecoordinate" + }, + "type":"statement", + "id":"id-place-holder", + "rank":"normal", #TODO + "references":[], + "qualifiers":{} + } + self.misc_json_dict[node1]["claims"][prop].append(temp_coordinate_dict) + return + def update_misc_json_dict_quantity(self,node1,prop,node2): + res = self.quantity_pattern.match(node2).groups() + amount, lower_bound, upper_bound, unit = res + amount = JsonGenerator.clean_number_string(amount) + lower_bound = JsonGenerator.clean_number_string(lower_bound) + upper_bound = JsonGenerator.clean_number_string(upper_bound) + unit = "http://www.wikidata.org/entity/" + unit if unit != None else None + temp_quantity_dict = { + "mainsnak":{ + "snaktype":"value", + "property":prop, + "hash":"hashplaceholder", + "datavalue":{ + "value":{ + "amount":amount, + "unit": unit, + "lowerBound":lower_bound, + "UpperBound":upper_bound + }, + "type":"quantity" + }, + "datatype":"quantity" + }, + "type":"statement", + "id":"id-place-holder", + "rank":"normal", #TODO + "references":[], + "qualifiers":{} + } + self.misc_json_dict[node1]["claims"][prop].append(temp_quantity_dict) + return + def update_misc_json_dict_monolingualtext(self,node1,prop,node2): + text_string, lang = JsonGenerator.process_text_string(node2) + temp_mono_dict ={ + "mainsnak":{ + "snaktype":"value", + "property":prop, + "hash":"hashplaceholder", + "datavalue":{ + "value":{ + "text":text_string, + "language":lang + }, + "type":"monolingualtext" + }, + "datatype":"monolingualtext" + }, + "type":"statement", + "id":"id-place-holder", + "rank":"normal", #TODO + "references":[], + "qualifiers":{} + } + self.misc_json_dict[node1]["claims"][prop].append(temp_mono_dict) + return + def update_misc_json_dict_string(self,node1,prop,node2): + string, lang = JsonGenerator.process_text_string(node2) + temp_string_dict = { + "mainsnak": { + "snaktype": "value", + "property": prop, + "hash": "hashplaceholder", + "datavalue": { "value": string, "type": "string" }, + "datatype": "string" + }, + "type": "statement", + "id": "id-place-holder", + "rank": "normal", + "references":[], + "qualifiers":{} + } + self.misc_json_dict[node1]["claims"][prop].append(temp_string_dict) + return + def update_misc_json_dict_external_id(self,node1,prop,node2): + temp_e_id_dict = {"mainsnak": { + "snaktype": "value", + "property": prop, + "hash": "hashplaceholder", + "datavalue": { "value": node2, "type": "string" }, + "datatype": "external-id" + }, + "type": "statement", + "id": "id-place-holder", + "rank": "normal", + "references":[], + "qualifiers":{}} + self.misc_json_dict[node1]["claims"][prop].append(temp_e_id_dict) + return + def update_misc_json_dict_url(self,node1,prop,node2): + temp_url_dict ={ + "mainsnak": { + "snaktype": "value", + "property": prop, + "hash": "hashplaceholder", + "datavalue": { + "value": node2, + "type": "string" + }, + "datatype": "url" + }, + "type": "statement", + "id": "id-place-holder", + "rank": "normal", + "references":[], + "qualifiers":{} + } + self.misc_json_dict[node1]["claims"][prop].append(temp_url_dict) + return + + def set_properties(self, prop_file:str): + datatype_mapping = { + "item": "wikibase-item", + "time": "time", + "globe-coordinate": "globe-coordinate", + "quantity": "quantity", + "monolingualtext": "monolingualtext", + "string": "string", + "external-identifier": "external-id", + "url": "url" + } + with open(prop_file, "r") as fp: + props = fp.readlines() + self.prop_types = {} + for line in props[1:]: + node1, _, node2 = line.split("\t") + try: + self.prop_types[node1] = datatype_mapping[node2.strip()] + except: + if not self.ignore: + raise KGTKException( + "DataType {} of node {} is not supported.\n".format( + node2, node1 + ) + ) + + def set_json_file_names(self): + self.file_num += 1 + prefix = self.output_prefix + "_" + str(self.file_num) + "_" + self.label_json_file = prefix + "labels.json" + self.misc_json_file = prefix + "misc.json" + self.info_json_file = prefix + "info.json" + + def set_json_dict(self): + self.label_json_dict = {} + self.misc_json_dict = {} + self.info_json_dict = {} + + def serialize(self): + ''' + serialize the dictionaries to the file pointer + ''' + with open(self.label_json_file,"w") as fp: + json.dump(self.label_json_dict,fp) + + with open(self.misc_json_file,"w") as fp: + json.dump(self.misc_json_dict,fp) + + with open(self.info_json_file,"w") as fp: + json.dump(self.info_json_dict,fp) + + # update dict and files + self.set_json_file_names() + self.set_json_dict() \ No newline at end of file diff --git a/kgtk/json_generator.py b/kgtk/json_generator.py deleted file mode 100644 index f2efb4fb7..000000000 --- a/kgtk/json_generator.py +++ /dev/null @@ -1,484 +0,0 @@ -import sys -import re -import json -from kgtk.exceptions import KGTKException - -BAD_CHARS = [":", "-", "&", ",", " ", - "(", ")", "\'", '\"', "/", "\\", "[", "]", ";", "|"] - -class JsonGenerator: - """ - A class to maintain the status of the generator - """ - - def __init__( - self, - prop_file: str, - label_set: str, - alias_set: str, - description_set: str, - # output_prefix:str="", - n:int, - ): - # indexing files - self.file_num = 0 - self.output_prefix = "kgtk" - # current output files - self.set_json_file_names() - # curret dictionaries - self.set_json_dict() - # TODO no qualifiers or references for version 1 - self.e_ids = set() - self.set_properties(prop_file) - self.set_sets(label_set, alias_set, description_set) - self.order_map = {} - self.quantity_pattern = re.compile( - "([\+|\-]?[0-9]+\.?[0-9]*[e|E]?[\-]?[0-9]*)(?:\[([\+|\-]?[0-9]+\.?[0-9]*),([\+|\-]?[0-9]+\.?[0-9]*)\])?([U|Q](?:[0-9]+))?") - self.yyyy_mm_dd_pattern = re.compile( - "[12]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])") - self.yyyy_pattern = re.compile("[12]\d{3}") - - def entry_point(self,line_number, edge): - # TODO - # first version only handles statement, not qualifiers - # serialization - edge_list = edge.strip("\n").split("\t") - l = len(edge_list) - if line_number == 1: - # initialize the order_map - node1_index = edge_list.index("node1") - node2_index = edge_list.index("node2") - prop_index = edge_list.index("property") - id_index = edge_list.index("id") - if not all([node1_index > -1, node2_index > -1, prop_index > -1, id_index > -1]): - raise KGTKException( - "Header of kgtk file misses at least one of required column names: (node1, node2, property and id)") - else: - self.order_map["node1"] = node1_index - self.order_map["node2"] = node2_index - self.order_map["prop"] = prop_index - self.order_map["id"] = id_index - return - - node1 = edge_list[self.order_map["node1"]].strip() - node2 = edge_list[self.order_map["node2"]].strip() - prop = edge_list[self.order_map["prop"]].strip() - e_id = edge_list[self.order_map["id"]].strip() - self.e_ids.add(e_id) - if node1 in self.e_ids: - return #TODO not handling qualifiers - - # update info_json_dict - if node1 in self.prop_types: - self.update_info_json_dict(node1, self.prop_types[node1]) - else: - self.update_info_json_dict(node1, None) - - if prop in self.prop_types: - self.update_info_json_dict(prop,self.prop_types[prop]) - if self.prop_types[prop] == "wikibase-item": - self.update_info_json_dict(node2) - - # update label_json_dict - if prop in self.label_set: - self.update_label_json_dict(node1, prop, node2) - return - else : - # update with empty label - if node1 not in self.label_json_dict: - self.update_label_json_dict(node1, prop, None) - - # update alias and descriptions - if prop in self.description_set: - self.update_misc_json_dict(node1, prop, node2, line_number,"descriptions") - return - - if prop in self.alias_set: - self.update_misc_json_dict(node1, prop, node2, line_number,"aliases") - return - - # normal update for claims - self.update_misc_json_dict(node1,prop,node2,line_number,None) - return - - def update_label_json_dict(self,node1:str, prop:str, node2:str): - # for label_dict - if node1 not in self.prop_types: - label_type = "item" - self.label_json_dict[node1] = { - "type":label_type - } - else: - label_type = "property" - label_datatype = self.prop_types[node1] - self.label_json_dict[node1] = { - "type":label_type, - "datatype":label_datatype, - } - self.label_json_dict[node1]["id"] = node1 - self.label_json_dict[node1]["labels"] = {} - if node2 != None: - text_string, lang = JsonGenerator.process_text_string(node2) - self.label_json_dict[node1]["labels"][lang] = {"language":lang, "value": text_string} - return - - def update_info_json_dict(self, node:str,data_type = None): - # if node in self.info_json_dict: - # return - #TODO, not robust but no easy way to figure it out - if node.startswith("Q"): - self.info_json_dict[node] = { - "pageid":-1, - "ns":-1, - "title":node, - "lastrevid":"2000-01-01T00:00:00Z", #TODO - "type":"item", - "id":node} - elif node.startswith("P"): - self.info_json_dict[node] = { - "pageid":-1, - "ns":-1, - "title":"Property:"+node, - "lastrevid":"2000-01-01T00:00:00Z", - "type":"property", - "datatype":data_type, - "id":node} - else: - raise KGTKException("node {} is neither an entity nor a property.".format(node)) - def update_misc_json_dict(self, node1:str, prop:str, node2:str, line_number:int, field:str): - if node1 not in self.misc_json_dict: - self.misc_json_dict[node1] = {**self.label_json_dict[node1], **self.info_json_dict[node1]} - self.misc_json_dict[node1]["descriptions"] = {} - self.misc_json_dict[node1]["aliases"] = {} - self.misc_json_dict[node1]["claims"] = {} - self.misc_json_dict[node1]["sitelinks"] = {} - - if field == "descriptions": - description_text, lang = JsonGenerator.process_text_string(node2) - temp_des_dict = {lang:{"languange":lang,"value":description_text}} - self.misc_json_dict[node1]["descriptions"] = {**self.misc_json_dict[node1]["descriptions"], **temp_des_dict} - return - - if field == "aliases": - alias_text, lang = JsonGenerator.process_text_string(node2) - temp_alias_dict = {lang, {"languange": lang, "value":alias_text}} - if lang in self.misc_json_dict[node1]["aliases"]: - self.misc_json_dict[node1]["aliases"][lang].append(temp_alias_dict) - else: - self.misc_json_dict[node1]["aliases"][lang] = [temp_alias_dict] - return - - assert(field==None) #TODO better handling - - if prop not in self.prop_types: - raise KGTKException("property {} at line {} is not defined.".format(prop,line_number)) - - if prop not in self.misc_json_dict[node1]["claims"]: - self.misc_json_dict[node1]["claims"][prop] = [] - try: - if self.prop_types[prop] == "wikibase-item": - self.update_misc_json_dict_item(node1,prop,node2) - elif self.prop_types[prop] == "time": - self.update_misc_json_dict_time(node1,prop,node2) - elif self.prop_types[prop] == "globe-coordinate": - self.update_misc_json_dict_coordinate(node1,prop,node2) - elif self.prop_types[prop] == "quantity": - self.update_misc_json_dict_quantity(node1,prop,node2) - elif self.prop_types[prop] == "monolingualtext": - self.update_misc_json_dict_monolingualtext(node1,prop,node2) - elif self.prop_types[prop] == "string": - self.update_misc_json_dict_string(node1,prop,node2) - elif self.prop_types[prop] == "external-id": - self.update_misc_json_dict_external_id(node1,prop,node2) - elif self.prop_types[prop] == "url": - self.update_misc_json_dict_url(node1,prop,node2) - else: - raise KGTKException("property tyepe {} of property {} at line {} is not defined.".format(self.prop_types[prop],prop,line_number)) - except: - raise KGTKException("illegal edge at line {}.".format(line_number)) - def update_misc_json_dict_item(self,node1:str,prop:str,node2:str): - temp_item_dict = { - "mainsnak":{ - "snaktype":"value", - "property":prop, - "hash":"hashplaceholder", - "datavalue":{ - "value":{ - "entity-type":"item","numeric-id":0,"id":node2 # place holder for numeric id - }, - "type":"wikibase-entityid" - }, - "datatype":"wikibase-item" - }, - "type":"statement", - "id":"id-place-holder", - "rank":"normal", #TODO - "references":[], - "qualifiers":{} - } - self.misc_json_dict[node1]["claims"][prop].append(temp_item_dict) - return - def update_misc_json_dict_time(self,node1,prop,node2): - if self.yyyy_pattern.match(node2): - time_string = node2 + "-01-01" - precision = 9 - elif self.yyyy_mm_dd_pattern.match(node2): - time_string = node2 - precision = 11 - try: - time_string, precision = node2.split("/") - precision = int(precision) - except: - return # ignore the illegal time format for now - temp_time_dict = { - "mainsnak":{ - "snaktype":"value", - "property":prop, - "hash":"hashplaceholder", - "datavalue":{ - "value":{ - "time":time_string, - "timezone": 0, - "before": 0, - "after": 0, - "precision": precision, - "calendarmodel": "http://www.wikidata.org/entity/Q1985727" - }, - "type":"time" - }, - "datatype":"time" - }, - "type":"statement", - "id":"id-place-holder", - "rank":"normal", #TODO - "references":[], - "qualifiers":{} - } - self.misc_json_dict[node1]["claims"][prop].append(temp_time_dict) - return - def update_misc_json_dict_coordinate(self,node1,prop,node2): - latitude, longitude = node2[1:].split("/") - latitude = float(latitude) - longitude = float(longitude) - temp_coordinate_dict = { - "mainsnak":{ - "snaktype":"value", - "property":prop, - "hash":"hashplaceholder", - "datavalue":{ - "value":{ - "latitude":latitude, - "longitude": longitude, - "altitude": None, - "precision": 0.00027777777777778, # TODO - "globe": "http://www.wikidata.org/entity/Q2" - }, - "type":"globecoordinate" - }, - "datatype":"globecoordinate" - }, - "type":"statement", - "id":"id-place-holder", - "rank":"normal", #TODO - "references":[], - "qualifiers":{} - } - self.misc_json_dict[node1]["claims"][prop].append(temp_coordinate_dict) - return - def update_misc_json_dict_quantity(self,node1,prop,node2): - res = self.quantity_pattern.match(node2).groups() - amount, lower_bound, upper_bound, unit = res - amount = JsonGenerator.clean_number_string(amount) - lower_bound = JsonGenerator.clean_number_string(lower_bound) - upper_bound = JsonGenerator.clean_number_string(upper_bound) - unit = "http://www.wikidata.org/entity/" + unit if unit != None else None - temp_quantity_dict = { - "mainsnak":{ - "snaktype":"value", - "property":prop, - "hash":"hashplaceholder", - "datavalue":{ - "value":{ - "amount":amount, - "unit": unit, - "lowerBound":lower_bound, - "UpperBound":upper_bound - }, - "type":"quantity" - }, - "datatype":"quantity" - }, - "type":"statement", - "id":"id-place-holder", - "rank":"normal", #TODO - "references":[], - "qualifiers":{} - } - self.misc_json_dict[node1]["claims"][prop].append(temp_quantity_dict) - return - def update_misc_json_dict_monolingualtext(self,node1,prop,node2): - text_string, lang = JsonGenerator.process_text_string(node2) - temp_mono_dict ={ - "mainsnak":{ - "snaktype":"value", - "property":prop, - "hash":"hashplaceholder", - "datavalue":{ - "value":{ - "text":text_string, - "language":lang - }, - "type":"monolingualtext" - }, - "datatype":"monolingualtext" - }, - "type":"statement", - "id":"id-place-holder", - "rank":"normal", #TODO - "references":[], - "qualifiers":{} - } - self.misc_json_dict[node1]["claims"][prop].append(temp_mono_dict) - return - def update_misc_json_dict_string(self,node1,prop,node2): - string, lang = JsonGenerator.process_text_string(node2) - temp_string_dict = { - "mainsnak": { - "snaktype": "value", - "property": prop, - "hash": "hashplaceholder", - "datavalue": { "value": string, "type": "string" }, - "datatype": "string" - }, - "type": "statement", - "id": "id-place-holder", - "rank": "normal", - "references":[], - "qualifiers":{} - } - self.misc_json_dict[node1]["claims"][prop].append(temp_string_dict) - return - def update_misc_json_dict_external_id(self,node1,prop,node2): - temp_e_id_dict = {"mainsnak": { - "snaktype": "value", - "property": prop, - "hash": "hashplaceholder", - "datavalue": { "value": node2, "type": "string" }, - "datatype": "external-id" - }, - "type": "statement", - "id": "id-place-holder", - "rank": "normal", - "references":[], - "qualifiers":{}} - self.misc_json_dict[node1]["claims"][prop].append(temp_e_id_dict) - return - def update_misc_json_dict_url(self,node1,prop,node2): - temp_url_dict ={ - "mainsnak": { - "snaktype": "value", - "property": prop, - "hash": "hashplaceholder", - "datavalue": { - "value": node2, - "type": "string" - }, - "datatype": "url" - }, - "type": "statement", - "id": "id-place-holder", - "rank": "normal", - "references":[], - "qualifiers":{} - } - self.misc_json_dict[node1]["claims"][prop].append(temp_url_dict) - return - - def set_sets(self, label_set: str, alias_set: str, description_set: str): - self.label_set, self.alias_set, self.description_set = set(label_set.split(",")), set(alias_set.split(",")), set(description_set.split(",")) - - def set_properties(self, prop_file: str): - datatype_mapping = { - "item": "wikibase-item", - "time": "time", - "globe-coordinate": "globe-coordinate", - "quantity": "quantity", - "monolingualtext": "monolingualtext", - "string": "string", - "external-identifier": "external-id", - "url": "url" - } - with open(prop_file, "r") as fp: - props = fp.readlines() - prop_types = {} - for line in props[1:]: - node1, _, node2 = line.split("\t") - try: - prop_types[node1] = datatype_mapping[node2.strip()] - except: - if not self.ignore: - raise KGTKException( - "DataType {} of node {} is not supported.\n".format( - node2, node1 - ) - ) - self.prop_types = prop_types - - def serialize(self): - ''' - serialize the dictionaries to the file pointer - ''' - with open(self.label_json_file,"w") as fp: - json.dump(self.label_json_dict,fp) - - with open(self.misc_json_file,"w") as fp: - json.dump(self.misc_json_dict,fp) - - with open(self.info_json_file,"w") as fp: - json.dump(self.info_json_dict,fp) - - # update dict and files - self.set_json_file_names() - self.set_json_dict() - - def finalize(self): - # finalize the generator - self.serialize() - - def set_json_dict(self): - self.label_json_dict = {} - self.misc_json_dict = {} - self.info_json_dict = {} - - def set_json_file_names(self): - self.file_num += 1 - prefix = self.output_prefix + "_" + str(self.file_num) + "_" - self.label_json_file = prefix + "labels.json" - self.misc_json_file = prefix + "misc.json" - self.info_json_file = prefix + "info.json" - - @staticmethod - def process_text_string(string: str) -> [str, str]: - ''' - Language detection is removed from triple generation. The user is responsible for detect the language - ''' - if len(string) == 0: - return ["", "en"] - if "@" in string: - res = string.split("@") - text_string = "@".join(res[:-1]).replace('"', "").replace("'", "") - lang = res[-1].replace('"', '').replace("'", "") - if len(lang) > 2: - lang = "en" - else: - text_string = string.replace('"', "").replace("'", "") - lang = "en" - return [text_string, lang] - - @staticmethod - def clean_number_string(num): - from numpy import format_float_positional - if num == None: - return None - else: - return format_float_positional(float(num), trim="-") \ No newline at end of file diff --git a/kgtk/triple_generator.py b/kgtk/triple_generator.py deleted file mode 100644 index 4e32ae221..000000000 --- a/kgtk/triple_generator.py +++ /dev/null @@ -1,471 +0,0 @@ -import sys -import re -from typing import TextIO -from kgtk.exceptions import KGTKException -from etk.wikidata.entity import WDItem, WDProperty -from etk.etk_module import ETKModule -from etk.etk import ETK -from etk.knowledge_graph import KGSchema -from etk.wikidata import wiki_namespaces -import rfc3986 -from etk.wikidata.value import ( - Precision, - Item, - StringValue, - TimeValue, - QuantityValue, - MonolingualText, - GlobeCoordinate, - ExternalIdentifier, - URLValue -) -from etk.knowledge_graph.node import LiteralType - -BAD_CHARS = [":", "&", ",", " ", - "(", ")", "\'", '\"', "/", "\\", "[", "]", ";", "|"] - - -class TripleGenerator: - """ - A class to maintain the status of the generator - """ - - def __init__( - self, - prop_file: str, - label_set: str, - alias_set: str, - description_set: str, - ignore: bool, - n: int, - dest_fp: TextIO = sys.stdout, - truthy: bool = False, - use_id: bool = False, - ): - from etk.wikidata.statement import Rank - self.ignore = ignore - self.prop_types = self.set_properties(prop_file) - self.label_set, self.alias_set, self.description_set = self.set_sets( - label_set, alias_set, description_set - ) - self.fp = dest_fp - self.n = int(n) - self.read_num_of_lines = 0 - # ignore-logging, if not ignore, log them and move on. - if not self.ignore: - self.ignore_file = open("ignored.log", "w") - # corrupted statement id - self.corrupted_statement_id = None - # truthy - self.truthy = truthy - self.reset_etk_doc() - self.serialize_prefix() - self.yyyy_mm_dd_pattern = re.compile( - "[12]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01])") - self.yyyy_pattern = re.compile("[12]\d{3}") - # self.quantity_pattern = re.compile("([\+|\-]?[0-9]+\.?[0-9]*)(?:\[([\+|\-]?[0-9]+\.?[0-9]*),([\+|\-]?[0-9]+\.?[0-9]*)\])?([U|Q](?:[0-9]+))?") - self.quantity_pattern = re.compile( - "([\+|\-]?[0-9]+\.?[0-9]*[e|E]?[\-]?[0-9]*)(?:\[([\+|\-]?[0-9]+\.?[0-9]*),([\+|\-]?[0-9]+\.?[0-9]*)\])?([U|Q](?:[0-9]+))?") - # order map, know the column index of ["node1","property","node2",id] - self.order_map = {} - self.use_id = use_id - - def _node_2_entity(self, node: str): - ''' - A node can be Qxxx or Pxxx, return the proper entity. - ''' - if node in self.prop_types: - entity = WDProperty(node, self.prop_types[node]) - else: - entity = WDItem(TripleGenerator.replace_illegal_string(node)) - return entity - - def set_properties(self, prop_file: str): - self.datatype_mapping = { - "item": Item, - "time": TimeValue, - "globe-coordinate": GlobeCoordinate, - "quantity": QuantityValue, - "monolingualtext": MonolingualText, - "string": StringValue, - "external-identifier": ExternalIdentifier, - "url": StringValue, - "property":WDProperty, - } - with open(prop_file, "r") as fp: - props = fp.readlines() - prop_types = {} - for line in props[1:]: - node1, _, node2 = line.split("\t") - try: - prop_types[node1] = self.datatype_mapping[node2.strip()] - except: - if not self.ignore: - raise KGTKException( - "DataType {} of node {} is not supported.\n".format( - node2, node1 - ) - ) - return prop_types - - def set_sets(self, label_set: str, alias_set: str, description_set: str): - return ( - set(label_set.split(",")), - set(alias_set.split(",")), - set(description_set.split(",")), - ) - - def reset_etk_doc(self, doc_id: str = "http://isi.edu/default-ns/projects"): - """ - reset the doc object and return it. Called at initialization and after outputting triples. - """ - kg_schema = KGSchema() - kg_schema.add_schema("@prefix : .", "ttl") - self.etk = ETK(kg_schema=kg_schema, modules=ETKModule) - self.doc = self.etk.create_document({}, doc_id=doc_id) - for k, v in wiki_namespaces.items(): - self.doc.kg.bind(k, v) - - def serialize(self): - """ - Seriealize the triples. Used a hack to avoid serializing the prefix again. - """ - docs = self.etk.process_ems(self.doc) - self.fp.write("\n\n".join( - docs[0].kg.serialize("ttl").split("\n\n")[1:])) - self.fp.flush() - self.reset() - - def serialize_prefix(self): - """ - This function should be called only once after the doc object is initialized. - In order to serialize the prefix at the very begining it has to be printed per the change of rdflib 4.2.2->5.0.0 - Relevent issue: https://github.com/RDFLib/rdflib/issues/965 - """ - for k, v in wiki_namespaces.items(): - line = "@prefix " + k + ": <" + v + "> .\n" - self.fp.write(line) - self.fp.write("\n") - self.fp.flush() - self.reset() - - def reset(self): - self.to_append_statement_id = None - self.to_append_statement = None - self.read_num_of_lines = 0 - self.reset_etk_doc() - - def finalize(self): - self.serialize() - - @staticmethod - def process_text_string(string: str) -> [str, str]: - ''' - Language detection is removed from triple generation. The user is responsible for detect the language - ''' - if len(string) == 0: - return ["", "en"] - if "@" in string: - res = string.split("@") - text_string = "@".join(res[:-1]).replace('"', "").replace("'", "") - lang = res[-1].replace('"', '').replace("'", "") - if len(lang) > 2: - lang = "en" - else: - text_string = string.replace('"', "").replace("'", "") - lang = "en" - return [text_string, lang] - - def generate_label_triple(self, node1: str, label: str, node2: str) -> bool: - entity = self._node_2_entity(node1) - text_string, lang = TripleGenerator.process_text_string(node2) - entity.add_label(text_string, lang=lang) - self.doc.kg.add_subject(entity) - return True - - def generate_description_triple(self, node1: str, label: str, node2: str) -> bool: - entity = self._node_2_entity(node1) - text_string, lang = TripleGenerator.process_text_string(node2) - entity.add_description(text_string, lang=lang) - self.doc.kg.add_subject(entity) - return True - - def generate_alias_triple(self, node1: str, label: str, node2: str) -> bool: - entity = self._node_2_entity(node1) - text_string, lang = TripleGenerator.process_text_string(node2) - entity.add_alias(text_string, lang=lang) - self.doc.kg.add_subject(entity) - return True - - def generate_prop_declaration_triple(self, node1: str, label: str, node2: str) -> bool: - # update the known prop_types - if node1 in self.prop_types: - raise KGTKException("Duplicated property definition of {} found!".format(node1)) - self.prop_types[node1] = node2 - prop = WDProperty(node1, self.datatype_mapping[node2]) - self.doc.kg.add_subject(prop) - return True - - @staticmethod - def xsd_number_type(num): - if isinstance(num, float) and 'e' in str(num).lower(): - return LiteralType.double - return LiteralType.decimal - - def generate_normal_triple( - self, node1: str, label: str, node2: str, is_qualifier_edge: bool, e_id: str) -> bool: - if self.use_id: - e_id = TripleGenerator.replace_illegal_string(e_id) - entity = self._node_2_entity(node1) - # determine the edge type - edge_type = self.prop_types[label] - if edge_type == Item: - object = WDItem(TripleGenerator.replace_illegal_string(node2)) - elif edge_type == WDProperty: - object = WDProperty(TripleGenerator.replace_illegal_string(node2),self.prop_types[node2]) - elif edge_type == TimeValue: - # https://www.wikidata.org/wiki/Help:Dates - # ^2013-01-01T00:00:00Z/11 - # ^8000000-00-00T00:00:00Z/3 - if self.yyyy_mm_dd_pattern.match(node2): - try: - dateTimeString = node2 - object = TimeValue( - value=dateTimeString, # TODO - calendar=Item("Q1985727"), - precision=Precision.year, - time_zone=0, - ) - except: - return False - elif self.yyyy_pattern.match(node2): - try: - dateTimeString = node2 + "-01-01" - object = TimeValue( - value=dateTimeString, # TODO - calendar=Item("Q1985727"), - precision=Precision.year, - time_zone=0, - ) - except: - return False - else: - try: - dateTimeString, precision = node2[1:].split("/") - dateTimeString = dateTimeString[:-1] # remove "Z" - # 2016-00-00T00:00:00 case - if "-00-00" in dateTimeString: - dateTimeString = "-01-01".join( - dateTimeString.split("-00-00")) - elif dateTimeString[8:10] == "00": - dateTimeString = dateTimeString[:8] + \ - "01" + dateTimeString[10:] - object = TimeValue( - value=dateTimeString, - calendar=Item("Q1985727"), - precision=precision, - time_zone=0, - ) - except: - return False - - # TODO other than that, not supported. Creation of normal triple fails - - elif edge_type == GlobeCoordinate: - latitude, longitude = node2[1:].split("/") - latitude = float(latitude) - longitude = float(longitude) - object = GlobeCoordinate( - latitude, longitude, 0.0001, globe=Item("Q2")) # earth - - elif edge_type == QuantityValue: - # +70[+60,+80]Q743895 - - res = self.quantity_pattern.match(node2).groups() - amount, lower_bound, upper_bound, unit = res - - amount = TripleGenerator.clean_number_string(amount) - num_type = self.xsd_number_type(amount) - - lower_bound = TripleGenerator.clean_number_string(lower_bound) - upper_bound = TripleGenerator.clean_number_string(upper_bound) - if unit != None: - if upper_bound != None and lower_bound != None: - object = QuantityValue(amount, unit=Item( - unit), upper_bound=upper_bound, lower_bound=lower_bound, type=num_type) - else: - object = QuantityValue(amount, unit=Item(unit), type=num_type) - else: - if upper_bound != None and lower_bound != None: - object = QuantityValue( - amount, upper_bound=upper_bound, lower_bound=lower_bound, type=num_type) - else: - object = QuantityValue(amount, type=num_type) - - elif edge_type == MonolingualText: - text_string, lang = TripleGenerator.process_text_string(node2) - object = MonolingualText(text_string, lang) - elif edge_type == ExternalIdentifier: - object = ExternalIdentifier(node2) - elif edge_type == URLValue: - if TripleGenerator.is_valid_uri_with_scheme_and_host(node2): - object = URLValue(node2) - else: - return False - else: - # treat everything else as stringValue - object = StringValue(node2) - - if type(object) == WDItem or type(object) == WDProperty: - self.doc.kg.add_subject(object) - - if is_qualifier_edge: - # edge: e8 p9 ^2013-01-01T00:00:00Z/11 - # create qualifier edge on previous STATEMENT and return the updated STATEMENT - self.to_append_statement.add_qualifier(label, object) - # TODO maybe can be positioned better for the edge cases. - self.doc.kg.add_subject(self.to_append_statement) - else: - # edge: q1 p8 q2 e8 - # create brand new property edge and replace STATEMENT - if self.truthy: - self.to_append_statement = entity.add_truthy_statement( - label, object, statement_id=e_id) if self.use_id else entity.add_truthy_statement(label, object) - else: - self.to_append_statement = entity.add_statement( - label, object, statement_id=e_id) if self.use_id else entity.add_statement(label, object) - self.doc.kg.add_subject(entity) - return True - - @staticmethod - def is_invalid_decimal_string(num_string): - ''' - if a decimal string too small, return True TODO - ''' - if num_string == None: - return False - else: - if abs(float(num_string)) < 0.0001 and float(num_string) != 0: - return True - return False - - @staticmethod - def is_valid_uri_with_scheme_and_host(uri: str): - ''' - https://github.com/python-hyper/rfc3986/issues/30#issuecomment-461661883 - ''' - try: - uri = rfc3986.URIReference.from_string(uri) - rfc3986.validators.Validator().require_presence_of( - "scheme", "host").check_validity_of("scheme", "host").validate(uri) - return True - except: - return False - - @staticmethod - def clean_number_string(num): - from numpy import format_float_positional - if num == None: - return None - else: - return format_float_positional(float(num), trim="-") - - def entry_point(self, line_number: int, edge: str): - """ - generates a list of two, the first element is the determination of the edge type using corresponding edge type - the second element is a bool indicating whether this is a valid property edge or qualifier edge. - Call corresponding downstream functions - """ - - edge_list = edge.strip("\n").split("\t") - if line_number == 1: - # initialize the order_map - node1_index = edge_list.index("node1") - node2_index = edge_list.index("node2") - prop_index = edge_list.index("property") - id_index = edge_list.index("id") - if not all([node1_index > -1, node2_index > -1, prop_index > -1, id_index > -1]): - raise KGTKException( - "Header of kgtk file misses at least one of required column names: (node1, node2, property and id)") - else: - self.order_map["node1"] = node1_index - self.order_map["node2"] = node2_index - self.order_map["prop"] = prop_index - self.order_map["id"] = id_index - return - - # use the order_map to map the node - node1 = edge_list[self.order_map["node1"]].strip() - node2 = edge_list[self.order_map["node2"]].strip() - prop = edge_list[self.order_map["prop"]].strip() - e_id = edge_list[self.order_map["id"]].strip() - if line_number == 2: - # by default a statement edge - is_qualifier_edge = False - # print("#Debug Info: ",line_number, self.to_append_statement_id, e_id, is_qualifier_edge,self.to_append_statement) - self.to_append_statement_id = e_id - self.corrupted_statement_id = None - else: - if node1 != self.to_append_statement_id: - # also a new statement edge - if self.read_num_of_lines >= self.n: - self.serialize() - is_qualifier_edge = False - # print("#Debug Info: ",line_number, self.to_append_statement_id, node1, is_qualifier_edge,self.to_append_statement) - self.to_append_statement_id = e_id - self.corrupted_statement_id = None - else: - # qualifier edge or property declaration edge - is_qualifier_edge = True - if self.corrupted_statement_id == e_id: - # Met a qualifier which associates with a corrupted statement - return - if prop != "type" and node1 != self.to_append_statement_id: - # 1. not a property declaration edge and - # 2. the current qualifier's node1 is not the latest property edge id, throw errors. - if not self.ignore: - raise KGTKException( - "Node1 {} at line {} doesn't agree with latest property edge id {}.\n".format( - node1, line_number, self.to_append_statement_id - ) - ) - if prop in self.label_set: - success = self.generate_label_triple(node1, prop, node2) - elif prop in self.description_set: - success = self.generate_description_triple(node1, prop, node2) - elif prop in self.alias_set: - success = self.generate_alias_triple(node1, prop, node2) - elif prop == "data_type": - # special edge of prop declaration - success = self.generate_prop_declaration_triple( - node1, prop, node2) - else: - if prop in self.prop_types: - success = self.generate_normal_triple( - node1, prop, node2, is_qualifier_edge, e_id) - else: - if not self.ignore: - raise KGTKException( - "property {}'s type is unknown at line {}.\n".format( - prop, line_number) - ) - success = False - if (not success) and (not is_qualifier_edge) and (not self.ignore): - # We have a corrupted edge here. - self.ignore_file.write( - "Corrupted statement at line number: {} with id {} with current corrupted id {}\n".format( - line_number, e_id, self.corrupted_statement_id)) - self.ignore_file.flush() - self.corrupted_statement_id = e_id - else: - self.read_num_of_lines += 1 - self.corrupted_statement_id = None - - @staticmethod - def replace_illegal_string(s: str) -> str: - ''' - this function serves as the last gate of keeping illegal characters outside of entity creation. - ''' - for char in BAD_CHARS: - s = s.replace(char, "_") - return s From c3c410a24e867cdaf54443deb055ee28a09e95a7 Mon Sep 17 00:00:00 2001 From: Rongpeng Date: Thu, 21 May 2020 16:52:05 -0700 Subject: [PATCH 014/217] remove additional dictionaries from first place rather than unifying at the end. --- kgtk/cli/generate_mediawiki_jsons.py | 24 +++--- kgtk/generator.py | 119 +++++++++++++-------------- 2 files changed, 69 insertions(+), 74 deletions(-) diff --git a/kgtk/cli/generate_mediawiki_jsons.py b/kgtk/cli/generate_mediawiki_jsons.py index 495a6d6e1..34de5f36b 100644 --- a/kgtk/cli/generate_mediawiki_jsons.py +++ b/kgtk/cli/generate_mediawiki_jsons.py @@ -82,16 +82,16 @@ def add_arguments(parser): help="if set to yes, read from compressed gz file", dest="use_gz", ) - # parser.add_argument( - # "-pr", - # "--output-file-prefix", - # action="store", - # type=str, - # default = "kgtk", - # required = False, - # help="set the prefix of the output files. Default to `kgtk`", - # dest="output_prefix", - # ) + parser.add_argument( + "-pr", + "--output-file-prefix", + action="store", + type=str, + default = "kgtk", + required = False, + help="set the prefix of the output files. Default to `kgtk`", + dest="output_prefix", + ) parser.add_argument( "-n", "--output-n-lines", @@ -110,7 +110,7 @@ def run( descriptions: str, prop_file:str, use_gz:bool, - # ouput_prefix:str, + output_prefix:str, n:int, ): # import modules locally @@ -123,7 +123,7 @@ def run( alias_set=aliases, description_set=descriptions, prop_file=prop_file, - # ouput_prefix = ouput_prefix, + output_prefix = output_prefix, n = n, ) # process stdin diff --git a/kgtk/generator.py b/kgtk/generator.py index 49d413202..d83a5a2b1 100644 --- a/kgtk/generator.py +++ b/kgtk/generator.py @@ -467,11 +467,10 @@ class JsonGenerator(Generator): def __init__(self,**kwargs): super().__init__(**kwargs) prop_file = kwargs.pop("prop_file") - self.output_prefix = "kgtk" + self.output_prefix = kwargs.pop("output_prefix") self.e_ids = set() self.file_num = 0 self.set_properties(prop_file) - self.set_json_file_names() # curret dictionaries self.set_json_dict() @@ -482,7 +481,6 @@ def entry_point(self,line_number, edge): # initialize the order_map self.initialize_order_map(edge_list) return - node1 = edge_list[self.order_map["node1"]].strip() node2 = edge_list[self.order_map["node2"]].strip() prop = edge_list[self.order_map["prop"]].strip() @@ -493,23 +491,19 @@ def entry_point(self,line_number, edge): # update info_json_dict if node1 in self.prop_types: - self.update_info_json_dict(node1, self.prop_types[node1]) + self.update_misc_json_dict_info(node1, self.prop_types[node1]) else: - self.update_info_json_dict(node1, None) + self.update_misc_json_dict_info(node1, None) if prop in self.prop_types: - self.update_info_json_dict(prop,self.prop_types[prop]) + self.update_misc_json_dict_info(prop,self.prop_types[prop]) if self.prop_types[prop] == "wikibase-item": - self.update_info_json_dict(node2) + self.update_misc_json_dict_info(node2) # update label_json_dict if prop in self.label_set: - self.update_label_json_dict(node1, prop, node2) + self.update_misc_json_dict_label(node1, prop, node2) return - else : - # update with empty label - if node1 not in self.label_json_dict: - self.update_label_json_dict(node1, prop, None) # update alias and descriptions if prop in self.description_set: @@ -524,41 +518,50 @@ def entry_point(self,line_number, edge): self.update_misc_json_dict(node1,prop,node2,line_number,None) return - def update_label_json_dict(self,node1:str, prop:str, node2:str): - # for label_dict + def init_entity_in_json(self,node:str): + self.misc_json_dict[node] = {} + self.misc_json_dict[node]["labels"] = {} + self.misc_json_dict[node]["descriptions"] = {} + self.misc_json_dict[node]["aliases"] = {} + self.misc_json_dict[node]["claims"] = {} + self.misc_json_dict[node]["sitelinks"] = {} + + def update_misc_json_dict_label(self,node1:str, prop:str, node2:str): + if node1 not in self.misc_json_dict: + self.init_entity_in_json(node1) + temp_dict = {} if node1 not in self.prop_types: label_type = "item" - self.label_json_dict[node1] = { - "type":label_type - } else: label_type = "property" label_datatype = self.prop_types[node1] - self.label_json_dict[node1] = { - "type":label_type, - "datatype":label_datatype, - } - self.label_json_dict[node1]["id"] = node1 - self.label_json_dict[node1]["labels"] = {} + temp_dict["datatype"] = label_datatype + temp_dict["type"] = label_type + + temp_dict["id"] = node1 + temp_dict["labels"] = {} if node2 != None: text_string, lang = JsonGenerator.process_text_string(node2) - self.label_json_dict[node1]["labels"][lang] = {"language":lang, "value": text_string} - return + temp_dict["labels"][lang] = {"language":lang, "value": text_string} + self.misc_json_dict[node1].update(temp_dict) + + def update_misc_json_dict_info(self, node:str,data_type = None): + if node not in self.misc_json_dict: + self.init_entity_in_json(node) - def update_info_json_dict(self, node:str,data_type = None): - # if node in self.info_json_dict: - # return - #TODO, not robust but no easy way to figure it out if node.startswith("Q"): - self.info_json_dict[node] = { + self.misc_json_dict[node].update( + { "pageid":-1, "ns":-1, "title":node, - "lastrevid":"2000-01-01T00:00:00Z", #TODO + "lastrevid":"2000-01-01T00:00:00Z", "type":"item", "id":node} + ) elif node.startswith("P"): - self.info_json_dict[node] = { + self.misc_json_dict[node].update( + { "pageid":-1, "ns":-1, "title":"Property:"+node, @@ -566,20 +569,17 @@ def update_info_json_dict(self, node:str,data_type = None): "type":"property", "datatype":data_type, "id":node} + ) else: raise KGTKException("node {} is neither an entity nor a property.".format(node)) def update_misc_json_dict(self, node1:str, prop:str, node2:str, line_number:int, field:str): if node1 not in self.misc_json_dict: - self.misc_json_dict[node1] = {**self.label_json_dict[node1], **self.info_json_dict[node1]} - self.misc_json_dict[node1]["descriptions"] = {} - self.misc_json_dict[node1]["aliases"] = {} - self.misc_json_dict[node1]["claims"] = {} - self.misc_json_dict[node1]["sitelinks"] = {} + self.init_entity_in_json(node1) if field == "descriptions": description_text, lang = JsonGenerator.process_text_string(node2) temp_des_dict = {lang:{"languange":lang,"value":description_text}} - self.misc_json_dict[node1]["descriptions"] = {**self.misc_json_dict[node1]["descriptions"], **temp_des_dict} + self.misc_json_dict[node1]["descriptions"].update(temp_des_dict) return if field == "aliases": @@ -640,7 +640,6 @@ def update_misc_json_dict_item(self,node1:str,prop:str,node2:str): "qualifiers":{} } self.misc_json_dict[node1]["claims"][prop].append(temp_item_dict) - return def update_misc_json_dict_time(self,node1,prop,node2): if self.yyyy_pattern.match(node2): time_string = node2 + "-01-01" @@ -677,8 +676,7 @@ def update_misc_json_dict_time(self,node1,prop,node2): "references":[], "qualifiers":{} } - self.misc_json_dict[node1]["claims"][prop].append(temp_time_dict) - return + self.misc_json_dict[node1]["claims"][prop].append(temp_time_dict) def update_misc_json_dict_coordinate(self,node1,prop,node2): latitude, longitude = node2[1:].split("/") latitude = float(latitude) @@ -707,7 +705,6 @@ def update_misc_json_dict_coordinate(self,node1,prop,node2): "qualifiers":{} } self.misc_json_dict[node1]["claims"][prop].append(temp_coordinate_dict) - return def update_misc_json_dict_quantity(self,node1,prop,node2): res = self.quantity_pattern.match(node2).groups() amount, lower_bound, upper_bound, unit = res @@ -738,7 +735,6 @@ def update_misc_json_dict_quantity(self,node1,prop,node2): "qualifiers":{} } self.misc_json_dict[node1]["claims"][prop].append(temp_quantity_dict) - return def update_misc_json_dict_monolingualtext(self,node1,prop,node2): text_string, lang = JsonGenerator.process_text_string(node2) temp_mono_dict ={ @@ -816,7 +812,6 @@ def update_misc_json_dict_url(self,node1,prop,node2): } self.misc_json_dict[node1]["claims"][prop].append(temp_url_dict) return - def set_properties(self, prop_file:str): datatype_mapping = { "item": "wikibase-item", @@ -843,12 +838,6 @@ def set_properties(self, prop_file:str): ) ) - def set_json_file_names(self): - self.file_num += 1 - prefix = self.output_prefix + "_" + str(self.file_num) + "_" - self.label_json_file = prefix + "labels.json" - self.misc_json_file = prefix + "misc.json" - self.info_json_file = prefix + "info.json" def set_json_dict(self): self.label_json_dict = {} @@ -857,17 +846,23 @@ def set_json_dict(self): def serialize(self): ''' - serialize the dictionaries to the file pointer + serialize the dictionaries. ''' - with open(self.label_json_file,"w") as fp: - json.dump(self.label_json_dict,fp) - - with open(self.misc_json_file,"w") as fp: - json.dump(self.misc_json_dict,fp) - - with open(self.info_json_file,"w") as fp: - json.dump(self.info_json_dict,fp) - + # data are aggregated into one file + JsonGenerator.merge_dict(self.label_json_dict, self.misc_json_dict) + JsonGenerator.merge_dict(self.info_json_dict, self.misc_json_dict) # update dict and files - self.set_json_file_names() - self.set_json_dict() \ No newline at end of file + with open(self.output_prefix + ".json","w") as fp: + json.dump(self.misc_json_dict,fp) + self.set_json_dict() + + @staticmethod + def merge_dict(source:dict, target: dict): + for key, value in source.items(): + if isinstance(value, dict): + # get node or create one + node = target.setdefault(key, {}) + JsonGenerator.merge_dict(value, node) + else: + target[key] = value + return target \ No newline at end of file From be9d5268d8128aa502c3faee20365bfbf197196a Mon Sep 17 00:00:00 2001 From: Rongpeng Date: Fri, 22 May 2020 13:34:50 -0700 Subject: [PATCH 015/217] changed descriptions and aliases to description and alias --- kgtk/cli/generate_mediawiki_jsons.py | 4 ++-- kgtk/cli/generate_wikidata_triples.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/kgtk/cli/generate_mediawiki_jsons.py b/kgtk/cli/generate_mediawiki_jsons.py index 34de5f36b..ab711cd20 100644 --- a/kgtk/cli/generate_mediawiki_jsons.py +++ b/kgtk/cli/generate_mediawiki_jsons.py @@ -49,7 +49,7 @@ def add_arguments(parser): action="store", type=str, required = False, - default="aliases", + default="alias", help="alias identifiers which will create labels, separated by comma','.", dest="aliases", ) @@ -59,7 +59,7 @@ def add_arguments(parser): action="store", type=str, required = False, - default="descriptions", + default="description", help="description identifiers which will create labels, separated by comma','.", dest="descriptions", ) diff --git a/kgtk/cli/generate_wikidata_triples.py b/kgtk/cli/generate_wikidata_triples.py index 77c01ccef..1ce4d70c9 100644 --- a/kgtk/cli/generate_wikidata_triples.py +++ b/kgtk/cli/generate_wikidata_triples.py @@ -47,7 +47,7 @@ def add_arguments(parser): action="store", type=str, required = False, - default="aliases", + default="alias", help="alias identifiers which will create labels, separated by comma','.", dest="aliases", ) @@ -57,7 +57,7 @@ def add_arguments(parser): action="store", type=str, required = False, - default="descriptions", + default="description", help="description identifiers which will create labels, separated by comma','.", dest="descriptions", ) From c1dca008993ebb7628d065003f92105d3d2bbe6d Mon Sep 17 00:00:00 2001 From: Rongpeng Date: Fri, 22 May 2020 14:24:38 -0700 Subject: [PATCH 016/217] unified the warning log, renamed misleading option name, renamed predicate from label to property in --- kgtk/cli/generate_mediawiki_jsons.py | 32 +++++++-- kgtk/cli/generate_wikidata_triples.py | 28 +++++--- kgtk/generator.py | 98 +++++++++++---------------- kgtk/tests/data/corrupted_kgtk.tsv | 1 + kgtk/tests/test_triple_generation.py | 10 +-- 5 files changed, 95 insertions(+), 74 deletions(-) create mode 100644 kgtk/tests/data/corrupted_kgtk.tsv diff --git a/kgtk/cli/generate_mediawiki_jsons.py b/kgtk/cli/generate_mediawiki_jsons.py index ab711cd20..5c8cd1f41 100644 --- a/kgtk/cli/generate_mediawiki_jsons.py +++ b/kgtk/cli/generate_mediawiki_jsons.py @@ -102,16 +102,38 @@ def add_arguments(parser): help="output json file when the corresponding dictionary size reaches n. Default to 1000", dest="n", ) + parser.add_argument( + "-log", + "--log-path", + action="store", + type=str, + required = False, + default="warning.log", + help="set the path of the log file", + dest="log_path", + ) + parser.add_argument( + "-w", + "--warning", + action="store", + type=str2bool, + required = False, + default="no", + help="if set to yes, warn various kinds of exceptions and mistakes and log them to a log file with line number in input file, rather than stopping. logging", + dest="warning", + ) def run( labels: str, aliases: str, descriptions: str, - prop_file:str, - use_gz:bool, - output_prefix:str, - n:int, + prop_file: str, + use_gz: bool, + output_prefix: str, + n: int, + log_path: str, + warning: bool ): # import modules locally from kgtk.generator import JsonGenerator @@ -125,6 +147,8 @@ def run( prop_file=prop_file, output_prefix = output_prefix, n = n, + log_path = log_path, + warning = warning ) # process stdin if use_gz: diff --git a/kgtk/cli/generate_wikidata_triples.py b/kgtk/cli/generate_wikidata_triples.py index 1ce4d70c9..d3627c565 100644 --- a/kgtk/cli/generate_wikidata_triples.py +++ b/kgtk/cli/generate_wikidata_triples.py @@ -91,14 +91,14 @@ def add_arguments(parser): dest="truthy", ) parser.add_argument( - "-ig", - "--ignore", + "-w", + "--warning", action="store", type=str2bool, required = False, default="no", - help="if set to yes, ignore various kinds of exceptions and mistakes and log them to a log file with line number in input file, rather than stopping. logging", - dest="ignore", + help="if set to yes, warn various kinds of exceptions and mistakes and log them to a log file with line number in input file, rather than stopping. logging", + dest="warning", ) parser.add_argument( "-gz", @@ -120,6 +120,16 @@ def add_arguments(parser): help="if set to yes, the id in the edge will be used as statement id when creating statement or truthy statement", dest="use_id", ) + parser.add_argument( + "-log", + "--log-path", + action="store", + type=str, + required = False, + default="warning.log", + help="set the path of the log file", + dest="log_path", + ) def run( @@ -129,9 +139,10 @@ def run( prop_file: str, n: int, truthy: bool, - ignore: bool, + warning: bool, use_gz: bool, - use_id:bool + use_id:bool, + log_path:str, ): # import modules locally import gzip @@ -144,10 +155,11 @@ def run( alias_set=aliases, description_set=descriptions, n=n, - ignore=ignore, + warning=warning, truthy=truthy, use_id=use_id, - dest_fp=sys.stdout + dest_fp=sys.stdout, + log_path = log_path ) # process stdin if use_gz: diff --git a/kgtk/generator.py b/kgtk/generator.py index d83a5a2b1..6b744ff0b 100644 --- a/kgtk/generator.py +++ b/kgtk/generator.py @@ -32,6 +32,8 @@ def __init__(self,**kwargs): description_set = kwargs.pop("description_set") alias_set = kwargs.pop("alias_set") n = int(kwargs.pop("n")) + warning = kwargs.pop("warning") + log_path = kwargs.pop("log_path") # set sets self.set_sets(label_set,description_set,alias_set) # column name order_map @@ -42,9 +44,15 @@ def __init__(self,**kwargs): self.yyyy_pattern = re.compile("[12]\d{3}") self.quantity_pattern = re.compile( "([\+|\-]?[0-9]+\.?[0-9]*[e|E]?[\-]?[0-9]*)(?:\[([\+|\-]?[0-9]+\.?[0-9]*),([\+|\-]?[0-9]+\.?[0-9]*)\])?([U|Q](?:[0-9]+))?") + self.warning = warning + if self.warning: + self.warn_log = open(log_path,"w") + self.to_append_statement_id = None + self.currupted_statment_id = None def serialize(self): raise NotImplemented def finalize(self): + self.warn_log.close() self.serialize() def set_sets(self,label_set:str,description_set:str,alias_set:str): self.label_set, self.alias_set, self.description_set = set(label_set.split(",")), set(alias_set.split(",")), set(description_set.split(",")) @@ -127,17 +135,12 @@ class TripleGenerator(Generator): def __init__(self, **kwargs): super().__init__(**kwargs) prop_file = kwargs.pop("prop_file") - ignore = kwargs.pop("ignore") dest_fp = kwargs.pop("dest_fp") truthy = kwargs.pop("truthy") use_id = kwargs.pop("use_id") - self.ignore = ignore self.set_properties(prop_file) self.fp = dest_fp self.read_num_of_lines = 0 - if not self.ignore: - self.ignore_file = open("ignored.log", "w") - self.corrupted_statement_id = None self.truthy = truthy self.reset_etk_doc() self.serialize_prefix() @@ -163,12 +166,11 @@ def set_properties(self,prop_file:str): try: self.prop_types[node1] = self.datatype_mapping[node2.strip()] except: - if not self.ignore: - raise KGTKException( - "DataType {} of node {} is not supported.\n".format( - node2, node1 - ) + raise KGTKException( + "DataType {} of node {} is not supported.\n".format( + node2, node1 ) + ) def _node_2_entity(self, node: str): ''' @@ -220,28 +222,28 @@ def reset(self): self.read_num_of_lines = 0 self.reset_etk_doc() - def generate_label_triple(self, node1: str, label: str, node2: str) -> bool: + def generate_label_triple(self, node1: str, node2: str) -> bool: entity = self._node_2_entity(node1) text_string, lang = TripleGenerator.process_text_string(node2) entity.add_label(text_string, lang=lang) self.doc.kg.add_subject(entity) return True - def generate_description_triple(self, node1: str, label: str, node2: str) -> bool: + def generate_description_triple(self, node1: str, node2: str) -> bool: entity = self._node_2_entity(node1) text_string, lang = TripleGenerator.process_text_string(node2) entity.add_description(text_string, lang=lang) self.doc.kg.add_subject(entity) return True - def generate_alias_triple(self, node1: str, label: str, node2: str) -> bool: + def generate_alias_triple(self, node1: str, node2: str) -> bool: entity = self._node_2_entity(node1) text_string, lang = TripleGenerator.process_text_string(node2) entity.add_alias(text_string, lang=lang) self.doc.kg.add_subject(entity) return True - def generate_prop_declaration_triple(self, node1: str, label: str, node2: str) -> bool: + def generate_prop_declaration_triple(self, node1: str, node2: str) -> bool: # update the known prop_types if node1 in self.prop_types: raise KGTKException("Duplicated property definition of {} found!".format(node1)) @@ -251,20 +253,16 @@ def generate_prop_declaration_triple(self, node1: str, label: str, node2: str) - return True def generate_normal_triple( - self, node1: str, label: str, node2: str, is_qualifier_edge: bool, e_id: str) -> bool: + self, node1: str, property: str, node2: str, is_qualifier_edge: bool, e_id: str) -> bool: if self.use_id: e_id = TripleGenerator.replace_illegal_string(e_id) entity = self._node_2_entity(node1) - # determine the edge type - edge_type = self.prop_types[label] + edge_type = self.prop_types[property] if edge_type == Item: object = WDItem(TripleGenerator.replace_illegal_string(node2)) elif edge_type == WDProperty: object = WDProperty(TripleGenerator.replace_illegal_string(node2),self.prop_types[node2]) elif edge_type == TimeValue: - # https://www.wikidata.org/wiki/Help:Dates - # ^2013-01-01T00:00:00Z/11 - # ^8000000-00-00T00:00:00Z/3 if self.yyyy_mm_dd_pattern.match(node2): try: dateTimeString = node2 @@ -291,7 +289,6 @@ def generate_normal_triple( try: dateTimeString, precision = node2[1:].split("/") dateTimeString = dateTimeString[:-1] # remove "Z" - # 2016-00-00T00:00:00 case if "-00-00" in dateTimeString: dateTimeString = "-01-01".join( dateTimeString.split("-00-00")) @@ -318,7 +315,6 @@ def generate_normal_triple( elif edge_type == QuantityValue: # +70[+60,+80]Q743895 - res = self.quantity_pattern.match(node2).groups() amount, lower_bound, upper_bound, unit = res @@ -360,18 +356,17 @@ def generate_normal_triple( if is_qualifier_edge: # edge: e8 p9 ^2013-01-01T00:00:00Z/11 # create qualifier edge on previous STATEMENT and return the updated STATEMENT - self.to_append_statement.add_qualifier(label, object) - # TODO maybe can be positioned better for the edge cases. + self.to_append_statement.add_qualifier(property, object) self.doc.kg.add_subject(self.to_append_statement) else: # edge: q1 p8 q2 e8 # create brand new property edge and replace STATEMENT if self.truthy: self.to_append_statement = entity.add_truthy_statement( - label, object, statement_id=e_id) if self.use_id else entity.add_truthy_statement(label, object) + property, object, statement_id=e_id) if self.use_id else entity.add_truthy_statement(property, object) else: self.to_append_statement = entity.add_statement( - label, object, statement_id=e_id) if self.use_id else entity.add_statement(label, object) + property, object, statement_id=e_id) if self.use_id else entity.add_statement(property, object) self.doc.kg.add_subject(entity) return True @@ -397,7 +392,6 @@ def entry_point(self, line_number: int, edge: str): if line_number == 2: # by default a statement edge is_qualifier_edge = False - # print("#Debug Info: ",line_number, self.to_append_statement_id, e_id, is_qualifier_edge,self.to_append_statement) self.to_append_statement_id = e_id self.corrupted_statement_id = None else: @@ -415,47 +409,42 @@ def entry_point(self, line_number: int, edge: str): if self.corrupted_statement_id == e_id: # Met a qualifier which associates with a corrupted statement return - if prop != "type" and node1 != self.to_append_statement_id: + if prop != "data_type" and node1 != self.to_append_statement_id: # 1. not a property declaration edge and # 2. the current qualifier's node1 is not the latest property edge id, throw errors. - if not self.ignore: raise KGTKException( "Node1 {} at line {} doesn't agree with latest property edge id {}.\n".format( node1, line_number, self.to_append_statement_id ) ) if prop in self.label_set: - success = self.generate_label_triple(node1, prop, node2) + success = self.generate_label_triple(node1, node2) elif prop in self.description_set: - success = self.generate_description_triple(node1, prop, node2) + success = self.generate_description_triple(node1, node2) elif prop in self.alias_set: - success = self.generate_alias_triple(node1, prop, node2) + success = self.generate_alias_triple(node1, node2) elif prop == "data_type": # special edge of prop declaration success = self.generate_prop_declaration_triple( - node1, prop, node2) + node1, node2) else: if prop in self.prop_types: success = self.generate_normal_triple( node1, prop, node2, is_qualifier_edge, e_id) else: - if not self.ignore: - raise KGTKException( - "property {}'s type is unknown at line {}.\n".format( - prop, line_number) - ) - success = False - if (not success) and (not is_qualifier_edge) and (not self.ignore): + raise KGTKException( + "property {}'s type is unknown at line {}.\n".format( + prop, line_number) + ) + if (not success) and (not is_qualifier_edge) and self.warning: # We have a corrupted edge here. - self.ignore_file.write( + self.warn_log.write( "Corrupted statement at line number: {} with id {} with current corrupted id {}\n".format( line_number, e_id, self.corrupted_statement_id)) - self.ignore_file.flush() self.corrupted_statement_id = e_id else: self.read_num_of_lines += 1 self.corrupted_statement_id = None - @staticmethod def xsd_number_type(num): if isinstance(num, float) and 'e' in str(num).lower(): @@ -507,11 +496,11 @@ def entry_point(self,line_number, edge): # update alias and descriptions if prop in self.description_set: - self.update_misc_json_dict(node1, prop, node2, line_number,"descriptions") + self.update_misc_json_dict(node1, prop, node2, line_number,"description") return if prop in self.alias_set: - self.update_misc_json_dict(node1, prop, node2, line_number,"aliases") + self.update_misc_json_dict(node1, prop, node2, line_number,"alias") return # normal update for claims @@ -576,13 +565,13 @@ def update_misc_json_dict(self, node1:str, prop:str, node2:str, line_number:int, if node1 not in self.misc_json_dict: self.init_entity_in_json(node1) - if field == "descriptions": + if field == "description": description_text, lang = JsonGenerator.process_text_string(node2) temp_des_dict = {lang:{"languange":lang,"value":description_text}} self.misc_json_dict[node1]["descriptions"].update(temp_des_dict) return - if field == "aliases": + if field == "alias": alias_text, lang = JsonGenerator.process_text_string(node2) temp_alias_dict = {lang, {"languange": lang, "value":alias_text}} if lang in self.misc_json_dict[node1]["aliases"]: @@ -651,7 +640,7 @@ def update_misc_json_dict_time(self,node1,prop,node2): time_string, precision = node2.split("/") precision = int(precision) except: - return # ignore the illegal time format for now + return temp_time_dict = { "mainsnak":{ "snaktype":"value", @@ -831,19 +820,15 @@ def set_properties(self, prop_file:str): try: self.prop_types[node1] = datatype_mapping[node2.strip()] except: - if not self.ignore: - raise KGTKException( - "DataType {} of node {} is not supported.\n".format( - node2, node1 - ) + raise KGTKException( + "DataType {} of node {} is not supported.\n".format( + node2, node1 ) - - + ) def set_json_dict(self): self.label_json_dict = {} self.misc_json_dict = {} self.info_json_dict = {} - def serialize(self): ''' serialize the dictionaries. @@ -855,7 +840,6 @@ def serialize(self): with open(self.output_prefix + ".json","w") as fp: json.dump(self.misc_json_dict,fp) self.set_json_dict() - @staticmethod def merge_dict(source:dict, target: dict): for key, value in source.items(): diff --git a/kgtk/tests/data/corrupted_kgtk.tsv b/kgtk/tests/data/corrupted_kgtk.tsv new file mode 100644 index 000000000..1f07f772f --- /dev/null +++ b/kgtk/tests/data/corrupted_kgtk.tsv @@ -0,0 +1 @@ +node1 property node2 id \ No newline at end of file diff --git a/kgtk/tests/test_triple_generation.py b/kgtk/tests/test_triple_generation.py index 76125f826..f1dddb1ae 100644 --- a/kgtk/tests/test_triple_generation.py +++ b/kgtk/tests/test_triple_generation.py @@ -11,7 +11,7 @@ def test_truthy_property_triple_generation(self): wikidata_property_file = 'data/wikidata_properties.tsv' o = open('data/P10_truthy_tmp.ttl', 'w') generator = TripleGenerator(prop_file = wikidata_property_file, label_set='label', alias_set='aliases', - description_set='descriptions', ignore=True, n=100, truthy=True, use_id=True, + description_set='descriptions', warning=False, n=100, truthy=True, use_id=True, dest_fp=o) fp = open(property_tsv_file) for line_num, edge in enumerate(fp): @@ -35,7 +35,7 @@ def test_property_triple_generation(self): wikidata_property_file = 'data/wikidata_properties.tsv' o = open('data/P10_not_truthy_tmp.ttl', 'w') generator = TripleGenerator(prop_file = wikidata_property_file, label_set='label', alias_set='aliases', - description_set='descriptions', ignore=True, n=100, truthy=False, use_id=True, + description_set='descriptions', warning=False, n=100, truthy=False, use_id=True, dest_fp=o) fp = open(property_tsv_file) for line_num, edge in enumerate(fp): @@ -59,7 +59,7 @@ def test_truthy_qnode_triple_generation(self): wikidata_property_file = 'data/wikidata_properties.tsv' o = open('data/Q57160439_truthy_tmp.ttl', 'w') generator = TripleGenerator(prop_file = wikidata_property_file, label_set='label', alias_set='aliases', - description_set='descriptions', ignore=True, n=100, truthy=True, use_id=True, + description_set='descriptions', warning=False, n=100, truthy=True, use_id=True, dest_fp=o) fp = open(qnode_tsv_file) for line_num, edge in enumerate(fp): @@ -84,7 +84,7 @@ def test_not_truthy_qnode_triple_generation(self): wikidata_property_file = 'data/wikidata_properties.tsv' o = open('data/Q57160439_not_truthy_tmp.ttl', 'w') generator = TripleGenerator(prop_file = wikidata_property_file, label_set='label', alias_set='aliases', - description_set='descriptions', ignore=True, n=100, truthy=False, use_id=True, + description_set='descriptions', warning=False, n=100, truthy=False, use_id=True, dest_fp=o) fp = open(qnode_tsv_file) for line_num, edge in enumerate(fp): @@ -108,7 +108,7 @@ def test_triple_small_values(self): wikidata_property_file = 'data/wikidata_properties.tsv' o = open('data/small_values_tmp.ttl', 'w') generator = TripleGenerator(prop_file = wikidata_property_file, label_set='label', alias_set='aliases', - description_set='descriptions', ignore=True, n=100, truthy=True, use_id=True, + description_set='descriptions', warning=False, n=100, truthy=True, use_id=True, dest_fp=o) fp = open(small_values_file) for line_num, edge in enumerate(fp): From 09ffea028abb52bac42d4548406190cff6b58027 Mon Sep 17 00:00:00 2001 From: Rongpeng Date: Fri, 22 May 2020 16:13:39 -0700 Subject: [PATCH 017/217] 1. handle empty edge properly 2. added unit test for corrupted edges caused by Time value --- kgtk/cli/generate_mediawiki_jsons.py | 2 +- kgtk/cli/generate_wikidata_triples.py | 2 +- kgtk/generator.py | 53 ++++++++++---------- kgtk/tests/data/corrupted.ttl | 50 +++++++++++++++++++ kgtk/tests/data/corrupted_kgtk.tsv | 12 ++++- kgtk/tests/test_triple_generation.py | 70 ++++++++++++++++++++++----- 6 files changed, 147 insertions(+), 42 deletions(-) create mode 100644 kgtk/tests/data/corrupted.ttl diff --git a/kgtk/cli/generate_mediawiki_jsons.py b/kgtk/cli/generate_mediawiki_jsons.py index 5c8cd1f41..e26633e55 100644 --- a/kgtk/cli/generate_mediawiki_jsons.py +++ b/kgtk/cli/generate_mediawiki_jsons.py @@ -157,7 +157,7 @@ def run( fp = sys.stdin # not line by line for line_num, edge in enumerate(fp): - if edge.startswith("#"): + if edge.startswith("#") or len(edge.strip("\n")) == 0: continue else: generator.entry_point(line_num+1,edge) diff --git a/kgtk/cli/generate_wikidata_triples.py b/kgtk/cli/generate_wikidata_triples.py index d3627c565..c70c31da4 100644 --- a/kgtk/cli/generate_wikidata_triples.py +++ b/kgtk/cli/generate_wikidata_triples.py @@ -168,7 +168,7 @@ def run( fp = sys.stdin # not line by line for line_num, edge in enumerate(fp): - if edge.startswith("#"): + if edge.startswith("#") or len(edge.strip("\n")) == 0: continue else: generator.entry_point(line_num+1,edge) diff --git a/kgtk/generator.py b/kgtk/generator.py index 6b744ff0b..42ee3e59e 100644 --- a/kgtk/generator.py +++ b/kgtk/generator.py @@ -48,11 +48,12 @@ def __init__(self,**kwargs): if self.warning: self.warn_log = open(log_path,"w") self.to_append_statement_id = None - self.currupted_statment_id = None + self.corrupted_statement_id = None def serialize(self): raise NotImplemented def finalize(self): - self.warn_log.close() + if self.warning: + self.warn_log.close() self.serialize() def set_sets(self,label_set:str,description_set:str,alias_set:str): self.label_set, self.alias_set, self.description_set = set(label_set.split(",")), set(alias_set.split(",")), set(description_set.split(",")) @@ -377,7 +378,6 @@ def entry_point(self, line_number: int, edge: str): the second element is a bool indicating whether this is a valid property edge or qualifier edge. Call corresponding downstream functions """ - edge_list = edge.strip("\n").split("\t") if line_number == 1: # initialize the order_map @@ -392,31 +392,22 @@ def entry_point(self, line_number: int, edge: str): if line_number == 2: # by default a statement edge is_qualifier_edge = False - self.to_append_statement_id = e_id - self.corrupted_statement_id = None else: - if node1 != self.to_append_statement_id: + if node1 != self.to_append_statement_id and node1 != self.corrupted_statement_id: + is_qualifier_edge = False # also a new statement edge if self.read_num_of_lines >= self.n: self.serialize() - is_qualifier_edge = False - # print("#Debug Info: ",line_number, self.to_append_statement_id, node1, is_qualifier_edge,self.to_append_statement) - self.to_append_statement_id = e_id - self.corrupted_statement_id = None else: # qualifier edge or property declaration edge is_qualifier_edge = True - if self.corrupted_statement_id == e_id: - # Met a qualifier which associates with a corrupted statement - return - if prop != "data_type" and node1 != self.to_append_statement_id: - # 1. not a property declaration edge and - # 2. the current qualifier's node1 is not the latest property edge id, throw errors. - raise KGTKException( - "Node1 {} at line {} doesn't agree with latest property edge id {}.\n".format( - node1, line_number, self.to_append_statement_id + if node1 == self.corrupted_statement_id: + self.warn_log.write( + "QUALIFIER edge at line [{}] associated of corrupted statement edge of id [{}] dropped.\n".format( + line_number, self.corrupted_statement_id ) ) + return if prop in self.label_set: success = self.generate_label_triple(node1, node2) elif prop in self.description_set: @@ -433,18 +424,26 @@ def entry_point(self, line_number: int, edge: str): node1, prop, node2, is_qualifier_edge, e_id) else: raise KGTKException( - "property {}'s type is unknown at line {}.\n".format( + "property [{}]'s type is unknown at line [{}].\n".format( prop, line_number) ) - if (not success) and (not is_qualifier_edge) and self.warning: - # We have a corrupted edge here. - self.warn_log.write( - "Corrupted statement at line number: {} with id {} with current corrupted id {}\n".format( - line_number, e_id, self.corrupted_statement_id)) - self.corrupted_statement_id = e_id + if (not success): + if not is_qualifier_edge: + if self.warning: + self.warn_log.write( + "CORRUPTED_STATEMENT edge at line: [{}] with edge id [{}].\n".format( + line_number, e_id)) + self.corrupted_statement_id = e_id + else: + if self.warning: + self.warn_log.write( + "CORRUPTED_QUALIFIER edge at line: [{}] with edge id [{}].\n".format( + line_number, e_id)) + else: self.read_num_of_lines += 1 - self.corrupted_statement_id = None + if not is_qualifier_edge: + self.to_append_statement_id = e_id @staticmethod def xsd_number_type(num): if isinstance(num, float) and 'e' in str(num).lower(): diff --git a/kgtk/tests/data/corrupted.ttl b/kgtk/tests/data/corrupted.ttl new file mode 100644 index 000000000..350b7986a --- /dev/null +++ b/kgtk/tests/data/corrupted.ttl @@ -0,0 +1,50 @@ +@prefix wikibase: . +@prefix wd: . +@prefix wdt: . +@prefix wdtn: . +@prefix wdno: . +@prefix wds: . +@prefix wdv: . +@prefix wdref: . +@prefix p: . +@prefix pr: . +@prefix prv: . +@prefix prn: . +@prefix ps: . +@prefix psv: . +@prefix psn: . +@prefix pq: . +@prefix pqv: . +@prefix pqn: . +@prefix prov: . +@prefix skos: . +@prefix schema: . + +wd:Q2 a wikibase:Item ; + p:P577 wds:Q2-legal_id1 ; + wdt:P577 "2020-01-01"^^xsd:dateTime . + +wd:Q3 a wikibase:Item ; + p:P577 wds:Q3-legal_id3 ; + wdt:P577 "2020-01-01"^^xsd:dateTime . + +wds:Q2-legal_id1 a wikibase:Statement ; + wikibase:rank wikibase:BestRank ; + ; + pq:P577 "2020-01-01"^^xsd:dateTime ; + pqv:P577 wdv:Timec2020-01-01cQc9c0 ; + ps:P577 "2020-01-01"^^xsd:dateTime ; + psv:P577 wdv:Timec2020-01-01cQc9c0 . + +wds:Q3-legal_id3 a wikibase:Statement ; + wikibase:rank wikibase:BestRank ; + ; + ps:P577 "2020-01-01"^^xsd:dateTime ; + psv:P577 wdv:Timec2020-01-01cQc9c0 . + +wdv:Timec2020-01-01cQc9c0 a wikibase:Time ; + wikibase:timeCalendarModel wd:Q1985727 ; + wikibase:timePrecision 9 ; + wikibase:timeTimezone 0 ; + wikibase:timeValue "2020-01-01"^^xsd:dateTime . + diff --git a/kgtk/tests/data/corrupted_kgtk.tsv b/kgtk/tests/data/corrupted_kgtk.tsv index 1f07f772f..dfc3c690b 100644 --- a/kgtk/tests/data/corrupted_kgtk.tsv +++ b/kgtk/tests/data/corrupted_kgtk.tsv @@ -1 +1,11 @@ -node1 property node2 id \ No newline at end of file +node1 property node2 id +Q1 P577 2020000000 corrupted_id1 +corrupted_id1 P577 2020 corrupted_id_legal1 +corrupted_id1 P577 2020 corrupted_id_legal1 +Q2 P577 2020 legal_id1 +legal_id1 P577 2020 legal_id1_legal1 +legal_id1 P577 2020000000 legal_id_illegal2 +Q3 P577 2020 legal_id3 + + +# corrupt corrupted_kgtk file contains only corruption casued by illegal `Time` Value. More causes will be tested \ No newline at end of file diff --git a/kgtk/tests/test_triple_generation.py b/kgtk/tests/test_triple_generation.py index f1dddb1ae..ca2fcaeac 100644 --- a/kgtk/tests/test_triple_generation.py +++ b/kgtk/tests/test_triple_generation.py @@ -1,5 +1,5 @@ import unittest -# from kgtk.triple_generator import TripleGenerator +import os from kgtk.generator import TripleGenerator from pathlib import Path @@ -11,8 +11,8 @@ def test_truthy_property_triple_generation(self): wikidata_property_file = 'data/wikidata_properties.tsv' o = open('data/P10_truthy_tmp.ttl', 'w') generator = TripleGenerator(prop_file = wikidata_property_file, label_set='label', alias_set='aliases', - description_set='descriptions', warning=False, n=100, truthy=True, use_id=True, - dest_fp=o) + description_set='descriptions', warning=True, n=100, truthy=True, use_id=True, + dest_fp=o,log_path="data/warning.log") fp = open(property_tsv_file) for line_num, edge in enumerate(fp): if edge.startswith("#"): @@ -27,6 +27,9 @@ def test_truthy_property_triple_generation(self): self.assertEqual(f1.readlines(), f2.readlines()) f1.close() f2.close() + self.assertEqual(os.stat("data/warning.log").st_size, 0) + p = Path("data/warning.log") + p.unlink() p = Path('data/P10_truthy_tmp.ttl') p.unlink() @@ -35,8 +38,8 @@ def test_property_triple_generation(self): wikidata_property_file = 'data/wikidata_properties.tsv' o = open('data/P10_not_truthy_tmp.ttl', 'w') generator = TripleGenerator(prop_file = wikidata_property_file, label_set='label', alias_set='aliases', - description_set='descriptions', warning=False, n=100, truthy=False, use_id=True, - dest_fp=o) + description_set='descriptions', warning=True, n=100, truthy=False, use_id=True, + dest_fp=o,log_path="data/warning.log") fp = open(property_tsv_file) for line_num, edge in enumerate(fp): if edge.startswith("#"): @@ -51,6 +54,9 @@ def test_property_triple_generation(self): self.assertEqual(f1.readlines(), f2.readlines()) f1.close() f2.close() + self.assertEqual(os.stat("data/warning.log").st_size, 0) + p = Path("data/warning.log") + p.unlink() p = Path('data/P10_not_truthy_tmp.ttl') p.unlink() @@ -59,8 +65,8 @@ def test_truthy_qnode_triple_generation(self): wikidata_property_file = 'data/wikidata_properties.tsv' o = open('data/Q57160439_truthy_tmp.ttl', 'w') generator = TripleGenerator(prop_file = wikidata_property_file, label_set='label', alias_set='aliases', - description_set='descriptions', warning=False, n=100, truthy=True, use_id=True, - dest_fp=o) + description_set='descriptions', warning=True, n=100, truthy=True, use_id=True, + dest_fp=o,log_path="data/warning.log") fp = open(qnode_tsv_file) for line_num, edge in enumerate(fp): if edge.startswith("#"): @@ -68,7 +74,6 @@ def test_truthy_qnode_triple_generation(self): else: generator.entry_point(line_num + 1, edge) generator.finalize() - o.close() fp.close() f1 = open('data/Q57160439_truthy.ttl') @@ -76,6 +81,9 @@ def test_truthy_qnode_triple_generation(self): self.assertEqual(f1.readlines(), f2.readlines()) f1.close() f2.close() + self.assertEqual(os.stat("data/warning.log").st_size, 0) + p = Path("data/warning.log") + p.unlink() p = Path('data/Q57160439_truthy_tmp.ttl') p.unlink() @@ -84,8 +92,8 @@ def test_not_truthy_qnode_triple_generation(self): wikidata_property_file = 'data/wikidata_properties.tsv' o = open('data/Q57160439_not_truthy_tmp.ttl', 'w') generator = TripleGenerator(prop_file = wikidata_property_file, label_set='label', alias_set='aliases', - description_set='descriptions', warning=False, n=100, truthy=False, use_id=True, - dest_fp=o) + description_set='descriptions', warning=True, n=100, truthy=False, use_id=True, + dest_fp=o,log_path="data/warning.log") fp = open(qnode_tsv_file) for line_num, edge in enumerate(fp): if edge.startswith("#"): @@ -100,6 +108,9 @@ def test_not_truthy_qnode_triple_generation(self): self.assertEqual(f1.readlines(), f2.readlines()) f1.close() f2.close() + self.assertEqual(os.stat("data/warning.log").st_size, 0) + p = Path("data/warning.log") + p.unlink() p = Path('data/Q57160439_not_truthy_tmp.ttl') p.unlink() @@ -108,8 +119,8 @@ def test_triple_small_values(self): wikidata_property_file = 'data/wikidata_properties.tsv' o = open('data/small_values_tmp.ttl', 'w') generator = TripleGenerator(prop_file = wikidata_property_file, label_set='label', alias_set='aliases', - description_set='descriptions', warning=False, n=100, truthy=True, use_id=True, - dest_fp=o) + description_set='descriptions', warning=True, n=100, truthy=True, use_id=True, + dest_fp=o,log_path="data/warning.log") fp = open(small_values_file) for line_num, edge in enumerate(fp): if edge.startswith("#"): @@ -125,5 +136,40 @@ def test_triple_small_values(self): self.assertEqual(f1.readlines(), f2.readlines()) f1.close() f2.close() + self.assertEqual(os.stat("data/warning.log").st_size, 0) + p = Path("data/warning.log") + p.unlink() p = Path('data/small_values_tmp.ttl') + p.unlink() + + def test_triple_corrupted_edges(self): + corrupted_kgtk_file = 'data/corrupted_kgtk.tsv' + wikidata_property_file = 'data/wikidata_properties.tsv' + o = open('data/corrupted_tmp.ttl', 'w') + generator = TripleGenerator(prop_file = wikidata_property_file, label_set='label', alias_set='aliases', + description_set='descriptions', warning=True, n=100, truthy=True, use_id=True, + dest_fp=o,log_path="data/corrupted_warning_tmp.log") + fp = open(corrupted_kgtk_file) + for line_num, edge in enumerate(fp): + if edge.startswith("#") or len(edge.strip("\n")) == 0: + continue + else: + generator.entry_point(line_num + 1, edge) + generator.finalize() + + o.close() + fp.close() + f1 = open('data/corrupted.ttl') + f2 = open('data/corrupted_tmp.ttl') + self.assertEqual(f1.readlines(), f2.readlines()) + f1.close() + f2.close() + f1 = open("data/corrupted_warning.log") + f2 = open("data/corrupted_warning_tmp.log") + self.assertEqual(f1.readlines(), f2.readlines()) + f1.close() + f2.close() + p = Path("data/corrupted_warning_tmp.log") + p.unlink() + p = Path('data/corrupted_tmp.ttl') p.unlink() \ No newline at end of file From b186b6fd908ea246ad0fa4262d8d6059e1cd1a27 Mon Sep 17 00:00:00 2001 From: Rongpeng Date: Fri, 22 May 2020 16:25:15 -0700 Subject: [PATCH 018/217] add corrupted warning --- kgtk/tests/data/corrupted_warning.log | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 kgtk/tests/data/corrupted_warning.log diff --git a/kgtk/tests/data/corrupted_warning.log b/kgtk/tests/data/corrupted_warning.log new file mode 100644 index 000000000..24725847a --- /dev/null +++ b/kgtk/tests/data/corrupted_warning.log @@ -0,0 +1,4 @@ +CORRUPTED_STATEMENT edge at line: [2] with edge id [corrupted_id1]. +QUALIFIER edge at line [3] associated of corrupted statement edge of id [corrupted_id1] dropped. +QUALIFIER edge at line [4] associated of corrupted statement edge of id [corrupted_id1] dropped. +CORRUPTED_QUALIFIER edge at line: [7] with edge id [legal_id_illegal2]. From 4f06beefaee262aa08012477e9ea650438dfc7d7 Mon Sep 17 00:00:00 2001 From: Rongpeng Date: Fri, 22 May 2020 16:25:41 -0700 Subject: [PATCH 019/217] allow exceptions for warning log --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 8fdd5fa84..e56f60878 100644 --- a/.gitignore +++ b/.gitignore @@ -136,3 +136,6 @@ dmypy.json # MacOS file system hidden file .DS_Store + +# warning log exception +!corrupted_warning.log \ No newline at end of file From 0c30c1c4343801327d8b28abecfc8a092ea5ca87 Mon Sep 17 00:00:00 2001 From: Rongpeng Date: Fri, 22 May 2020 16:33:30 -0700 Subject: [PATCH 020/217] update the doc file for new options/datatypes --- docs/generate_wikidata_triples.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/docs/generate_wikidata_triples.md b/docs/generate_wikidata_triples.md index 940b229d9..66aeeffb1 100644 --- a/docs/generate_wikidata_triples.md +++ b/docs/generate_wikidata_triples.md @@ -67,11 +67,11 @@ id1 P3 Q4 id4 - `-ap --alias-property {str}`: alias identifiers which will create labels, separated by comma','. Default to **aliases**. - `-dp --description-property {str}`: description identifiers which will create labels, separated by comma','. Default to **descriptions**. - `-gt --generate-truthy {bool}`: the default is to not generate truthy triples. Specify this option to generate truthy triples. Default to **Yes**. -- `-ig --ignore {bool}`: if set to yes, ignore various kinds of exceptions and mistakes and log them to a log file with line number in input file, rather than stopping. logging. Default to **False**. +- `-w --warning {bool}`: if set to yes, warn various kinds of exceptions and mistakes and log them to a log file with line number in input file. Default to **False**. - `-n --output-n-lines {number}`: output triples approximately every {n} lines of reading stdin. Default to **1000**. - `-gz --use-gz {number}`: if set to yes, read from compressed gz file. Default to **False**. - `-sid --use-id {bool}`: if set to yes, the id in the edge will be used as statement id when creating statement or truthy statement. Default to **False** - +- `-log --log-path {str}`: set the path of the log file. Default to **warning.log** ### Shared Options @@ -106,6 +106,7 @@ Currently the following datatypes are supported. The complete list of possible d 6. Url 7. External identifier 8. String +9. Property In ETK, the possible property types are defined [here](https://github.com/usc-isi-i2/etk/blob/9c79a597fa0917b4e4bf78b4acbd863f5a0bb917/etk/wikidata/value.py#L190). @@ -113,7 +114,7 @@ In ETK, the possible property types are defined [here](https://github.com/usc-is If `-gt --generate-truthy` set to `True`, the statement will be truthy. Truthy statements will have an additional spo with propert prefix `wdt`. -### ignore +### warning ignore allows you to ignore various kind of errors written to the `ignore.log` file. @@ -129,6 +130,9 @@ Use compressed file as input. If `--use-id` is set to true, the `id` column of the kgtk file will be used as the statement id if the corresponding edge is a statement edge. It is the user's responsiblity to make sure there is no duplicated statement id across the whole knowledge graph then. +### log-path + +If using `-log`, the warning `-w` must be set to true. ## How Triple Generator handles Different Types of Edges From 9ab05aea2ed361e480529545d7442b86e3199eec Mon Sep 17 00:00:00 2001 From: Craig Milo Rogers Date: Tue, 26 May 2020 12:38:20 -0700 Subject: [PATCH 021/217] Show the key index values. Document --columns. --- docs/compact.md | 126 ++++++++++++++++++++++++++++++- kgtk/join/test/compact-file3.tsv | 13 ++++ kgtk/reshape/kgtkcompact.py | 6 ++ 3 files changed, 143 insertions(+), 2 deletions(-) create mode 100644 kgtk/join/test/compact-file3.tsv diff --git a/docs/compact.md b/docs/compact.md index b2c32a2ed..271f5f114 100644 --- a/docs/compact.md +++ b/docs/compact.md @@ -66,5 +66,127 @@ The output will be the following table in KGTK format: | ----- | ------- | ----- | ----------------- | ------------- | | john | zipcode | 12345 | home | 10 | | john | zipcode | 12346 | | | -| peter | zipcode | 12040 | cabin\|home\|work | | 5\|6 | -| steve | zipcode | 45601 | | 1\|2\|3\|4\|5 | +| peter | zipcode | 12040 | cabin\|home\|work | 5\|6 | +| steve | zipcode | 45601 | cabin\|home\|work | 1\|2\|3\|4\|5 | + +Suppose that `file2.tsv` contains the following table in KGTK format +(this is the same as `file1.tsv`, with the rows in a jumbled order): + +| node1 | label | node2 | location | years | +| ----- | ------- | ----- | --------- | ----- | +| steve | zipcode | 45601 | cabin | | +| john | zipcode | 12345 | home | 10 | +| steve | zipcode | 45601 | | 4 | +| john | zipcode | 12346 | | | +| peter | zipcode | 12040 | home | | +| steve | zipcode | 45601 | home | 1 | +| peter | zipcode | 12040 | work | 5 | +| peter | zipcode | 12040 | | 6 | +| steve | zipcode | 45601 | | 3 | +| peter | zipcode | 12040 | cabin | | +| steve | zipcode | 45601 | | 5 | +| steve | zipcode | 45601 | work | 2 | + +Compacting with built-in sorting: +```bash +kgtk compact file2.tsv +``` + +The output will be the following table in KGTK format: + +| node1 | label | node2 | location | years | +| ----- | ------- | ----- | ----------------- | ------------- | +| john | zipcode | 12345 | home | 10 | +| john | zipcode | 12346 | | | +| peter | zipcode | 12040 | cabin\|home\|work | 5\|6 | +| steve | zipcode | 45601 | cabin\|home\|work | 1\|2\|3\|4\|5 | + +Compacting with built-in sorting disabled: +```bash +kgtk compact file2.tsv --presorted +``` +The output will be the following table in KGTK format (which is not +a complate compaction): + +| node1 | label | node2 | location | years | +| ----- | ------- | ----- | ----------------- | ------------- | +| steve | zipcode | 45601 | cabin | | +| john | zipcode | 12345 | home | 10 | +| steve | zipcode | 45601 | | 4 | +| john | zipcode | 12346 | | | +| peter | zipcode | 12040 | home | | +| steve | zipcode | 45601 | home | 1 | +| peter | zipcode | 12040 | work | 5\|6 | +| steve | zipcode | 45601 | | 3 | +| peter | zipcode | 12040 | cabin | | +| steve | zipcode | 45601 | work | 2\|5 | + +Suppose that `file3.tsv` contains the following table in KGTK format: + +| node1 | label | node2 | id | location | years | +| ----- | ------- | ----- | -- | --------- | ----- | +| john | zipcode | 12345 | 1 | home | 10 | +| john | zipcode | 12346 | 2 | | | +| peter | zipcode | 12040 | 3 | home | | +| peter | zipcode | 12040 | 4 | cabin | | +| peter | zipcode | 12040 | 4 | work | 5 | +| peter | zipcode | 12040 | 4 | | 6 | +| steve | zipcode | 45601 | 5 | | 3 | +| steve | zipcode | 45601 | 5 | | 4 | +| steve | zipcode | 45601 | 5 | | 5 | +| steve | zipcode | 45601 | 6 | home | 1 | +| steve | zipcode | 45601 | 6 | work | 2 | +| steve | zipcode | 45601 | 6 | cabin | | + +Compacting with the tuple (`node1`, `label`, `node2`) (the default +for a KGTK edge file) as the key: +```bash +kgtk compact file3.tsv +``` + +The output will be the following table in KGTK format: + +| node1 | label | node2 | id | location | years | +| ----- | ------- | ----- | ---- | ----------------- | ------------- | +| john | zipcode | 12345 | 1 | home | 10 | +| john | zipcode | 12346 | 2 | | | +| peter | zipcode | 12040 | 3\|4 | cabin\|home\|work | 5\|6 | +| steve | zipcode | 45601 | 5\|6 | cabin\|home\|work | 1\|2\|3\|4\|5 | + + +Compacting with the tuple (`node1`, `label`, `node2`, `id`) as the key (adding +the `id` column to the default for a KGTK edge file): + +```bash +kgtk compact file3.tsv --columns id +``` + +The output will be the following table in KGTK format: + +| node1 | label | node2 | id | location | years | +| ----- | ------- | ----- | ---- | ----------------- | ------------- | +| john | zipcode | 12345 | 1 | home | 10 | +| john | zipcode | 12346 | 2 | | | +| peter | zipcode | 12040 | 3 | home | | +| peter | zipcode | 12040 | 4 | cabin\|work | 5\|6 | +| steve | zipcode | 45601 | 5 | | 3\|4\|5 | +| steve | zipcode | 45601 | 5\|6 | cabin\|home\|work | 1\|2 | + +Since the `id` values are not duplicated between (`node1`, `label`, `node2`) +tuples, compacting on just the `id` column yields the same results: + +```bash +kgtk compact file3.tsv --mode=NONE --columns id +``` + +The output will be the following table in KGTK format: + +| node1 | label | node2 | id | location | years | +| ----- | ------- | ----- | ---- | ----------------- | ------------- | +| john | zipcode | 12345 | 1 | home | 10 | +| john | zipcode | 12346 | 2 | | | +| peter | zipcode | 12040 | 3 | home | | +| peter | zipcode | 12040 | 4 | cabin\|work | 5\|6 | +| steve | zipcode | 45601 | 5 | | 3\|4\|5 | +| steve | zipcode | 45601 | 5\|6 | cabin\|home\|work | 1\|2 | + diff --git a/kgtk/join/test/compact-file3.tsv b/kgtk/join/test/compact-file3.tsv new file mode 100644 index 000000000..63786623f --- /dev/null +++ b/kgtk/join/test/compact-file3.tsv @@ -0,0 +1,13 @@ +node1 label node2 id location years +john zipcode 12345 1 home 10 +john zipcode 12346 2 +peter zipcode 12040 3 home +peter zipcode 12040 4 cabin +peter zipcode 12040 4 work 5 +peter zipcode 12040 4 6 +steve zipcode 45601 5 3 +steve zipcode 45601 5 4 +steve zipcode 45601 5 5 +steve zipcode 45601 6 home 1 +steve zipcode 45601 6 work 2 +steve zipcode 45601 6 cabin diff --git a/kgtk/reshape/kgtkcompact.py b/kgtk/reshape/kgtkcompact.py index f6304acee..23d76ee78 100644 --- a/kgtk/reshape/kgtkcompact.py +++ b/kgtk/reshape/kgtkcompact.py @@ -174,6 +174,12 @@ def process(self): key_idx: int = kr.column_name_map[column_name] if key_idx not in key_idx_list: key_idx_list.append(key_idx) + + if self.verbose: + key_idx_list_str: typing.List[str] = [ ] + for key_idx in key_idx_list: + key_idx_list_str.append(str(key_idx)) + print("key indexes: %s" % " ".join(key_idx_list_str)) # Open the output file. ew: KgtkWriter = KgtkWriter.open(kr.column_names, From 86393e819dfa0e141c19b7250e80eb2e2d9ad500 Mon Sep 17 00:00:00 2001 From: Craig Milo Rogers Date: Tue, 26 May 2020 13:36:36 -0700 Subject: [PATCH 022/217] Fix copy-and-paste error. --- docs/unique.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/unique.md b/docs/unique.md index 53151d6a5..13aece17d 100644 --- a/docs/unique.md +++ b/docs/unique.md @@ -1,4 +1,4 @@ -The ifexists command reads a KGTK file, constructing a second KGTK file +The unique command reads a KGTK file, constructing a second KGTK file containing the unique values and counts for a column in the first file. This implementation, in Python, builds an im-memory dictionary of the unique From 21737fb44c6448ebde122f82d3529f1c06499af9 Mon Sep 17 00:00:00 2001 From: Craig Milo Rogers Date: Wed, 27 May 2020 10:55:27 -0700 Subject: [PATCH 023/217] Pass parse_fields through. --- kgtk/io/kgtkreader.py | 49 ++++++++++++++++++++++++++++++----------- kgtk/value/kgtkvalue.py | 37 ++++++++++++++++++++++++++++++- 2 files changed, 72 insertions(+), 14 deletions(-) diff --git a/kgtk/io/kgtkreader.py b/kgtk/io/kgtkreader.py index 7d6db095d..317cbd2f7 100644 --- a/kgtk/io/kgtkreader.py +++ b/kgtk/io/kgtkreader.py @@ -798,7 +798,9 @@ def concise_rows(self)->typing.Iterator[typing.List[typing.Optional[str]]]: yield results - def to_kgtk_values(self, row: typing.List[str], validate: bool = False)->typing.List[KgtkValue]: + def to_kgtk_values(self, row: typing.List[str], + validate: bool = False, + parse_fields: bool = False)->typing.List[KgtkValue]: """ Convert an input row into a list of KgtkValue instances. @@ -807,13 +809,16 @@ def to_kgtk_values(self, row: typing.List[str], validate: bool = False)->typing. results: typing.List[KgtkValue] = [ ] field: str for field in row: - kv = KgtkValue(field, options=self.value_options) + kv = KgtkValue(field, options=self.value_options, parse_fields=parse_fields) if validate: kv.validate() results.append(kv) return results - def kgtk_values(self, validate: bool = False)->typing.Iterator[typing.List[KgtkValue]]: + def kgtk_values(self, + validate: bool = False, + parse_fields: bool = False + )->typing.Iterator[typing.List[KgtkValue]]: """ Using a generator function, create an iterator that returns rows of fields as KgtkValue objects. @@ -822,11 +827,15 @@ def kgtk_values(self, validate: bool = False)->typing.Iterator[typing.List[KgtkV """ while True: try: - yield self.to_kgtk_values(self.nextrow(), validate=validate) + yield self.to_kgtk_values(self.nextrow(), validate=validate, parse_fields=parse_fields) except StopIteration: return - def to_concise_kgtk_values(self, row: typing.List[str], validate: bool = False)->typing.List[typing.Optional[KgtkValue]]: + def to_concise_kgtk_values(self, + row: typing.List[str], + validate: bool = False, + parse_fields: bool = False + )->typing.List[typing.Optional[KgtkValue]]: """ Convert an input row into a list of KgtkValue instances. Empty fields will be returned as None. @@ -838,13 +847,16 @@ def to_concise_kgtk_values(self, row: typing.List[str], validate: bool = False)- if len(field) == 0: results.append(None) else: - kv = KgtkValue(field, options=self.value_options) + kv = KgtkValue(field, options=self.value_options, parse_fields=parse_fields) if validate: kv.validate() results.append(kv) return results - def concise_kgtk_values(self, validate: bool = False)->typing.Iterator[typing.List[typing.Optional[KgtkValue]]]: + def concise_kgtk_values(self, + validate: bool = False, + parse_fields: bool = False + )->typing.Iterator[typing.List[typing.Optional[KgtkValue]]]: """ Using a generator function, create an iterator that returns rows of fields as KgtkValue objects, with empty fields returned as None. @@ -857,7 +869,8 @@ def concise_kgtk_values(self, validate: bool = False)->typing.Iterator[typing.Li except StopIteration: return - def to_dict(self, row: typing.List[str], concise: bool=False)->typing.Mapping[str, str]: + def to_dict(self, row: typing.List[str], concise: bool=False + )->typing.Mapping[str, str]: """ Convert an input row into a dict of named fields. @@ -880,7 +893,8 @@ def to_dict(self, row: typing.List[str], concise: bool=False)->typing.Mapping[st idx += 1 return results - def dicts(self, concise: bool=False)->typing.Iterator[typing.Mapping[str, str]]: + def dicts(self, concise: bool=False + )->typing.Iterator[typing.Mapping[str, str]]: """ Using a generator function, create an iterator that returns each row as a dict of named fields. @@ -893,7 +907,12 @@ def dicts(self, concise: bool=False)->typing.Iterator[typing.Mapping[str, str]]: except StopIteration: return - def to_kgtk_value_dict(self, row: typing.List[str], validate: bool=False, concise: bool=False)->typing.Mapping[str, KgtkValue]: + def to_kgtk_value_dict(self, + row: typing.List[str], + validate: bool=False, + parse_fields: bool=False, + concise: bool=False + )->typing.Mapping[str, KgtkValue]: """ Convert an input row into a dict of named fields. @@ -908,14 +927,18 @@ def to_kgtk_value_dict(self, row: typing.List[str], validate: bool=False, concis if concise and len(field) == 0: pass # Skip the empty field. else: - kv = KgtkValue(field, options=self.value_options) + kv = KgtkValue(field, options=self.value_options, parse_fields=parse_fields) if validate: kv.validate() results[self.column_names[idx]] = kv idx += 1 return results - def kgtk_value_dicts(self, validate: bool=False, concise: bool=False)->typing.Iterator[typing.Mapping[str, KgtkValue]]: + def kgtk_value_dicts(self, + validate: bool=False, + parse_fields: bool=False, + concise: bool=False + )->typing.Iterator[typing.Mapping[str, KgtkValue]]: """ Using a generator function, create an iterator that returns each row as a dict of named KgtkValue objects. @@ -926,7 +949,7 @@ def kgtk_value_dicts(self, validate: bool=False, concise: bool=False)->typing.It """ while True: try: - yield self.to_kgtk_value_dict(self.nextrow(), validate=validate, concise=concise) + yield self.to_kgtk_value_dict(self.nextrow(), validate=validate, parse_fields=parse_fields, concise=concise) except StopIteration: return diff --git a/kgtk/value/kgtkvalue.py b/kgtk/value/kgtkvalue.py index b0a2822ce..4b8bdf92c 100644 --- a/kgtk/value/kgtkvalue.py +++ b/kgtk/value/kgtkvalue.py @@ -94,6 +94,41 @@ class KgtkValueFields(): # Offer the contents of a boolean, after validating the item: truth: typing.Optional[bool] = attr.ib(validator=attr.validators.optional(attr.validators.instance_of(bool)), default=None) + FIELD_NAMES: typing.List[str] = [ + "list_len", + "data_type", + "valid", + "contents" + "lang", + "suffix", + "numberstr", + "number", + "low_tolerancestr", + "high_tolerancestr", + "si_units", + "wikidata_node", + "latstr", + "lat" + "lonstr", + "lon", + "yearstr", + "year", + "monthstr", + "month", + "daystr", + "day", + "hourstr", + "hour", + "minutesstr", + "minutes" + "secondsstr" + "seconds", + "zonestr", + "precisionstr", + "iso8601extended", + "truth", + ] + def to_map(self)->typing.Mapping[str, typing.Union[str, int, float, bool]]: results: typing.MutableMapping[str, typing.Union[str, int, float, bool]] = { } results["list_len"] = self.list_len @@ -234,7 +269,7 @@ def get_list_items(self)->typing.List['KgtkValue']: # Populate list_items with a KgtkValue for each item in the list: item_value: str for item_value in values: - self.list_items.append(KgtkValue(item_value, options=self.options, parent=self)) + self.list_items.append(KgtkValue(item_value, options=self.options, parse_fields=self.parse_fields, parent=self)) return self.list_items def is_list(self, validate: bool = False)->bool: From d4a19f8b1051525a47b2887256e3071e94e5fe59 Mon Sep 17 00:00:00 2001 From: Craig Milo Rogers Date: Wed, 27 May 2020 10:55:37 -0700 Subject: [PATCH 024/217] Explode fields. --- kgtk/reshape/kgtkexplode.py | 243 ++++++++++++++++++++++++++++++++++++ 1 file changed, 243 insertions(+) create mode 100644 kgtk/reshape/kgtkexplode.py diff --git a/kgtk/reshape/kgtkexplode.py b/kgtk/reshape/kgtkexplode.py new file mode 100644 index 000000000..da7c137dd --- /dev/null +++ b/kgtk/reshape/kgtkexplode.py @@ -0,0 +1,243 @@ +"""Copy records from the first KGTK file to the output file, +expanding lists. + +""" + +from argparse import ArgumentParser, Namespace +import attr +from pathlib import Path +import sys +import typing + +from kgtk.kgtkformat import KgtkFormat +from kgtk.io.kgtkreader import KgtkReader, KgtkReaderOptions +from kgtk.io.kgtkwriter import KgtkWriter +from kgtk.utils.argparsehelpers import optional_bool +from kgtk.value.kgtkvalue import KgtkValue, KgtkValueFields +from kgtk.value.kgtkvalueoptions import KgtkValueOptions + +@attr.s(slots=True, frozen=True) +class KgtkExplode(KgtkFormat): + input_file_path: typing.Optional[Path] = attr.ib(validator=attr.validators.optional(attr.validators.instance_of(Path))) + + output_file_path: typing.Optional[Path] = attr.ib(validator=attr.validators.optional(attr.validators.instance_of(Path))) + + column_name: str = attr.ib(validator=attr.validators.instance_of(str)) + + prefix: str = attr.ib(validator=attr.validators.instance_of(str)) + + field_names: typing.List[str] = attr.ib(validator=attr.validators.deep_iterable(member_validator=attr.validators.instance_of(str), + iterable_validator=attr.validators.instance_of(list))) + + overwrite_columns: bool = attr.ib(validator=attr.validators.instance_of(bool)) + expand_list: bool = attr.ib(validator=attr.validators.instance_of(bool)) + + # TODO: find working validators + # value_options: typing.Optional[KgtkValueOptions] = attr.ib(attr.validators.optional(attr.validators.instance_of(KgtkValueOptions)), default=None) + reader_options: typing.Optional[KgtkReaderOptions]= attr.ib(default=None) + value_options: typing.Optional[KgtkValueOptions] = attr.ib(default=None) + + error_file: typing.TextIO = attr.ib(default=sys.stderr) + verbose: bool = attr.ib(validator=attr.validators.instance_of(bool), default=False) + very_verbose: bool = attr.ib(validator=attr.validators.instance_of(bool), default=False) + + def process(self): + if len(self.column_name) == 0: + raise ValueError("The name of the column to explode is empty.") + + if self.verbose: + print("Validate the names of the fields to extract.", file=self.error_file, flush=True) + if len(self.field_names) == 0: + raise ValueError("The list of fields to explode is empty.") + field_name: str + for field_name in self.field_names: + if field_name not in KgtkValueFields.FIELD_NAMES: + raise ValueError("Unknown field name '%s'." % field_name) + + # Open the input file. + if self.verbose: + if self.input_file_path is not None: + print("Opening the input file: %s" % self.input_file_path, file=self.error_file, flush=True) + else: + print("Reading the input data from stdin", file=self.error_file, flush=True) + + kr: KgtkReader = KgtkReader.open(self.input_file_path, + error_file=self.error_file, + options=self.reader_options, + value_options = self.value_options, + verbose=self.verbose, + very_verbose=self.very_verbose, + ) + + if self.verbose: + print("Check that the source column '%s' is present." % self.column_name, file=self.error_file, flush=True) + if self.column_name not in kr.column_name_map: + raise ValueError("Column name '%s' not found in the input file." % self.column_name) + column_idx: int = kr.column_name_map[self.column_name] + + if self.verbose: + print("Build the map of exploded columns and list of new column names", file=self.error_file, flush=True) + explosion: typing.MutableMapping[str, idx] = { } + column_names: typing.List[str] = kr.column_names.copy() + for field_name in self.field_names: + exploded_name: str = self.prefix + field_name + if self.verbose: + print("Field '%s' becomes '%s'" % (field_name, exploded_name), file=self.error_file, flush=True) + if self.exploded_name in explosion: + raise ValueError("Field name '%s' is duplicated in the field list.") + if self.exploded_name in kr.column_names: + if self.overwrite_columns: + existing_idx = kr.column_name_map[exploded_name] + explosion[field_name] = existing_idx + if self.verbose: + print("Field '%s' is overwriting existing column '%s' (idx=%d)" % (field_name, exploded_name, existing_idx), + file=self.error_file, flush=True) + else: + raise ValueError("Exploded column '%s' already exists and not allowed to overwrite" % exploded_name) + else: + column_names.append(exploded_name) + exploded_idx: int = len(column_names) + explosion[field_name] = exploded_idx + if self.verbose: + print("Field '%s' becomes new column '%s' (idx=%d)" % (field_name, exploded_name, exploded_idx), file=self.error_file, flush=True) + new_column_count: int = len(column_names) - kr.column_count + + # Open the output file. + ew: KgtkWriter = KgtkWriter.open(column_names, + self.output_file_path, + mode=kr.mode, + require_all_columns=False, + prohibit_extra_columns=True, + fill_missing_columns=True, + gzip_in_parallel=False, + verbose=self.verbose, + very_verbose=self.very_verbose) + + if self.verbose: + print("Expanding records from %s" % self.input_file_path, file=self.error_file, flush=True) + input_line_count: int = 0 + output_line_count: int = 0; + + row: typing.List[str] + for row in kr: + input_line_count += 1 + + # Parse the value for the colummn being exploded: + item_to_explode: str = row[column_idx] + value: KgtkValue = KgtkValue(item_to_explode, parse_fields=True) + value.validate() + if not value.is_valid(): + if self.verbose: + print("Not exploding invalid item '%s' in input line %d" % (item_to_explode, input_line_count), file=self.error_file, flush=True) + ew.write(row) # This will be filled to the proper length + output_line_count += 1 + continue + + if value.is_list(): + if self.verbose: + print("Exploding a list: '%s'" % item_to_explode, file=self.error_file, flush=True) + subvalue: KgtkValue + for subvalue in value.get_list_items(): + if self.very_verbose: + print("Exploding '%s'" % subvalue.value) + ew.write(self.explode(subvalue, row, explosion, new_column_count)) + output_line_count += 1 + else: + if self.very_verbose: + print("Exploding '%s'" % value.value) + ew.write(self.explode(value, row, explosion, new_column_count)) + output_line_count += 1 + + if self.verbose: + print("Read %d records, wrote %d records." % (input_line_count, output_line_count), file=self.error_file, flush=True) + + ew.close() + + def explosion(self, value: KgtkValue, row: typing.List[str], explosion: typing.Mapping[str, int], new_column_count: int)->typing.List[str]: + newrow: typing.List[str] = row.copy() + if new_column_count > 0: + # Would it be better to do: + # + # if new_column_count > 0: + # newrow.extend(["] * new_column_count) + i: int + for i in range(new_column_count): + newrow.append("") + field_map: typing.Mapping[str, typing.Union[str, int, float, bool]] = value.get_field_map() + field_name: str + idx: int + for field_name, idx in explosion.items(): + if field_name in field_map: + newrow[idx] = repr(field_map[field_name]) + return newrow + + +def main(): + """ + Test the KGTK ifempty processor. + """ + parser: ArgumentParser = ArgumentParser() + + parser.add_argument(dest="input_file_path", help="The KGTK file with the input data. (default=%(default)s)", type=Path, nargs="?", default="-") + + parser.add_argument( "--column", dest="column_name", help="The name of the column to explode. (default=%(default)s).", default="node2") + + parser.add_argument( "--fields", dest="field_names", help="The names of the field to extract. (default=%(default)s).", nargs='+', + default=KgtkValueFields.FIELD_NAMES, choices=KgtkValueFields.FIELD_NAMES) + + parser.add_argument("-o", "--output-file", dest="output_file_path", help="The KGTK file to write (default=%(default)s).", type=Path, default="-") + + parser.add_argument( "--prefix", dest="prefix", help="The prefix for exploded column names. (default=%(default)s).", default="node2;") + + parser.add_argument( "--overwrite", dest="overwrite_columns", + help="Indicate that it is OK to overwrite existing columns. (default=%(default)s).", + type=optional_bool, nargs='?', const=True, default=False) + + parser.add_argument( "--expand", dest="expand_list", + help="Expand the source column if it contains a list, else fail. (default=%(default)s).", + type=optional_bool, nargs='?', const=True, default=False) + + KgtkReader.add_debug_arguments(parser) + KgtkReaderOptions.add_arguments(parser, mode_options=True) + KgtkValueOptions.add_arguments(parser) + + args: Namespace = parser.parse_args() + + error_file: typing.TextIO = sys.stdout if args.errors_to_stdout else sys.stderr + + # Build the option structures. + reader_options: KgtkReaderOptions = KgtkReaderOptions.from_args(args) + value_options: KgtkValueOptions = KgtkValueOptions.from_args(args) + + # Show the final option structures for debugging and documentation. + if args.show_options: + # TODO: show ifempty-specific options. + print("input: %s" % str(args.input_file_path), file=error_file, flush=True) + print("--column %s" % args.column_name, file=error_file, flush=True) + print("--prefix %s" % args.prefix, file=error_file, flush=True) + print("--overwrite %s" % str(args.overwrite), file=error_file, flush=True) + print("--expand %s" % str(args.expand_list), file=error_file, flush=True) + if args.fields is not None: + print("--fields %s" % " ".join(args.field_names), file=error_file, flush=True) + print("--output-file=%s" % str(args.output_file_path)) + reader_options.show(out=error_file) + value_options.show(out=error_file) + + ex: KgtkExplode = KgtkExplode( + input_file_path=args.input_file_path, + column_name=args.column_name, + prefix=args.prefix, + field_names=args.field_names, + overwrite_columns=args.overwrite_columns, + expand_list=args.expand_list, + output_file_path=args.output_file_path, + reader_options=reader_options, + value_options=value_options, + error_file=error_file, + verbose=args.verbose, + very_verbose=args.very_verbose) + + ex.process() + +if __name__ == "__main__": + main() From 27ef013694c5eacf554433d6ba30f1f8aac40658 Mon Sep 17 00:00:00 2001 From: Craig Milo Rogers Date: Wed, 27 May 2020 11:38:31 -0700 Subject: [PATCH 025/217] Make the default field list be a subset of the full field list. Handle parsed time fields properly. --- kgtk/value/kgtkvalue.py | 67 +++++++++++++++++++++++++++++++++-------- 1 file changed, 54 insertions(+), 13 deletions(-) diff --git a/kgtk/value/kgtkvalue.py b/kgtk/value/kgtkvalue.py index 4b8bdf92c..fcc152957 100644 --- a/kgtk/value/kgtkvalue.py +++ b/kgtk/value/kgtkvalue.py @@ -98,7 +98,7 @@ class KgtkValueFields(): "list_len", "data_type", "valid", - "contents" + "contents", "lang", "suffix", "numberstr", @@ -108,7 +108,7 @@ class KgtkValueFields(): "si_units", "wikidata_node", "latstr", - "lat" + "lat", "lonstr", "lon", "yearstr", @@ -120,8 +120,34 @@ class KgtkValueFields(): "hourstr", "hour", "minutesstr", - "minutes" - "secondsstr" + "minutes", + "secondsstr", + "seconds", + "zonestr", + "precisionstr", + "iso8601extended", + "truth", + ] + + DEFAULT_FIELD_NAMES: typing.List[str] = [ + "list_len", + "data_type", + "valid", + "contents", + "lang", + "suffix", + "number", + "low_tolerancestr", + "high_tolerancestr", + "si_units", + "wikidata_node", + "lat", + "lon", + "year", + "month", + "day", + "hour", + "minutes", "seconds", "zonestr", "precisionstr", @@ -133,7 +159,7 @@ def to_map(self)->typing.Mapping[str, typing.Union[str, int, float, bool]]: results: typing.MutableMapping[str, typing.Union[str, int, float, bool]] = { } results["list_len"] = self.list_len if self.data_type is not None: - results["data_type"] = self.data_type.name + results["data_type"] = self.data_type.name.lower() if self.valid is not None: results["valid"] = self.valid if self.contents is not None: @@ -1063,9 +1089,12 @@ def is_date_and_times(self, validate: bool=False)->bool: else: return False - if monthstr is not None: + month: typing.Optional[int] + if monthstr is None: + month = None + else: try: - month: int = int(monthstr) + month = int(monthstr) except ValueError: return False # shouldn't happen if month == 0: @@ -1076,9 +1105,12 @@ def is_date_and_times(self, validate: bool=False)->bool: elif not self.options.allow_month_or_day_zero: return False # month 0 was disallowed. - if daystr is not None: + day: typing.Optional[int] + if daystr is None: + day = None + else: try: - day: int = int(daystr) + day = int(daystr) except ValueError: return False # shouldn't happen if day == 0: @@ -1090,19 +1122,28 @@ def is_date_and_times(self, validate: bool=False)->bool: return False # day 0 was disallowed. # Convert the time fields to ints: - if hourstr is not None: + hour: typing.Optional[int] + if hourstr is None: + hour = None + else: try: - hour: int = int(hourstr) + hour = int(hourstr) except ValueError: return False # shouldn't happen - if minutesstr is not None: + minutes: typing.Optional[int] + if minutesstr is None: + mminutes = None + else: try: minutes: int = int(minutesstr) except ValueError: return False # shouldn't happen - if secondsstr is not None: + seconds: typing.Optional[int] + if secondsstr is None: + seconds = None + else: try: seconds: int = int(secondsstr) except ValueError: From 4ae73bca4aeb56e62b230cea1181ae6b04135001 Mon Sep 17 00:00:00 2001 From: Craig Milo Rogers Date: Wed, 27 May 2020 11:38:57 -0700 Subject: [PATCH 026/217] Explode field values. --- kgtk/reshape/kgtkexplode.py | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/kgtk/reshape/kgtkexplode.py b/kgtk/reshape/kgtkexplode.py index da7c137dd..c54379f66 100644 --- a/kgtk/reshape/kgtkexplode.py +++ b/kgtk/reshape/kgtkexplode.py @@ -83,9 +83,9 @@ def process(self): exploded_name: str = self.prefix + field_name if self.verbose: print("Field '%s' becomes '%s'" % (field_name, exploded_name), file=self.error_file, flush=True) - if self.exploded_name in explosion: + if exploded_name in explosion: raise ValueError("Field name '%s' is duplicated in the field list.") - if self.exploded_name in kr.column_names: + if exploded_name in kr.column_names: if self.overwrite_columns: existing_idx = kr.column_name_map[exploded_name] explosion[field_name] = existing_idx @@ -96,11 +96,14 @@ def process(self): raise ValueError("Exploded column '%s' already exists and not allowed to overwrite" % exploded_name) else: column_names.append(exploded_name) - exploded_idx: int = len(column_names) + exploded_idx: int = len(column_names) - 1 explosion[field_name] = exploded_idx if self.verbose: print("Field '%s' becomes new column '%s' (idx=%d)" % (field_name, exploded_name, exploded_idx), file=self.error_file, flush=True) new_column_count: int = len(column_names) - kr.column_count + if self.verbose: + print("%d columns + %d columns = %d columns" % (kr.column_count, new_column_count, len(column_names))) + print("Explosion length: %d" % len(explosion)) # Open the output file. ew: KgtkWriter = KgtkWriter.open(column_names, @@ -153,7 +156,7 @@ def process(self): ew.close() - def explosion(self, value: KgtkValue, row: typing.List[str], explosion: typing.Mapping[str, int], new_column_count: int)->typing.List[str]: + def explode(self, value: KgtkValue, row: typing.List[str], explosion: typing.Mapping[str, int], new_column_count: int)->typing.List[str]: newrow: typing.List[str] = row.copy() if new_column_count > 0: # Would it be better to do: @@ -168,7 +171,10 @@ def explosion(self, value: KgtkValue, row: typing.List[str], explosion: typing.M idx: int for field_name, idx in explosion.items(): if field_name in field_map: - newrow[idx] = repr(field_map[field_name]) + if field_name == "contents": + newrow[idx] = '"' + field_map[field_name] + '"' + else: + newrow[idx] = str(field_map[field_name]) return newrow @@ -183,7 +189,7 @@ def main(): parser.add_argument( "--column", dest="column_name", help="The name of the column to explode. (default=%(default)s).", default="node2") parser.add_argument( "--fields", dest="field_names", help="The names of the field to extract. (default=%(default)s).", nargs='+', - default=KgtkValueFields.FIELD_NAMES, choices=KgtkValueFields.FIELD_NAMES) + default=KgtkValueFields.DEFAULT_FIELD_NAMES, choices=KgtkValueFields.FIELD_NAMES) parser.add_argument("-o", "--output-file", dest="output_file_path", help="The KGTK file to write (default=%(default)s).", type=Path, default="-") From 07758fd0b8f382475bee98e960f8efdabf4ca971 Mon Sep 17 00:00:00 2001 From: Craig Milo Rogers Date: Wed, 27 May 2020 12:03:17 -0700 Subject: [PATCH 027/217] Perform extra validation on low_tolerance, high_tolerance, and precision. Fix comment on zonestr. --- kgtk/value/kgtkvalue.py | 80 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 71 insertions(+), 9 deletions(-) diff --git a/kgtk/value/kgtkvalue.py b/kgtk/value/kgtkvalue.py index fcc152957..3d91b2c2b 100644 --- a/kgtk/value/kgtkvalue.py +++ b/kgtk/value/kgtkvalue.py @@ -50,8 +50,10 @@ class KgtkValueFields(): number: typing.Optional[typing.Union[int, float]] = attr.ib(validator=attr.validators.optional(attr.validators.instance_of((int, float))), default=None) low_tolerancestr: typing.Optional[str] = attr.ib(validator=attr.validators.optional(attr.validators.instance_of(str)), default=None) + low_tolerance: typing.Optional[float] = attr.ib(validator=attr.validators.optional(attr.validators.instance_of(float)), default=None) high_tolerancestr: typing.Optional[str] = attr.ib(validator=attr.validators.optional(attr.validators.instance_of(str)), default=None) + high_tolerance: typing.Optional[float] = attr.ib(validator=attr.validators.optional(attr.validators.instance_of(float)), default=None) si_units: typing.Optional[str] = attr.ib(validator=attr.validators.optional(attr.validators.instance_of(str)), default=None) @@ -83,10 +85,11 @@ class KgtkValueFields(): secondsstr: typing.Optional[str] = attr.ib(validator=attr.validators.optional(attr.validators.instance_of(str)), default=None) seconds: typing.Optional[int] = attr.ib(validator=attr.validators.optional(attr.validators.instance_of(int)), default=None) - # Z or [-+]HH or [-+]HHSS or [-+]HH:SS + # Z or [-+]HH or [-+]HHMM or [-+]HH:MM zonestr: typing.Optional[str] = attr.ib(validator=attr.validators.optional(attr.validators.instance_of(str)), default=None) precisionstr: typing.Optional[str] = attr.ib(validator=attr.validators.optional(attr.validators.instance_of(str)), default=None) + precision: typing.Optional[int] = attr.ib(validator=attr.validators.optional(attr.validators.instance_of(int)), default=None) # True when hyphens/colons are present. iso8601extended: typing.Optional[bool] = attr.ib(validator=attr.validators.optional(attr.validators.instance_of(bool)), default=None) @@ -104,7 +107,9 @@ class KgtkValueFields(): "numberstr", "number", "low_tolerancestr", + "low_tolerance", "high_tolerancestr", + "high_tolerance", "si_units", "wikidata_node", "latstr", @@ -125,6 +130,7 @@ class KgtkValueFields(): "seconds", "zonestr", "precisionstr", + "precision", "iso8601extended", "truth", ] @@ -137,8 +143,8 @@ class KgtkValueFields(): "lang", "suffix", "number", - "low_tolerancestr", - "high_tolerancestr", + "low_tolerance", + "high_tolerance", "si_units", "wikidata_node", "lat", @@ -150,7 +156,7 @@ class KgtkValueFields(): "minutes", "seconds", "zonestr", - "precisionstr", + "precision", "iso8601extended", "truth", ] @@ -174,8 +180,12 @@ def to_map(self)->typing.Mapping[str, typing.Union[str, int, float, bool]]: results["number"] = self.number if self.low_tolerancestr is not None: results["low_tolerancestr"] = self.low_tolerancestr + if self.low_tolerance is not None: + results["low_tolerance"] = self.low_tolerance if self.high_tolerancestr is not None: results["high_tolerancestr"] = self.high_tolerancestr + if self.high_tolerance is not None: + results["high_tolerance"] = self.high_tolerance if self.si_units is not None: results["si_units"] = self.si_units if self.wikidata_node is not None: @@ -216,6 +226,8 @@ def to_map(self)->typing.Mapping[str, typing.Union[str, int, float, bool]]: results["zonestr"] = self.zonestr if self.precisionstr is not None: results["precisionstr"] = self.precisionstr + if self.precision is not None: + results["precision"] = self.precision if self.iso8601extended is not None: results["iso8601extended"] = self.iso8601extended if self.truth is not None: @@ -469,11 +481,29 @@ def is_number_or_quantity(self, validate: bool=False)->bool: return False # Extract the number or quantity components: - numberstr: str = m.group("number") - low_tolerancestr: str = m.group("low_tolerance") - high_tolerancestr: str = m.group("high_tolerance") - si_units: str = m.group("si_units") - wikidata_node: str = m.group("wikidata_node") + numberstr: typing.Optional[str] = m.group("number") + low_tolerancestr: typing.Optional[str] = m.group("low_tolerance") + high_tolerancestr: typing.Optional[str] = m.group("high_tolerance") + si_units: typing.Optional[str] = m.group("si_units") + wikidata_node: typing.Optional[str] = m.group("wikidata_node") + + low_tolerance: typing.Optional[float] + if low_tolerancestr is None: + low_tolerance = None + else: + try: + low_tolerance = float(low_tolerancestr) + except valueError: + return False + + high_tolerance: typing.Optional[float] + if high_tolerancestr is None: + high_tolerance = None + else: + try: + high_tolerance = float(high_tolerancestr) + except valueError: + return False # For convenience, convert the numeric part to int or float: # @@ -501,7 +531,9 @@ def is_number_or_quantity(self, validate: bool=False)->bool: numberstr=numberstr, number=number, low_tolerancestr=low_tolerancestr, + low_tolerance=low_tolerance, high_tolerancestr=high_tolerancestr, + high_tolerance=high_tolerance, si_units=si_units, wikidata_node=wikidata_node) return True @@ -602,6 +634,24 @@ def is_quantity(self, validate: bool=False)->bool: si_units:str = m.group("si_units") wikidata_node:str = m.group("wikidata_node") + low_tolerance: typing.Optional[float] + if low_tolerancestr is None: + low_tolerance = None + else: + try: + low_tolerance = float(low_tolerancestr) + except valueError: + return False + + high_tolerance: typing.Optional[float] + if high_tolerancestr is None: + high_tolerance = None + else: + try: + high_tolerance = float(high_tolerancestr) + except valueError: + return False + # For convenience, convert the numeric part to int or float: # # TODO: go to this extra work only when requested? @@ -634,7 +684,9 @@ def is_quantity(self, validate: bool=False)->bool: numberstr=numberstr, number=number, low_tolerancestr=low_tolerancestr, + low_tolerance=low_tolerance, high_tolerancestr=high_tolerancestr, + high_tolerance=high_tolerance, si_units=si_units, wikidata_node=wikidata_node) return True @@ -1149,6 +1201,15 @@ def is_date_and_times(self, validate: bool=False)->bool: except ValueError: return False # shouldn't happen + precision: typing.Optional[int] + if precisionstr is None: + precision = None + else: + try: + precision: int = int(precisionstr) + except ValueError: + return False # shouldn't happen + if fixup_needed: # Repair a month or day zero problem. self.update_date_and_times(yearstr, monthstr, daystr, hourstr, minutesstr, secondsstr, zonestr, precisionstr, iso8601extended) @@ -1172,6 +1233,7 @@ def is_date_and_times(self, validate: bool=False)->bool: seconds=seconds, zonestr=zonestr, precisionstr=precisionstr, + precision=precision, iso8601extended=iso8601extended, ) return True From 9f00d7ea73350294fdbb07e248c9c42264e5978e Mon Sep 17 00:00:00 2001 From: Craig Milo Rogers Date: Wed, 27 May 2020 12:03:36 -0700 Subject: [PATCH 028/217] Ad comments. --- kgtk/reshape/kgtkexplode.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/kgtk/reshape/kgtkexplode.py b/kgtk/reshape/kgtkexplode.py index c54379f66..c12b30110 100644 --- a/kgtk/reshape/kgtkexplode.py +++ b/kgtk/reshape/kgtkexplode.py @@ -172,8 +172,10 @@ def explode(self, value: KgtkValue, row: typing.List[str], explosion: typing.Map for field_name, idx in explosion.items(): if field_name in field_map: if field_name == "contents": + # Format this as a KGTK string. newrow[idx] = '"' + field_map[field_name] + '"' else: + # Convert everything else to a KGTK number or symbol newrow[idx] = str(field_map[field_name]) return newrow From caf1acc7098fa786a16b573a399a735ebb7a3e09 Mon Sep 17 00:00:00 2001 From: Craig Milo Rogers Date: Wed, 27 May 2020 12:05:10 -0700 Subject: [PATCH 029/217] Reorder the default fields. --- kgtk/value/kgtkvalue.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kgtk/value/kgtkvalue.py b/kgtk/value/kgtkvalue.py index 3d91b2c2b..a5620a34f 100644 --- a/kgtk/value/kgtkvalue.py +++ b/kgtk/value/kgtkvalue.py @@ -136,9 +136,9 @@ class KgtkValueFields(): ] DEFAULT_FIELD_NAMES: typing.List[str] = [ - "list_len", "data_type", "valid", + "list_len", "contents", "lang", "suffix", From f76bcc53e98cf33faab7a73bc9b337d2de06c0fe Mon Sep 17 00:00:00 2001 From: Craig Milo Rogers Date: Wed, 27 May 2020 12:16:06 -0700 Subject: [PATCH 030/217] More extensive format selectins. --- kgtk/reshape/kgtkexplode.py | 4 ++-- kgtk/value/kgtkvalue.py | 38 +++++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/kgtk/reshape/kgtkexplode.py b/kgtk/reshape/kgtkexplode.py index c12b30110..cafd6f35b 100644 --- a/kgtk/reshape/kgtkexplode.py +++ b/kgtk/reshape/kgtkexplode.py @@ -171,9 +171,9 @@ def explode(self, value: KgtkValue, row: typing.List[str], explosion: typing.Map idx: int for field_name, idx in explosion.items(): if field_name in field_map: - if field_name == "contents": + if KgtkValueFields.FIELD_NAME_FORMATS[field_name] == "str": # Format this as a KGTK string. - newrow[idx] = '"' + field_map[field_name] + '"' + newrow[idx] = '"' + str(field_map[field_name]) + '"' else: # Convert everything else to a KGTK number or symbol newrow[idx] = str(field_map[field_name]) diff --git a/kgtk/value/kgtkvalue.py b/kgtk/value/kgtkvalue.py index a5620a34f..54546ea98 100644 --- a/kgtk/value/kgtkvalue.py +++ b/kgtk/value/kgtkvalue.py @@ -161,6 +161,44 @@ class KgtkValueFields(): "truth", ] + FIELD_NAME_FORMATS: typing.Mapping[str, str] = { + "list_len": "int", + "data_type": "sym", + "valid": "bool", + "contents": "str", + "lang": "sym", + "suffix": "sym", + "numberstr": "str", + "number": "num", + "low_tolerancestr": "str", + "low_tolerance": "num", + "high_tolerancestr": "str", + "high_tolerance": "num", + "si_units": "sym", + "wikidata_node": "sym", + "latstr": "str", + "lat": "num", + "lonstr": "str", + "lon": "num", + "yearstr": "str", + "year": "num", + "monthstr": "str", + "month": "num", + "daystr": "str", + "day": "num", + "hourstr": "str", + "hour": "num", + "minutesstr": "str", + "minutes": "num", + "secondsstr": "str", + "seconds": "num", + "zonestr": "str", + "precisionstr": "str", + "precision": "num", + "iso8601extended": "bool", + "truth": "bool", + } + def to_map(self)->typing.Mapping[str, typing.Union[str, int, float, bool]]: results: typing.MutableMapping[str, typing.Union[str, int, float, bool]] = { } results["list_len"] = self.list_len From 60439d87fa8e44aee34700997abad49ba917f832 Mon Sep 17 00:00:00 2001 From: Craig Milo Rogers Date: Wed, 27 May 2020 13:35:28 -0700 Subject: [PATCH 031/217] Expand lists only when intended. --- kgtk/reshape/kgtkexplode.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/kgtk/reshape/kgtkexplode.py b/kgtk/reshape/kgtkexplode.py index cafd6f35b..31605b8e5 100644 --- a/kgtk/reshape/kgtkexplode.py +++ b/kgtk/reshape/kgtkexplode.py @@ -136,9 +136,9 @@ def process(self): output_line_count += 1 continue - if value.is_list(): + if self.expand_list and value.is_list(): if self.verbose: - print("Exploding a list: '%s'" % item_to_explode, file=self.error_file, flush=True) + print("Expanding a list: '%s'" % item_to_explode, file=self.error_file, flush=True) subvalue: KgtkValue for subvalue in value.get_list_items(): if self.very_verbose: @@ -171,12 +171,14 @@ def explode(self, value: KgtkValue, row: typing.List[str], explosion: typing.Map idx: int for field_name, idx in explosion.items(): if field_name in field_map: + newvalue: str if KgtkValueFields.FIELD_NAME_FORMATS[field_name] == "str": # Format this as a KGTK string. - newrow[idx] = '"' + str(field_map[field_name]) + '"' + newvalue = '"' + str(field_map[field_name]) + '"' else: # Convert everything else to a KGTK number or symbol - newrow[idx] = str(field_map[field_name]) + newvalue = str(field_map[field_name]) + newrow[idx] = newvalue return newrow @@ -190,7 +192,7 @@ def main(): parser.add_argument( "--column", dest="column_name", help="The name of the column to explode. (default=%(default)s).", default="node2") - parser.add_argument( "--fields", dest="field_names", help="The names of the field to extract. (default=%(default)s).", nargs='+', + parser.add_argument( "--fields", dest="field_names", help="The names of the fields to extract. (default=%(default)s).", nargs='+', default=KgtkValueFields.DEFAULT_FIELD_NAMES, choices=KgtkValueFields.FIELD_NAMES) parser.add_argument("-o", "--output-file", dest="output_file_path", help="The KGTK file to write (default=%(default)s).", type=Path, default="-") From ef08c5f5b2a7ee6cbbac0b50ed845b1576823751 Mon Sep 17 00:00:00 2001 From: Craig Milo Rogers Date: Wed, 27 May 2020 13:45:09 -0700 Subject: [PATCH 032/217] Store the test of a symbol as a field (useful when processing list items). --- kgtk/join/test/explode-file1.tsv | 15 +++++++++++++++ kgtk/value/kgtkvalue.py | 26 ++++++++++++++++++-------- 2 files changed, 33 insertions(+), 8 deletions(-) create mode 100644 kgtk/join/test/explode-file1.tsv diff --git a/kgtk/join/test/explode-file1.tsv b/kgtk/join/test/explode-file1.tsv new file mode 100644 index 000000000..c1593631f --- /dev/null +++ b/kgtk/join/test/explode-file1.tsv @@ -0,0 +1,15 @@ +node1 label node2 +john string "John" +john lqstring 'John'@en +john integer 12345 +john number 186.2 +john number 186.2e04 +john number -186.2 +john number +186.2e-6 +john quantity 84.3[84,85]kg +john date_and_time ^1960-11-05T00:00 +john date_and_time ^1980-11-05T00:00Z/6 +john location @60.2/134.3 +john boolean True +john symbol quadrature +john list home|work diff --git a/kgtk/value/kgtkvalue.py b/kgtk/value/kgtkvalue.py index 54546ea98..c53c13d4c 100644 --- a/kgtk/value/kgtkvalue.py +++ b/kgtk/value/kgtkvalue.py @@ -97,6 +97,9 @@ class KgtkValueFields(): # Offer the contents of a boolean, after validating the item: truth: typing.Optional[bool] = attr.ib(validator=attr.validators.optional(attr.validators.instance_of(bool)), default=None) + # Everything else must be a symbol. + symbol: typing.Optional[str] = attr.ib(validator=attr.validators.optional(attr.validators.instance_of(str)), default=None) + FIELD_NAMES: typing.List[str] = [ "list_len", "data_type", @@ -133,6 +136,7 @@ class KgtkValueFields(): "precision", "iso8601extended", "truth", + "symbol" ] DEFAULT_FIELD_NAMES: typing.List[str] = [ @@ -159,6 +163,7 @@ class KgtkValueFields(): "precision", "iso8601extended", "truth", + "symbol" ] FIELD_NAME_FORMATS: typing.Mapping[str, str] = { @@ -181,22 +186,23 @@ class KgtkValueFields(): "lonstr": "str", "lon": "num", "yearstr": "str", - "year": "num", + "year": "int", "monthstr": "str", - "month": "num", + "month": "int", "daystr": "str", - "day": "num", + "day": "int", "hourstr": "str", - "hour": "num", + "hour": "int", "minutesstr": "str", - "minutes": "num", + "minutes": "int", "secondsstr": "str", - "seconds": "num", + "seconds": "int", "zonestr": "str", "precisionstr": "str", - "precision": "num", + "precision": "int", "iso8601extended": "bool", "truth": "bool", + "symbol": "sym", } def to_map(self)->typing.Mapping[str, typing.Union[str, int, float, bool]]: @@ -270,6 +276,8 @@ def to_map(self)->typing.Mapping[str, typing.Union[str, int, float, bool]]: results["iso8601extended"] = self.iso8601extended if self.truth is not None: results["truth"] = self.truth + if self.symbol is not None: + results["symbol"] = self.symbol return results @attr.s(slots=True, frozen=False) @@ -796,7 +804,9 @@ def is_symbol(self, validate: bool = False)->bool: self.valid = True if self.parse_fields: self.fields = KgtkValueFields(data_type=self.data_type, - valid=self.valid) + valid=self.valid, + symbol=self.value, + ) return True def is_boolean(self, validate: bool = False)->bool: From e09561c3edaa12b908d65224493fb475be87cf8b Mon Sep 17 00:00:00 2001 From: Craig Milo Rogers Date: Wed, 27 May 2020 14:02:47 -0700 Subject: [PATCH 033/217] Remove an unwanted argument from parsing help. --- kgtk/cli/explode.py | 127 ++++++++++++++++++++++++++++++++++++ kgtk/reshape/kgtkexplode.py | 4 +- 2 files changed, 129 insertions(+), 2 deletions(-) create mode 100644 kgtk/cli/explode.py diff --git a/kgtk/cli/explode.py b/kgtk/cli/explode.py new file mode 100644 index 000000000..085278756 --- /dev/null +++ b/kgtk/cli/explode.py @@ -0,0 +1,127 @@ +"""Copy records from the first KGTK file to the output file, +expanding | lists. + +TODO: Need KgtkWriterOptions +""" + +from argparse import Namespace, SUPPRESS +from pathlib import Path +import sys +import typing + +from kgtk.cli_argparse import KGTKArgumentParser +from kgtk.io.kgtkreader import KgtkReader, KgtkReaderOptions +from kgtk.io.kgtkwriter import KgtkWriter +from kgtk.reshape.kgtkexplode import KgtkExplode +from kgtk.utils.argparsehelpers import optional_bool +from kgtk.value.kgtkvalue import KgtkValueFields +from kgtk.value.kgtkvalueoptions import KgtkValueOptions + +def parser(): + return { + 'help': 'Copy a KGTK file, exploding one column (normally node2) into seperate columns for each subfield.', + 'description': 'Copy a KGTK file, exploding one column (normally node2) into seperate columns for each subfield. ' + + 'If a cell in the column being exploded contains a list, that record is optionally expanded into multiple records ' + + 'before explosion, with all other columns copied-as is.' + + '\n\nAdditional options are shown in expert help.\nkgtk --expert expand --help' + } + + +def add_arguments_extended(parser: KGTKArgumentParser, parsed_shared_args: Namespace): + """ + Parse arguments + Args: + parser (argparse.ArgumentParser) + """ + + _expert: bool = parsed_shared_args._expert + + parser.add_argument( "input_kgtk_file", nargs="?", type=Path, default="-", + help="The KGTK file to filter. May be omitted or '-' for stdin (default=%(default)s).") + + parser.add_argument("-o", "--output-file", dest="output_kgtk_file", help="The KGTK file to write (default=%(default)s).", type=Path, default="-") + + parser.add_argument( "--column", dest="column_name", help="The name of the column to explode. (default=%(default)s).", default="node2") + + parser.add_argument( "--fields", dest="field_names", help="The names of the fields to extract. (default=%(default)s).", nargs='+', + default=KgtkValueFields.DEFAULT_FIELD_NAMES, choices=KgtkValueFields.FIELD_NAMES) + + parser.add_argument( "--prefix", dest="prefix", help="The prefix for exploded column names. (default=%(default)s).", default="node2;") + + parser.add_argument( "--overwrite", dest="overwrite_columns", + help="Indicate that it is OK to overwrite existing columns. (default=%(default)s).", + type=optional_bool, nargs='?', const=True, default=False) + + parser.add_argument( "--expand", dest="expand_list", + help="Expand the source column if it contains a list, else fail. (default=%(default)s).", + type=optional_bool, nargs='?', const=True, default=False) + + KgtkReader.add_debug_arguments(parser, expert=_expert) + KgtkReaderOptions.add_arguments(parser, mode_options=True, expert=_expert) + KgtkValueOptions.add_arguments(parser, expert=_expert) + +def run(input_kgtk_file: typing.Optional[Path], + output_kgtk_file: typing.Optional[Path], + column_name: str, + field_names: typing.List[str], + prefix: str, + overwrite_columns: bool, + expand_list: bool, + + errors_to_stdout: bool = False, + errors_to_stderr: bool = True, + show_options: bool = False, + verbose: bool = False, + very_verbose: bool = False, + + **kwargs # Whatever KgtkFileOptions and KgtkValueOptions want. +)->int: + # import modules locally + from kgtk.exceptions import KGTKException + + # Select where to send error messages, defaulting to stderr. + error_file: typing.TextIO = sys.stdout if errors_to_stdout else sys.stderr + + # Build the option structures. + reader_options: KgtkReaderOptions = KgtkReaderOptions.from_dict(kwargs) + value_options: KgtkValueOptions = KgtkValueOptions.from_dict(kwargs) + + # Show the final option structures for debugging and documentation. + if show_options: + print("input: %s" % (str(input_kgtk_file) if input_kgtk_file is not None else "-"), file=error_file) + print("--column %s" % column_name, file=error_file, flush=True) + print("--prefix %s" % prefix, file=error_file, flush=True) + print("--overwrite %s" % str(overwrite_columns), file=error_file, flush=True) + print("--expand %s" % str(expand_list), file=error_file, flush=True) + if field_names is not None: + print("--fields %s" % " ".join(field_names), file=error_file, flush=True) + print("--output-file=%s" % (str(output_kgtk_file) if output_kgtk_file is not None else "-"), file=error_file) + reader_options.show(out=error_file) + value_options.show(out=error_file) + print("=======", file=error_file, flush=True) + + try: + ex: KgtkExplode = KgtkExplode( + input_file_path=input_kgtk_file, + output_file_path=output_kgtk_file, + column_name=column_name, + field_names=field_names, + prefix=prefix, + overwrite_columns=overwrite_columns, + expand_list=expand_list, + reader_options=reader_options, + value_options=value_options, + error_file=error_file, + verbose=verbose, + very_verbose=very_verbose, + ) + + ex.process() + + return 0 + + except SystemExit as e: + raise KGTKException("Exit requested") + except Exception as e: + raise KGTKException(str(e)) + diff --git a/kgtk/reshape/kgtkexplode.py b/kgtk/reshape/kgtkexplode.py index 31605b8e5..56d2597a9 100644 --- a/kgtk/reshape/kgtkexplode.py +++ b/kgtk/reshape/kgtkexplode.py @@ -225,9 +225,9 @@ def main(): print("input: %s" % str(args.input_file_path), file=error_file, flush=True) print("--column %s" % args.column_name, file=error_file, flush=True) print("--prefix %s" % args.prefix, file=error_file, flush=True) - print("--overwrite %s" % str(args.overwrite), file=error_file, flush=True) + print("--overwrite %s" % str(args.overwrite_columns), file=error_file, flush=True) print("--expand %s" % str(args.expand_list), file=error_file, flush=True) - if args.fields is not None: + if args.field_names is not None: print("--fields %s" % " ".join(args.field_names), file=error_file, flush=True) print("--output-file=%s" % str(args.output_file_path)) reader_options.show(out=error_file) From ec3d7a248217544fac947045c7fa8b65e35fa14f Mon Sep 17 00:00:00 2001 From: Craig Milo Rogers Date: Wed, 27 May 2020 14:23:38 -0700 Subject: [PATCH 034/217] Document the explode command. --- docs/explode.md | 84 +++++++++++++++++++++++++++++++++++++++++++++++++ mkdocs.yml | 1 + 2 files changed, 85 insertions(+) create mode 100644 docs/explode.md diff --git a/docs/explode.md b/docs/explode.md new file mode 100644 index 000000000..15c65ea23 --- /dev/null +++ b/docs/explode.md @@ -0,0 +1,84 @@ +The explode command copies its input file to its output file, exploding one +column (normally node2) into seperate columns for esch structured subfield. If +a cell in the column being exploded contains a list, that record is optionally +expanded into multiple records before explosion, with all other columns +copied-as is. + +## Usage + +```bash +usage: kgtk explode [-h] [-o OUTPUT_KGTK_FILE] [--column COLUMN_NAME] + [--fields {list_len,data_type,valid,contents,lang,suffix,numberstr,number,low_tolerancestr,low_tolerance,high_tolerancestr,high_tolerance,si_units,wikidata_node,latstr,lat,lonstr,lon,yearstr,year,monthstr,month,daystr,day,hourstr,hour,minutesstr,minutes,secondsstr,seconds,zonestr,precisionstr,precision,iso8601extended,truth,symbol} [{list_len,data_type,valid,contents,lang,suffix,numberstr,number,low_tolerancestr,low_tolerance,high_tolerancestr,high_tolerance,si_units,wikidata_node,latstr,lat,lonstr,lon,yearstr,year,monthstr,month,daystr,day,hourstr,hour,minutesstr,minutes,secondsstr,seconds,zonestr,precisionstr,precision,iso8601extended,truth,symbol} ...]] + [--prefix PREFIX] [--overwrite [OVERWRITE_COLUMNS]] [--expand [EXPAND_LIST]] [-v] + [input_kgtk_file] + +Copy a KGTK file, exploding one column (normally node2) into seperate columns for each subfield. If a cell in the column being exploded contains a list, that record is optionally expanded into multiple records before explosion, with all other columns copied-as is. + +Additional options are shown in expert help. +kgtk --expert expand --help + +positional arguments: + input_kgtk_file The KGTK file to filter. May be omitted or '-' for stdin (default=-). + +optional arguments: + -h, --help show this help message and exit + -o OUTPUT_KGTK_FILE, --output-file OUTPUT_KGTK_FILE + The KGTK file to write (default=-). + --column COLUMN_NAME The name of the column to explode. (default=node2). + --fields {list_len,data_type,valid,contents,lang,suffix,numberstr,number,low_tolerancestr,low_tolerance,high_tolerancestr,high_tolerance,si_units,wikidata_node,latstr,lat,lonstr,lon,yearstr,year,monthstr,month,daystr,day,hourstr,hour,minutesstr,minutes,secondsstr,seconds,zonestr,precisionstr,precision,iso8601extended,truth,symbol} [{list_len,data_type,valid,contents,lang,suffix,numberstr,number,low_tolerancestr,low_tolerance,high_tolerancestr,high_tolerance,si_units,wikidata_node,latstr,lat,lonstr,lon,yearstr,year,monthstr,month,daystr,day,hourstr,hour,minutesstr,minutes,secondsstr,seconds,zonestr,precisionstr,precision,iso8601extended,truth,symbol} ...] + The names of the fields to extract. (default=['data_type', 'valid', 'list_len', 'contents', 'lang', 'suffix', 'number', 'low_tolerance', + 'high_tolerance', 'si_units', 'wikidata_node', 'lat', 'lon', 'year', 'month', 'day', 'hour', 'minutes', 'seconds', 'zonestr', 'precision', + 'iso8601extended', 'truth', 'symbol']). + --prefix PREFIX The prefix for exploded column names. (default=node2;). + --overwrite [OVERWRITE_COLUMNS] + Indicate that it is OK to overwrite existing columns. (default=False). + --expand [EXPAND_LIST] + Expand the source column if it contains a list, else fail. (default=False). + + -v, --verbose Print additional progress messages (default=False). +``` + +## Examples + +Suppose that `file1.tsv` contains the following table in KGTK format: + +| node1 | label | node2 | +| ----- | ------- | ----- | +| john | string | "John" | +| john | lqstring | "John"@en | +| john | integer | 12345 | +| john | number | 186.2 | +| john | number | 186.2e04 | +| john | number | -186.2 | +| john | number | +186.2e-6 | +| john | quantity | 84.3[84,85]kg | +| john | date_and_time | ^1960-11-05T00:00 | +| john | date_and_time | ^1960-11-05T00:00Z/6 | +| john | location | @60.2/134.3 | +| john | boolean | True | +| john | symbol | quadrature | +| john | list | home|work | + + +```bash +kgtk explode file1.tsv +``` + +The output will be the following table in KGTK format: + +| node1 | label | node2 | node2;data_type | node2;valid | node2;list_len | node2;contents | node2;lang | node2;suffix | node2;number | node2;low_tolerance | node2;high_tolerance | node2;si_units | node2;wikidata_node | node2;lat | node2;lon | node2;year | node2;month | node2;day | node2;hour | node2;minutes | node2;seconds | node2;zonestr | node2;precision | node2;iso8601extended | node2;truth | node2;symbol | +| ===== | ===== | ===== | =============== | =========== | ============== | ============== | =========== | =========== | ============ | =================== | ==================== | ============== | =================== | ========= | ========= | ========== | =========== | ========= | ========== | ============= | ============= | ============= | =============== | ===================== | =========== | ============ | +| john | string | "John" | string | True | 0 | "John" | | | | | | | | | | | | | | | | | | | | | +| john | lqstring | 'John'@en | language_qualified_string | True | 0 | "John" | en | | | | | | | | | | | | | | | | | | | | +| john | integer | 12345 | number | True | 0 | | | | 12345 | | | | | | | | | | | | | | | | | | +| john | number | 186.2 | number | True | 0 | | | | 186.2 | | | | | | | | | | | | | | | | | | +| john | number | 186.2e04 | number | True | 0 | | | | 1862000.0 | | | | | | | | | | | | | | | | | | +| john | number | -186.2 | number | True | 0 | | | | -186.2 | | | | | | | | | | | | | | | | | | +| john | number | +186.2e-6 | number | True | 0 | | | | 0.0001862 | | | | | | | | | | | | | | | | | | +| john | quantity | 84.3[84,85]kg | quantity | True | 0 | | | | 84.3 | 84.0 | 85.0 | kg | | | | | | | | | | | | | | | +| john | date_and_time | ^1960-11-05T00:00 | date_and_times | True | 0 | | | | | | | | | | | 1960 | 11 | 5 | 0 | 0 | | | | True | | | +| john | date_and_time | ^1980-11-05T00:00Z/6 | date_and_times | True | 0 | | | | | | | | | | | 1980 | 11 | 5 | 0 | 0 | | "Z" | 6 | True | | | +| john | location | @60.2/134.3 | location_coordinates | True | 0 | | | | | | | | | 60.2 | 134.3 | | | | | | | | | | | | +| john | boolean | True | boolean | True | 0 | | | | | | | | | | | | | | | | | | | | True | | +| john | symbol | quadrature | symbol | True | 0 | | | | | | | | | | | | | | | | | | | | | quadrature | +| john | list | home\|work | list | True | 2 | | | | | | | | | | | | | | | | | | | | | | diff --git a/mkdocs.yml b/mkdocs.yml index 4678bbb49..42eadf87c 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -9,6 +9,7 @@ nav: - 'compact': 'compact.md' - 'connected_components': 'connected_components.md' - 'expand': 'expand.md' + - 'explode': 'explode.md' - 'export_gt': 'export_gt.md' - 'filter': 'filter.md' - 'generate_wikidata_triples': 'generate_wikidata_triples.md' From 0c2e6b7a4a5ec385f77e74376cfaa4528aea604f Mon Sep 17 00:00:00 2001 From: ckxz105 Date: Wed, 27 May 2020 16:38:38 -0700 Subject: [PATCH 035/217] improve text embedding loading speed, move text embedding readme and requirement to root folder --- ...xt_embedding_README.md => README-text_embedding.md | 0 kgtk/cli/text_embedding.py | 9 ++------- kgtk/gt/embedding_utils.py | 11 ----------- kgtk/utils/argparsehelpers.py | 6 ++++-- ...requirement.txt => requirements-text_embedding.txt | 0 5 files changed, 6 insertions(+), 20 deletions(-) rename kgtk/cli/text_embedding_README.md => README-text_embedding.md (100%) rename kgtk/cli/text_embedding_requirement.txt => requirements-text_embedding.txt (100%) diff --git a/kgtk/cli/text_embedding_README.md b/README-text_embedding.md similarity index 100% rename from kgtk/cli/text_embedding_README.md rename to README-text_embedding.md diff --git a/kgtk/cli/text_embedding.py b/kgtk/cli/text_embedding.py index 5367f5193..8240cc917 100644 --- a/kgtk/cli/text_embedding.py +++ b/kgtk/cli/text_embedding.py @@ -215,13 +215,8 @@ def parser(): def add_arguments(parser): - from kgtk.gt.embedding_utils import str2bool + from kgtk.utils.argparsehelpers import optional_bool parser.accept_shared_argument('_debug') - # logging level, no longer need as there is a global --debug choice for it - # parser.add_argument('-l', '--logging-level', action='store', dest='logging_level', - # default="info", choices=("error", "warning", "info", "debug", "none"), - # help="set up the logging level, default is INFO level") - # parser.add_argument('--debug', dest='_debug', action='store_true', default=False, help='enable debug mode') # model name all_models_names = ALL_EMBEDDING_MODELS_NAMES @@ -298,7 +293,7 @@ def add_arguments(parser): default="1", dest="parallel_count", help="How many processes to be run in same time, default is 1.") # cache config - parser.add_argument("--use-cache", type=str2bool, nargs='?', action='store', + parser.add_argument("--use-cache", type=optional_bool, nargs='?', action='store', default=False, dest="use_cache", help="whether to use cache to get some embedding vectors quicker, default is False") parser.add_argument("--cache-host", nargs='?', action='store', diff --git a/kgtk/gt/embedding_utils.py b/kgtk/gt/embedding_utils.py index 95ddd7833..30db81796 100644 --- a/kgtk/gt/embedding_utils.py +++ b/kgtk/gt/embedding_utils.py @@ -733,17 +733,6 @@ def calculate_distance(a, b): return dist -def str2bool(v): - if isinstance(v, bool): - return v - if v.lower() in ('yes', 'true', 't', 'y', '1'): - return True - elif v.lower() in ('no', 'false', 'f', 'n', '0'): - return False - else: - raise argparse.ArgumentTypeError('Boolean value expected.') - - def connect_to_redis(host, port): _logger = logging.getLogger(__name__) redis_server = redis.Redis(host=host, port=port, db=0) diff --git a/kgtk/utils/argparsehelpers.py b/kgtk/utils/argparsehelpers.py index ba09b8370..ef6647457 100644 --- a/kgtk/utils/argparsehelpers.py +++ b/kgtk/utils/argparsehelpers.py @@ -17,8 +17,10 @@ """ import typing +from kgtk.exceptions import KGTKArgumentParseException -def optional_bool(value)->typing.Optional[bool]: + +def optional_bool(value) -> typing.Optional[bool]: if value is None: return None if isinstance(value, bool): @@ -27,4 +29,4 @@ def optional_bool(value)->typing.Optional[bool]: return False elif value.lower() in {'true', 't', '1', 'yes', 'y'}: return True - raise ValueError(f'{value} is not a valid boolean value') + raise KGTKArgumentParseException(f'{value} is not a valid boolean value') diff --git a/kgtk/cli/text_embedding_requirement.txt b/requirements-text_embedding.txt similarity index 100% rename from kgtk/cli/text_embedding_requirement.txt rename to requirements-text_embedding.txt From 8074512cda2b3efa336a231de9aa7598a3da9299 Mon Sep 17 00:00:00 2001 From: Craig Milo Rogers Date: Wed, 27 May 2020 17:01:39 -0700 Subject: [PATCH 036/217] Improved documentation for explode. --- docs/explode.md | 48 ++++++++++++++++++++++++++++++++---------------- 1 file changed, 32 insertions(+), 16 deletions(-) diff --git a/docs/explode.md b/docs/explode.md index 15c65ea23..567032583 100644 --- a/docs/explode.md +++ b/docs/explode.md @@ -38,26 +38,42 @@ optional arguments: -v, --verbose Print additional progress messages (default=False). ``` +## KGTK Data Types and Fields + +| Data Type | Fields | +| ========================= | =========================== | +| boolean | valid truth | +| date_and_times | valid yearstr year monthstr month daystr day hourstr hour minutesstr minutes secondsstr seconds zonestr precisionstr precision iso8601extended | +| empty | valid | +| extension | | +| language_qualified_string | valid contents lang suffix | +| list | valid list_len | +| location_coordinates | valid latstr lat nonstr lon | +| number | valid numberstr number | +| quantity | valid numberstr number low_tolerancestr low_tolerance high_tolerancestr high_tolerance si_units wikidata_node | +| string | valid contents | +| symbol | valid symbol | + ## Examples Suppose that `file1.tsv` contains the following table in KGTK format: -| node1 | label | node2 | -| ----- | ------- | ----- | -| john | string | "John" | -| john | lqstring | "John"@en | -| john | integer | 12345 | -| john | number | 186.2 | -| john | number | 186.2e04 | -| john | number | -186.2 | -| john | number | +186.2e-6 | -| john | quantity | 84.3[84,85]kg | -| john | date_and_time | ^1960-11-05T00:00 | -| john | date_and_time | ^1960-11-05T00:00Z/6 | -| john | location | @60.2/134.3 | -| john | boolean | True | -| john | symbol | quadrature | -| john | list | home|work | +| node1 | label | node2 | +| ===== | ============= | ============= | +| john | string | "John" | +| john | lqstring | "John"@en | +| john | integer | 12345 | +| john | number | 186.2 | +| john | number | 186.2e04 | +| john | number | -186.2 | +| john | number | +186.2e-6 | +| john | quantity | 84.3[84,85]kg | +| john | date_and_time | ^1960-11-05T00:00 | +| john | date_and_time | ^1960-11-05T00:00Z/6 | +| john | location | @60.2/134.3 | +| john | boolean | True | +| john | symbol | quadrature | +| john | list | home\|work | ```bash From 784c7ae855b8968350a1a93ea3f7d38ca4a4062b Mon Sep 17 00:00:00 2001 From: Craig Milo Rogers Date: Wed, 27 May 2020 17:09:08 -0700 Subject: [PATCH 037/217] Fix spacing. --- docs/expand.md | 10 ++++++++++ docs/explode.md | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/docs/expand.md b/docs/expand.md index 4a964b682..d69ab6d20 100644 --- a/docs/expand.md +++ b/docs/expand.md @@ -61,3 +61,13 @@ The output will be the following table in KGTK format: | steve | zipcode | 45601 | home | 1 | | steve | zipcode | 45601 | work | 2 | | steve | zipcode | 45601 | cabin | | + +Suppose you are importing an edge file (`file.tsv`)into KGTK format, with +columns `node1`, `label`, and `node2`, but `node2` contains `|` lists. KGTK +File Format v2 prohibits `|` lists in the `node1`, `label`, or `node2` columns +of an edge file. The following command will expand the `node2` values, resulting +in a valid (all else being valid) KGTK edge file: + +```bash +kgtk expand file.tsv --mode=NONE --columns node1 label +``` diff --git a/docs/explode.md b/docs/explode.md index 567032583..045d1e5b4 100644 --- a/docs/explode.md +++ b/docs/explode.md @@ -47,7 +47,7 @@ optional arguments: | empty | valid | | extension | | | language_qualified_string | valid contents lang suffix | -| list | valid list_len | +| list | valid list_len | | location_coordinates | valid latstr lat nonstr lon | | number | valid numberstr number | | quantity | valid numberstr number low_tolerancestr low_tolerance high_tolerancestr high_tolerance si_units wikidata_node | From 4c8e673a225a3c5febcfb9141ec51ad416f608ea Mon Sep 17 00:00:00 2001 From: Craig Milo Rogers Date: Wed, 27 May 2020 17:29:43 -0700 Subject: [PATCH 038/217] Harmonize with the wikidata importer somewhat. --- docs/explode.md | 16 +++---- kgtk/value/kgtkvalue.py | 104 ++++++++++++++++++++-------------------- 2 files changed, 60 insertions(+), 60 deletions(-) diff --git a/docs/explode.md b/docs/explode.md index 567032583..712c04223 100644 --- a/docs/explode.md +++ b/docs/explode.md @@ -8,7 +8,7 @@ copied-as is. ```bash usage: kgtk explode [-h] [-o OUTPUT_KGTK_FILE] [--column COLUMN_NAME] - [--fields {list_len,data_type,valid,contents,lang,suffix,numberstr,number,low_tolerancestr,low_tolerance,high_tolerancestr,high_tolerance,si_units,wikidata_node,latstr,lat,lonstr,lon,yearstr,year,monthstr,month,daystr,day,hourstr,hour,minutesstr,minutes,secondsstr,seconds,zonestr,precisionstr,precision,iso8601extended,truth,symbol} [{list_len,data_type,valid,contents,lang,suffix,numberstr,number,low_tolerancestr,low_tolerance,high_tolerancestr,high_tolerance,si_units,wikidata_node,latstr,lat,lonstr,lon,yearstr,year,monthstr,month,daystr,day,hourstr,hour,minutesstr,minutes,secondsstr,seconds,zonestr,precisionstr,precision,iso8601extended,truth,symbol} ...]] + [--fields {list_len,data_type,valid,text,language,suffix,numberstr,number,low_tolerancestr,low_tolerance,high_tolerancestr,high_tolerance,si_units,wikidata_node,latstr,lat,lonstr,lon,yearstr,year,monthstr,month,daystr,day,hourstr,hour,minutesstr,minutes,secondsstr,seconds,zonestr,precisionstr,precision,iso8601extended,truth,symbol} [{list_len,data_type,valid,text,language,suffix,numberstr,number,low_tolerancestr,low_tolerance,high_tolerancestr,high_tolerance,si_units,wikidata_node,latstr,lat,lonstr,lon,yearstr,year,monthstr,month,daystr,day,hourstr,hour,minutesstr,minutes,secondsstr,seconds,zonestr,precisionstr,precision,iso8601extended,truth,symbol} ...]] [--prefix PREFIX] [--overwrite [OVERWRITE_COLUMNS]] [--expand [EXPAND_LIST]] [-v] [input_kgtk_file] @@ -25,8 +25,8 @@ optional arguments: -o OUTPUT_KGTK_FILE, --output-file OUTPUT_KGTK_FILE The KGTK file to write (default=-). --column COLUMN_NAME The name of the column to explode. (default=node2). - --fields {list_len,data_type,valid,contents,lang,suffix,numberstr,number,low_tolerancestr,low_tolerance,high_tolerancestr,high_tolerance,si_units,wikidata_node,latstr,lat,lonstr,lon,yearstr,year,monthstr,month,daystr,day,hourstr,hour,minutesstr,minutes,secondsstr,seconds,zonestr,precisionstr,precision,iso8601extended,truth,symbol} [{list_len,data_type,valid,contents,lang,suffix,numberstr,number,low_tolerancestr,low_tolerance,high_tolerancestr,high_tolerance,si_units,wikidata_node,latstr,lat,lonstr,lon,yearstr,year,monthstr,month,daystr,day,hourstr,hour,minutesstr,minutes,secondsstr,seconds,zonestr,precisionstr,precision,iso8601extended,truth,symbol} ...] - The names of the fields to extract. (default=['data_type', 'valid', 'list_len', 'contents', 'lang', 'suffix', 'number', 'low_tolerance', + --fields {list_len,data_type,valid,text,language,suffix,numberstr,number,low_tolerancestr,low_tolerance,high_tolerancestr,high_tolerance,si_units,wikidata_node,latstr,lat,lonstr,lon,yearstr,year,monthstr,month,daystr,day,hourstr,hour,minutesstr,minutes,secondsstr,seconds,zonestr,precisionstr,precision,iso8601extended,truth,symbol} [{list_len,data_type,valid,text,language,suffix,numberstr,number,low_tolerancestr,low_tolerance,high_tolerancestr,high_tolerance,si_units,wikidata_node,latstr,lat,lonstr,lon,yearstr,year,monthstr,month,daystr,day,hourstr,hour,minutesstr,minutes,secondsstr,seconds,zonestr,precisionstr,precision,iso8601extended,truth,symbol} ...] + The names of the fields to extract. (default=['data_type', 'valid', 'list_len', 'text', 'language', 'suffix', 'number', 'low_tolerance', 'high_tolerance', 'si_units', 'wikidata_node', 'lat', 'lon', 'year', 'month', 'day', 'hour', 'minutes', 'seconds', 'zonestr', 'precision', 'iso8601extended', 'truth', 'symbol']). --prefix PREFIX The prefix for exploded column names. (default=node2;). @@ -46,12 +46,12 @@ optional arguments: | date_and_times | valid yearstr year monthstr month daystr day hourstr hour minutesstr minutes secondsstr seconds zonestr precisionstr precision iso8601extended | | empty | valid | | extension | | -| language_qualified_string | valid contents lang suffix | -| list | valid list_len | -| location_coordinates | valid latstr lat nonstr lon | +| language_qualified_string | valid text language suffix | +| list | valid list_len | +| location_coordinates | valid latitudestr latitude longitudestr longitude | | number | valid numberstr number | | quantity | valid numberstr number low_tolerancestr low_tolerance high_tolerancestr high_tolerance si_units wikidata_node | -| string | valid contents | +| string | valid text | | symbol | valid symbol | ## Examples @@ -82,7 +82,7 @@ kgtk explode file1.tsv The output will be the following table in KGTK format: -| node1 | label | node2 | node2;data_type | node2;valid | node2;list_len | node2;contents | node2;lang | node2;suffix | node2;number | node2;low_tolerance | node2;high_tolerance | node2;si_units | node2;wikidata_node | node2;lat | node2;lon | node2;year | node2;month | node2;day | node2;hour | node2;minutes | node2;seconds | node2;zonestr | node2;precision | node2;iso8601extended | node2;truth | node2;symbol | +| node1 | label | node2 | node2;data_type | node2;valid | node2;list_len | node2;text | node2;language | node2;suffix | node2;number | node2;low_tolerance | node2;high_tolerance | node2;si_units | node2;wikidata_node | node2;lat | node2;lon | node2;year | node2;month | node2;day | node2;hour | node2;minutes | node2;seconds | node2;zonestr | node2;precision | node2;iso8601extended | node2;truth | node2;symbol | | ===== | ===== | ===== | =============== | =========== | ============== | ============== | =========== | =========== | ============ | =================== | ==================== | ============== | =================== | ========= | ========= | ========== | =========== | ========= | ========== | ============= | ============= | ============= | =============== | ===================== | =========== | ============ | | john | string | "John" | string | True | 0 | "John" | | | | | | | | | | | | | | | | | | | | | | john | lqstring | 'John'@en | language_qualified_string | True | 0 | "John" | en | | | | | | | | | | | | | | | | | | | | diff --git a/kgtk/value/kgtkvalue.py b/kgtk/value/kgtkvalue.py index c53c13d4c..5097ceb89 100644 --- a/kgtk/value/kgtkvalue.py +++ b/kgtk/value/kgtkvalue.py @@ -37,10 +37,10 @@ class KgtkValueFields(): # Offer the components of a string or language-qualified string, after validating the item. # String contents without the enclosing quotes - contents: typing.Optional[str] = attr.ib(validator=attr.validators.optional(attr.validators.instance_of(str)), default=None) + text: typing.Optional[str] = attr.ib(validator=attr.validators.optional(attr.validators.instance_of(str)), default=None) # 2- or 3-character language code code without suffix. - lang: typing.Optional[str] = attr.ib(validator=attr.validators.optional(attr.validators.instance_of(str)), default=None) + language: typing.Optional[str] = attr.ib(validator=attr.validators.optional(attr.validators.instance_of(str)), default=None) # The language code suffix, including the leading dash. suffix: typing.Optional[str] = attr.ib(validator=attr.validators.optional(attr.validators.instance_of(str)), default=None) @@ -60,11 +60,11 @@ class KgtkValueFields(): wikidata_node: typing.Optional[str] = attr.ib(validator=attr.validators.optional(attr.validators.instance_of(str)), default=None) # Offer the components of a location coordinates, after validaating the item: - latstr: typing.Optional[str] = attr.ib(validator=attr.validators.optional(attr.validators.instance_of(str)), default=None) - lat: typing.Optional[float] = attr.ib(validator=attr.validators.optional(attr.validators.instance_of(float)), default=None) + latitudestr: typing.Optional[str] = attr.ib(validator=attr.validators.optional(attr.validators.instance_of(str)), default=None) + latitude: typing.Optional[float] = attr.ib(validator=attr.validators.optional(attr.validators.instance_of(float)), default=None) - lonstr: typing.Optional[str] = attr.ib(validator=attr.validators.optional(attr.validators.instance_of(str)), default=None) - lon: typing.Optional[float] = attr.ib(validator=attr.validators.optional(attr.validators.instance_of(float)), default=None) + longitudestr: typing.Optional[str] = attr.ib(validator=attr.validators.optional(attr.validators.instance_of(str)), default=None) + longitude: typing.Optional[float] = attr.ib(validator=attr.validators.optional(attr.validators.instance_of(float)), default=None) # Offer the components of a date and times, after validating the item: yearstr: typing.Optional[str] = attr.ib(validator=attr.validators.optional(attr.validators.instance_of(str)), default=None) @@ -104,8 +104,8 @@ class KgtkValueFields(): "list_len", "data_type", "valid", - "contents", - "lang", + "text", + "language", "suffix", "numberstr", "number", @@ -115,10 +115,10 @@ class KgtkValueFields(): "high_tolerance", "si_units", "wikidata_node", - "latstr", - "lat", - "lonstr", - "lon", + "latitudestr", + "lattitude", + "longitudestr", + "longitude", "yearstr", "year", "monthstr", @@ -143,16 +143,16 @@ class KgtkValueFields(): "data_type", "valid", "list_len", - "contents", - "lang", + "text", + "language", "suffix", "number", "low_tolerance", "high_tolerance", "si_units", "wikidata_node", - "lat", - "lon", + "latitude", + "longitude", "year", "month", "day", @@ -170,8 +170,8 @@ class KgtkValueFields(): "list_len": "int", "data_type": "sym", "valid": "bool", - "contents": "str", - "lang": "sym", + "text": "str", + "language": "sym", "suffix": "sym", "numberstr": "str", "number": "num", @@ -181,10 +181,10 @@ class KgtkValueFields(): "high_tolerance": "num", "si_units": "sym", "wikidata_node": "sym", - "latstr": "str", - "lat": "num", - "lonstr": "str", - "lon": "num", + "latitudestr": "str", + "latitide": "num", + "longitudestr": "str", + "longitude": "num", "yearstr": "str", "year": "int", "monthstr": "str", @@ -212,10 +212,10 @@ def to_map(self)->typing.Mapping[str, typing.Union[str, int, float, bool]]: results["data_type"] = self.data_type.name.lower() if self.valid is not None: results["valid"] = self.valid - if self.contents is not None: - results["contents"] = self.contents - if self.lang is not None: - results["lang"] = self.lang + if self.text is not None: + results["text"] = self.text + if self.language is not None: + results["language"] = self.language if self.suffix is not None: results["suffix"] = self.suffix if self.numberstr is not None: @@ -234,14 +234,14 @@ def to_map(self)->typing.Mapping[str, typing.Union[str, int, float, bool]]: results["si_units"] = self.si_units if self.wikidata_node is not None: results["wikidata_node"] = self.wikidata_node - if self.latstr is not None: - results["latstr"] = self.latstr - if self.lat is not None: - results["lat"] = self.lat - if self.lonstr is not None: - results["lonstr"] = self.lonstr - if self.lon is not None: - results["lon"] = self.lon + if self.latitudestr is not None: + results["latitudestr"] = self.latitudestr + if self.latitude is not None: + results["latitude"] = self.latitude + if self.longitudestr is not None: + results["longitudestr"] = self.longitudestr + if self.longitude is not None: + results["longitude"] = self.longitude if self.yearstr is not None: results["yearstr"] = self.yearstr if self.year is not None: @@ -539,7 +539,7 @@ def is_number_or_quantity(self, validate: bool=False)->bool: else: try: low_tolerance = float(low_tolerancestr) - except valueError: + except ValueError: return False high_tolerance: typing.Optional[float] @@ -548,7 +548,7 @@ def is_number_or_quantity(self, validate: bool=False)->bool: else: try: high_tolerance = float(high_tolerancestr) - except valueError: + except ValueError: return False # For convenience, convert the numeric part to int or float: @@ -686,7 +686,7 @@ def is_quantity(self, validate: bool=False)->bool: else: try: low_tolerance = float(low_tolerancestr) - except valueError: + except ValueError: return False high_tolerance: typing.Optional[float] @@ -695,7 +695,7 @@ def is_quantity(self, validate: bool=False)->bool: else: try: high_tolerance = float(high_tolerancestr) - except valueError: + except ValueError: return False # For convenience, convert the numeric part to int or float: @@ -737,8 +737,8 @@ def is_quantity(self, validate: bool=False)->bool: wikidata_node=wikidata_node) return True - lax_string_re: typing.Pattern = re.compile(r'^"(?P.*)"$') - strict_string_re: typing.Pattern = re.compile(r'^"(?P(?:[^"\\]|\\.)*)"$') + lax_string_re: typing.Pattern = re.compile(r'^"(?P.*)"$') + strict_string_re: typing.Pattern = re.compile(r'^"(?P(?:[^"\\]|\\.)*)"$') def is_string(self, validate: bool = False)->bool: """ @@ -777,7 +777,7 @@ def is_string(self, validate: bool = False)->bool: if self.parse_fields: self.fields = KgtkValueFields(data_type=KgtkFormat.DataType.STRING, valid=self.valid, - contents=m.group("contents")) + text=m.group("text")) return True def is_structured_literal(self)->bool: @@ -833,8 +833,8 @@ def is_boolean(self, validate: bool = False)->bool: # Support two or three character language codes. Suports hyphenated codes # with a country code or dialect namesuffix after the language code. - lax_language_qualified_string_re: typing.Pattern = re.compile(r"^'(?P.*)'@(?P(?P[a-zA-Z]{2,3})(?P-[a-zA-Z]+)?)$") - strict_language_qualified_string_re: typing.Pattern = re.compile(r"^'(?P(?:[^'\\]|\\.)*)'@(?P(?P[a-zA-Z]{2,3})(?P-[a-zA-Z]+)?)$") + lax_language_qualified_string_re: typing.Pattern = re.compile(r"^'(?P.*)'@(?P(?P[a-zA-Z]{2,3})(?P-[a-zA-Z]+)?)$") + strict_language_qualified_string_re: typing.Pattern = re.compile(r"^'(?P(?:[^'\\]|\\.)*)'@(?P(?P[a-zA-Z]{2,3})(?P-[a-zA-Z]+)?)$") def is_language_qualified_string(self, validate: bool=False)->bool: """ @@ -879,8 +879,8 @@ def is_language_qualified_string(self, validate: bool=False)->bool: if self.parse_fields: self.fields = KgtkValueFields(data_type=KgtkFormat.DataType.LANGUAGE_QUALIFIED_STRING, valid=self.valid, - contents=m.group("contents"), - lang=m.group("lang"), + text=m.group("text"), + language=m.group("language"), suffix=m.group("suffix")) return True @@ -1001,10 +1001,10 @@ def is_location_coordinates(self, validate: bool=False)->bool: if self.parse_fields: self.fields = KgtkValueFields(data_type=KgtkFormat.DataType.LOCATION_COORDINATES, valid=self.valid, - latstr=latstr, - lat=lat, - lonstr=lonstr, - lon=lon) + latitudestr=latstr, + latitude=lat, + longitudestr=lonstr, + longitude=lon) return True def update_location_coordinates(self, latstr: str, lonstr: str): @@ -1236,7 +1236,7 @@ def is_date_and_times(self, validate: bool=False)->bool: mminutes = None else: try: - minutes: int = int(minutesstr) + minutes = int(minutesstr) except ValueError: return False # shouldn't happen @@ -1245,7 +1245,7 @@ def is_date_and_times(self, validate: bool=False)->bool: seconds = None else: try: - seconds: int = int(secondsstr) + seconds = int(secondsstr) except ValueError: return False # shouldn't happen @@ -1254,7 +1254,7 @@ def is_date_and_times(self, validate: bool=False)->bool: precision = None else: try: - precision: int = int(precisionstr) + precision = int(precisionstr) except ValueError: return False # shouldn't happen From 7cb8c50324c9fe1d5582acb07e0b500de013c15c Mon Sep 17 00:00:00 2001 From: Craig Milo Rogers Date: Wed, 27 May 2020 18:10:38 -0700 Subject: [PATCH 039/217] Add date, time, and date_and_time structured fields. make date_and_time be the default, not year, month,day, hour, minutes, seconds. --- docs/explode.md | 8 +++--- kgtk/value/kgtkvalue.py | 54 ++++++++++++++++++++++++++--------------- 2 files changed, 39 insertions(+), 23 deletions(-) diff --git a/docs/explode.md b/docs/explode.md index 712c04223..870f606ae 100644 --- a/docs/explode.md +++ b/docs/explode.md @@ -8,7 +8,7 @@ copied-as is. ```bash usage: kgtk explode [-h] [-o OUTPUT_KGTK_FILE] [--column COLUMN_NAME] - [--fields {list_len,data_type,valid,text,language,suffix,numberstr,number,low_tolerancestr,low_tolerance,high_tolerancestr,high_tolerance,si_units,wikidata_node,latstr,lat,lonstr,lon,yearstr,year,monthstr,month,daystr,day,hourstr,hour,minutesstr,minutes,secondsstr,seconds,zonestr,precisionstr,precision,iso8601extended,truth,symbol} [{list_len,data_type,valid,text,language,suffix,numberstr,number,low_tolerancestr,low_tolerance,high_tolerancestr,high_tolerance,si_units,wikidata_node,latstr,lat,lonstr,lon,yearstr,year,monthstr,month,daystr,day,hourstr,hour,minutesstr,minutes,secondsstr,seconds,zonestr,precisionstr,precision,iso8601extended,truth,symbol} ...]] + [--fields {list_len,data_type,valid,text,language,suffix,numberstr,number,low_tolerancestr,low_tolerance,high_tolerancestr,high_tolerance,si_units,wikidata_node,latitudestr,lattitude,longitudestr,longitude,date,time,date_and_time,yearstr,year,monthstr,month,daystr,day,hourstr,hour,minutesstr,minutes,secondsstr,seconds,zonestr,precisionstr,precision,iso8601extended,truth,symbol} [{list_len,data_type,valid,text,language,suffix,numberstr,number,low_tolerancestr,low_tolerance,high_tolerancestr,high_tolerance,si_units,wikidata_node,latitudestr,lattitude,longitudestr,longitude,date,time,date_and_time,yearstr,year,monthstr,month,daystr,day,hourstr,hour,minutesstr,minutes,secondsstr,seconds,zonestr,precisionstr,precision,iso8601extended,truth,symbol} ...]] [--prefix PREFIX] [--overwrite [OVERWRITE_COLUMNS]] [--expand [EXPAND_LIST]] [-v] [input_kgtk_file] @@ -25,10 +25,9 @@ optional arguments: -o OUTPUT_KGTK_FILE, --output-file OUTPUT_KGTK_FILE The KGTK file to write (default=-). --column COLUMN_NAME The name of the column to explode. (default=node2). - --fields {list_len,data_type,valid,text,language,suffix,numberstr,number,low_tolerancestr,low_tolerance,high_tolerancestr,high_tolerance,si_units,wikidata_node,latstr,lat,lonstr,lon,yearstr,year,monthstr,month,daystr,day,hourstr,hour,minutesstr,minutes,secondsstr,seconds,zonestr,precisionstr,precision,iso8601extended,truth,symbol} [{list_len,data_type,valid,text,language,suffix,numberstr,number,low_tolerancestr,low_tolerance,high_tolerancestr,high_tolerance,si_units,wikidata_node,latstr,lat,lonstr,lon,yearstr,year,monthstr,month,daystr,day,hourstr,hour,minutesstr,minutes,secondsstr,seconds,zonestr,precisionstr,precision,iso8601extended,truth,symbol} ...] + --fields {list_len,data_type,valid,text,language,suffix,numberstr,number,low_tolerancestr,low_tolerance,high_tolerancestr,high_tolerance,si_units,wikidata_node,latitudestr,lattitude,longitudestr,longitude,date,time,date_and_time,yearstr,year,monthstr,month,daystr,day,hourstr,hour,minutesstr,minutes,secondsstr,seconds,zonestr,precisionstr,precision,iso8601extended,truth,symbol} [{list_len,data_type,valid,text,language,suffix,numberstr,number,low_tolerancestr,low_tolerance,high_tolerancestr,high_tolerance,si_units,wikidata_node,latitudestr,lattitude,longitudestr,longitude,date,time,date_and_time,yearstr,year,monthstr,month,daystr,day,hourstr,hour,minutesstr,minutes,secondsstr,seconds,zonestr,precisionstr,precision,iso8601extended,truth,symbol} ...] The names of the fields to extract. (default=['data_type', 'valid', 'list_len', 'text', 'language', 'suffix', 'number', 'low_tolerance', - 'high_tolerance', 'si_units', 'wikidata_node', 'lat', 'lon', 'year', 'month', 'day', 'hour', 'minutes', 'seconds', 'zonestr', 'precision', - 'iso8601extended', 'truth', 'symbol']). + 'high_tolerance', 'si_units', 'wikidata_node', 'latitude', 'longitude', 'date_and_time', 'precision', 'truth', 'symbol']). --prefix PREFIX The prefix for exploded column names. (default=node2;). --overwrite [OVERWRITE_COLUMNS] Indicate that it is OK to overwrite existing columns. (default=False). @@ -81,6 +80,7 @@ kgtk explode file1.tsv ``` The output will be the following table in KGTK format: +(This is obsolete, no that date_and_time is the default instead of individual subfields.) | node1 | label | node2 | node2;data_type | node2;valid | node2;list_len | node2;text | node2;language | node2;suffix | node2;number | node2;low_tolerance | node2;high_tolerance | node2;si_units | node2;wikidata_node | node2;lat | node2;lon | node2;year | node2;month | node2;day | node2;hour | node2;minutes | node2;seconds | node2;zonestr | node2;precision | node2;iso8601extended | node2;truth | node2;symbol | | ===== | ===== | ===== | =============== | =========== | ============== | ============== | =========== | =========== | ============ | =================== | ==================== | ============== | =================== | ========= | ========= | ========== | =========== | ========= | ========== | ============= | ============= | ============= | =============== | ===================== | =========== | ============ | diff --git a/kgtk/value/kgtkvalue.py b/kgtk/value/kgtkvalue.py index 5097ceb89..6e839d3fa 100644 --- a/kgtk/value/kgtkvalue.py +++ b/kgtk/value/kgtkvalue.py @@ -67,6 +67,10 @@ class KgtkValueFields(): longitude: typing.Optional[float] = attr.ib(validator=attr.validators.optional(attr.validators.instance_of(float)), default=None) # Offer the components of a date and times, after validating the item: + date: typing.Optional[str] = attr.ib(validator=attr.validators.optional(attr.validators.instance_of(str)), default=None) + time: typing.Optional[str] = attr.ib(validator=attr.validators.optional(attr.validators.instance_of(str)), default=None) # includes timezone + date_and_time: typing.Optional[str] = attr.ib(validator=attr.validators.optional(attr.validators.instance_of(str)), default=None) # includes timezone + yearstr: typing.Optional[str] = attr.ib(validator=attr.validators.optional(attr.validators.instance_of(str)), default=None) year: typing.Optional[int] = attr.ib(validator=attr.validators.optional(attr.validators.instance_of(int)), default=None) @@ -119,6 +123,9 @@ class KgtkValueFields(): "lattitude", "longitudestr", "longitude", + "date", + "time", + "date_and_time", "yearstr", "year", "monthstr", @@ -153,15 +160,8 @@ class KgtkValueFields(): "wikidata_node", "latitude", "longitude", - "year", - "month", - "day", - "hour", - "minutes", - "seconds", - "zonestr", + "date_and_time", "precision", - "iso8601extended", "truth", "symbol" ] @@ -185,6 +185,9 @@ class KgtkValueFields(): "latitide": "num", "longitudestr": "str", "longitude": "num", + "date": "str", + "time": "str", + "date_and_time": "str", "yearstr": "str", "year": "int", "monthstr": "str", @@ -242,6 +245,12 @@ def to_map(self)->typing.Mapping[str, typing.Union[str, int, float, bool]]: results["longitudestr"] = self.longitudestr if self.longitude is not None: results["longitude"] = self.longitude + if self.date is not None: + results["date"] = self.date + if self.time is not None: + results["time"] = self.time + if self.date_and_time is not None: + results["date_and_time"] = self.date_and_time if self.yearstr is not None: results["yearstr"] = self.yearstr if self.year is not None: @@ -1048,9 +1057,9 @@ def wrap_longitude(self, lon: float)->float: lax_year_pat: str = r'(?P[-+]?[0-9]{4}(?:[0-9]+(?=-))?)' # Extra digits must by followed by hyphen. lax_month_pat: str = r'(?P1[0-2]|0[0-9])' lax_day_pat: str = r'(?P3[01]|0[0-9]|[12][0-9])' - lax_date_pat: str = r'(?:{year}(?:(?P-)?{month}?(?:(?(hyphen)-){day})?)?)'.format(year=lax_year_pat, - month=lax_month_pat, - day=lax_day_pat) + lax_date_pat: str = r'(?P(?:{year}(?:(?P-)?{month}?(?:(?(hyphen)-){day})?)?))'.format(year=lax_year_pat, + month=lax_month_pat, + day=lax_day_pat) # hour-minutes-seconds hour_pat: str = r'(?P2[0-3]|[01][0-9])' minutes_pat: str = r'(?P[0-5][0-9])' @@ -1065,16 +1074,16 @@ def wrap_longitude(self, lon: float)->float: # TODO: consult the actual standard about the colon. zone_pat: str = r'(?PZ|[-+][01][0-9](?::?[0-5][0-9])?)' - time_pat: str = r'(?:{hour}(?:(?(hyphen):){minutes}(?:(?(hyphen):){seconds})?)?{zone}?)'.format(hour=hour_pat, - minutes=minutes_pat, - seconds=seconds_pat, - zone=zone_pat) + time_pat: str = r'(?P