npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

schema-org-ceramic

v1.4.0

Published

Generate Ceramic schemas and data models from Schema.org classes

Downloads

1

Readme

schema-org-ceramic

A small project that converts Schema.org schemas to JSON schemas suitable for use in Ceramic.

Usage

import { createModel } from "schema-org-ceramic";

await createModel(ceramic, manager, "Thing");

A schema will be created for the object Thing and added to the manager instance.

Example

The Geo Web is currently using this repo as one of the sources for schemas. See an example here.

Details

schema-org-json-schemas converts Schema.org models to JSON schemas. However, the schemas are not quite ready for use in Ceramic due to two things:

  1. Subclasses use allOf to refer to other schema IDs, which is not supported in js-ceramic
  2. Schemas contain references to other schemas using ref

Subclasses

Subclasses are handled by including super classes under the definitions of the schemas and replacing the allOf reference with a definition.

This will result in large schemas, as Thing, for example, will be redefined in every schema.

References

Primitive types are defined inline, which is not an issue.

Properties that are more complicated types use ref to refer to another schema. These are replaced with CIP-82 references.

This results in every ref turning into a reference to another Ceramic stream with a different schema. This will limit the size of streams, while keeping primitive types inline.

Future

Publishing

Value can definitely be added by publishing a single registry of Schema.org Ceramic schemas. This would allow others to reuse and reference the same schemas, without needing to publish them all themselves.

Once published, the @datamodels repo could contain a package containing all Schema.org schemas.