2013-06-18 2 views
2

Я ищу аккуратный способ разбора RDF от freebase RDF API. Я попробовал jquery.rdf.js/jquery.rdf.turtle.js, но, похоже, у него проблемы с точечными обозначениями CURIE. Например, ниже Черепаха я получаю от Freebase о городе "Oslo":Parsing Turtle от Freebase RDF API в Javascript

@prefix key: <http://rdf.freebase.com/key/>. 
@prefix ns: <http://rdf.freebase.com/ns/>. 
@prefix owl: <http://www.w3.org/2002/07/owl#>. 
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>. 
@prefix xsd: <http://www.w3.org/2001/XMLSchema#>. 

ns:m.05l64 
    ns:base.aareas.schema.administrative_area.administrative_area_type ns:m.0hzcklw; 
    ns:base.aareas.schema.administrative_area.administrative_parent ns:m.05b4w; 
    ns:base.biblioness.bibs_location.country ns:m.05b4w; 
    ns:base.biblioness.bibs_loca 

вызывает ошибку:

uncaught exception: Invalid Turtle: Expecting ':', found '.05l64 
    ns:base.a...' 

Есть ли способ заменить . или другую библиотеку или обходной путь?

ответ

5

Я думаю, что ваша основная проблема заключается в том, что Freebase RDF, по-видимому, использует последнюю версию Turtle specification, которая в настоящее время является Рекомендацией кандидата W3C. Эта версия спецификации Turtle позволяет использовать QNames, которые используют в них . (плюс много других ранее нелегальных символов), тогда как более старый и технически неофициальный Turtle specification, который применяют большинство современных инструментов.

В настоящее время спецификация - с января 2013 года, и самая ранняя ссылка я могу найти для более либерального синтаксиса Prefixed Name, который позволяет . в проекте июля 2012 года. И наоборот, инструмент, который вы используете, в последний раз обновлялся в 2009 году в соответствии с его SVN, поэтому неудивительно, что он не поддерживает этот синтаксис.

Я нашел один blog post, который рассказывает о разработке синтаксического анализатора Turtle до последней спецификации в Javascript, который может сделать трюк.

+0

Согласен, спасибо за разъяснение – user2498899

+1

, вы должны проверить библиотеку rdfstore-js (https://github.com/antoniogarrote/rdfstore-js) Антонио Гарроте, которая, вероятно, является самым последним js lib для записи rdf-материала в javascript –