Это файл RDF / XML. Синтаксический анализатор RDF / XML может анализировать файл в граф RDF, а затем запрос SPARQL может использоваться для извлечения необходимой информации. Простой запрос SPARQL будет:
SELECT * { <urn:mozilla:install-manifest> ?property ?value }
Но это возвращает больше свойств, чем указано в вопросе; результаты могут быть ограничены так:
PREFIX em: <http://www.mozilla.org/2004/em-rdf#>
SELECT * {
VALUES (?property) { (em:id) (em:name) (em:version) (em:description) (em:homepageURL) }
<urn:mozilla:install-manifest> ?property ?value
}
Мы можем сохранить этот запрос в файле query.sparql
для дальнейшего использования.
С Apache Jena
RDF / XML и SPARQL являются стандартами W3C с рядом реализаций. Я склонен использовать Apache Jena , основанную на Java инфраструктуру RDF, которая поставляется с sparql
инструментом командной строки. С помощью простого запроса его можно назвать так:
sparql --data install.rdf "SELECT * { <urn:mozilla:install-manifest> ?property ?value }"
Поддерживается несколько форматов вывода (см. sparql --help
); TSV (с разделением табуляцией) является хорошим выбором для дальнейшей обработки. С сохраненным ранее файлом запроса его можно вызвать так:
sparql --data install.rdf --query query.sparql --results TSV --quiet
Выход:
?property ?value
<http://www.mozilla.org/2004/em-rdf#id> "uBlock0@raymondhill.net"
<http://www.mozilla.org/2004/em-rdf#name> "uBlock Origin"
<http://www.mozilla.org/2004/em-rdf#version> "1.16.4.10"
<http://www.mozilla.org/2004/em-rdf#description> "Finally, an efficient blocker. Easy on CPU and memory."
<http://www.mozilla.org/2004/em-rdf#homepageURL> "https://github.com/gorhill/uBlock"
С Раскал
Другой вариант - Rasqal , часть Redland RDF Libraries . Rasqal не требует JVM для запуска и может быть установлен через обычные менеджеры пакетов, но по сравнению с Jena он немного глючит. Он поставляется с инструментом командной строки под названием roqet
:
roqet -D install.rdf -r tsv query.sparql
Вывод такой же, как для sparql
выше.