2017-01-17 20 views
0

С учетом графика данных RDF и онтологии OWL, описывающей классы и свойства, используемые в этом графе данных, существует ли алгоритм, инструмент или язык отображения, которые могут сериализовать эти данные в XML-документе, соответствующем целевой XML-схеме?Как сопоставить граф RDF с целевой XML-схемой?

Я думаю о JAXB-подобных аннотациях о классах и свойствах онтологии для управления сериализацией XML.

Как правило, учитывая этот график

@prefix data: <http://exemple.fr/data/> 
@prefix onto: <http://exemple.fr/ontology.owl#> 

data:1 a onto:Work . 
data:1 onto:type "book" . 
data:1 onto:date "2017-01-01"^^xsd:date . 
data:1 onto:has_expression data:2 . 
data:2 a onto:Expression . 
data:2 onto:language "fr" . 

Я хотел бы, чтобы произвести XML, подобный следующему:

<Work URI="http://exemple.fr/data/1" date="2017-01-01"> 
    <type>book</type> 
    <Expression URI="http://exemple.fr/data/2"> 
    <lang>fr</lang> 
    </Expression> 
</Work> 

Обратите внимание, как это отличается от ожидаемого RDF/XML сериализации: пользовательский атрибут содержит URI вместо rdf:about; некоторые свойства сериализуются как атрибуты XML, другие - как элементы XML; onto:has_expression не сериализуется; вместо «language» используется элемент «lang».

Обратите внимание, что я ищу «RDF2XML» mapping и не для преобразования/преобразования XML2RDF или отображения «Object2RDF».

Я ничего не смог найти. Я бы принял ответ «Нет, нет такой вещи», если другие уже искали это напрасно.

+0

Это, вероятно, не относится к теме, так как «Вопросы, предлагающие нам рекомендовать или находить книгу, инструмент, библиотеку программного обеспечения, учебник или другой ресурс вне сайта, не относятся к теме для переполнения стека, поскольку они склонны привлекать упрямые ответы и спам. " Тем не менее, меня тоже будет интересовать ответ. Интересно, может ли проще всего загрузить данные RDF на некоторые объекты уровня домена и использовать для них XML-сериализатор. –

ответ

4

Существует несколько вариантов. Конечно, вы можете просто использовать любой язык программирования, для которого есть парсер RDF и DOM-библиотека, и создавайте свое дерево XML специальным способом.

Но лучший инструмент, который я могу придумать, - это XSPARQL, язык, который расширяет XQuery, чтобы включить SPARQL. С его помощью вы сможете легко запросить RDF и сгенерировать XML. Вы также можете сделать обратное (используйте примитивы XQuery для запроса XML и создания троек). XSPARQL поддерживается и распространяется до недавнего времени, но, похоже, ничего нового не произошло за последние два года, насколько я могу судить.

Другой вариант: SPARQL template. Это, конечно, менее известно, чем XSPARQL и может быть не столь стабильным. Принцип шаблона SPARQL заключается в том, что он запрашивает данные RDF и использует результаты для генерации произвольной символьной строки. Таким образом, вы можете использовать его для преобразования RDF в любой формат, который вам нравится, если формат имеет некоторую регулярность.

Обратите внимание, что я никоим образом не участвую в разработке этих двух технологий. Считайте также, что они в основном работают академическими исследователями, а это значит, что они не являются (пока?) На стадии готовой продукции.

+0

XSPARQL - это, пожалуй, самый полезный существующий инструмент для моего требования, поэтому я с радостью принимаю этот ответ. Большое спасибо. Однако из моих исследований кажется, что в настоящее время отсутствует декларативный подход/инструмент для управления сериализацией XML или JSON графика RDF. Я думаю, что стандартный JAXB-подобный набор аннотаций может быть спроектирован для размещения на классах или свойствах OWL, как правило, «@XmlElement», чтобы указать имя элемента XML, соответствующего свойству; или "@XmlAttribute", чтобы сопоставить свойство с атрибутом XML и т. д. – ThomasFrancart