注意:@base
为使用<...>
的相对IRI提供前缀。因此,在下面的示例中,<Entity>
扩展为<http://my-url.com/ontologies/0.1/entity#Entity>
。
您从何处得到这个想法?不是这种情况。 @base
没有在<
和>
之间加任何前缀。 @base
定义了可解决相对IRI的基本IRI。解决相对IRI比连接两个字符串要复杂得多。
首先,必须从其尾随#
和任何片段标识符中剥离基本IRI。因此,如果您写:
@base <http://my-url.com/ontologies/0.1/entity#> .
<> a owl:Ontology .
您的意思是:
<http://my-url.com/ontologies/0.1/entity> a owl:Ontology .
您必须显式添加一个#
才能将其放入IRI:
@base <http://my-url.com/ontologies/0.1/entity#> .
<#> a owl:Ontology .
表示:
<http://my-url.com/ontologies/0.1/entity#> a owl:Ontology .
如果要添加非空的片段标识符,则还需要#
:
@base <http://my-url.com/ontologies/0.1/entity#> .
<#Entity> a owl:Ontology .
表示:
<http://my-url.com/ontologies/0.1/entity#Entity> a owl:Ontology .
第二,如果您在<
和>
之间使用非空字符串,并且它不是片段标识符,那么IRI是通过除去基数的局部部分来构造的,这就是IRI路径的最后/
之后出现的内容。例如,
@base <http://my-url.com/ontologies/0.1/entity#> .
<Entity> a owl:Ontology .
表示:
<http://my-url.com/ontologies/0.1/Entity> a owl:Ontology .
另一个例子:
@base <http://my-url.com/something/?uri=http://example.com/anything> .
<Entity> a owl:Ontology .
表示:
<http://my-url.com/something/Entity> a owl:Ontology .
正确地说,这不是您问题的直接答案,但足以让您做出正确的决定。
,
感谢the answer by Antonine Zimmermann,
我想出了这个解决方案:
--user
这样,我可以同时使用@base <http://my-url.com/ontologies/0.1/entity> .
@prefix ent: <#> .
@prefix owl: <http://www.w3.org/2002/07/owl#> .
<>
a owl:Ontology .
ent:MyClass
a owl:Class .
和命名前缀@base
,而不必重复基本的IRI。
我选择使用空前缀命名,因为它使代码更易于移植
并使用ent:
(可能还有其他工具)创建更好的输出。
本文链接:https://www.f2er.com/3167430.html