【问题标题】:get list of ontologies in Virtuoso with their properties and classes获取 Virtuoso 中的本体列表及其属性和类
【发布时间】:2023-04-08 16:12:02
【问题描述】:

是否有任何地方(例如 VDS.RDF.Ontology 之类的对象)保存集成在 OpenLink Virtuoso 实例中的本体列表(及其属性和类)?

我在C# 中编程(我使用dotNetRDF)并且我犹豫是否要使用查询来获取此信息。

有什么建议吗?

【问题讨论】:

    标签: c# ontology virtuoso dotnetrdf


    【解决方案1】:

    在 RDF 世界中,本体只是另一个图;每个图表都应该是自描述的;因此,每个本体图都应该包含一个基本上说“我是一个本体”的声明。

    假设已遵循此类最佳实践,您可以使用 query like this 来获取在给定端点后面描述的 list of ontology named graphs --

    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(或其他四/三/RDF 存储)中,以便将该本体的术语用于加载到该存储中的其他图,所以我想知道你的问题的目的......

    ETA:假设您有一个给定实例中本体的命名图列表,您可以通过这样的查询获取它们的内容 --

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

    --您可以通过来自 C# 的 ADO.NET 连接,通过 Virtuoso ADO.NET 提供程序,通过简单地添加 SPARQL 关键字将其转换为 SPARQL-in-SQL a/k/a SPASQL 和附加分号 --

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

    现在可能不言而喻,但要明确一点——您也可以通过 ADO.NET 将最初描述的查询作为 SPASQL 发出——

    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 ;
    

    (ObDisclaimer:我为 OpenLink Software 工作,Virtuoso 的制作人。)

    【讨论】:

    • 首先,感谢您的重播。但我知道获取这些信息的查询。我需要的是其他类似的东西:github.com/dotnetrdf/dotnetrdf/wiki/Ontology-API 但是,我想通过 Virtuoso 来初始化它,而不是按文件读取和保存 Graph。
    • 由于我是面向对象语言的程序员,我更喜欢使用对象(例如 dotNetRDF 中的对象,特别是 OntologyGraph 中的对象)来进行查询。这就是我在这里提出这个问题的动机。
    • 我在我的答案中添加了一些内容,这可能会提供您正在寻找的内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-26
    • 2013-11-06
    • 2017-01-12
    • 2020-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多