我正在开发一个需要定义 json-ld 架构的 React 应用程序。我通过 API 获取架构字符串,并且需要将适当的脚本标记添加到我的页面。
我的架构字符串看起来像这样:
[{"@context": "http://schema.org"}]
Run Code Online (Sandbox Code Playgroud)
我希望这会被翻译成:
<script type="application/ld+json">
[{"@context": "http://schema.org"}]
</script>
Run Code Online (Sandbox Code Playgroud)
然而,我在处理双引号时遇到了麻烦,因为它们被转换为等效的 html -"
这就是我的代码的样子:
schemaString = "[{\"@context\": \"http://schema.org\"}]";
render() {
return (<div>{schemaString &&
<script type="application/ld+json">
{schemaString}
</script>}
</div>)
}
Run Code Online (Sandbox Code Playgroud)
生成的html为:
<div>
<script type="application/ld+json">
[{"@context": "http://schema.org"}]
</script>
</div>
Run Code Online (Sandbox Code Playgroud)
关于我在这里缺少什么的任何指示吗?谢谢!
我一直在努力寻找任何示例来说明如何覆盖默认的 Spring Boot Data Rest JpaRepository 行为以返回 HAL 响应以外的其他内容。我发现 Siren 和 Json-LD 都可以满足要求,但没有任何如何让它与 spring 一起工作的示例。我正在使用 Spring 5、Spring Data Rest 2.0.4.RELEASE。请注意,我不想为自定义休息控制器执行此操作,而是为通过扩展 JpaRepository 提供的默认存储库执行此操作。这是我第一次发帖,因此对于我可能无意中违反的任何规则,我深表歉意。
更新:我能够找到一个具有 SirenMessageConverter 的库 Hydra-Spring,按照存储库上的示例,我能够执行以下操作:
@Configuration
@EnablePluginRegistries(RelProvider.class)
public class Config implements WebMvcConfigurer {
private static final boolean EVO_PRESENT =
ClassUtils.isPresent("org.atteo.evo.inflector.English", null);
@Autowired
private PluginRegistry<RelProvider, Class<?>> relProviderRegistry;
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
converters.add(sirenMessageConverter());
converters.add(hydraMessageConverter());
converters.add(halConverter());
converters.add(uberConverter());
converters.add(xhtmlMessageConverter());
converters.add(jsonConverter());
}
@Bean
public RepositoryRestConfigurerAdapter repositoryRestConfigurer() {
return new RepositoryRestConfigurerAdapter() {
@Override
public void configureHttpMessageConverters(
List<HttpMessageConverter<?>> messageConverters) {
messageConverters.add(0, sirenMessageConverter());
} …Run Code Online (Sandbox Code Playgroud) 我已经阅读了几个mainEntityOfPage关于它是什么以及如何使用它的答案,每个答案都比上一个更令人困惑。
所以我的问题是具体的;我有一个包含博客部分的网站。在博客详细信息页面上,我想使用 JSON-LD 格式的结构化数据。
我的问题:我mainEntityOfPage是WebPage还是BlogPosting?
我应该使用这个:
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "WebPage",
"mainEntityOfPage": {
"@type": "BlogPosting",
}
}
</script>
Run Code Online (Sandbox Code Playgroud)
或这个:
<script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "BlogPosting",
"mainEntityOfPage": {
"@type": "WebPage",
}
}
</script>
Run Code Online (Sandbox Code Playgroud)
我在想mainEntityOfPage是BlogPosting,所以第一个例子,是吗?还是我还是错了?
我正在尝试将 HATEOAS 应用于现有应用程序,但在对由 API 响应驱动的表单输入进行建模时遇到问题。
\n\n该应用程序允许搜索和预订两个地方之间的连接。第一个端点允许搜索连接GET /connections?from={lat,lon}&to={lat,lon}&departure={dateTime}并返回以下有效负载(响应正文)。
[\n {\n "id": "aaa",\n "carrier": "Fast Bus",\n "price": 3.20,\n "departure": "2019-04-05T12:30"\n },\n {\n "id": "bbb",\n "carrier": "Airport Bus",\n "price": 4.60,\n "departure": "2019-04-05T13:30"\n },\n {\n "id": "ccc",\n "carrier": "Slow bus",\n "price": 1.60,\n "departure": "2019-04-05T11:30"\n }\n]\nRun Code Online (Sandbox Code Playgroud)\n\n为了对其中一个连接下订单,客户端需要POST /orders使用以下有效负载之一(请求正文)发出请求:
{\n "connectionId": "aaa",\n "email": "passenger@example.org"\n}\nRun Code Online (Sandbox Code Playgroud){\n "connectionId": "bbb",\n "email": "passenger@example.org",\n "flightNumber": "EA1234"\n}\nRun Code Online (Sandbox Code Playgroud){\n "connectionId": "ccc",\n "phoneNumber": "+44 111 222 333"\n}\nRun Code Online (Sandbox Code Playgroud)编辑:我改变了主意。我会找到一种方法来生成 Java 类并将 JSON 作为该类的对象加载。
我刚刚发现存在一个JSON名为的变体JSON-LD。
在我看来,这是一种更加结构化的定义方式JSON,它让我想起了XML关联的模式,例如XSD.
我可以从创建一个 Java 类JSON-LD,在运行时加载它并使用它转换JSON-LD为该类的实例化吗?
我阅读了这两种实现的文档,但没有发现任何相关内容。也许我读得不好?
将json-ld添加到 vue 应用程序的正确方法是什么\xe2\x80\x99 ?
\n\n我\xe2\x80\x99添加了一些结构化数据,但Google结构化数据测试工具未检测到我的网址上的数据。但是,如果我查看 url 的来源并将其粘贴到测试工具中,它会检测到我的数据。缺少什么?
\n我想创建一组 REST API 端点来公开各种数据源。我希望我的端点符合Richardson 成熟度模型,特别是对 HATEOAS 的支持。
我查看了JSON-LD和JSON:API,它们似乎都很合适,因为它们都可以同等支持 REST 和 HATEOAS,但是 JSON:API 还有许多其他功能,这些功能更像“gRPC” '。
与使用 JSON-LD 相比,使用 JSON-LD 有什么明显的优势吗?JSON:REST 端点的 API?适用于 REST 的功能差异有哪些?
我想知道,有没有办法在JSON-LD中使用HAL概念?
我有当前的jsonld文档:
{
"@context": {
"hal": "http://stateless.co/hal#",
"schema": "http://schema.org",
"_links": {
"@id": "hal:link",
"@container": "@index"
}
},
"@type": ["schema:Person", "hal:Resource"],
"name": "Jon Snow",
"_links": {
"self": {
"href": "/users/123"
}
}
}
Run Code Online (Sandbox Code Playgroud)
但我不知道如何定义该href具有@type的@id,等等...
有没有办法基于RDF(S)定义HAL词汇并以某种方式将其导入我的jsonld文档的@context中,或者我应该做其他什么?
(我试图描述具有各种属性的超链接,如链接关系,HTTP方法,接受的媒体类型,语言,IRI模板,输入字段等等......所以@id类型不足以让我描述链接.)
我有一种情况,我可以将99%的结构化数据放入我的产品页面中的JSON-LD中.但我获得UPC的唯一方法是将其作为微数据内联.
Google会聚合JSON-LD和内联微数据中的产品数据吗?
TL; DR
如果我有一个像JSON文件
{
"policyid": "http://example.com/policy:0099",
"policytype": "http://www.w3.org/ns/odrl/2/Set"
}
Run Code Online (Sandbox Code Playgroud)
我想要一个类似的JSON-LD文档
{
"@context": {
"rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
"policytype": { "@id": "rdf:type", "@type": "@id" }
}
"@id" : "http://example.com/policy:0099",
"policytype": "http://www.w3.org/ns/odrl/2/Set"
}
Run Code Online (Sandbox Code Playgroud)
是否可以不将名称/值对{{policyid":" http://example.com/policy:0099 "} 更改为{"@ id ":" http://example.com/policy:0099 "而是在上下文中说出"policyid" - >"@ id".
{
"@context": {
"rdf": "http://www.w3.org/1999/02/22-rdf-syntax-ns#",
"policytype": { "@id": "rdf:type", "@type": "@id" },
#### something here that says "policyid" -> "@id"
}
"policyid" : "http://example.com/policy:0099",
"policytype": "http://www.w3.org/ns/odrl/2/Set"
}
Run Code Online (Sandbox Code Playgroud)
我正在通过规范示例,但无法找到如何做到这一点.
更多背景
假设我们有一个具有RDF规范和JSON编码的模型,例如ODRL 2.1 Ontology和ODRL Version 2.1 JSON Encoding. …