/** * * * @param string $class_id class id * @param string $ontology_property_name ontology property name * @param string $ontology_property_label ontology property label * @param string $range ontology property range * @return ontology property id */ function createOntologyProperty($class_id, $ontology_property_name, $ontology_property_label, $range) { global $datatype_ranges; global $parser_types; global $overall_classes; if ($ontology_property_name == "") { if ($ontology_property_label != "") { $ontology_property_name = getCamelCasePropertyNameFromLabel($ontology_property_label); } else { echo __LINE__ . " This should never happen!"; } } if (strpos($range, ",") !== false) { die(__LINE__ . ", in range"); } // Object or Datatype Property? if (in_array(strtolower($range), $datatype_ranges)) { $range_type = "datatype"; $range = strtolower($range); } elseif (in_array(strtolower($range), $parser_types)) { $range_type = "datatype"; // TODO: New Parser Type Rule // FIXME FIXME FIXME: $property_name is not defined $template_property_parser[$property_name] = strtolower($range); if (strtolower($range) == "unit") { echo "{$class_id}.{$ontology_property_name} - We can't handle split properties with Units at the moment."; } } else { if ($range == "object") { $range = "Thing"; } $range = str_replace(" ", "", $range); if (in_array($range, $overall_classes)) { $range_type = "object"; } else { echo "[WARNING] Unknown range for {$class_id}.{$ontology_property_name}: {$range}\n"; } } // Insert new class property and range into DB if (!($ontology_property_id = getOntologyPropertyId($class_id, $ontology_property_name))) { if ($range_type == "datatype") { $ontology_property_id = createOntologyDatatypePropertyAndGetId($class_id, $ontology_property_name, $range_type, $range, $ontology_property_label); } else { $ontology_property_id = createOntologyObjectPropertyAndGetId($class_id, $ontology_property_name, $range_type, $range, $ontology_property_label); } } if ($ontology_property_id) { if ($range_type == "datatype") { // datatype property // FIXME FIXME FIXME: $one_property is not defined. $query = "INSERT INTO parser_type_rule (class_property_id, parser_type, unit_type) VALUES ('" . $ontology_property_id . "', '" . $template_property_parser[$one_property] . "', NULL)"; mysqlQuery($query, __LINE__); } } else { die(__LINE__ . " [DIE] error"); } return $ontology_property_id; }
$type = "datatype"; } else { if (in_array($type, $unit_types)) { $unit_range = $type; $type = "string"; } else { if (in_array(str_replace(" ", "", $type), $overall_classes)) { $type = "object"; } else { echo "[DIE - MERGE] Unknown range for {$class_name}.{$label}: {$type}\n"; die; } } } } $ontology_property_id = createOntologyDatatypePropertyAndGetId($class_id, getCamelCasePropertyNameFromLabel($label), $type, $datatype_range, $label); if (in_array($unit_range, $unit_types)) { $strSQL = "INSERT INTO parser_type_rule (class_property_id, parser_type, unit_type) VALUES ('" . $ontology_property_id . "', '" . $type . "', '" . $unit_range . "')"; if (!mysql_query($strSQL)) { die(mysql_error() . " - query: " . $strSQL); } } $template_property_ids = array(); $i = 0; foreach ($merge_parts["name"] as $names) { // 3. create template property $template_property_id = insertTemplatePropertyAndGetId($template_id, $name); if ($exact_type[$i] != "") { $strSQL = "INSERT INTO template_parser_type_rule (template_property_id, unit_exact_type) VALUES ('" . $template_property_id . "', '" . $exact_type[$i] . "')"; if (!mysql_query($strSQL)) { //die(mysql_error() . " - query: ".$strSQL);