Git Product home page Git Product logo

schemaorg-java's Introduction

Schema.org Client Library for Java

Overview

The Schema.org Client Library for Java is a library for creating schema.org entities. The entities can be easily serialized and deserialized with JSON-LD format by using the JSON-LD serializer in the library.

Note that it is based on a 2016 release snapshot of Schema.org, and is not currently actively being developed. If you are interested to see updates (e.g. for Schema.org 3.4 or later), please comment in Issue #7.

Library Highlights

The library has the following highlights:

  • Fully supports the vocabulary defined in the http://schema.org namespace as well as vocabulary defined in the http://schema.googleapis.com namespace.
  • Fully supports type multiple inheritance, multiple values per property in schema.org.
  • Every schema.org type has a corresponding Java interface which provides convenient setter methods for setting the values of the properties of that particular type.
  • Supports serializing and deserializing schema.org objects to and from JSON-LD formats.

Limitations

  • The library is based on code generated from a specific release of schema.org. It may not support more recent additions and changes, or third party extensions.

Quick Start

Below is a simple example of creating schema.org Thing object, serialize it into JSON-LD format and deserialize JSON-LD back to a Thing object.

JsonLdSerializer serializer = new JsonLdSerializer(true /* setPrettyPrinting */);
Thing object =
    CoreFactory.newThingBuilder()
        .addUrl("http://example.com")
        .addName("John")
        .addProperty("customPropertyName", "customPropertyValue")
        .build();
try {
  String jsonLdStr = serializer.serialize(object);
  List<Thing> list = serializer.deserialize(jsonLdStr);
  Thing thing = list.get(0);
  String name = ((Text) thing.getNameList().get(0)).getValue();
  String customPropertyValue =
      ((Text) thing.getProperty("customPropertyName").get(0)).getValue();
} catch (JsonLdSyntaxException e) {
  // Errors related to JSON-LD format and schema.org terms in JSON-LD
} catch (JsonIOException e) {
  // Errors related to JSON format
}

Important Usage Notes

Some important usage recommendations are given below:

Package Structure

