mystery-user
mystery-user

Reputation: 115

RDF Schema - how to create instances?

I want to have instances of classes in my RDFS file, but I don't know how to do it.

My class:

<rdfs:Class rdf:ID="Turns">
   <rdfs:range rdf:resource="Literal"/>
</rdfs:Class>

My property:

<rdf:Property rdf:ID="has_Turns">
   <rdfs:domain rdf:resource="#Device"/>
   <rdfs:range rdf:resource="#Turns_Frequency"/>
</rdf:Property>

I want to get an instance of class "Turns" with a "has_Turns" property. I tried something like this:

<Turns_Instance rdf:ID="Turns">…</Turns_Instance>

… but it takes that the main class is "Turns_Instance", the other way round it doesn't work. What's more I don't know where to put the property. All instances should be in RDFS file.

Upvotes: 3

Views: 2440

Answers (1)

scotthenninger
scotthenninger

Reputation: 4001

The instance can be defined within the class definition as:

<ex:Turns rdf:about="http://example.org/ex1#Turns_Instance">
   <ex:hasTurns>
      <ex:Turns_Frequency rdf:about="http://example.org/ex1#Turns_Frequency_Instance"/>
   </ex:hasTurns>
</ex:Turns>

Note also that range definitions belong on property definitions, not class definitions. So the the real bug may be using the RDF/XML text serialization. Any RDF editor should be able to consume and generate Turtle, which is human readable. In that case the class and instance definition look like the following:

@prefix ex: <http://example.org/ex1#> .

ex:Turns
  rdf:type owl:Class .
ex:Turns_Instance
  rdf:type ex:Turns ;
  ex:hasTurns ex:Turns_Frequency_instance .
ex:Device
  rdf:type owl:Class .
ex:Turns_Frequency
  rdf:type owl:Class .
ex:hasTurns
  rdf:type owl:ObjectProperty ;
  rdfs:domain ex:Turns ;
  rdfs:range ex:Turns_Frequency .

In addition to being able to easily "see" the triples, RDF as an object representation become much clearer, which is a huge advantage for understanding how RDF works.

Upvotes: 1

Related Questions