CITE THIS NOTEBOOK: Wolfram R&D LIVE: Wolfram Resource System—Repositories & Archives by Bob Sandheinrich. Wolfram Community DEC 15 2022.

https://youtu.be/roCkXVkDuLA

Agenda

◼
  • Introduction
  • ◼
  • Consumer Use
  • ◼
  • Developer Use
  • ◼
  • Paclet Repository Development
  • ◼
  • Advanced Topics and Future Repositories
  • Introduction

    A bit of terminology

    ResourceObject

    A resource object represents content that is ready-to-use in the Wolfram Language.
    In[]:=
    ResourceObject["Space Shuttle 3D Model"]
    Out[]=
    ResourceObject
    Name: Space Shuttle 3D Model
    »
    Type: DataResource
    Description: 3D test model of a space shuttle
    
    There are two primary benefits to turning content into resource objects.
    ◼
  • Attaching Metadata
  • ◼
  • Distribution
  • Repository

    Repositories are collections of similar resource objects. All resources in a repository share the same:
    ◼
  • Type of content
  • ◼
  • Metadata schema
  • ◼
  • Website
  • ◼
  • Integration into the Wolfram Language
  • Resource System

    The resource system is the full collection of technology for use, creation and distribution of resource objects including public repositories deployed to the Wolfram Cloud.

    Repositories

    ◼
  • Data Repository (2017)
  • ◼
  • Neural Net Repository (2018)
  • ◼
  • Function Repository (2019)
  • ◼
  • Paclet Repository (2022)
  • Finding Resource Objects

    Search or browse on the web

    Out[]=
    Resource System Website

    Search in the language

    In[]:=
    ResourceSearch["wordle"]
    Out[]=
    Name
    ResourceType
    ResourceObject
    Description
    Location
    DocumentationLink
    PlayWordle
    Function
    ResourceObject["PlayWordle"]
    Play the popular online word game Wordle
    https://resources.wolframcloud.com
    https://resources.wolframcloud.com/FunctionReposit...
    Wordle Word List
    DataResource
    ResourceObject["Wordle Word List"]
    List of allowed words to solve the daily Wordle puzzle
    https://resources.wolframcloud.com
    https://www.wolframcloud.com/obj/resourcesystem/pu...
    EntityRegister[ResourceData["GDB-9 Database"]];

    Using Resource Objects

    Each repository has its own integration into the Wolfram Language.
    In[]:=
    ResourceData["Space Shuttle 3D Model"]
    Out[]=
    In[]:=
    NetModel["Wolfram Sentence Splitter Net for TextSentences WL 12.0 V2"]
    Out[]=
    NetChain
    Inputport:
    string
    Outputport:
    boolean
    
    In[]:=
    AudioIdentify
    ,All,3
    Out[]=
    
    chirp
    ,
    bird
    ,
    meow
    
    In[]:=
    ResourceFunction["BirdSay"]
    Out[]=
    [◼]
    BirdSay
    In[]:=
    [◼]
    BirdSay
    [Plot3D[Sinc[xy],{x,0,Pi},{y,0,Pi}]]
    Out[]=
    In[]:=
    PacletInstall["Bob/ContentBrowser"]
    Out[]=
    PacletObject
    Name: Bob/ContentBrowser
    Version: 1.6.1
    
    Each of these functions is using a ResourceObject from a resource system repository.
    In[]:=
    ResourceObject/@{"Space Shuttle 3D Model","Wolfram Sentence Splitter Net for TextSentences WL 12.0 V2",​​"Wolfram AudioIdentify V1 Trained on AudioSet Data","BirdSay","Bob/ContentBrowser"}

    Details

    ResourceObject[“name”] looks for resources at locations along $ResourceSystemPath
    In[]:=
    $ResourceSystemPath
    If it finds a resource remotely it retrieves only the metadata.
    In[]:=
    rebels=ResourceObject["Paul Revere's Social Network in Colonial Boston"]
    Out[]=
    ResourceObject
    Name: Paul Revere's Social Network in Colonial Boston
    »
    Type: DataResource
    Description: Dataset of associations among political groups in colonial Boston 1762 - 1775
    
    In[]:=
    rebels["ContentElementLocations"]
    Out[]=
    DatasetCloudObject[
    https://www.wolframcloud.com/objects/e216481c-7bdc-4e23-bde6-48ce505f5f25
    ]
    The first time you use a resource, the content is downloaded and stored locally for faster subsequent use:
    In[]:=
    AbsoluteTiming[ResourceData[rebels,"Dataset"]]
    Out[]=
    1.31378,
    Name
    StAndrewsLodge
    LoyalNine
    NorthCaucus
    LongRoomClub
    TeaParty
    BostonCommittee
    LondonEnemies
    John Adams
    False
    False
    True
    True
    False
    False
    False
    Samuel Adams
    False
    False
    True
    True
    False
    True
    True
    Dr Allen
    False
    False
    True
    False
    False
    False
    False
    Nathaniel Appleton
    False
    False
    True
    False
    False
    True
    False
    Gilbert Ash
    True
    False
    False
    False
    False
    False
    False
    Benjamin Austin
    False
    False
    False
    False
    False
    False
    True
    Samuel Austin
    False
    False
    False
    False
    False
    False
    True
    John Avery
    False
    True
    False
    False
    False
    False
    True
    Cyrus Baldwin
    False
    False
    False
    False
    False
    False
    True
    John Ballard
    False
    False
    True
    False
    False
    False
    False
    Nathaniel Barber
    False
    False
    True
    False
    True
    True
    True
    Samuel Barnard
    False
    False
    False
    False
    True
    False
    False
    Samuel Barrett
    True
    False
    False
    False
    False
    False
    True
    Henry Bass
    False
    True
    True
    False
    True
    False
    True
    William Bell
    True
    False
    False
    False
    False
    False
    False
    Increase Blake
    True
    False
    False
    False
    False
    False
    False
    John Boit
    False
    False
    True
    False
    False
    False
    False
    Thomas Bolter
    False
    False
    False
    False
    True
    False
    False
    Peter Boyer
    False
    False
    False
    False
    False
    False
    True
    Richard Boynton
    False
    False
    False
    False
    False
    True
    True
    rows 1–20 of 254
    

    Creating Resource Objects

    Creating a resource object from content typically uses a definition notebook.
    Definition notebooks allow the creator to:
    ◼
  • Specify metadata
  • ◼
  • Validate content and metadata
  • ◼
  • Distribute the resource
  • ◼
  • Store on the local computer
  • ◼
  • Deploy to the Wolfram Cloud
  • ◼
  • Submit for publication in a repository
  • Each repository has its own set of standards and guidelines to follow when creating and submitting resources.
    Most repositories have a review team made of Wolfram staff which examines the submission and send comments and edits back and forth with the creator.
    Publishing in a repository requires a Publisher ID. You can create one with this form.

    Wolfram Language Paclet Repository

    Newly released and open for business!
    A lot of information is available about paclets, paclet development and the paclet repository (see final slide)

    Creating a new paclet

    Programmatically

    PacletTools provides a suite of functions for programmatically developing paclets.
    CreatePaclet builds a standard directory structure

    With a Definition Notebook

    Converting an existing paclet for WLPR

    Developing for WLPR

    Requirements

    ◼
  • PublisherID in names: Paclet, Symbol Context, Stylesheet and Palette paths
  • Conventions (required for featured paclets)

    ◼
  • All user symbols documented
  • ◼
  • All definition notebook fields filled in accurately
  • Advanced Topics

    Private Resource Systems

    ◼
  • Custom, private resources systems can be part of an Enterprise Private Cloud (EPC)
  • Resource System Diagram

    Likely Future Repositories

    ◼
  • Color Palettes
  • ◼
  • Plot Themes
  • ◼
  • Examples
  • ◼
  • Stylesheets
  • More Information

    Links

    ◼
  • Resource System
  • ◼
  • Paclet Repository
  • Videos on Paclets, Paclet Development, Paclet Repository

    ◼
  • Connor Gray's R&D Presentation
  • ◼
  • Wolfram Technology Conference 2022 Talks:
  • ◼
  • Using Paclets from the Wolfram Language Paclet Repository
  • ◼
  • Get Started Developing Paclets for the Paclet Repository
  • ◼
  • Documentation Tools/Authoring Documentation for Paclets
  • ◼
  • Continuous Integration and Deployment of Paclets
  • Documentation Links

    ◼
  • Wolfram Resource System
  • ◼
  • Paclets Tutorial
  • ◼
  • Creating Paclets Tutorial
  • ◼
  • Prepare a paclet for WLPR workflow
  • ◼
  • Share a paclet workflow
  • ◼
  • Creating a paclet for WLPR
  • ◼
  • WLPR guidelines