Content Negotiation

JudaicaLink supports content negotiation, allowing users to retrieve linked data in multiple formats such as HTML, JSON-LD, RDF/XML, and Turtle (TTL). This enables seamless integration with various linked data tools and applications.

What is Content Negotiation?

Content negotiation is a mechanism that allows clients to request a resource in a specific format by specifying the desired format in the HTTP Accept header.

For example:

  • A web browser requests HTML by default.

  • A linked data application may request JSON-LD or RDF/XML .

Available Formats

JudaicaLink supports the following formats:

Format

MIME Type

Example Request

HTML

text/html

https://data.judaicalink.org/data/html/yivo/moses-mendelssohn

JSON-LD

application/ld+json

https://data.judaicalink.org/data/jsonld/yivo/moses-mendelssohn

RDF/XML

application/rdf+xml

https://data.judaicalink.org/data/xml/yivo/moses-mendelssohn

Turtle

text/turtle

https://data.judaicalink.org/data/ttl/yivo/moses-mendelssohn

How to Request Data in Different Formats

There are two primary ways to request a specific format:

1. Using URL Paths

JudaicaLink allows users to specify the desired format directly in the URL:

  • HTML: https://data.judaicalink.org/data/html/{dataset}/{entity}

  • JSON-LD: https://data.judaicalink.org/data/jsonld/{dataset}/{entity}

  • RDF/XML: https://data.judaicalink.org/data/xml/{dataset}/{entity}

  • Turtle: https://data.judaicalink.org/data/ttl/{dataset}/{entity}

Example:

curl -L https://data.judaicalink.org/data/jsonld/yivo/moses-mendelssohn

2. Using HTTP Headers

Advanced users and applications can specify the desired format using the Accept header in HTTP requests:

Example Requests

  • JSON-LD:

curl -H "Accept: application/ld+json" https://data.judaicalink.org/data/yivo/moses-mendelssohn
  • RDF/XML:

curl -H "Accept: application/rdf+xml" https://data.judaicalink.org/data/yivo/moses-mendelssohn
  • Turtle:

curl -H "Accept: text/turtle" https://data.judaicalink.org/data/yivo/moses-mendelssohn

Programmatic Access

Applications can integrate JudaicaLink’s content negotiation capabilities by dynamically requesting data formats based on their needs.

For example, in Python:

1import requests
2headers = {"Accept": "application/ld+json"}
3response = requests.get("https://data.judaicalink.org/data/yivo/moses-mendelssohn", headers=headers)
4data = response.json()
5print(data)

Best Practices

  • When using SPARQL endpoints, consider requesting results in JSON-LD for better integration with semantic web tools.

  • For human-readable data, use the HTML format.

  • For machine-readable RDF, request Turtle (TTL) or RDF/XML .

Troubleshooting

1. Receiving the Wrong Format

If you are not getting the expected format:

  • Check the URL path (make sure you are using /jsonld/, /xml/, etc.).

  • Ensure the `Accept` header is correctly set.

2. Data Not Found

If a specific entity does not exist in the requested format, try checking:

Next Steps

— Thank you for using JudaicaLink! 🚀