Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Context array mit verschiedenen Datentypen ist inkompatibel mit Elasticsearch #26

Closed
acka47 opened this issue Oct 15, 2020 · 3 comments
Closed
Assignees
Labels
bug Something isn't working

Comments

@acka47
Copy link
Member

acka47 commented Oct 15, 2020

So etwas kann nicht in ES indexiert werden:

{
  "@context": [ 
    "https://w3id.org/kim/lrmi-profile/draft/context.jsonld",
    {"@language": "de"}
  ],
  "name": "Beispielkurs",
  "id": "https://example.org/oer",
  "type": "Course"
}

Siehe auch https://www.elastic.co/guide/en/elasticsearch/reference/7.10/array.html:

When adding a field dynamically, the first value in the array determines the field type. All subsequent values must be of the same data type or it must at least be possible to coerce subsequent values to the same data type.

Arrays with a mixture of data types are not supported

Aus diesem Grund geht das POSTen nach SkoHub nicht mehr vollständig (weil dort ein ES-Index angeschlossen ist), siehe skohub-io/skohub-pubsub#40 (comment).

Zwar ist das valides JSON-LD und so ähnlich auch in einem Beispiel dokumentiert (https://w3c.github.io/json-ld-syntax/#example-22-combining-external-and-local-contexts), allerdings wäre es schon gut, ES-kompatibles JSON zu produzieren, weil u.a. SkoHub und OERSI auf dem Schema aufbauen. Allerdings sehe ich gerade keine Möglichkeit, das Schema so anzupassen, dass die Daten äquivalent sind und ES-kompatibel.

Zum Beispiel ist das hier kein valides JSON-LD (siehe Playground):

{
  "@context": {
    "@id": "https://w3id.org/kim/lrmi-profile/draft/context.jsonld",
    "@language": "de"
  },
  "name": "Beispielkurs",
  "id": "https://example.org/oer",
  "type": "Course"
}

Die URL des Kontext kann nicht mit @id angegeben werden.

Die einzige Lösung, die ich sehe: Die Default-Sprache in den externen Kontext eintragen und verschiedene Kontexte anbieten (context-de.jsonld, context-en.jsonld etc.)

@fsteeg
Copy link
Contributor

fsteeg commented Oct 16, 2020

Since we don't need to search the content of the @context field, I think we could disable it ("enabled": false) in Elasticsearch, see session_data.arbitrary_object.some_array in https://www.elastic.co/guide/en/elasticsearch/reference/7.10/enabled.html

@acka47
Copy link
Member Author

acka47 commented Oct 16, 2020

Hmm, das wäre eine nette Lösung. Ich bin nicht ganz sicher, ob das überhaupt funktioniert. In https://www.elastic.co/guide/en/elasticsearch/reference/7.10/enabled.html heißt es:

The enabled setting, which can be applied only to the top-level mapping definition and to object fields,

Wir sollten es am besten einfach mal ausprobieren. @dr0i, kannst du den SkoHub-ES-Index entsprechend konfigurieren?

@dr0i dr0i assigned dr0i and unassigned acka47 Oct 26, 2020
@acka47
Copy link
Member Author

acka47 commented Oct 29, 2020

Die Lösung über die ES-Konfiguration funktioniert zum Glück. Dann mach ich das Ticket hier zu.

@acka47 acka47 closed this as completed Oct 29, 2020
@acka47 acka47 added this to AMB Jul 8, 2024
@acka47 acka47 moved this to Done in AMB Jul 8, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
Archived in project
Development

No branches or pull requests

3 participants