Преобразование или перевод большого файла 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...