2014-01-22 3 views
4

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

Есть ли способ предварительно обработать эти данные, чтобы мне не приходилось исправлять каждую проблему по одному. Мои 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"); 
+1

Существует очень недавний вопрос на answer.semanticweb.com об этом, [Дамп FreeBase RDF соответствует спецификации w3 n-triples?] (Http://answers.semanticweb.com/questions/26084/does- заместитель-Freebase РДФ-свалка-соответствует-к-w3-н-троек-спецификации). Данные находятся в Черепахе, а не в N-Triples. –

ответ

4

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

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

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

2

Примечание: это копия моего ответа из вопроса answers.semanticweb.com, Does the Freebase RDF dump conform to the w3 n-triples spec?. Короткий ответ заключается в том, что данные находятся в сериализации черепахи, а не в N-Triples. Черепаха поддерживает различные аббревиатуры, например, true для "true"^^xsd:boolean.

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

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

Это больше похоже на их данные в нотации 3 (N3) или в формате Turtle, чем N-тройки. На самом деле, this post on the freebase-discuss от Шона Симистеров 29 августа 2013 года говорит (курсив добавлен):

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

later post (31 октября 2013) затрагивает булевы вопросы:

Хм, да, это кажется, что это ошибка. Черепаха поддерживает истинную и ложная, как эквивалентна «истинно» ^^ XSD: Boolean и «ложь» ^^ XSD: логическое значение, но несмотря на то, N-тройка является подмножеством черепахи она не поддерживает упрощенный синтаксис булева ,

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