The Java Classes are organized into the following pakcages:

  • com.google.schemaorg (basic interfaces and JSON-LD serializer)
  • com.google.schemaorg.core (library for http://schema.org namespace vocabulary)
  • com.google.schemaorg.core.datatype (DataType primitives)
  • com.google.schemaorg.goog (library for http://schema.googleapis.com namespace vocabulary)

Builders

In the Java library, every schema.org type has a corresponding Java interface with the same name as the schema.org type. The Java interfaces are designed with the Builder Pattern. Developers don't need to know any details about implementation of these interfaces, because all the operations on the object will be performed through the interface.

CoreFactory and GoogFactory classes provide static factory methods that return a Builder object for a specific schema.org type. In the builder interfaces, there are add[PropertyName] methods for each property which could be set in the corresponding schema.org type. Multiple values can be added to a property as documented by schema.org. The build() method should be called to create an immutable concrete instance of that type. A get[PropertyName]List method is defined for each property. The get[PropertyName]List method will return an [ImmutableList] (https://google.github.io/guava/releases/snapshot/api/docs/com/google/common/collect/ImmutableList.html) containing all the values for the specific property. In order to add any custom property into any schema.org type, the addProperty and getProperty methods are defined in the interface for each schema.org type.

DataType

DataType is defined in the package com.google.schemaorg.core.datatype. To create a primitive DataType object, the static method of() in each type should be used.

For example:

  • Text.of("help")
  • URL.of("http://schema.org")
  • Time.of("08:32")
  • Date.of("2016-01-28")
  • DateTime.of("2016-01-28 12:00")
  • Number.of("42")
  • Integer.of(42)
  • Float.of(3.14)
  • Boolean has limited possible values of True and False. It is defined as an enum type in this library. Boolean is the interface and it has 2 enum values: BooleanEnum.TRUE and BooleanEnum.FALSE.

Enumeration

Subtypes of Enumeration are handled slightly differently. For each Enumeration subtype in schema.org, a Java interface is created which provides accessor methods for the properties of that type. The name of the interface is the same name as the schema.org type. In addition, a Java Enum class is also created to hold the enum values of that schema.org Enumeration type. The name of the Enum class is type name with Enum appended.

For example, ActionStatusType is a subtype of Enumeration in schema.org. It has the following values:

  • ActiveActionStatus
  • CompletedActionStatus
  • FailedActionStatus
  • PotentialActionStatus

In the Java library, an interface named ActionStatusType is defined and a Java Enum class named ActionStatusTypeEnum is defined which implements the ActionStatusType interface. The ActionStatusTypeEnum contains the following enum values:

  • ACTIVE_ACTION_STATUS
  • COMPLETED_ACTION_STATUS
  • FAILED_ACTION_STATUS
  • POTENTIAL_ACTION_STATUS

JSON-LD

All the schema.org type builders also support setting the values for JSON-LD keywords. Following methods are defined in the builder interface:

Example Code

Serialization

JsonLdSerializer serializer = new JsonLdSerializer(true /* setPrettyPrinting */);
DataFeed object =
    CoreFactory.newDataFeedBuilder()
        .addJsonLdContext(
            JsonLdFactory.newContextBuilder()
                .setBase("http://example.com/")
                .build())
        .addDataFeedElement(
            CoreFactory.newRecipeBuilder()
                .setJsonLdId("123456")
                .addName("recipe name")
                .addAuthor(CoreFactory.newPersonBuilder().addName("John Smith").build())
                .addIsFamilyFriendly(BooleanEnum.TRUE)
                .setJsonLdReverse(
                    CoreConstants.PROPERTY_RECIPE,
                    CoreFactory.newCookActionBuilder().setJsonLdId("54321").build())
                .build())
        .build();
try {
  String jsonLdStr = serializer.serialize(object);
} catch (JsonLdSyntaxException e) {
  // Errors related to JSON-LD format and schema.org terms in JSON-LD
} catch (JsonIOException e) {
  // Errors related to JSON format
}

Every addXXX() method that takes the immutable class built from the builder class also has an overloaded convenience method that takes the builder class itself as shown below:

JsonLdSerializer serializer = new JsonLdSerializer(true /* setPrettyPrinting */);
DataFeed object =
    CoreFactory.newDataFeedBuilder()
        .addJsonLdContext(
            JsonLdFactory.newContextBuilder()
                .setBase("http://example.com/"))
        .addDataFeedElement(
            CoreFactory.newRecipeBuilder()
                .setJsonLdId("123456")
                .addName("recipe name")
                .addAuthor(CoreFactory.newPersonBuilder().addName("John Smith"))
                .addIsFamilyFriendly(BooleanEnum.TRUE)
                .setJsonLdReverse(
                    CoreConstants.PROPERTY_RECIPE,
                    CoreFactory.newCookActionBuilder().setJsonLdId("54321"))
        .build();
try {
  String jsonLdStr = serializer.serialize(object);
} catch (JsonLdSyntaxException e) {
  // Errors related to JSON-LD format and schema.org terms in JSON-LD
} catch (JsonIOException e) {
  // Errors related to JSON format
}

Multiple schema.org objects can be serialized by calling the overloaded method serialize(List<? extends Thing> objects).

Deserialization

JsonLdSerializer serializer = new JsonLdSerializer(true /* setPrettyPrinting */);
String jsonLd =
    "{\n"
        + "  \"@context\": [\n"
        + "    \"http://schema.org/\",\n"
        + "    {\n"
        + "      \"@base\": \"http://example.com/\"\n"
        + "    }\n"
        + "  ],\n"
        + "  \"@type\": \"DataFeed\",\n"
        + "  \"dataFeedElement\": {\n"
        + "    \"@type\": \"Recipe\",\n"
        + "    \"@id\": \"123456\",\n"
        + "    \"name\": \"recipe name\",\n"
        + "    \"author\": {\n"
        + "      \"@type\": \"Person\",\n"
        + "      \"name\": \"ABC DEF\"\n"
        + "    },\n"
        + "    \"isFamilyFriendly\": \"http://schema.org/True\",\n"
        + "    \"@reverse\": {\n"
        + "      \"recipe\": {\n"
        + "        \"@type\": \"CookAction\",\n"
        + "        \"@id\": \"54321\"\n"
        + "      }\n"
        + "    }\n"
        + "  }\n"
        + "}";
try {
    List<Thing> actual = serializer.deserialize(jsonLd);
    if ("http://schema.org/DataFeed".equals(actual.get(0).getFullTypeName()) {
    DataFeed dataFeed = (DataFeed) actual.get(0);
    List<ValueType> contexts = dataFeed.getJsonLdContextList();
    String url = ((JsonLdContext) contexts.get(0)).getUrl();
    String goog = ((JsonLdContext) contexts.get(1)).getTerm("goog");
    Recipe recipe = (Recipe) (dataFeed.getDataFeedElementList().get(0));
    String id = recipe.getJsonLdId();
    String recipeName = ((Text) recipe.getNameList().get(0)).getValue();
  }
} catch (JsonLdSyntaxException e) {
  // Errors related to JSON-LD format and schema.org terms in JSON-LD
} catch (JsonIOException e) {
  // Errors related to JSON format
}

Limitations of current JSON-LD deserialization are given below:

Future versions of this client library may remove these limitations.

Dependencies

This library depends on following public libraries:

To add dependency using Gradle:

  • Use remote repository
repositories {
    mavenCentral()
}

dependencies {
    compile 'com.google.code.findbugs:jsr305:3.0.1'
    compile 'com.google.guava:guava:19.0'
    compile 'com.google.code.gson:gson:2.5'
    compile files('schema-org-client-1.0.0/schema-org-client-1.0.0.jar')
}
  • Use local files
dependencies {
    compile fileTree(dir: 'schema-org-client-1.0.0/lib', include: '*.jar')
    compile files('schema-org-client-1.0.0/schema-org-client-1.0.0.jar')
}

Links

schemaorg-java's People

Contributors

danbri avatar lowasser avatar yuanz1987 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

schemaorg-java's Issues

Collecting information about current users of this library.

I am now looking after this library, and would like to understand better who is using it, what value you are finding, what things it does well for you, or any frustrations.

The most obvious limitation is that, by being code-generator based, it is tied to a specific version of Schema.org. I'd like to here perspectives on that, but also any other experiences that can help in planning next steps.

Also: is anyone else interested in helping to maintain or improve it?

Any interest in keeping this up to date?

Hey there, since this project seems to be dead (for a while), I created my own code generator (not pretty) but it works.

If you want me to share the resulting / generated POJOs for the newest version of schema.org leave some thumbs up and i'll considering setting it up with jitpack so people can include it.

Best
Jan

Deserialization fails with response from google knowledge graph.

Hi, I'm developing a project that must be able to perform a search against the google knowledge graph api, which returns a json-ld with the vocabulary from schema.org. I thought that schemaorg-java library would fit perfectly to get java objects from the google knowledge graph response but it is failing.

I think the reason is that google knowledge graph response returns the @type field as a list and schemaorg-java is expecting a single value.

For example, if I search "Taylor Swift", restricting the number of results to 2, I obtain the following response from google api:

{
  "@context": {
    "@vocab": "http://schema.org/",
    "goog": "http://schema.googleapis.com/",
    "EntitySearchResult": "goog:EntitySearchResult",
    "detailedDescription": "goog:detailedDescription",
    "resultScore": "goog:resultScore",
    "kg": "http://g.co/kg"
  },
  "@type": "ItemList",
  "itemListElement": [
    {
      "@type": "EntitySearchResult",
      "result": {
        "@id": "kg:/m/0dl567",
        "name": "Taylor Swift",
        "@type": [
          "Thing",
          "Person"
        ],
        "description": "American singer-songwriter",
        "image": {
          "contentUrl": "http://t0.gstatic.com/images?q=tbn:ANd9GcST848UJ0u31E6aoQfb2nnKZFyad7rwNF0ZLOCACGpu4jnboEzV",
          "url": "https://en.wikipedia.org/wiki/Begin_Again_(Taylor_Swift_song)",
          "license": "http://creativecommons.org/licenses/by/2.0"
        },
        "detailedDescription": {
          "articleBody": "Taylor Alison Swift is an American singer-songwriter. One of the most popular contemporary female recording artists, she is known for narrative songs about her personal life, which has received much media attention.\n",
          "url": "https://en.wikipedia.org/wiki/Taylor_Swift",
          "license": "https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License"
        },
        "url": "http://taylorswift.com/"
      },
      "resultScore": 874.928711
    },
    {
      "@type": "EntitySearchResult",
      "result": {
        "@id": "kg:/m/03g7rsz",
        "name": "Taylor Swift",
        "@type": [
          "MusicAlbum",
          "Thing"
        ],
        "description": "Studio album by Taylor Swift",
        "detailedDescription": {
          "articleBody": "Taylor Swift is the debut studio album by American singer-songwriter Taylor Swift, released on October 24, 2006, by Big Machine Records. Swift was 16 years old at the time of the album's release and wrote its songs during her freshman year of high school. Swift has writing credits on all of the album's songs, including those co-written with Liz Rose. Swift experimented with several producers, ultimately choosing Nathan Chapman, who had produced her demo album. ",
          "url": "https://en.wikipedia.org/wiki/Taylor_Swift_(album)",
          "license": "https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License"
        }
      },
      "resultScore": 523.882324
    }
  ]
}

Schemaorg-java does not suppor @vocab tag, so I compact the response, obtaining the following:

{
  "@type" : "http://schema.org/ItemList",
  "http://schema.org/itemListElement" : [ {
    "@type" : "http://schema.googleapis.com/EntitySearchResult",
    "http://schema.googleapis.com/resultScore" : 874.928711,
    "http://schema.org/result" : {
      "@id" : "http://g.co/kg/m/0dl567",
      "@type" : [ "http://schema.org/Thing", "http://schema.org/Person" ],
      "http://schema.googleapis.com/detailedDescription" : {
        "http://schema.org/articleBody" : "Taylor Alison Swift is an American singer-songwriter. One of the most popular contemporary female recording artists, she is known for narrative songs about her personal life, which has received much media attention.\n",
        "http://schema.org/license" : "https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License",
        "http://schema.org/url" : "https://en.wikipedia.org/wiki/Taylor_Swift"
      },
      "http://schema.org/description" : "American singer-songwriter",
      "http://schema.org/image" : {
        "http://schema.org/contentUrl" : "http://t0.gstatic.com/images?q=tbn:ANd9GcST848UJ0u31E6aoQfb2nnKZFyad7rwNF0ZLOCACGpu4jnboEzV",
        "http://schema.org/license" : "http://creativecommons.org/licenses/by/2.0",
        "http://schema.org/url" : "https://en.wikipedia.org/wiki/Begin_Again_(Taylor_Swift_song)"
      },
      "http://schema.org/name" : "Taylor Swift",
      "http://schema.org/url" : "http://taylorswift.com/"
    }
  }, {
    "@type" : "http://schema.googleapis.com/EntitySearchResult",
    "http://schema.googleapis.com/resultScore" : 523.882324,
    "http://schema.org/result" : {
      "@id" : "http://g.co/kg/m/03g7rsz",
      "@type" : [ "http://schema.org/MusicAlbum", "http://schema.org/Thing" ],
      "http://schema.googleapis.com/detailedDescription" : {
        "http://schema.org/articleBody" : "Taylor Swift is the debut studio album by American singer-songwriter Taylor Swift, released on October 24, 2006, by Big Machine Records. Swift was 16 years old at the time of the album's release and wrote its songs during her freshman year of high school. Swift has writing credits on all of the album's songs, including those co-written with Liz Rose. Swift experimented with several producers, ultimately choosing Nathan Chapman, who had produced her demo album. ",
        "http://schema.org/license" : "https://en.wikipedia.org/wiki/Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License",
        "http://schema.org/url" : "https://en.wikipedia.org/wiki/Taylor_Swift_(album)"
      },
      "http://schema.org/description" : "Studio album by Taylor Swift",
      "http://schema.org/name" : "Taylor Swift"
    }
  } ]
}

then, when I tried to get a list of thing by deserializing this Json-ld string, I get the following exception:

com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected a string but was BEGIN_ARRAY at line 8 column 18 path $.http://schema.org/itemListElement[0].http://schema.org/result.@type
	at com.google.gson.Gson.fromJson(Gson.java:899)
	at com.google.gson.Gson.fromJson(Gson.java:852)
	at com.google.gson.Gson.fromJson(Gson.java:801)
	at com.google.schemaorg.JsonLdSerializer.deserialize(JsonLdSerializer.java:152)
	at es.um.es.sessamo.sessamo_model.GoogleKnowledgeGrapthTest.test2(GoogleKnowledgeGrapthTest.java:94)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
	at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
	at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
	at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
	at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
	at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
	at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
	at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
Caused by: java.lang.IllegalStateException: Expected a string but was BEGIN_ARRAY at line 8 column 18 path $.http://schema.org/itemListElement[0].http://schema.org/result.@type
	at com.google.gson.stream.JsonReader.nextString(JsonReader.java:825)
	at com.google.schemaorg.JsonLdSerializer$JsonLdTypeAdapter.readObject(JsonLdSerializer.java:431)
	at com.google.schemaorg.JsonLdSerializer$JsonLdTypeAdapter.readInternal(JsonLdSerializer.java:593)
	at com.google.schemaorg.JsonLdSerializer$JsonLdTypeAdapter.readObject(JsonLdSerializer.java:438)
	at com.google.schemaorg.JsonLdSerializer$JsonLdTypeAdapter.readInternal(JsonLdSerializer.java:593)
	at com.google.schemaorg.JsonLdSerializer$JsonLdTypeAdapter.readArray(JsonLdSerializer.java:612)
	at com.google.schemaorg.JsonLdSerializer$JsonLdTypeAdapter.readInternal(JsonLdSerializer.java:596)
	at com.google.schemaorg.JsonLdSerializer$JsonLdTypeAdapter.readObject(JsonLdSerializer.java:438)
	at com.google.schemaorg.JsonLdSerializer$JsonLdTypeAdapter.read(JsonLdSerializer.java:408)
	at com.google.schemaorg.JsonLdSerializer$JsonLdTypeAdapter.read(JsonLdSerializer.java:162)
	at com.google.gson.Gson.fromJson(Gson.java:887)
	... 28 more

Is there any way to deal with this?

Thanks in advance and best regards.

Design for lazy loading

API of this library is designed in such a way that it forces loading of a large number of classes even though only a few are actually used. This has perceptible and sometimes very serious performance impact.

Just executing CoreFactory.newWebPageBuilder() costs 1 second on a fast computer. I had to disable schema.org generation during development to get fast program restarts.

Initialization of the library takes 3-4 seconds on moderately fast VPS, but it can stretch out to 30-60 seconds when the server is under heavy load as is common when the server has to be restarted. I had to disable schema.org during the first minute or so after server restart. This is of course not ideal, because pages served during this time are incomplete.

It would be much better to have an API like WebPage.builder() that would only force loading of WebPage and its ancestor classes. This would be performant and actually more intuitive than the current API.

Could not call method 'addInventoryLevel' on 'com.google.schemaorg.core.Offer$Builder': check property name and expected value type

I am trying to extract structured data from Eventbrite

However, upon deserialization, I get

Could not call method 'addInventoryLevel' on 'com.google.schemaorg.core.Offer$Builder': check property name and expected value type

 val json = """{"description":"19 November:  19:30 - ?? Badge pick up party (Vabank Club) \n20-21 November: Topconf Tallinn conference:\u00a0 Topconf Tallinn Software conference offers ideal opportunities for learning, networking and tracking innovation occurring in the Java, Mobile, .Net, OpenSource, Lean/Agile, Architecture New Languages \u0026 Process communities. \nThe 2 days conference includes a total of 8 \u00a0business and technical tracks with over 45 presentations being showcased at Topconf Tallinn. The conference language is English. \n22 November:\u00a0 09:00 - 17:00 Topconf Tallinn\u00a0workshops","url":"https://www.eventbrite.com/e/topconf-tallinn-2018-registration-43741438821","image":"https://img.evbuc.com/https%3A%2F%2Fcdn.evbuc.com%2Fimages%2F41623910%2F26319742495%2F1%2Foriginal.jpg?h=300\u0026w=600\u0026auto=compress\u0026rect=263%2C3009%2C5390%2C2695\u0026s=beaddcefae92c9d5f336f7333aa71621","eventStatus":"EventScheduled","offers":[{"inventoryLevel":156,"name":"Topconf Tallinn 2018 Ticket","priceCurrency":"EUR","url":"https://www.eventbrite.com/e/topconf-tallinn-2018-registration-43741438821","price":450.0,"availability":"InStock","@type":"Offer"},{"inventoryLevel":93,"name":"1 day ticket on 20 or 21 November 2018","priceCurrency":"EUR","url":"https://www.eventbrite.com/e/topconf-tallinn-2018-registration-43741438821","price":280.0,"availability":"InStock","@type":"Offer"},{"inventoryLevel":25,"name":"Full day workshop ticket","priceCurrency":"EUR","url":"https://www.eventbrite.com/e/topconf-tallinn-2018-registration-43741438821","price":280.0,"availability":"InStock","@type":"Offer"}],"location":{"address":{"addressCountry":"EE","addressLocality":"Tallinn","addressRegion":"Harju maakond","streetAddress":"27a P\u00f5hja puiestee Tallinn, Harju maakond 10415 EE","postalCode":"10415","@type":"PostalAddress"},"@type":"Place","name":"Tallinna Kultuurikatel"},"@context":"http://schema.org","organizer":{"url":"https://www.eventbrite.com/o/topconf-software-conferences-1865716229","description":"Topconf Software Conferences are premier international software conference designed for Developers, Product owners / managers, Architects, Project Managers, Methods- and Process-Experts.","@type":"Organization","name":"Topconf Software Conferences"},"@type":"EducationEvent","name":"Topconf Tallinn 2018"}"""

    val serializer = JsonLdSerializer(true)
    val actual = serializer.deserialize(json) // <-- exception

Security Policy violation Binary Artifacts

This issue was automatically created by Allstar.

Security Policy Violation
Project is out of compliance with Binary Artifacts policy: binaries present in source code

Rule Description
Binary Artifacts are an increased security risk in your repository. Binary artifacts cannot be reviewed, allowing the introduction of possibly obsolete or maliciously subverted executables. For more information see the Security Scorecards Documentation for Binary Artifacts.

Remediation Steps
To remediate, remove the generated executable artifacts from the repository.

Artifacts Found

  • export/schema-org-client-1.0.0.jar

Additional Information
This policy is drawn from Security Scorecards, which is a tool that scores a project's adherence to security best practices. You may wish to run a Scorecards scan directly on this repository for more details.


Allstar has been installed on all Google managed GitHub orgs. Policies are gradually being rolled out and enforced by the GOSST and OSPO teams. Learn more at http://go/allstar

This issue will auto resolve when the policy is in compliance.

Issue created by Allstar. See https://github.com/ossf/allstar/ for more information. For questions specific to the repository, please contact the owner or maintainer.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.