我想构建一个 rdf 知识图,但我仍然不确定在我的 URI 中使用哪种模式。我是否还应该区分路径中的类、实例和属性,例如这样:
http://www.example.org/knowledge-graph/classes/<...>
http://www.example.org/knowledge-graph/properties/<...>
http://www.example.org/knowledge-graph/instances/<...>
或者我应该像这样定义同一 URI 后面的所有元素吗?
http://www.example.org/knowledge-graph#<...>
如果我使用第一个变体,那么我的 SPARQL 查询需要多个前缀,而使用第二个变体,我可以使用相同的前缀来处理知识图中的所有元素。
ChatGPT 建议了这两种选择,但我在互联网上没有找到太多关于这里最佳实践的信息。
如果您有任何帮助或进一步的链接,我将不胜感激。
一个常见的约定是为您自己的本体使用单独的命名空间(甚至可能在不同的主机名下)。这是一个很好的实践,因为至少在原则上,您的本体也可以在其他知识图中使用。
例如:
https://ontologies.example.org/<ontology-name>/<term-name>
https://<ontology-name>.example.org/<term-name>
正如您所提到的,在 IRI 中使用术语“类”或“属性”会使本体的使用变得复杂,因为每个本体需要两个前缀。如果您的类名称以大写字母开头,并且您的属性名称以小写字母开头(这是另一个常见约定),也不需要避免名称冲突。
例如:
https://ontologies.example.org/myont/SomeClass
https://ontologies.example.org/myont/somePropery
对于您自己的数据实例,您将拥有一个单独的命名空间,例如:
https://kg.example.org/<instance-slug>
https://example.org/kg/<instance-slug>