Class: RDF::N3::Algebra::Log::Semantics
- Inherits:
-
ResourceOperator
- Object
- SPARQL::Algebra::Operator::Binary
- ResourceOperator
- RDF::N3::Algebra::Log::Semantics
- Defined in:
- lib/rdf/n3/algebra/log/semantics.rb
Overview
The log:semantics of a document is the formula. achieved by parsing representation of the document. For a document in Notation3, log:semantics is the log:parsedAsN3 of the log:contents of the document. For a document in RDF/XML, it is parsed according to the RDF/XML specification to yield an RDF formula (a subclass of N3 log:Formula).
[Aside: Philosophers will be distracted here into worrying about the meaning of meaning. At least we didn’t call this function “meaning”! In as much as N3 is used as an interlingua for interoperability for different systems, this for an N3 based system is the meaning expressed by a document.]
(Cwm knows how to go get a document and parse N3 and RDF/XML it in order to evaluate this. Other languages for web documents may be defined whose N3 semantics are therefore also calculable, and so they could be added in due course. See for example GRDDL, RDFa, etc)
Constant Summary collapse
Instance Attribute Summary
Attributes included from Enumerable
Instance Method Summary collapse
-
#resolve(resource, position: :subject) ⇒ RDF::Term
Parses the subject into a new formula.
Methods inherited from ResourceOperator
#as_literal, #execute, #input_operand, #valid?
Methods included from Builtin
#each, #evaluate, #hash, #input_operand, #rank, #to_uri
Instance Method Details
#resolve(resource, position: :subject) ⇒ RDF::Term
Parses the subject into a new formula.
Returns nil if resource does not validate, given its position
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/rdf/n3/algebra/log/semantics.rb', line 19 def resolve(resource, position: :subject) case position when :subject return nil unless resource.literal? || resource.uri? begin repo = RDF::N3::Repository.new repo << RDF::Reader.open(resource, **@options.merge(list_terms: true, base_uri: resource, logger: false)) content_hash = repo.statements.hash # used as name of resulting formula form = RDF::N3::Algebra::Formula.from_enumerable(repo, graph_name: RDF::Node.intern(content_hash)) log_debug(NAME) {"form hash (#{resource}): #{form.hash}"} form rescue IOError, RDF::ReaderError => e log_error(NAME) {"error loading #{resource}: #{e}"} nil end when :object return nil unless resource.literal? || resource.variable? resource end end |