qa 4.0.0 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/app/controllers/qa/linked_data_terms_controller.rb +30 -9
- data/app/controllers/qa/terms_controller.rb +3 -2
- data/app/models/qa/linked_data/config/context_property_map.rb +6 -25
- data/app/services/qa/iri_template_service.rb +32 -24
- data/app/services/qa/linked_data/authority_service.rb +8 -0
- data/app/services/qa/linked_data/authority_url_service.rb +27 -8
- data/app/services/qa/linked_data/deep_sort_service.rb +3 -2
- data/app/services/qa/linked_data/graph_service.rb +13 -0
- data/app/services/qa/linked_data/language_service.rb +12 -0
- data/app/services/qa/linked_data/language_sort_service.rb +7 -2
- data/app/services/qa/linked_data/ldpath_service.rb +40 -0
- data/app/services/qa/linked_data/mapper/graph_ldpath_mapper_service.rb +49 -0
- data/app/services/qa/linked_data/mapper/graph_mapper_service.rb +3 -11
- data/app/services/qa/linked_data/mapper/graph_predicate_mapper_service.rb +40 -0
- data/app/services/qa/linked_data/mapper/search_results_mapper_service.rb +58 -11
- data/app/services/qa/linked_data/mapper/term_results_mapper_service.rb +80 -0
- data/config/authorities/linked_data/loc.json +13 -7
- data/config/authorities/linked_data/oclc_fast.json +13 -8
- data/lib/generators/qa/discogs/USAGE +10 -0
- data/lib/generators/qa/discogs/discogs_generator.rb +12 -0
- data/lib/generators/qa/discogs/templates/config/discogs-formats.yml +346 -0
- data/lib/generators/qa/discogs/templates/config/discogs-genres.yml +627 -0
- data/lib/generators/qa/install/templates/config/initializers/qa.rb +4 -0
- data/lib/qa.rb +6 -0
- data/lib/qa/authorities.rb +2 -0
- data/lib/qa/authorities/discogs.rb +28 -0
- data/lib/qa/authorities/discogs/discogs_instance_builder.rb +145 -0
- data/lib/qa/authorities/discogs/discogs_translation.rb +126 -0
- data/lib/qa/authorities/discogs/discogs_utils.rb +89 -0
- data/lib/qa/authorities/discogs/discogs_works_builder.rb +153 -0
- data/lib/qa/authorities/discogs/generic_authority.rb +151 -0
- data/lib/qa/authorities/discogs_subauthority.rb +9 -0
- data/lib/qa/authorities/linked_data/config.rb +7 -3
- data/lib/qa/authorities/linked_data/config/search_config.rb +99 -11
- data/lib/qa/authorities/linked_data/config/term_config.rb +112 -8
- data/lib/qa/authorities/linked_data/find_term.rb +154 -84
- data/lib/qa/authorities/linked_data/search_query.rb +76 -13
- data/lib/qa/configuration.rb +8 -0
- data/lib/qa/version.rb +1 -1
- data/spec/controllers/linked_data_terms_controller_spec.rb +151 -30
- data/spec/controllers/terms_controller_spec.rb +4 -0
- data/spec/features/linked_data/language_spec.rb +298 -0
- data/spec/fixtures/authorities/linked_data/lod_full_config.json +21 -5
- data/spec/fixtures/authorities/linked_data/lod_lang_defaults.json +4 -4
- data/spec/fixtures/authorities/linked_data/lod_lang_multi_defaults.json +4 -4
- data/spec/fixtures/authorities/linked_data/lod_lang_no_defaults.json +4 -5
- data/spec/fixtures/authorities/linked_data/lod_lang_param.json +4 -4
- data/spec/fixtures/authorities/linked_data/lod_term_uri_param_config.json +1 -1
- data/spec/fixtures/discogs-find-response-json.json +1 -0
- data/spec/fixtures/discogs-find-response-jsonld-master.json +1 -0
- data/spec/fixtures/discogs-find-response-jsonld-release.json +1 -0
- data/spec/fixtures/discogs-id-matches-master.json +1 -0
- data/spec/fixtures/discogs-id-matches-release.json +1 -0
- data/spec/fixtures/discogs-id-not-found-master.json +1 -0
- data/spec/fixtures/discogs-id-not-found-release.json +1 -0
- data/spec/fixtures/discogs-search-response-no-auth.json +1 -0
- data/spec/fixtures/discogs-search-response-no-subauth.json +1 -0
- data/spec/fixtures/discogs-search-response-subauth.json +1 -0
- data/spec/fixtures/lod_lang_search_enesfrde.rdf.xml +60 -0
- data/spec/fixtures/lod_lang_search_sv.rdf.xml +42 -0
- data/spec/fixtures/lod_loc_term_found.rdf.xml +5 -0
- data/spec/lib/authorities/discogs/generic_authority_spec.rb +235 -0
- data/spec/lib/authorities/discogs_spec.rb +17 -0
- data/spec/lib/authorities/linked_data/config_spec.rb +68 -5
- data/spec/lib/authorities/linked_data/find_term_spec.rb +298 -3
- data/spec/lib/authorities/linked_data/generic_authority_spec.rb +46 -485
- data/spec/lib/authorities/linked_data/search_config_spec.rb +154 -3
- data/spec/lib/authorities/linked_data/search_query_spec.rb +240 -3
- data/spec/lib/authorities/linked_data/term_config_spec.rb +193 -5
- data/spec/lib/configuration_spec.rb +18 -0
- data/spec/models/linked_data/config/context_property_map_spec.rb +3 -31
- data/spec/services/iri_template_service_spec.rb +54 -12
- data/spec/{lib/authorities → services}/linked_data/authority_service_spec.rb +47 -0
- data/spec/services/linked_data/language_service_spec.rb +52 -11
- data/spec/services/linked_data/ldpath_service_spec.rb +61 -0
- data/spec/services/linked_data/mapper/graph_ldpath_mapper_service_spec.rb +118 -0
- data/spec/services/linked_data/mapper/graph_predicate_mapper_service_spec.rb +110 -0
- data/spec/services/linked_data/mapper/term_results_mapper_service_spec.rb +94 -0
- data/spec/spec_helper.rb +1 -1
- data/spec/support/matchers/include_hash.rb +5 -0
- data/spec/test_app_templates/lib/generators/test_app_generator.rb +4 -0
- metadata +73 -5
- data/lib/qa/authorities/linked_data/rdf_helper.rb +0 -49
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
"url": {
|
|
5
5
|
"@context": "http://www.w3.org/ns/hydra/context.jsonld",
|
|
6
6
|
"@type": "IriTemplate",
|
|
7
|
-
"template": "
|
|
7
|
+
"template": "{term_uri}?{?lang}",
|
|
8
8
|
"variableRepresentation": "BasicRepresentation",
|
|
9
9
|
"mapping": [
|
|
10
10
|
{
|
|
11
11
|
"@type": "IriTemplateMapping",
|
|
12
|
-
"variable": "
|
|
12
|
+
"variable": "term_uri",
|
|
13
13
|
"property": "hydra:freetextQuery",
|
|
14
14
|
"required": true
|
|
15
15
|
},
|
|
@@ -23,9 +23,9 @@
|
|
|
23
23
|
]
|
|
24
24
|
},
|
|
25
25
|
"qa_replacement_patterns": {
|
|
26
|
-
"term_id": "
|
|
26
|
+
"term_id": "term_uri"
|
|
27
27
|
},
|
|
28
|
-
"term_id": "
|
|
28
|
+
"term_id": "URI",
|
|
29
29
|
"results": {
|
|
30
30
|
"id_predicate": "http://id.loc.gov/vocabulary/identifiers/lccn",
|
|
31
31
|
"label_predicate": "http://www.w3.org/2004/02/skos/core#prefLabel",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"status":"Accepted","series":[],"labels":[{"name":"Blue Note"}],"year":1962,"artists":[{"name":"Dexter Gordon"}],"id":3380671,"genres":["Jazz"],"title":"A Swingin' Affair","styles":["Hard Bop"],"formats":[{"qty":"1","descriptions":["LP","Album","Mono"],"name":"Vinyl"}]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"genres":["Jazz"],"num_for_sale":0,"title":"Blue Moon / You Go To My Head","most_recent_release":12028368,"main_release":8035918,"main_release_url":"https://api.discogs.com/releases/8035918","year":1952,"uri":"https://www.discogs.com/Billie-Holiday-And-Her-Orchestra-Blue-Moon-You-Go-To-My-Head/master/950011","versions_url":"https://api.discogs.com/masters/950011/versions","extraartists":[{"join":"","name":"Ray Brown","anv":"","tracks":"","role":"Bass","resource_url":"https://api.discogs.com/artists/252998","id":252998},{"join":"","name":"Alvin Stoller","anv":"","tracks":"","role":"Drums","resource_url":"https://api.discogs.com/artists/258467","id":258467},{"join":"","name":"Barney Kessel","anv":"","tracks":"","role":"Guitar","resource_url":"https://api.discogs.com/artists/253476","id":253476},{"join":"","name":"Oscar Peterson","anv":"","tracks":"","role":"Piano","resource_url":"https://api.discogs.com/artists/254394","id":254394},{"join":"","name":"Flip Phillips","anv":"","tracks":"","role":"Tenor Saxophone","resource_url":"https://api.discogs.com/artists/265641","id":265641},{"join":"","name":"Charlie Shavers","anv":"","tracks":"","role":"Trumpet","resource_url":"https://api.discogs.com/artists/265683","id":265683}],"tracklist":[{"duration":"","position":"A","type_":"track","extraartists":[{"join":"","name":"Rodgers & Hart","anv":"","tracks":"","role":"Written-By","resource_url":"https://api.discogs.com/artists/604171","id":604171}],"title":"Blue Moon"},{"duration":"","position":"AA","type_":"track","extraartists":[{"join":"","name":"Haven Gillespie","anv":"Gillespie","tracks":"","role":"Written-By","resource_url":"https://api.discogs.com/artists/583502","id":583502},{"join":"","name":"J. Fred Coots","anv":"Coots","tracks":"","role":"Written-By","resource_url":"https://api.discogs.com/artists/583506","id":583506}],"title":"You Go To My Head"}],"most_recent_release_url":"https://api.discogs.com/releases/12028368","artists":[{"join":"","name":"Billie Holiday And Her Orchestra","anv":"","tracks":"","role":"","resource_url":"https://api.discogs.com/artists/312936","id":312936}],"resource_url":"https://api.discogs.com/masters/950011","lowest_price":null,"id":950011,"data_quality":"Correct"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"series":[],"labels":[{"name":"Mercury Record Corporation","entity_type":"1","catno":"89004-X45","resource_url":"https://api.discogs.com/labels/269924","id":269924,"entity_type_name":"Label"}],"year":0,"artists":[{"join":"","name":"Billie Holiday And Her Orchestra","anv":"","tracks":"","role":"","resource_url":"https://api.discogs.com/artists/312936","id":312936}],"format_quantity":1,"id":7143179,"artists_sort":"Billie Holiday And Her Orchestra","genres":["Jazz"],"thumb":"","num_for_sale":0,"title":"Blue Moon / You Go To My Head","date_changed":"2017-06-16T09:04:56-07:00","master_id":950011,"status":"Accepted","estimated_weight":60,"master_url":"https://api.discogs.com/masters/950011","date_added":"2015-06-18T19:03:08-07:00","tracklist":[{"duration":"","position":"A","type_":"track","extraartists":[{"join":"","name":"Rodgers & Hart","anv":"Rodgers - Hart","tracks":"","role":"Written-By","resource_url":"https://api.discogs.com/artists/604171","id":604171}],"title":"Blue Moon"},{"duration":"","position":"AA","type_":"track","extraartists":[{"join":"","name":"Haven Gillespie","anv":"Gillespie","tracks":"","role":"Written-By","resource_url":"https://api.discogs.com/artists/583502","id":583502},{"join":"","name":"J. Fred Coots","anv":"Coots","tracks":"","role":"Written-By","resource_url":"https://api.discogs.com/artists/583506","id":583506}],"title":"You Go To My Head"}],"extraartists":[{"join":"","name":"Ray Brown","anv":"","tracks":"","role":"Bass","resource_url":"https://api.discogs.com/artists/252998","id":252998},{"join":"","name":"Alvin Stoller","anv":"","tracks":"","role":"Drums","resource_url":"https://api.discogs.com/artists/258467","id":258467},{"join":"","name":"Barney Kessel","anv":"","tracks":"","role":"Guitar","resource_url":"https://api.discogs.com/artists/253476","id":253476},{"join":"","name":"Oscar Peterson","anv":"","tracks":"","role":"Piano","resource_url":"https://api.discogs.com/artists/254394","id":254394},{"join":"","name":"Flip Phillips","anv":"","tracks":"","role":"Tenor Saxophone","resource_url":"https://api.discogs.com/artists/265641","id":265641},{"join":"","name":"Charlie Shavers","anv":"","tracks":"","role":"Trumpet","resource_url":"https://api.discogs.com/artists/265683","id":265683}],"country":"US","identifiers":[{"type":"Matrix / Runout","description":"Side A","value":"45 YWR-765-1"},{"type":"Matrix / Runout","description":"Side AA","value":"45 YWR-766-3"}],"companies":[],"uri":"https://www.discogs.com/Billie-Holiday-And-Her-Orchestra-Blue-Moon-You-Go-To-My-Head/release/7143179","formats":[{"descriptions":["7\"","45 RPM","Single","Mono"],"name":"Vinyl","qty":"1"}],"resource_url":"https://api.discogs.com/releases/7143179","data_quality":"Complete and Correct"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"styles":["Techno","Ambient"],"genres":["Electronic"],"num_for_sale":39,"title":"Simulation","most_recent_release":10824503,"main_release":10824503,"main_release_url":"https://api.discogs.com/releases/10824503","year":2017,"uri":"https://www.discogs.com/Aleksi-Per%C3%A4l%C3%A4-Simulation/master/1234567","versions_url":"https://api.discogs.com/masters/1234567/versions","most_recent_release_url":"https://api.discogs.com/releases/10824503","artists":[{"join":"","name":"Aleksi Perälä","anv":"","tracks":"","role":"","resource_url":"https://api.discogs.com/artists/15690","id":15690}],"resource_url":"https://api.discogs.com/masters/1234567","lowest_price":22.61,"id":1234567,"data_quality":"Correct"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"series":[],"labels":[],"year":0,"format_quantity":0,"id":1234567,"artists_sort":"Asia Minor","thumb":"","extraartists":[],"title":"Longa Nova","artists":[{"join":"","name":"Asia Minor","anv":"","tracks":"","role":"","resource_url":"https://api.discogs.com/artists/1138249","id":1138249}],"date_changed":null,"lowest_price":null,"status":"Draft","date_added":null,"num_for_sale":0,"tracklist":[],"identifiers":[],"companies":[],"uri":"https://www.discogs.com/release/1234567","formats":[],"resource_url":"https://api.discogs.com/releases/1234567","data_quality":"Needs Major Changes"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"message": "Master Release not found."}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"message": "Release not found."}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"id": "Error", "label": "Cannot access Discogs without authentication."}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"pagination": {"per_page": 50, "items": 1, "page": 1, "urls": {}, "pages": 1}, "results": [{"style": ["Smooth Jazz", "Contemporary Jazz"], "master_id": 812047, "thumb": "https://img.discogs.com/yh2qJ9upQDTqm4p-37Qxr-NLTzw=/fit-in/150x150/filters:strip_icc():format(jpeg):mode_rgb():quality(40)/discogs-images/R-1750352-1240940672.jpeg.jpg", "format": ["Vinyl", "7\"", "Promo"], "country": "Germany", "barcode": ["LC 00383", "B963180-01 A1 HL", "B963180-01 B1 HL"], "uri": "/Melody-Gardot-Who-Will-Comfort-Me-Over-The-Rainbow/release/1750352", "master_url": "https://api.discogs.com/masters/812047", "label": ["Verve Records", "Universal Music Classics & Jazz", "Universal Music Classics & Jazz"], "cover_image": "https://img.discogs.com/Vjya6pq52cXLYpDS4SI6H_2yyEA=/fit-in/600x595/filters:strip_icc():format(jpeg):mode_rgb():quality(90)/discogs-images/R-1750352-1240940672.jpeg.jpg", "catno": "none", "community": {"have": 27, "want": 29}, "year": "2009", "genre": ["Jazz"], "title": "Melody Gardot - Who Will Comfort Me / Over The Rainbow", "resource_url": "https://api.discogs.com/releases/1750352", "type": "release", "id": 1750352}]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"pagination": {"per_page": 50, "items": 1, "page": 1, "urls": {}, "pages": 1}, "results": [{"style": ["Soul-Jazz"], "master_id": 606116, "thumb": "https://img.discogs.com/yxXxXcaRv3f92Fs7msRvDll0j9E=/fit-in/150x150/filters:strip_icc():format(jpeg):mode_rgb():quality(40)/discogs-images/R-4543663-1367897598-4591.jpeg.jpg", "format": ["Vinyl", "7\"", "45 RPM", "Single"], "country": "US", "barcode": [], "uri": "/Wes-Montgomery-Bumpin-On-Sunset-Tequila/master/606116", "master_url": "https://api.discogs.com/masters/606116", "label": ["Verve Records"], "cover_image": "https://img.discogs.com/V6ftY0lAFE9mHlzBIhGZMMos3Dg=/fit-in/593x572/filters:strip_icc():format(jpeg):mode_rgb():quality(90)/discogs-images/R-4543663-1367897598-4591.jpeg.jpg", "catno": "VK-10432", "community": {"have": 42, "want": 118}, "year": "1966", "genre": ["Jazz", "Funk / Soul"], "title": "Wes Montgomery - Bumpin' On Sunset / Tequila", "resource_url": "https://api.discogs.com/masters/606116", "type": "master", "id": 606116}]}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:coord="http://whatever/java/ORG.oclc.util.CoordToDecimal" xmlns:naco="http://whatever/java/ORG.oclc.util.NacoNormalize" xmlns:norm="http://whatever/java/ORG.oclc.util.NormalFormC" xmlns:schema="http://schema.org/" xmlns:madsrdf="http://www.loc.gov/mads/rdf/v1#" xmlns:skosxl="http://www.w3.org/2008/05/skos-xl#" xmlns:dct="http://purl.org/dc/terms/" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:void="http://rdfs.org/ns/void#" xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:mx="http://www.loc.gov/MARC21/slim" xmlns:skos="http://www.w3.org/2004/02/skos/core#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xml:base="http://id.worldcat.org/fast/">
|
|
2
|
+
<rdf:Description rdf:about="530369">
|
|
3
|
+
<dct:identifier>530369</dct:identifier>
|
|
4
|
+
<skos:prefLabel xml:lang="en">buttermilk</skos:prefLabel>
|
|
5
|
+
<skos:prefLabel xml:lang="fr">Babeurre</skos:prefLabel>
|
|
6
|
+
<skos:prefLabel xml:lang="de">Buttermilch</skos:prefLabel>
|
|
7
|
+
<skos:altLabel xml:lang="en">yummy</skos:altLabel>
|
|
8
|
+
<skos:altLabel xml:lang="fr">délicieux</skos:altLabel>
|
|
9
|
+
<skos:altLabel xml:lang="de">lecker</skos:altLabel>
|
|
10
|
+
</rdf:Description>
|
|
11
|
+
<rdf:Description rdf:about="fst00530369">
|
|
12
|
+
<rdfs:comment>This identifier is deprecated. See the rdfs:seeAlso link for the new identifier.</rdfs:comment>
|
|
13
|
+
<rdfs:seeAlso rdf:resource="530369"/>
|
|
14
|
+
</rdf:Description>
|
|
15
|
+
<foaf:Document rdf:about="530369/rdf.xml">
|
|
16
|
+
<foaf:primaryTopic rdf:resource="530369"/>
|
|
17
|
+
<dc:format>application/rdf+xml</dc:format>
|
|
18
|
+
<dct:created rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2005-05-13T00:00:00.0</dct:created>
|
|
19
|
+
<dct:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2012-07-06T14:07:21.0</dct:modified>
|
|
20
|
+
<dct:language rdf:resource="http://lexvo.org/id/iso639-3/eng"/>
|
|
21
|
+
</foaf:Document>
|
|
22
|
+
<rdf:Description rdf:about="5140">
|
|
23
|
+
<dct:identifier>5140</dct:identifier>
|
|
24
|
+
<skos:prefLabel xml:lang="en">dried milk</skos:prefLabel>
|
|
25
|
+
<skos:prefLabel xml:lang="fr">lait en poudre</skos:prefLabel>
|
|
26
|
+
<skos:prefLabel xml:lang="de">getrocknete Milch</skos:prefLabel>
|
|
27
|
+
<skos:prefLabel xml:lang="es">leche en polvo</skos:prefLabel>
|
|
28
|
+
<skos:altLabel xml:lang="en">powdery</skos:altLabel>
|
|
29
|
+
<skos:altLabel xml:lang="fr">poudreux</skos:altLabel>
|
|
30
|
+
<skos:altLabel xml:lang="de">Pulverförmig</skos:altLabel>
|
|
31
|
+
<skos:altLabel xml:lang="es">en polvo</skos:altLabel>
|
|
32
|
+
<skos:altLabel>pulvora</skos:altLabel>
|
|
33
|
+
</rdf:Description>
|
|
34
|
+
<rdf:Description rdf:about="fst00005140">
|
|
35
|
+
<rdfs:comment>This identifier is deprecated. See the rdfs:seeAlso link for the new identifier.</rdfs:comment>
|
|
36
|
+
<rdfs:seeAlso rdf:resource="5140"/>
|
|
37
|
+
</rdf:Description>
|
|
38
|
+
<foaf:Document rdf:about="5140/rdf.xml">
|
|
39
|
+
<foaf:primaryTopic rdf:resource="5140"/>
|
|
40
|
+
<dc:format>application/rdf+xml</dc:format>
|
|
41
|
+
<dct:created rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2004-09-24T00:00:00.0</dct:created>
|
|
42
|
+
<dct:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2012-07-06T14:07:21.0</dct:modified>
|
|
43
|
+
</foaf:Document>
|
|
44
|
+
<rdf:Description rdf:about="557490">
|
|
45
|
+
<dct:identifier>557490</dct:identifier>
|
|
46
|
+
<skos:prefLabel xml:lang="en">condensed milk</skos:prefLabel>
|
|
47
|
+
<skos:prefLabel xml:lang="fr">lait condensé</skos:prefLabel>
|
|
48
|
+
<skos:prefLabel xml:lang="de">Kondensmilch</skos:prefLabel>
|
|
49
|
+
<skos:prefLabel xml:lang="es">leche condensada</skos:prefLabel>
|
|
50
|
+
<skos:prefLabel>lakto densigita</skos:prefLabel>
|
|
51
|
+
<skos:altLabel xml:lang="en">creamy</skos:altLabel>
|
|
52
|
+
<skos:altLabel xml:lang="fr">crémeux</skos:altLabel>
|
|
53
|
+
<skos:altLabel xml:lang="de">cremig</skos:altLabel>
|
|
54
|
+
<skos:altLabel xml:lang="es">cremoso</skos:altLabel>
|
|
55
|
+
</rdf:Description>
|
|
56
|
+
<rdf:Description rdf:about="fst00557490">
|
|
57
|
+
<rdfs:comment>This identifier is deprecated. See the rdfs:seeAlso link for the new identifier.</rdfs:comment>
|
|
58
|
+
<rdfs:seeAlso rdf:resource="557490"/>
|
|
59
|
+
</rdf:Description>
|
|
60
|
+
</rdf:RDF>
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:coord="http://whatever/java/ORG.oclc.util.CoordToDecimal" xmlns:naco="http://whatever/java/ORG.oclc.util.NacoNormalize" xmlns:norm="http://whatever/java/ORG.oclc.util.NormalFormC" xmlns:schema="http://schema.org/" xmlns:madsrdf="http://www.loc.gov/mads/rdf/v1#" xmlns:skosxl="http://www.w3.org/2008/05/skos-xl#" xmlns:dct="http://purl.org/dc/terms/" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:void="http://rdfs.org/ns/void#" xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:mx="http://www.loc.gov/MARC21/slim" xmlns:skos="http://www.w3.org/2004/02/skos/core#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xml:base="http://id.worldcat.org/fast/">
|
|
2
|
+
<rdf:Description rdf:about="530369">
|
|
3
|
+
<dct:identifier>530369</dct:identifier>
|
|
4
|
+
<skos:prefLabel xml:lang="en">kärnmjölk</skos:prefLabel>
|
|
5
|
+
<skos:altLabel xml:lang="en">smaskigt</skos:altLabel>
|
|
6
|
+
</rdf:Description>
|
|
7
|
+
<rdf:Description rdf:about="fst00530369">
|
|
8
|
+
<rdfs:comment>This identifier is deprecated. See the rdfs:seeAlso link for the new identifier.</rdfs:comment>
|
|
9
|
+
<rdfs:seeAlso rdf:resource="530369"/>
|
|
10
|
+
</rdf:Description>
|
|
11
|
+
<foaf:Document rdf:about="530369/rdf.xml">
|
|
12
|
+
<foaf:primaryTopic rdf:resource="530369"/>
|
|
13
|
+
<dc:format>application/rdf+xml</dc:format>
|
|
14
|
+
<dct:created rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2005-05-13T00:00:00.0</dct:created>
|
|
15
|
+
<dct:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2012-07-06T14:07:21.0</dct:modified>
|
|
16
|
+
<dct:language rdf:resource="http://lexvo.org/id/iso639-3/eng"/>
|
|
17
|
+
</foaf:Document>
|
|
18
|
+
<rdf:Description rdf:about="5140">
|
|
19
|
+
<dct:identifier>5140</dct:identifier>
|
|
20
|
+
<skos:prefLabel xml:lang="en">mjölkpulver</skos:prefLabel>
|
|
21
|
+
<skos:altLabel xml:lang="en">pulver-</skos:altLabel>
|
|
22
|
+
</rdf:Description>
|
|
23
|
+
<rdf:Description rdf:about="fst00005140">
|
|
24
|
+
<rdfs:comment>This identifier is deprecated. See the rdfs:seeAlso link for the new identifier.</rdfs:comment>
|
|
25
|
+
<rdfs:seeAlso rdf:resource="5140"/>
|
|
26
|
+
</rdf:Description>
|
|
27
|
+
<foaf:Document rdf:about="5140/rdf.xml">
|
|
28
|
+
<foaf:primaryTopic rdf:resource="5140"/>
|
|
29
|
+
<dc:format>application/rdf+xml</dc:format>
|
|
30
|
+
<dct:created rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2004-09-24T00:00:00.0</dct:created>
|
|
31
|
+
<dct:modified rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2012-07-06T14:07:21.0</dct:modified>
|
|
32
|
+
</foaf:Document>
|
|
33
|
+
<rdf:Description rdf:about="557490">
|
|
34
|
+
<dct:identifier>557490</dct:identifier>
|
|
35
|
+
<skos:prefLabel xml:lang="en">kondenserad mjölk</skos:prefLabel>
|
|
36
|
+
<skos:altLabel xml:lang="en">krämig</skos:altLabel>
|
|
37
|
+
</rdf:Description>
|
|
38
|
+
<rdf:Description rdf:about="fst00557490">
|
|
39
|
+
<rdfs:comment>This identifier is deprecated. See the rdfs:seeAlso link for the new identifier.</rdfs:comment>
|
|
40
|
+
<rdfs:seeAlso rdf:resource="557490"/>
|
|
41
|
+
</rdf:Description>
|
|
42
|
+
</rdf:RDF>
|
|
@@ -119,6 +119,11 @@
|
|
|
119
119
|
<identifiers:lccn xmlns:identifiers="http://id.loc.gov/vocabulary/identifiers/">sh 85118553</identifiers:lccn>
|
|
120
120
|
<owl:sameAs rdf:resource="info:lc/authorities/sh85118553" xmlns:owl="http://www.w3.org/2002/07/owl#"/>
|
|
121
121
|
<owl:sameAs rdf:resource="http://id.loc.gov/authorities/sh85118553#concept" xmlns:owl="http://www.w3.org/2002/07/owl#"/>
|
|
122
|
+
<madsrdf:hasNarrowerAuthority>
|
|
123
|
+
<madsrdf:Authority rdf:about="http://id.loc.gov/authorities/subjects/sh92004048">
|
|
124
|
+
<madsrdf:authoritativeLabel xml:lang="en">Environmental sciences</madsrdf:authoritativeLabel>
|
|
125
|
+
</madsrdf:Authority>
|
|
126
|
+
</madsrdf:hasNarrowerAuthority>
|
|
122
127
|
<madsrdf:adminMetadata>
|
|
123
128
|
<ri:RecordInfo xmlns:ri="http://id.loc.gov/ontologies/RecordInfo#">
|
|
124
129
|
<ri:recordChangeDate rdf:datatype="http://www.w3.org/2001/XMLSchema#dateTime">2000-06-20T00:00:00</ri:recordChangeDate>
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Qa::Authorities::Discogs::GenericAuthority do
|
|
4
|
+
before do
|
|
5
|
+
described_class.discogs_key = 'dummy_key'
|
|
6
|
+
described_class.discogs_secret = 'dummy_secret'
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
let(:authority) { described_class.new "all" }
|
|
10
|
+
|
|
11
|
+
describe "#build_query_url" do
|
|
12
|
+
subject { authority.build_query_url("foo", 'master') }
|
|
13
|
+
it { is_expected.to eq 'https://api.discogs.com/database/search?q=foo&type=master&key=dummy_key&secret=dummy_secret' }
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
describe "#find_url" do
|
|
17
|
+
subject { authority.find_url("10018955", "release") }
|
|
18
|
+
it { is_expected.to eq "https://api.discogs.com/releases/10018955" }
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
describe "#find" do
|
|
22
|
+
context "find variations" do
|
|
23
|
+
before do
|
|
24
|
+
stub_request(:get, "https://api.discogs.com/releases/3380671")
|
|
25
|
+
.to_return(status: 200, body: webmock_fixture("discogs-find-response-json.json"))
|
|
26
|
+
|
|
27
|
+
stub_request(:get, "https://api.discogs.com/masters/3380671")
|
|
28
|
+
.to_return(status: 200, body: webmock_fixture("discogs-id-not-found-master.json"))
|
|
29
|
+
|
|
30
|
+
stub_request(:get, "https://api.discogs.com/masters/1234567")
|
|
31
|
+
.to_return(status: 200, body: webmock_fixture("discogs-id-matches-master.json"))
|
|
32
|
+
|
|
33
|
+
stub_request(:get, "https://api.discogs.com/releases/1234567")
|
|
34
|
+
.to_return(status: 200, body: webmock_fixture("discogs-id-matches-release.json"))
|
|
35
|
+
|
|
36
|
+
stub_request(:get, "https://api.discogs.com/masters/123459876")
|
|
37
|
+
.to_return(status: 200, body: webmock_fixture("discogs-id-not-found-master.json"))
|
|
38
|
+
|
|
39
|
+
stub_request(:get, "https://api.discogs.com/releases/123459876")
|
|
40
|
+
.to_return(status: 200, body: webmock_fixture("discogs-id-not-found-release.json"))
|
|
41
|
+
|
|
42
|
+
stub_request(:get, "https://api.discogs.com/releases/7143179")
|
|
43
|
+
.to_return(status: 200, body: webmock_fixture("discogs-find-response-jsonld-release.json"))
|
|
44
|
+
|
|
45
|
+
stub_request(:get, "https://api.discogs.com/masters/7143179")
|
|
46
|
+
.to_return(status: 200, body: webmock_fixture("discogs-id-not-found-master.json"))
|
|
47
|
+
|
|
48
|
+
stub_request(:get, "https://api.discogs.com/masters/950011")
|
|
49
|
+
.to_return(status: 200, body: webmock_fixture("discogs-find-response-jsonld-master.json"))
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
context "json format and release subauthority" do
|
|
53
|
+
let(:tc) { instance_double(Qa::TermsController) }
|
|
54
|
+
let :results do
|
|
55
|
+
authority.find("3380671", tc)
|
|
56
|
+
end
|
|
57
|
+
before do
|
|
58
|
+
allow(Qa::TermsController).to receive(:new).and_return(tc)
|
|
59
|
+
allow(tc).to receive(:params).and_return('format' => "json", 'subauthority' => "release")
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
it "returns the Discogs data for a given id" do
|
|
63
|
+
expect(results['title']).to eq "A Swingin' Affair"
|
|
64
|
+
expect(results['genres'][0]).to eq "Jazz"
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
context "json format and subauthority all" do
|
|
69
|
+
let(:tc) { instance_double(Qa::TermsController) }
|
|
70
|
+
let :results do
|
|
71
|
+
authority.find("3380671", tc)
|
|
72
|
+
end
|
|
73
|
+
before do
|
|
74
|
+
allow(Qa::TermsController).to receive(:new).and_return(tc)
|
|
75
|
+
allow(tc).to receive(:params).and_return('format' => "json", 'subauthority' => "all")
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
it "returns the Discogs data for a given id" do
|
|
79
|
+
expect(results['title']).to eq "A Swingin' Affair"
|
|
80
|
+
expect(results['genres'][0]).to eq "Jazz"
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
context "id matches a Discogs release and a master" do
|
|
85
|
+
let(:tc) { instance_double(Qa::TermsController) }
|
|
86
|
+
let :results do
|
|
87
|
+
authority.find("1234567", tc)
|
|
88
|
+
end
|
|
89
|
+
before do
|
|
90
|
+
allow(Qa::TermsController).to receive(:new).and_return(tc)
|
|
91
|
+
allow(tc).to receive(:params).and_return('format' => "json", 'subauthority' => "all")
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
it "returns two matches message and resource urls" do
|
|
95
|
+
expect(results['message']).to eq "Both a master and a release match the requested ID."
|
|
96
|
+
expect(results['resource_url'][0]).to eq "https://api.discogs.com/masters/1234567"
|
|
97
|
+
expect(results['resource_url'][1]).to eq "https://api.discogs.com/releases/1234567"
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
context "id matches neither a release nor a master" do
|
|
102
|
+
let(:tc) { instance_double(Qa::TermsController) }
|
|
103
|
+
let :results do
|
|
104
|
+
authority.find("123459876", tc)
|
|
105
|
+
end
|
|
106
|
+
before do
|
|
107
|
+
allow(Qa::TermsController).to receive(:new).and_return(tc)
|
|
108
|
+
allow(tc).to receive(:params).and_return('format' => "json", 'subauthority' => "all")
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
it "returns two matches message and resource urls" do
|
|
112
|
+
expect(results['message']).to eq "Neither a master nor a release matches the requested ID."
|
|
113
|
+
end
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
context "json-ld format and subauthority master" do
|
|
117
|
+
let(:tc) { instance_double(Qa::TermsController) }
|
|
118
|
+
let :results do
|
|
119
|
+
authority.find("950011", tc)
|
|
120
|
+
end
|
|
121
|
+
before do
|
|
122
|
+
allow(Qa::TermsController).to receive(:new).and_return(tc)
|
|
123
|
+
allow(tc).to receive(:params).and_return('format' => "jsonld", 'subauthority' => "master")
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
it "returns the Discogs data converted to json-ld for a given id" do
|
|
127
|
+
expect(JSON.parse(results).keys).to match_array ["@context", "@graph"]
|
|
128
|
+
expect(JSON.parse(results)["@context"]["bf2"]).to eq("http://id.loc.gov/ontologies/bibframe/")
|
|
129
|
+
expect(results).to include("Blue Moon / You Go To My Head")
|
|
130
|
+
expect(results).to include("Billie Holiday And Her Orchestra")
|
|
131
|
+
expect(results).to include("Haven Gillespie")
|
|
132
|
+
expect(results).to include("1952")
|
|
133
|
+
expect(results).to include("Jazz")
|
|
134
|
+
expect(results).to include("Barney Kessel")
|
|
135
|
+
expect(results).to include("Guitar")
|
|
136
|
+
end
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
context "json-ld format and subauthority all" do
|
|
140
|
+
let(:tc) { instance_double(Qa::TermsController) }
|
|
141
|
+
let :results do
|
|
142
|
+
authority.find("7143179", tc)
|
|
143
|
+
end
|
|
144
|
+
before do
|
|
145
|
+
allow(Qa::TermsController).to receive(:new).and_return(tc)
|
|
146
|
+
allow(tc).to receive(:params).and_return('format' => "jsonld", 'subauthority' => "all")
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
it "returns the Discogs data converted to json-ld for a given id" do
|
|
150
|
+
expect(JSON.parse(results).keys).to match_array ["@context", "@graph"]
|
|
151
|
+
expect(JSON.parse(results)["@context"]["bf2"]).to eq("http://id.loc.gov/ontologies/bibframe/")
|
|
152
|
+
expect(results).to include("You Go To My Head")
|
|
153
|
+
expect(results).to include("Rodgers & Hart")
|
|
154
|
+
expect(results).to include("Ray Brown")
|
|
155
|
+
expect(results).to include("1952")
|
|
156
|
+
expect(results).to include("Single")
|
|
157
|
+
expect(results).to include("mono")
|
|
158
|
+
expect(results).to include("45 RPM")
|
|
159
|
+
expect(results).to include("Vinyl")
|
|
160
|
+
expect(results).to include("http://id.loc.gov/vocabulary/carriers/sd")
|
|
161
|
+
expect(results).to include("1952")
|
|
162
|
+
end
|
|
163
|
+
end
|
|
164
|
+
end
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
describe "#search" do
|
|
168
|
+
context "search variations" do
|
|
169
|
+
context "with subauthority all" do
|
|
170
|
+
let(:tc) { instance_double(Qa::TermsController) }
|
|
171
|
+
let :results do
|
|
172
|
+
stub_request(:get, "https://api.discogs.com/database/search?q=melody+gardot+who+will+comfort+me+over+the+rainbo&type=all&key=dummy_key&secret=dummy_secret")
|
|
173
|
+
.to_return(status: 200, body: webmock_fixture("discogs-search-response-no-subauth.json"))
|
|
174
|
+
authority.search("melody gardot who will comfort me over the rainbo", tc)
|
|
175
|
+
end
|
|
176
|
+
before do
|
|
177
|
+
allow(Qa::TermsController).to receive(:new).and_return(tc)
|
|
178
|
+
allow(tc).to receive(:params).and_return('subauthority' => "all")
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
it "has id and label keys" do
|
|
182
|
+
expect(results.first["uri"]).to eq("https://api.discogs.com/releases/1750352")
|
|
183
|
+
expect(results.first["id"]).to eq "1750352"
|
|
184
|
+
expect(results.first["label"]).to eq "Melody Gardot - Who Will Comfort Me / Over The Rainbow"
|
|
185
|
+
expect(results.first["context"]["Year"]).to eq ['2009']
|
|
186
|
+
expect(results.first["context"]["Formats"][0]).to eq "Vinyl"
|
|
187
|
+
expect(results.first["context"]["Record Labels"][1]).to eq "Universal Music Classics & Jazz"
|
|
188
|
+
expect(results.first["context"]["Type"][0]).to eq "release"
|
|
189
|
+
end
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
context "with subauthority master" do
|
|
193
|
+
let(:tc) { instance_double(Qa::TermsController) }
|
|
194
|
+
let :results do
|
|
195
|
+
stub_request(:get, "https://api.discogs.com/database/search?q=wes+montgomery+tequila+bumpin'+on+sunse&type=master&key=dummy_key&secret=dummy_secret")
|
|
196
|
+
.to_return(status: 200, body: webmock_fixture("discogs-search-response-subauth.json"))
|
|
197
|
+
authority.search("wes montgomery tequila bumpin' on sunse", tc)
|
|
198
|
+
end
|
|
199
|
+
before do
|
|
200
|
+
allow(Qa::TermsController).to receive(:new).and_return(tc)
|
|
201
|
+
allow(tc).to receive(:params).and_return('subauthority' => "master")
|
|
202
|
+
end
|
|
203
|
+
|
|
204
|
+
it "has id and label keys" do
|
|
205
|
+
expect(results.first['uri']).to eq "https://api.discogs.com/masters/606116"
|
|
206
|
+
expect(results.first['id']).to eq "606116"
|
|
207
|
+
expect(results.first['label']).to eq "Wes Montgomery - Bumpin' On Sunset / Tequila"
|
|
208
|
+
expect(results.first['context']["Year"]).to eq ['1966']
|
|
209
|
+
expect(results.first['context']["Formats"][2]).to eq "45 RPM"
|
|
210
|
+
expect(results.first["context"]["Type"][0]).to eq "master"
|
|
211
|
+
end
|
|
212
|
+
end
|
|
213
|
+
|
|
214
|
+
context "when authentication isn't set" do
|
|
215
|
+
let(:tc) { instance_double(Qa::TermsController) }
|
|
216
|
+
let :results do
|
|
217
|
+
stub_request(:get, "https://api.discogs.com/database/search?q=wes+montgomery+tequila+bumpin'+on+sunse&type=master")
|
|
218
|
+
.to_return(status: 200, body: webmock_fixture("discogs-search-response-no-auth.json"))
|
|
219
|
+
authority.search("wes montgomery tequila bumpin' on sunse", tc)
|
|
220
|
+
end
|
|
221
|
+
before do
|
|
222
|
+
described_class.discogs_secret = nil
|
|
223
|
+
described_class.discogs_key = nil
|
|
224
|
+
allow(Qa::TermsController).to receive(:new).and_return(tc)
|
|
225
|
+
allow(tc).to receive(:params).and_return('subauthority' => "master")
|
|
226
|
+
end
|
|
227
|
+
|
|
228
|
+
it "logs an error" do
|
|
229
|
+
expect(Rails.logger).to receive(:error).with('Questioning Authority tried to call Discogs, but no secret and/or key were set.')
|
|
230
|
+
expect(results).to be_empty
|
|
231
|
+
end
|
|
232
|
+
end
|
|
233
|
+
end
|
|
234
|
+
end
|
|
235
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Qa::Authorities::Discogs do
|
|
4
|
+
describe "#subauthority_for" do
|
|
5
|
+
context "with an invalid sub-authority" do
|
|
6
|
+
it "raises an exception" do
|
|
7
|
+
expect { described_class.subauthority_for("foo") }.to raise_error Qa::InvalidSubAuthority
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
context "with a valid sub-authority" do
|
|
12
|
+
it "creates the authority" do
|
|
13
|
+
expect(described_class.subauthority_for("master")).to be_kind_of Qa::Authorities::Discogs::GenericAuthority
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -34,7 +34,7 @@ describe Qa::Authorities::LinkedData::Config do
|
|
|
34
34
|
url: {
|
|
35
35
|
:@context => 'http://www.w3.org/ns/hydra/context.jsonld',
|
|
36
36
|
:@type => 'IriTemplate',
|
|
37
|
-
template: 'http://localhost/test_default/term/{subauth}/{term_id}?{?param1}&{?param2}',
|
|
37
|
+
template: 'http://localhost/test_default/term/{subauth}/{term_id}?{?param1}&{?param2}&{?lang}',
|
|
38
38
|
variableRepresentation: 'BasicRepresentation',
|
|
39
39
|
mapping: [
|
|
40
40
|
{
|
|
@@ -63,15 +63,23 @@ describe Qa::Authorities::LinkedData::Config do
|
|
|
63
63
|
property: 'hydra:freetextQuery',
|
|
64
64
|
required: false,
|
|
65
65
|
default: 'beta'
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
:@type => 'IriTemplateMapping',
|
|
69
|
+
variable: 'lang',
|
|
70
|
+
property: 'hydra:freetextQuery',
|
|
71
|
+
required: false,
|
|
72
|
+
default: 'de'
|
|
66
73
|
}
|
|
67
74
|
]
|
|
68
75
|
},
|
|
69
76
|
qa_replacement_patterns: {
|
|
70
77
|
term_id: 'term_id',
|
|
71
|
-
subauth: 'subauth'
|
|
78
|
+
subauth: 'subauth',
|
|
79
|
+
lang: 'lang'
|
|
72
80
|
},
|
|
73
81
|
term_id: 'ID',
|
|
74
|
-
language: ['
|
|
82
|
+
language: ['es'],
|
|
75
83
|
results: {
|
|
76
84
|
id_predicate: 'http://purl.org/dc/terms/identifier',
|
|
77
85
|
label_predicate: 'http://www.w3.org/2004/02/skos/core#prefLabel',
|
|
@@ -90,7 +98,7 @@ describe Qa::Authorities::LinkedData::Config do
|
|
|
90
98
|
url: {
|
|
91
99
|
:@context => 'http://www.w3.org/ns/hydra/context.jsonld',
|
|
92
100
|
:@type => 'IriTemplate',
|
|
93
|
-
template: 'http://localhost/test_default/search?{?subauth}&{?query}&{?param1}&{?param2}',
|
|
101
|
+
template: 'http://localhost/test_default/search?{?subauth}&{?query}&{?param1}&{?param2}&{?lang}',
|
|
94
102
|
variableRepresentation: 'BasicRepresentation',
|
|
95
103
|
mapping: [
|
|
96
104
|
{
|
|
@@ -119,12 +127,20 @@ describe Qa::Authorities::LinkedData::Config do
|
|
|
119
127
|
property: 'hydra:freetextQuery',
|
|
120
128
|
required: false,
|
|
121
129
|
default: 'echo'
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
:@type => 'IriTemplateMapping',
|
|
133
|
+
variable: 'lang',
|
|
134
|
+
property: 'hydra:freetextQuery',
|
|
135
|
+
required: false,
|
|
136
|
+
default: 'fr'
|
|
122
137
|
}
|
|
123
138
|
]
|
|
124
139
|
},
|
|
125
140
|
qa_replacement_patterns: {
|
|
126
141
|
query: 'query',
|
|
127
|
-
subauth: 'subauth'
|
|
142
|
+
subauth: 'subauth',
|
|
143
|
+
lang: 'lang'
|
|
128
144
|
},
|
|
129
145
|
language: ['en', 'fr', 'de'],
|
|
130
146
|
results: {
|
|
@@ -396,6 +412,53 @@ describe Qa::Authorities::LinkedData::Config do
|
|
|
396
412
|
end
|
|
397
413
|
end
|
|
398
414
|
|
|
415
|
+
describe '#authority_info' do
|
|
416
|
+
let(:term_details) do
|
|
417
|
+
{
|
|
418
|
+
"label" => "oclc_fast term (QA)",
|
|
419
|
+
"uri" => "urn:qa:term:oclc_fast",
|
|
420
|
+
"authority" => "oclc_fast",
|
|
421
|
+
"action" => "term",
|
|
422
|
+
"language" => ["en"]
|
|
423
|
+
}
|
|
424
|
+
end
|
|
425
|
+
|
|
426
|
+
let(:search_details) do
|
|
427
|
+
{
|
|
428
|
+
"label" => "oclc_fast search (QA)",
|
|
429
|
+
"uri" => "urn:qa:search:oclc_fast",
|
|
430
|
+
"authority" => "oclc_fast",
|
|
431
|
+
"action" => "search",
|
|
432
|
+
"language" => ["en"]
|
|
433
|
+
}
|
|
434
|
+
end
|
|
435
|
+
|
|
436
|
+
let(:search_details_with_subauth) do
|
|
437
|
+
{
|
|
438
|
+
"label" => "oclc_fast search topic (QA)",
|
|
439
|
+
"uri" => "urn:qa:search:oclc_fast:topic",
|
|
440
|
+
"authority" => "oclc_fast",
|
|
441
|
+
"subauthority" => "topic",
|
|
442
|
+
"action" => "search",
|
|
443
|
+
"language" => ["en"]
|
|
444
|
+
}
|
|
445
|
+
end
|
|
446
|
+
|
|
447
|
+
let(:details) { described_class.new(:OCLC_FAST).authority_info }
|
|
448
|
+
|
|
449
|
+
it "returns a list with details for term without subauthorities" do
|
|
450
|
+
expect(details).to include_hash(term_details)
|
|
451
|
+
end
|
|
452
|
+
|
|
453
|
+
it "returns a list with details for search without subauthorities" do
|
|
454
|
+
expect(details).to include_hash(search_details)
|
|
455
|
+
end
|
|
456
|
+
|
|
457
|
+
it "returns a list with details for search with a subauthority" do
|
|
458
|
+
expect(details).to include_hash(search_details_with_subauth)
|
|
459
|
+
end
|
|
460
|
+
end
|
|
461
|
+
|
|
399
462
|
describe '#config_version' do
|
|
400
463
|
context 'when version is NOT in the config file' do
|
|
401
464
|
it 'returns default as 1.0' do
|