Show HN: Schema.org with GitHub and scripts: A tool to make all data more useful

Case Study

How would DitaBase look in practice?


Ecommerce

Let's suppose Jane has a product catalog:

SKUProduct NameCategoryPrice
TRO-5593TriCool Aluminum
Water Bottle
Water Bottles$16.99

She needs to upload this to her own Shopify site, Amazon, Walmart, Google Shopping and about 20 other sites. However, each site has a slightly different schema, with tedious changes:

SKUProduct Name TitleCategory DepartmentPrice Sale Price
TRO-5593TriCool Aluminum
Water Bottle
Water Bottles
Sports & Fitness : Accessories : Sports Water Bottles
$16.99
16,99 USD

To deal with this, Jane manually creates and edits a different spreadsheet for every site. It is very annoying and time consuming.

Fortunately, Jane only has 50 products to worry about. But this means adding new products, or expanding to more websites is very difficult, if not impossible.

How can DitaBase make this easier?

On DitaBase, someone may have already made a ProductEcommerceAmazon schema, which would be a child of the ProductEcommerce schema. The schemas would have all the validators and converters necessary to convert between them.

This means Jane can simply make one spreadsheet that complies with ProductEcommerce and then automatically convert the data to every other website. If a website doesn't have a schema, she can easily hire a freelancer to write one for that site.


Cross Industry

Now let's meet Tom. Tom is laying out a construction project, up in the mountains. He contracted with a Land Surveying company, which produced data that looks like this:

GPS PointNorthEastElevationDatum
t-12524504.14517948.0763543.846NAD83
t-12624508.49117950.0593543.347NAD83

Tom also contracted with a satellite imaging service, which produced a series of photographs so that Tom would know the number and location of trees and other land features. The photographs came with metadata which give estimates of coordinates and number of trees:

 { "images": [ { "file": "19-05-17-10:30:45:231.png", "coordinate": "41°29'14.1\"N 76°50'14.9\"W", "trees": [ "41°29'12.5\"N 76°50'10.6\"W", "41°29'12.1\"N 76°50'10.6\"W", "41°29'11.8\"N 76°50'10.7\"W", "41°29'11.1\"N 76°50'10.4\"W" ] } ] }

It would save Tom a lot of time and money to be able to work with a single dataset instead of each one separately. Unfortunately, their data doesn't look alike at all, even though they are theoretically similar industries.

This also isn't the first time Tom has needed two dissimilar survey data sets to work together. The last time, Tom couldn't find another solution and hired a programmer to write custom scripts. But that was a one time solution and won't work here. What a waste of money!

With DitaBase...

If both or even one of the companies had their data extend the Coordinate schema, then Tom could convert both data sets that far and do the rest manually. Even though it's an odd, one time situation, DitaBase still helps Tom enormously.


Inter-Company

Sara is the CTO of large medical company, which just acquired a small medical startup. Sara's company has an old codebase, of which one component is a MySQL database. The startup has an amazing API and codebase, which includes MongoDB.

Somehow, Sara wants to move over to using the new codebase, but this must be handled delicately. Ideally, the MySQL and MongoDB could both be live in the interim, without developing a costly and unnecessary API for the old codebase.

DitaBase again!

Sara knows that all their customer data will be carried over using the old schema. This means that they can write a child of the DitaBase PersonMedical schema, and have a version for MongoDB and SQL.

DitaBase makes abstracting the container from the data itself very easy. Add a two way converter and the databases can be used as though they were a single system.

PersonIDNameAgeBlood Type
GUL-89323John Doe36O-
MAL-34106Jane Doe67AB+
PersonIDConditionID
MAL-341061342
MAL-341061305
ConditionIDCondition
1342Arthritis
1305High Blood Pressure
 { "people": [ { "_id": "GUL-89323", "name": "John Doe", "age": 36, "blood-type": "O-" }, { "_id": "MAL-34106", "name": "Jane Doe", "age": 67, "blood-type": "AB+", "conditions": [ "Arthritis", "High Blood Pressure" ] } ] } 


from Hacker News http://www.ditabase.io/