RDFS: как создать подкласс класса FOAF

Можно ли создать подкласс для класса, найденного в FOAF ( http://xmlns.com/foaf/spec/)? Я пробовал что-то вроде приведенного ниже кода, но я не уверен, является ли это правильным способом сделать это или нет.

<rdfs:Class rdf:ID="user"> 
    <rdfs:subClassOf rdf:resource="http://xmlns.com/foaf/0.1/#Agent" />
    <rdfs:comment> 
        The class of users, subclass of foaf:Agent.
    </rdfs:comment>  
</rdfs:Class>

1 ответ

Решение

Ваш фрагмент, хотя и не полный документ RDF, является правильным способом сделать yourdoc#user подкласс http://xmlns.com/foaf/0.1/#Agent, Однако этот последний класс не является классом агента FOAF. Класс агента FOAF определяется по URI http://xmlns.com/foaf/0.1/Agent (без #). Возможно, было бы полезно взглянуть на фактическую онтологию FOAF, потому что вы можете увидеть, как она определяет подклассы агента. Например, он объявил foaf: Организация с

<rdfs:Class rdf:about="http://xmlns.com/foaf/0.1/Organization" rdfs:label="Organization" rdfs:comment="An organization." vs:term_status="stable">
  <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
  <rdfs:subClassOf rdf:resource="http://xmlns.com/foaf/0.1/Agent"/>
  <rdfs:isDefinedBy rdf:resource="http://xmlns.com/foaf/0.1/"/>
  <owl:disjointWith rdf:resource="http://xmlns.com/foaf/0.1/Person"/>
  <owl:disjointWith rdf:resource="http://xmlns.com/foaf/0.1/Document"/>
</rdfs:Class>

Если вы пишете это вручную, гораздо проще работать в сериализации Turtle или N3, где это будет:

foaf:Organization  a      rdfs:Class , owl:Class ;
        rdfs:comment      "An organization." ;
        rdfs:isDefinedBy  foaf: ;
        rdfs:label        "Organization" ;
        rdfs:subClassOf   foaf:Agent ;
        owl:disjointWith  foaf:Person , foaf:Document ;
        vs:term_status    "stable" .
Другие вопросы по тегам