Проблема синтаксического анализа Jena для дампа свободной базы RDF (январь 2014 г.)

Я пытаюсь проанализировать файл дампа freebase freebase-rdf-2014-01-12-00-00.gz (25 ГБ) с помощью Jena. Было много проблем, о которых сообщила Йена относительно плохих данных. Пример - 150.0 недопустимо, значения true и false недействительны. Эти проблемы я решил, добавив двойные кавычки вокруг десятичной дроби и true/false в файле дампа. Однако проблемы по-прежнему reported by Jena.(current - org.apache.jena.riot.RiotException: [line: 161083, col: 110] Illegal object: [MINUS])

Есть ли способ предварительно обработать эти данные, чтобы мне не приходилось исправлять каждую проблему по очереди. Мой код Java:

    // Open TDB dataset
    String directory = "D:/test_dump";
    Dataset dataset = TDBFactory.createDataset(directory);

    // Assume we want the default model, or we could get a named model here
    Model tdb = dataset.getDefaultModel();

    // Read the input file - only needs to be done once
    String source = "D:/test_dump/fixed-freebase-second-rdf.gz";
    FileManager.get().readModel( tdb, source, "N-TRIPLES" ); 

2 ответа

Данные в формате Turtle, а не N-Triples. Они используют различные аббревиатуры черепахи (например, true за "true"^^xsd:boolean или номер -27 за "-27"^^xsd:integer).

Могут все еще быть ошибки, поскольку их дампы также содержали недопустимый синтаксис, например, использование $ в именах префиксов без необходимости \

Добавление кавычек вокруг вещей меняет RDF.

Примечание: это копия моего ответа из вопроса http://answers.semanticweb.com/, соответствует ли дамп Freebase RDF спецификации w3 n-triples? Короткий ответ: данные находятся в сериализации Turtle, а не в N-Triples. Черепаха поддерживает различные сокращения, например, true за "true"^^xsd:boolean ,

Даже в данных примера дампов данных есть неправильные N-тройки:

<http://rdf.freebase.com/ns/g.11vjz1ynm>  <http://rdf.freebase.com/ns/measurement_unit.dated_percentage.rate> 4.5 .

Похоже, что их данные в формате нотации 3 (N3) или Turtle, чем N-Triples. Фактически, этот пост на бесплатном обсуждении от Шона Симистера от 29 августа 2013 года говорит (выделение добавлено):

Я работал над новой версией дампов Freebase RDF, в которой будут рассмотрены многие проблемы, обнаруженные с тех пор, как мы впервые начали публиковать данные как RDF.... Самое большое изменение в этих дампах - это то, что формат перешел на N-Triples от Turtle. На практике это очень минимальное изменение, так как N-Triples - это подмножество Turtle, которое следует тому же формату "одна тройка на строку", что и сейчас.

Более поздний пост (31 октября 2013 г.) затрагивает логические проблемы:

Хм, да, похоже, что это ошибка. Turtle поддерживает true и false как эквивалент "true"^^xsd:boolean и "false"^^xsd:boolean, но хотя N-Triples является подмножеством Turtle, он не поддерживает упрощенный логический синтаксис.

Стоит прочитать больше этой ветки. Хотя это немного расстраивает, потому что когда люди пишут что-то вроде "вы можете просто использовать" true "", не ясно, имеют ли они в виду true, или же "true", Похоже, что некоторым людям на самом деле не так важен действительный RDF или разница между нетипизированным простым литералом "true" и логический тип литерала "true"^^xsd:boolean это может быть сокращено как true, В любом случае, короткий ответ выглядит так: "Используйте Turtle или N3-парсер".

Другие вопросы по тегам