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 |