Как назначить подкласс для форума SIOC в RDF?
Я использую rdflib
хранить новый SIOC: Форум на ТВЕРДОЙ ПОД. https://www.w3.org/Submission/sioc-spec/ утверждает, что SIOC:Forum может иметь подтип / подкласс ChatChannel. Как мне смоделировать мой запрос черепахи (.ttl) для хранения этого подкласса?
@prefix sioc: <http://rdfs.org/sioc/ns#> .
@prefix rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#> .
@prefix types: <http://rdfs.org/sioc/types> .
@base <${uri}> .
:forum
a sioc:Forum ;
sioc:has_host <https://banyan.msg> ;
sioc:has_owner <${owner}> ;
rdf:type types:ChatChannel ; # <- is this correct?
sioc:has_subscriber [
a sioc:User ;
sioc:account_of <${partner}>
] .
1 ответ
Резюме
Мое первое предположение, что вы упускаете #
в конце types
объявление префикса. Должно быть @prefix types: <http://rdfs.org/sioc/types#> .
Еще одно замечание, благодаря @timbl, заключается в том, что вы можете упростить это, просто перечислив несколько типов на одном a
линия и удаление rdf
префикс и использование в целом:
a sioc:Forum, types:ChatChannel ;
подробности
С использованием #
Префиксы меняются местами непосредственно для их соответствующих prefix:
использования в остальной части документа черепахи. Это означает, что ваша ссылка на types:ChatChannel
будет переведен на http://rdfs.org/sioc/typesChatChannel
, что явно не то, что вы хотите.
Обратите внимание, что вам не всегда нужно #
, Это зависит от пространства имен. В этом случае вы пытаетесь сослаться на конкретную вещь, встроенную в более крупный документ, поэтому для этого вы используете сегмент URL. Некоторые пространства имен, такие как schema.org, назначают разные пути URL для каждой вещи. В этом случае префикс должен заканчиваться на /
,
С использованием a
Это совсем не очевидно, если вы еще не знаете, но a
Ключевое слово в черепахе является псевдонимом для того же rdf:type
сказуемое. Смотрите это одно предложение в документах на черепаху w3. И, учитывая, что это черепаха, вы всегда можете передать список объектов после предиката, используя запятую.