Почему JSON -LD's @set меняет обработку языка по умолчанию - PullRequest
0 голосов
/ 08 марта 2020

Я работал на процессоре JSON -LD, как определено в JSON -LD api . Я пробирался через W3 C тестовых случаев и запутался в compact-0018. Точный ( ввод , контекст и вывод ) можно найти в W3 C, но я воспроизвел, как мне кажется, ключевые части ниже.

{
    "@context": {
        "term": {"@id": "http://example.com/term"}
        "@language": "de"
    },
    "@id": "http://example.com/id1",
    "http://example.com/term": {
        "@set": [
            { "@value": "v0.1", "@language": "de" },
            { "@value": "v0.2", "@language": "en" },
            "v0.3"
        ]
    }
}

В тесте compact-0018 есть больше полей, но я не верю, что они будут применяться, поскольку они влияют на другие термины. Сокращенный вывод compact-0018:

{
    "@context": {
        "term": {"@id": "http://example.com/term"}
        "@language": "de"
    },
    "@id": "http://example.com/id1",
    "http://example.com/term": ]
        "v0.1",
        { "@value": "v0.2", "@language": "en" },
        { "@value": "v0.3" }
    ]
}

Я не могу понять, почему «v0.1», который начинался как строка с явным языковым тегом «de», сжимается до «v0.1» в то время как «v0.3», который начинается как строка без языкового тега, заканчивается в объекте @value.

Первый шаг сжатия заключается в расширении документа в соответствии с моим алгоритмом расширения (который в настоящее время проходит все тесты, которые не требуют дополнительных параметров), этот документ должен быть расширен до

[
    {
        "@id": "http://example.com/id1",
        "http://example.com/term": [
            { "@value": "v0.1", "@language": "de" },
            { "@value": "v0.2", "@language": "en" },
            { "@value": "v0.3", "@language": "de" }
    }
]

, что предполагает, что «v0.1» и «v0.3» должны обрабатываться одинаково. Хотя всегда была возможность, что мне удалось получить ошибку расширения, которая не обнаруживалась в наборе тестов, более вероятно, что я неверно истолковал компактный алгоритм. Что в алгоритме объясняет, почему эти две строки обрабатываются по-разному в тесте compact-0018?

...