Class: RDF::OrderedRepo

Inherits:
Repository show all
Defined in:
vendor/bundler/ruby/3.3.0/bundler/gems/rdf-ordered-repo-fad0f6c1f768/lib/rdf/ordered_repo.rb

Overview

Sub-class of RDF::Repository with order-preserving properties.

Defined Under Namespace

Modules: VERSION

Constant Summary collapse

DEFAULT_GRAPH =
false

Constants inherited from Repository

Repository::DEFAULT_TX_CLASS

Constants inherited from Dataset

Dataset::ISOLATION_LEVELS

Instance Attribute Summary

Attributes inherited from Repository

#options, #title, #uri

Attributes included from Enumerable

#existentials, #universals

Instance Method Summary collapse

Methods inherited from Repository

#delete_insert, load

Methods included from Transactable

#begin_transaction, #commit_transaction, #rollback_transaction, #transaction

Methods included from Mutable

#<<, add_entailment, #clear, #delete, #delete_insert, #delete_statements, #entail, #entail!, #immutable?, #insert, #load, #method_missing, #mutable?, #respond_to_missing?, #update

Methods included from Util::Aliasing::LateBound

#alias_method

Methods included from Util::Coercions

#coerce_statements

Methods included from Writable

#<<, #insert, #insert_graph, #insert_reader, #insert_statements, #writable?

Methods included from Readable

#readable?

Methods inherited from Dataset

#inspect, #inspect!

Methods included from Queryable

#concise_bounded_description, #first, #first_literal, #first_object, #first_predicate, #first_subject, #first_value, #lint, #query, #query_execute, #query_without_sparql, #to_sparql

Methods included from Durable

#durable?, #nondurable?

Methods included from Enumerable

add_entailment, #canonicalize, #canonicalize!, #dump, #each_object, #each_predicate, #each_quad, #each_subject, #each_term, #each_triple, #entail, #enum_graph, #enum_object, #enum_predicate, #enum_quad, #enum_statement, #enum_subject, #enum_term, #enum_triple, #invalid?, #method_missing, #object?, #objects, #predicate?, #predicates, #project_graph, #quad?, #quads, #respond_to_missing?, #statements, #subject?, #subjects, #term?, #terms, #to_a, #to_h, #to_set, #triple?, #triples, #valid?, #validate!

Methods included from Isomorphic

#bijection_to, #isomorphic_with?

Methods included from Countable

#empty?

Constructor Details

#initialize(uri: nil, title: nil, transaction_class: RDF::Transaction::SerializedTransaction, **options) {|repository| ... } ⇒ OrderedRepo

Initializes this repository instance.

Parameters:

  • uri (URI, #to_s) (defaults to: nil)

    (nil)

  • title (String, #to_s) (defaults to: nil)

    (nil)

  • options (Hash{Symbol => Object})

Options Hash (**options):

  • :with_graph_name (Boolean) — default: true

    Indicates that the repository supports named graphs, otherwise, only the default graph is supported.

  • :with_validity (Boolean) — default: true

    Indicates that the repository supports named validation.

  • :transaction_class (Boolean) — default: RDF::Transaction::SerializedTransaction

    Specifies the RDF::Transaction implementation to use in this Repository.

Yields:

  • (repository)

Yield Parameters:



24
25
26
27
28
29
30
31
32
33
34
35
# File 'vendor/bundler/ruby/3.3.0/bundler/gems/rdf-ordered-repo-fad0f6c1f768/lib/rdf/ordered_repo.rb', line 24

def initialize(uri: nil, title: nil, transaction_class: RDF::Transaction::SerializedTransaction, **options, &block)
  @data = options.delete(:data) || {}
  super do
    @tx_class = transaction_class
    if block_given?
      case block.arity
        when 1 then block.call(self)
        else instance_eval(&block)
      end
    end
  end
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class RDF::Mutable

Instance Method Details

#apply_changeset(changeset) ⇒ Object



151
152
153
154
155
156
157
158
159
160
161
162
163
# File 'vendor/bundler/ruby/3.3.0/bundler/gems/rdf-ordered-repo-fad0f6c1f768/lib/rdf/ordered_repo.rb', line 151

def apply_changeset(changeset)
  data = @data
  changeset.deletes.each do |del|
    if del.constant?
      data = delete_from(data, del)
    else
      # we need this condition to handle wildcard statements
      query_pattern(del) { |stmt| data = delete_from(data, stmt) }
    end
  end
  changeset.inserts.each { |ins| data = insert_to(data, ins) }
  @data = data
end

#graph?Boolean #graph?(name) ⇒ Boolean Also known as: has_graph?

Overloads:

  • #graph?Boolean

    Returns false to indicate that this is not a graph.

    Returns:

    • (Boolean)
  • #graph?(name) ⇒ Boolean

    Returns true if self contains the given RDF graph_name.

    Parameters:

    • graph_name (RDF::Resource, false)

      Use value false to query for the default graph_name

    Returns:

    • (Boolean)


85
86
87
88
89
90
91
# File 'vendor/bundler/ruby/3.3.0/bundler/gems/rdf-ordered-repo-fad0f6c1f768/lib/rdf/ordered_repo.rb', line 85

def graph?(*args)
  case args.length
  when 0 then false
  when 1 then @data.key?(args.first)
  else raise ArgumentError("wrong number of arguments (given #{args.length}, expected 0 or 1)")
  end
end

#isolation_levelObject



167
168
169
# File 'vendor/bundler/ruby/3.3.0/bundler/gems/rdf-ordered-repo-fad0f6c1f768/lib/rdf/ordered_repo.rb', line 167

def isolation_level
  :snapshot
end

#snapshotDataset

A readable & queryable snapshot of the repository for isolated reads.

Returns:

  • (Dataset)

    an immutable Dataset containing a current snapshot of the Repository contents.

See Also:



178
179
180
# File 'vendor/bundler/ruby/3.3.0/bundler/gems/rdf-ordered-repo-fad0f6c1f768/lib/rdf/ordered_repo.rb', line 178

def snapshot
  self.class.new(data: @data).freeze
end

#statement?Boolean #statement?(statement) ⇒ Object Also known as: has_statement?

Overloads:



121
122
123
124
125
126
127
# File 'vendor/bundler/ruby/3.3.0/bundler/gems/rdf-ordered-repo-fad0f6c1f768/lib/rdf/ordered_repo.rb', line 121

def statement?(*args)
  case args.length
  when 0 then false
  when 1 then args.first && statement_in?(@data, args.first)
  else raise ArgumentError("wrong number of arguments (given #{args.length}, expected 0 or 1)")
  end
end

#supports?(feature) ⇒ Boolean

Returns true if this respository supports the given feature.

This repository supports list_terms.

Returns:

  • (Boolean)


41
42
43
44
45
46
47
# File 'vendor/bundler/ruby/3.3.0/bundler/gems/rdf-ordered-repo-fad0f6c1f768/lib/rdf/ordered_repo.rb', line 41

def supports?(feature)
  case feature.to_sym
  when :rdfstar          then true
  when :snapshots        then true
  else super
  end
end

#to_queryRDF::Query

Creates a query from the statements in this repository, turning blank nodes into non-distinguished variables. This can be used to determine if this repository is logically a subset of another repository.

Returns:



53
54
55
56
57
58
59
# File 'vendor/bundler/ruby/3.3.0/bundler/gems/rdf-ordered-repo-fad0f6c1f768/lib/rdf/ordered_repo.rb', line 53

def to_query
  RDF::Query.new do |query|
    each do |statement|
      query.pattern RDF::Query::Pattern.from(statement, ndvars: true)
    end
  end
end