Sha256: f3c85f33bacb366a21c02cd6733bf748b03490063c74304a63db3dea375865ec

Contents?: true

Size: 1.99 KB

Versions: 1

Compression:

Stored size: 1.99 KB

Contents

require 'dowl'

module DOWL
  
  class Property < DOWL::LabelledDocObject
    
    def initialize(resource, schema)
      super(resource, schema)
    end
    
    def see_alsos()
       links = []
       @schema.model.query(
         RDF::Query::Pattern.new( @resource, DOWL::Namespaces::RDFS.seeAlso ) ) do |statement|
         links << statement.object.to_s
       end       
       return links
    end
        
    def sub_property_of()
      parent = @schema.model.first_value(
        RDF::Query::Pattern.new( @resource, DOWL::Namespaces::RDFS.subPropertyOf) )
      if parent
        uri = parent.to_s
        if @schema.properties[uri]
          return @schema.properties[uri]
        else
          return uri
        end
      end
      return nil
    end
        
    def range()
      ranges = []
      @schema.model.query(RDF::Query::Pattern.new( @resource, DOWL::Namespaces::RDFS.range ) ) do |statement|
        ranges << statement.object
      end  
      classes = []
      ranges.each do |o|
        if o.resource?
          uri = o.to_s        
          if @schema.classes[uri]
            classes << @schema.classes[uri]
          else
            classes << uri
          end
        end
      end
      return classes
    end

    def domain()
      domains = []
      @schema.model.query(RDF::Query::Pattern.new( @resource, DOWL::Namespaces::RDFS.domain ) ) do |statement|
        domains << statement.object
      end  
      classes = []
      domains.each do |o|
        if o.resource?
          uri = o.to_s         
          if @schema.classes[uri]
            classes << @schema.classes[uri]
          else
            classes << uri
          end
        end
        #TODO union
      end
      return classes
    end
    
    def sub_properties()
      list = []
      @schema.model.query(RDF::Query::Pattern.new( nil, DOWL::Namespaces::RDFS.subPropertyOf, @resource ) ) do |statement|
        list << DOWL::Property.new( statement.subject, @schema )
      end
      return list
    end            
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
dowl-0.2 lib/dowl/property.rb