получить список онтологий в Virtuoso с их свойствами и классами

Есть ли место (например, такой объект, как VDS.RDF.Ontology), в котором хранится список онтологий (с их свойствами и классами), интегрированных в экземпляр OpenLink Virtuoso?

Я программирую на C# (использую dotNetRDF) и не решаюсь использовать запрос для получения этой информации.

Какие-либо предложения?


person ali    schedule 02.05.2016    source источник


Ответы (1)


Во вселенной RDF онтология — это просто еще один граф; каждый график должен быть самоописывающим; поэтому каждый граф онтологий должен включать в себя утверждение, которое, по сути, говорит: «Я — онтология».

Предполагая, что такие рекомендации были соблюдены, вы можете использовать список онтологических именованных графов, описанных за данной конечной точкой --

PREFIX  owl:  <http://www.w3.org/2002/07/owl#> 
PREFIX  rdf:  <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 

SELECT DISTINCT ?ontology
WHERE { ?ontology  rdf:type  owl:Ontology }
ORDER BY ?ontology

Обратите внимание, однако, что нет необходимости загружать граф онтологии в Virtuoso (или другое хранилище quad/triple/RDF), чтобы термины этой онтологии могли использоваться в других графах, загруженных в это хранилище, поэтому я задаюсь вопросом о цели ваш вопрос...

ETA: Учитывая, что у вас есть список именованных графов для онтологий в данном экземпляре, вы можете получить их содержимое с помощью таких запросов:

SELECT * 
FROM <http://purl.org/vocab/relationship/>
WHERE { ?s ?p ?o }

-- который вы можете выполнить через соединение ADO.NET из C#, через Virtuoso ADO.NET Provider, превратив его в SPARQL-in-SQL a/k/a SPASQL с простым добавлением ключевого слова SPARQL в начало и добавлением точка с запятой --

SPARQL
SELECT * 
FROM <http://purl.org/vocab/relationship/>
WHERE { ?s ?p ?o } ;

Теперь это может быть само собой разумеющимся, но для ясности - вы также можете выполнить первоначально описанный запрос как SPASQL через ADO.NET -

SPARQL
PREFIX  owl:  <http://www.w3.org/2002/07/owl#> 
PREFIX  rdf:  <http://www.w3.org/1999/02/22-rdf-syntax-ns#> 

SELECT DISTINCT ?ontology
WHERE { ?ontology  rdf:type  owl:Ontology }
ORDER BY ?ontology ;

(Отказ от ответственности: я работаю на OpenLink Software, производителя Виртуоз.)

person TallTed    schedule 03.05.2016
comment
Во-первых, спасибо за повтор. Но я знал запросы, которые получают эту информацию. Мне нужно что-то еще вроде этого: github.com/dotnetrdf/dotnetrdf/wiki/Ontology -API Но вместо чтения и сохранения Graph по файлу я хотел бы инициализировать его Virtuoso. - person ali; 04.05.2016
comment
Поскольку я программирую на объектно-ориентированных языках, я предпочитаю использовать объекты (например, объекты в dotNetRDF, особенно OntologyGraph) для выполнения запросов. Это моя мотивация задать этот вопрос здесь. - person ali; 04.05.2016
comment
Я немного добавил к своему ответу, который может дать то, что вы ищете. - person TallTed; 04.05.2016