Method: OpenTox::Owl#set

Defined in:
lib/owl.rb

#set(predicate, object, current_node = @root_node) ⇒ Object

sets values of current_node (by default root_node)

note: this does not delete existing triples

  • there can be several triples for the same subject and predicate ( e.g. after set(“description”,“bla1”) and set(“description”,“bla2”)

    both descriptions are in the model, 
    but the get("description") will give you only one object (by chance)
    
  • this does not matter in pratice (only dataset uses this -> load_dataset-methods)

  • identical values appear only once in rdf



309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
# File 'lib/owl.rb', line 309

def set(predicate, object, current_node=@root_node )
  
  pred = predicate.to_s
  raise "uri is no prop, cannot set uri" if pred=="uri"
  raise "dc[identifier] deprecated, use owl.uri" if pred=="identifier"
  if (object.is_a?(Redland::Node) and object.blank?) or nil==object or object.to_s.size==0
    # set only not-nil values
    LOGGER.warn "skipping (not setting) empty value in rdf for property: '"+pred+"'"
    return 
  end
  
  if pred=="type"
    # predicate is type, set class of current node
    set_type(object, current_node)
  elsif LITERAL_TYPES.has_key?(pred)
    # predicate is literal
    set_literal(pred,object,LITERAL_TYPES[pred],current_node)
  elsif OBJECT_PROPERTY_CLASS.has_key?(pred)
    # predicte is objectProperty, object is another resource
    set_object_property(pred,object,OBJECT_PROPERTY_CLASS[pred],current_node)
  else
    raise "unkonwn rdf-property, please add: '"+pred+"' to OpenTox::OWL.OBJECT_PROPERTY_CLASS or OpenTox::OWL.LITERAL_TYPES"
  end
end