Skip to content

Commit f03e524

Browse files
committed
Fix translation of HasKey axioms
1 parent 76d7190 commit f03e524

1 file changed

Lines changed: 20 additions & 15 deletions

File tree

src/ofn_2_ldtab/axiom_translation.rs

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1121,28 +1121,33 @@ pub fn translate_has_key_axiom(v: &Value) -> Value {
11211121
let owl = annotation_translation::get_owl(v);
11221122
let annotations = annotation_translation::get_annotations(v);
11231123

1124-
let operands: Value = property_translation::translate_list(&(owl.as_array().unwrap())[1..]);
1125-
let annotation = annotation_translation::translate_annotations(&annotations);
1126-
1127-
let blank_node = json!({"predicate":"<http://www.w3.org/2002/07/owl#hasKey>",
1128-
"object": {"<http://www.w3.org/2002/07/owl#members>":[{"object":operands, "datatype":"_JSONLIST"}]},
1129-
"datatype": "_JSONMAP"});
1124+
let class = class_translation::translate(&owl[1]);
1125+
let ops = property_translation::translate_list(&owl[2].as_array().unwrap());
1126+
let dps = property_translation::translate_list(&owl[3].as_array().unwrap());
1127+
1128+
let mut operands = ops;
1129+
if !dps.is_null() {
1130+
if operands.is_null() {
1131+
operands = dps;
1132+
} else if operands.is_array() && dps.is_array() {
1133+
let mut ops_array = operands.as_array().unwrap().clone();
1134+
let dps_array = dps.as_array().unwrap();
1135+
ops_array.extend(dps_array.iter().cloned());
1136+
operands = Value::Array(ops_array);
1137+
}
1138+
}
11301139

1131-
let blank_sorted = util::sort_value(&blank_node);
1132-
let blank_string = blank_sorted.to_string();
1140+
//let operands: Value = property_translation::translate_list(&(owl.as_array().unwrap())[1..]);
1141+
let annotation = annotation_translation::translate_annotations(&annotations);
11331142

1134-
let mut hasher = Sha256::new();
1135-
hasher.update(blank_string.as_bytes());
1136-
let blank_node_hash = hasher.finalize();
1137-
let blank_node_id = format!("<ldtab:blanknode:{:x}>", blank_node_hash);
11381143

11391144
let triple = json!({"assertion":"1",
11401145
"retraction":"0",
11411146
"graph":"graph", //TODO
1142-
"subject":blank_node_id,
1147+
"subject":class,
11431148
"predicate":"<http://www.w3.org/2002/07/owl#hasKey>",
1144-
"object": {"<http://www.w3.org/2002/07/owl#members>":operands, "datatype":"_JSONLIST"}, //TODO remove datatype
1145-
"datatype": "_JSONMAP",
1149+
"object": operands,
1150+
"datatype": "_JSONLIST",
11461151
"annotation":annotation});
11471152
triple
11481153
}

0 commit comments

Comments
 (0)