diff options
author | mguetlein <martin.guetlein@gmail.com> | 2010-06-22 16:16:54 +0200 |
---|---|---|
committer | mguetlein <martin.guetlein@gmail.com> | 2010-06-22 16:16:54 +0200 |
commit | 6c663f3bb95b45d5cb7e356ff6d1913a3e03212c (patch) | |
tree | f62a4856fab623ea1a9bad0222f7c60c503d0821 /lib | |
parent | 2ee258935818fa3dcc9b863216f383969807c191 (diff) |
add types to validaiton rdfs
Diffstat (limited to 'lib')
-rw-r--r-- | lib/rdf_provider.rb | 32 |
1 files changed, 26 insertions, 6 deletions
diff --git a/lib/rdf_provider.rb b/lib/rdf_provider.rb index 5894cb1..7fa3ecc 100644 --- a/lib/rdf_provider.rb +++ b/lib/rdf_provider.rb @@ -61,6 +61,10 @@ module Lib def object_property_name( prop ) return self.class::OBJECT_PROPERTIES[ prop ] end + + def object_type( prop ) + return self.class::OBJECTS[ prop ] + end def class?(prop) self.class::CLASSES.has_key?( prop ) @@ -140,9 +144,15 @@ module Lib break if @model.subject(@rdf_provider.object_property_name(property), res).nil? count += 1 end - @model.add res, RDF['type'], @rdf_provider.class_name(property) - @model.add res, DC['title'], @rdf_provider.class_name(property) - @model.add node, @rdf_provider.object_property_name(property), res + clazz = Redland::Resource.new(@rdf_provider.class_name(property)) + @model.add res, RDF['type'], clazz + @model.add res, DC['title'], clazz + @model.add clazz, RDF['type'], OWL['Class'] + @model.add DC['title'], RDF['type'],OWL['AnnotationProperty'] + + objectProp = Redland::Resource.new(@rdf_provider.object_property_name(property)) + @model.add objectProp, RDF['type'], OWL['ObjectProperty'] + @model.add node, objectProp, res return res end @@ -154,14 +164,24 @@ module Lib @model.delete node, @rdf_provider.literal_name(property), l rescue end - @model.add node, @rdf_provider.literal_name(property), Redland::Literal.create(value) + literalProp = Redland::Resource.new(@rdf_provider.literal_name(property)) + @model.add literalProp, RDF['type'],OWL['AnnotationProperty'] + @model.add node, literalProp, Redland::Literal.create(value) end def add_object_property(property, value, node ) raise "empty object property value "+property.to_s if value==nil || value.to_s.size==0 raise "no object property name "+propety.to_s unless @rdf_provider.object_property_name(property) - @model.add node, @rdf_provider.object_property_name(property), Redland::Uri.new(value) # untyped individual comes from this line, why?? - #@model.add Redland::Uri.new(value), RDF['type'], type + raise "no object type "+property.to_s unless @rdf_provider.object_type(property) + + objectProp = Redland::Resource.new(@rdf_provider.object_property_name(property)) + @model.add objectProp, RDF['type'], OWL['ObjectProperty'] + + val = Redland::Resource.new(value) + type = Redland::Resource.new(@rdf_provider.object_type(property)) + @model.add node, objectProp, val + @model.add val, RDF['type'], type + @model.add type, RDF['type'], OWL['Class'] end end |