Преобразование или перевод большого файла RDF/XML в формат JSON-LD - КАК?
Мне нужно преобразовать этот 40MB файл RDF/XML в формат JSON-LD, и я нашел этот веб-инструмент, который не работает вообще. Когда вы вставляете 40 МБ текста, он вылетает, и когда вы указываете ему URL-адрес файла, он говорит, что услуга недоступна.
Теоретически Jena API, или, возможно, Sesame должен быть в состоянии сделать это, но мне не хватает начальной точки и знаний об этих системах. Может ли кто-нибудь дать мне маршрут, пример или ссылку на полезную документацию для перевода большого RDF/XML в JSON-LD?
(Я был бы доволен Java, С# или рабочим решением, где мне не нужно слишком много знаний о программировании на другом языке/фреймворке).
Ответы
Ответ 1
Я сделал это с помощью этого инструмента: http://rdf-translator.appspot.com/
К сожалению, размеры загрузки/загрузки были слишком большими, поэтому я получил код здесь и запустил его в локальном Google App Engine из здесь на порт 8999. Затем я отправился в каталог с файлом owl 'ds.owl' и использовал следующую команду, чтобы получить его в ds.json файл:
curl --data-urlencode [email protected]_514en.owl http://localhost:8999/convert/detect/json-ld/content > ds.json
Это было единственное, что сработало, и я попробовал его с 4 более крупными онтологическими файлами.
Ответ 2
Вы можете просто использовать RDFLib для чтения в RDF в формате RDF/XML и сериализовать его обратно в JSON-LD с помощью json-ld serializer
graph.parse(my_url, format='application/rdf+xml')
graph.serialize(my_url, format='application/json-ld')
Ответ 3
Я не знаю, что Jena API поддерживает JSON-LD, но поддерживает RDF/JSON, прямое кодирование тройки RDF, Вы можете использовать Jena API, но более удобный способ сделать это с помощью Jena использует инструмент командной строки Jena rdfcat
. Меню справки, созданное с помощью опции --help
, немного устарело, но выглядит следующим образом:
$ rdfcat --help
Usage: java jena.rdfcat (option|input)*
Concatenates the contents of zero or more input RDF documents.
Options: -out N3 | N-TRIPLE | RDF/XML | RDF/XML-ABBREV
-n expect subsequent inputs in N3 syntax
-x expect subsequent inputs in RDF/XML syntax
-t expect subsequent inputs in N-TRIPLE syntax
-[no]include include rdfs:seeAlso and owl:imports
input can be filename, URL, or - for stdin
Recognised aliases for -n are: -n3 -ttl or -N3
Recognised aliases for -x are: -xml -rdf or -rdfxml
Recognised aliases for -t are: -ntriple
Output format aliases: x, xml or rdf for RDF/XML, n, n3 or ttl for N3, t or ntriple for N-TRIPLE
See the Javadoc for jena.rdfcat for additional details.
Что бы вы хотели знать, кроме того, что вы можете передать выходной формат RDF/JSON
. Например, используя известную онтологию пиццы, мы получаем:
$ rdfcat -out RDF/JSON ../sparql-pizza2/pizza.owl | head -25
{
"_:-b8ef06:140ee02a0b1:-7ff7" : {
"http://www.w3.org/1999/02/22-rdf-syntax-ns#rest" : [ {
"type" : "uri" ,
"value" : "http://www.w3.org/1999/02/22-rdf-syntax-ns#nil"
}
] ,
"http://www.w3.org/1999/02/22-rdf-syntax-ns#first" : [ {
"type" : "uri" ,
"value" : "http://www.co-ode.org/ontologies/pizza/pizza.owl#TomatoTopping"
}
]
}
,
"http://www.co-ode.org/ontologies/pizza/pizza.owl#Food" : {
"http://www.w3.org/2000/01/rdf-schema#subClassOf" : [ {
"type" : "uri" ,
"value" : "http://www.co-ode.org/ontologies/pizza/pizza.owl#DomainConcept"
}
] ,
"http://www.w3.org/1999/02/22-rdf-syntax-ns#type" : [ {
"type" : "uri" ,
"value" : "http://www.w3.org/2002/07/owl#Class"
}
]
...and so on...