Запросы больших наборов данных RDF из памяти

Я хочу загрузить два или более набора данных на свой компьютер и иметь возможность запустить конечную точку SPARQL для каждого. Я попробовал Fuseki, который является частью проекта Jena. Тем не менее, он загружает весь набор данных в память, что не очень желательно, если яЯ собираюсь запросить большие наборы данных, такие как DBpedia, учитывая, что я собираюсь заняться другими делами (запуск нескольких конечных точек SPARQL и использование над ними системы федеративных запросов).

Просто чтобы дать вам понять, я намерен связать несколько наборов данных, используяSILK, запрашивая их с помощьюFEDX федеративная система запросов. Если вы порекомендуете любое изменение систем, яЯ использую, или можете дать мне совет, это было бы здорово. Также будет полезно, если вы предложите набор данных, который может вписаться в этот проект.

Ответы на вопрос(2)

Решение Вопроса

Fuseki может использовать TDB в качестве механизма хранения, а TDB сохраняет данные на диске. Документация TDB окэширование в 32 и 64-битных системах Java обсуждается способ отображения содержимого файла в память. Я не верю, что TDB / Fuseki загружает весь набор данных в память; это просто невозможно для больших наборов данных, но TDB может обрабатывать довольно большие наборы данных. Я думаю, что вы должны рассмотреть возможность использованияtdbloader создать магазин TDB; тогда вы можете указать Фусеки на это.

Там'Пример установки хранилища TDB вэтот ответ, Там, запрос выполняется сtdbquery, но в соответствии сЗапуск сервера Fuseki раздел документации, все, что вам нужно сделать, чтобы запустить Fuseki с тем же магазином TDB, это использовать--loc=DIR опция:

--loc=DIR

Использовать существующую базу данных TDB. Создайте пустой, если он не существует.

Как сказал ДжошуаЙенаs Fuseki использует TDB, поэтому он может хранить очень большие онтологии, не используя много ресурсов. Например, вы можете загрузитьЯго2 таксономия в него и использовать только около 600 МБ оперативной памяти. Вам не нужно загружать Fuseki в ваш проект Java, вы можете просто запустить его из командной строки и запросить его внутри вашего проекта.

Загрузите его в командной строке Windows следующим образом:

java -jar c:\your_ontology_directory\fuseki-server.jar \
  --file=your_ontology.rdf /your_namespace

Затем вы можете выполнить SPARQL-запрос к нему с помощью любого приложения GET / POST (даже в вашем браузере):

http://localhost:3030/your_namespace/sparql?query=SELECT * { ?s ?p ?o }

Результаты по умолчанию возвращаются в формате XML.

<!--?xml version="1.0"?-->
<sparql xmlns="http://www.w3.org/2005/sparql-results#">
  
    <variable name="s">
    <variable name="p">
    <variable name="o">
  
  <results>
    <result>
      <binding name="s">
        <uri>http://yago-knowledge/resource/wordnet_gulag_103467887</uri>
      </binding>
      <binding name="p">
        <uri>http://www.w3.org/2000/01/rdf-schema#subClassOf</uri>
      </binding>
      <binding name="o">
        <uri>http://yago-knowledge/resource/wordnet_prison_camp_104005912</uri>
      </binding>
    </result>
    …
</results></variable></variable></variable></sparql>

Ваш ответ на вопрос