Как использовать интеграцию GraphDB-MongoDB? - PullRequest
0 голосов
/ 05 апреля 2019

Я хотел бы запросить экземпляр MonboDB через интерфейс запросов GraphDB SPARQL.

В настоящее время я использую бесплатный экземпляр GraphDB 8.9 и MongoDB 4.0.8 без пароля на портах по умолчанию и на одном хосте (ни один из портов не открыт для внешних пользователей). Я следовал инструкциям на http://graphdb.ontotext.com/documentation/free/integrating-graphdb-with-mongodb.html.

Это запрос из документации:

PREFIX cwork: <http://www.bbc.co.uk/ontologies/creativework/>
PREFIX inst: <http://www.ontotext.com/connectors/mongodb/instance#>
PREFIX : <http://www.ontotext.com/connectors/mongodb#>

SELECT ?creativeWork ?modified WHERE {
        ?search a inst:spb1000 ;
                :find '{"@graph.cwork:audience.@id" : "cwork:NationalAudience"}' ;
                :entity ?entity .
        GRAPH inst:spb1000 {
                ?creativeWork cwork:dateModified ?modified .
        }
}

Создание индекса, по-видимому, прошло успешно:

[INFO ] 2019-04-05 14:01:53,036 [repositories/playground-default | c.o.g.s.StatementsController] POST SPARQL update request to repository
[INFO ] 2019-04-05 14:01:53,044 [repositories/playground-default | c.o.p.mongodb] Creating a new service in MongoDB: spb1000
[INFO ] 2019-04-05 14:01:53,045 [repositories/playground-default | c.o.p.mongodb] Setting connectionString for MongoDB service spb1000
[INFO ] 2019-04-05 14:01:53,045 [repositories/playground-default | c.o.p.mongodb] Setting database for MongoDB service spb1000
[INFO ] 2019-04-05 14:01:53,045 [repositories/playground-default | c.o.p.mongodb] Setting collection for MongoDB service spb1000

Но тогда пример запроса из документации не сработал. GraphDB выводит 0 результатов, и на консоли отображаются следующие сообщения:

[INFO ] 2019-04-05 14:02:13,158 [repositories/playground-default | c.o.f.s.RepositoryController] POST query -563697573
[ERROR] 2019-04-05 14:02:13,160 [repositories/playground-default | c.o.p.mongodb] iter not created yet
[ERROR] 2019-04-05 14:02:13,160 [repositories/playground-default | c.o.p.mongodb] iter not created yet
[ERROR] 2019-04-05 14:02:13,161 [repositories/playground-default | c.o.t.q.OwlimEvaluationStrategyImpl] Couldn't convert the query to our optimized model. Using sesame's query model
java.lang.NullPointerException: null
[...]

Я должен получить более 10 результатов, но в настоящее время я ничего не получаю. Похоже, что GraphDB не может сгенерировать запрос MongoDB. Поскольку я использовал / скопировал запрос SPARQL из документации, это должно быть возможно.

Ответы [ 2 ]

1 голос
/ 18 апреля 2019
Because mongodb plugin doesn't present in 8.6 version of GraphDB when you upgrade to 8.9 version on start PluginManager detects that latter isn't in fingerprint and disables it to protect cluster integrity. First you should enable it using the following Sparql query:
"insert data { [] <http://www.ontotext.`com`/owlim/system#startplugin> "mongodb" }", 

afterwards you should create plugin into upgraded repository using query that is in the documentation or:

"PREFIX : <http://www.ontotext.com/connectors/mongodb#>
PREFIX inst: <http://www.ontotext.com/connectors/mongodb/instance#>
INSERT DATA {
    inst:spb1000 :service "mongodb://localhost:27017" ;
        :database "ldbc" ;
        :collection "creativeWorks" .
}"

you shouldn't delete the database or collection in MongoDB. 
0 голосов
/ 15 апреля 2019

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

...