Update bibliographies to include additional metadata.#335
Conversation
Metadata is encoded as JSON-LD and provides information for Google and other search engines. A first step in enabling richer data in our searches.
|
I have no idea how to test the new metadata features but browsing and searching the bibliography seems to be working fine on the staging server, except for one test case. I entered "knowledge programming in loops" in the search box expecting this bibliography entry to show up in the results: Stefik, M., Bobrow, D. G., Mittal, S., & Conway, L. (1983). KNOWLEDGE PROGRAMMING IN LOOPS. 11. But the entry doesn't show up at all in the search results. |
|
There isn't much you can do to test it via searching at present. This PR only adds additional metadata to each bibliographic entry. Once this PR is merged and built into the production website and recrawled the metadata will become available and usable by search engines. Ideally the result will be better, more informative search results. Specifically, this PR adds a script containing metadata to each bibliographic entry. Looking at the Knowledge Programming in Loops article: The following is injected into the page: All of this is separate from the AI search activities. A secondary task will be to incorporate the metadata into those data used by the AI Search Engine work I've started. That will require additional work to expand the data collected from the webpages, the data we currently pass into the LLM has minimal metadata with it. Prior to moving this PR out of the draft state, I need to spend additional time reviewing the generated metadata and ensuring it is accurate, identifying gaps and documenting the schema. We may decide there is additional upstream work we need to do either with Zotero or extracting information from Zotero, Additional questions that need to be addressed are whether the format chosen for representing metadata is the best for our needs (JSON-LD). It seems to be the preferred method for SEO related activities. But, it may be less ideal for integration with AI. |
|
I confirm I see the metadata in the page source. |
- Remove incorrect usage of locationCreated field - Fix formatting of titles. Remove newline character at end of string
|
At commit 3940d92 the bibliography still seems to have no issues on the staging site. |
Building test cases revealed minor, incorrect or poor usages of metadata.
|
Still nothing unusual on the staging site at commit 9222f83. |
|
The staging site is still working with no issues at commit 90cae4c. |
Currently, not fully implemented. Work will be reintroduced in a future PR.
|
I can find no issues on the staging site at commit 4c2749c but I see there are failed checks. |
to work correctly with staging site.
|
Still nothing unusual at commit a8e01c4. |
|
@Eleanor-Young Adding you to this PR. Herb asked that you weigh in. The general idea is to push more metadata into each bibliography entry. Information that can be used by search engines to provide better results. Please give it a quick look and let me know if you have any thoughts, questions or concerns. |
|
Thanks for the tag, I don't check GitHub as often as I should. Better searchability is probably good, that all sounds swell. Just to be sure I understand ground level of what's happening, though, my main questions are: 1) what metadata is being pushed, 2) where's it coming from, and 3) how does it change the resultant page? Is it about grabbing more metadata from what's in Zotero and putting it on the website? Or am I missing the mark here? |
Yes, it is all about grabbing metadata from Zotero and putting it on the website. What I am doing is taking what we currently retrieve from Zotero and formatting it and adding it into the a metadata section on each bibliographic entry. The changes are not visible to a human reading a page, but are visible and formatted for a web crawler and search indexer to find them and understand them. Here's an example, if you were to view the html for the bibliographical entry, "A graphical inference mechanism", you'd find this block of code in it: Schema.org provides a structured format for defining objects - in this case a Scholarly Article, the authors are all listed in a standardized format, publication date, description, information on the periodical it was published in, name of the article, page range, other well-known locations that house information on the article and lastly the url (This points to my staging site -- a location that is set to not be crawled and not be discoverable by search engines -- we want them finding our main site, not my site) and lastly the volume number of Expert Systems that this article appeared in. Google, Bing, or other crawlers that index our site will be able to use this information to better understand the contents of each bibliographical entry. Reading the web page the information is there and easily understandable by a human reader. This just makes it easily understandable by a computing system. Longer term as we explore improving our own internal search system, I plan to leverage this information. |
|
Gotcha, understood. That all sounds good to me! I think pulling more metadata from the Zotero to put on the website sounds good all-around. |
Annotate Bibliography entries with metadata based on schema.org creative works schema and its specializations for different types of scholarly works. The end result will be pages crawled and indexed by Google and other search engines will be able to better understand and represent the material on the pages. This should allow better search results.
Additionally, in our internal search assisted AI work, this will provide additional information on the contents of these pages and provide fodder for building a more detailed model of the Interlisp space that can be leveraged in responding to queries.
What all is in this PR:
layouts/_partials/bibliography-json-ld.html- this piece of code writes thejson-ldcontaining the metadata for each bibliographic item. Specific metadata and overall format is driven by the Zotero type assigned to each bibliographic entry.layouts/_partials/hooks/head-end.htmlto callbibliographic-json-ld.htmllayouts/_partials/bibliography-date.htmllayouts/bibliography/single.htmlwith call tobibliography-date.htmlscripts/bibSplit.pl. Also, added placeholder forconcepts- goal is to start annotating Zotero entries with information on different computer science concepts addressed by different papers. This information would then flow into the bibliographic metadata and become part of the searchable knowledge baseconfig/_default/params.yaml- fixes a long standing issue with warning messagescontent/en/history/bibliography/_index.md- the other half of the warning message fixtests/to help validate generation of metadata and correct formattingconfig/testing/hugo.yaml.github/workflows/gh-pages.ymlto run the test suite as part when a push is made to a branch and when merged into main.To do: Further revise test cases - augment hardcoded markdown files to a combination of hardcoded and actual files generated from Zotero output. Want to flag errors that occur if Zotero output or processing change.
The resulting page and it's metadata can be viewed using Google's Rich Results test: https://search.google.com/test/rich-results/result/r%2Farticles?id=1glR_Xd8sI4btiGYnczSdg
Note: Pages on the staging site are set to not index - you can safely ignore indexing errors.