@@ -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