4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
# File 'lib/bolognese/writers/schema_org_writer.rb', line 4
def schema_hsh
{ "@context" => id.present? ? "http://schema.org" : nil,
"@type" => type,
"@id" => id,
"url" => url,
"additionalType" => additional_type,
"name" => parse_attributes(title, content: "text", first: true),
"alternateName" => parse_attributes(alternate_name, content: "name", first: true),
"author" => to_schema_org(author),
"editor" => to_schema_org(editor),
"description" => parse_attributes(description, content: "text", first: true),
"license" => Array.wrap(license).map { |l| l["id"] }.compact.unwrap,
"version" => version,
"keywords" => Array.wrap(keywords).join(", ").presence,
"inLanguage" => language,
"contentSize" => content_size,
"dateCreated" => date_created,
"datePublished" => date_published,
"dateModified" => date_modified,
"pageStart" => first_page,
"pageEnd" => last_page,
"spatialCoverage" => spatial_coverage,
"sameAs" => same_as,
"isPartOf" => to_schema_org(is_part_of),
"hasPart" => to_schema_org(has_part),
"predecessor_of" => to_schema_org(is_previous_version_of),
"successor_of" => to_schema_org(is_new_version_of),
"citation" => to_schema_org(references),
"@reverse" => reverse.presence,
"schemaVersion" => schema_version,
"publisher" => publisher.present? ? { "@type" => "Organization", "name" => publisher } : nil,
"funding" => to_schema_org(funding),
"provider" => provider.present? ? { "@type" => "Organization", "name" => provider } : nil
}.compact.presence
end
|