You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
activity-pub-poc/doc/Translate_ttl_to_spec.md

2.9 KiB

receipts to transform ttl to spec

a

it is a something

Example:

as:id a owl:DatatypeProperty ,
        owl:FunctionalProperty,

Maps to

(s/def ::id 
    (s/and 
        ::owl/DeprecatedProperty 
        ::owl/FunctionalProperty))

Der token a in einer ttl Definition entspricht dem RDF-Prädikat rdf:type. Siehe:

Das bedeutet für das Tripel: (R, rdf:type, C) => C instanceof rdfs:Class & R instanceof C

rdfs:range

its value is defined in a rdfs:range the range

If range links to an other definition we map range same as a.

Example:

as:id rdfs:range xsd:anyURI ;

Maps to

(s/def ::id 
    (s/and 
        ...
        (sh/seq-spec ::xsd/anyURI)))

rdfs:domain

it belong to a rdfs:domain owner

owner is a type

We ignore this.

Example in namespace activitypub2

as:id rdfs:domain [a owl:Class;]

Maps to

owner is a owl:unionOf types

It is added to the owner. That's the way to model properties. If the owner is membe of an other namespace, we create a subclass with same name in the namespce in scope and enhance the subclass.

Example in namespace activitypub2

as:id rdfs:domain [owl:unionOf (as:Link as:Object)]

Maps to

(s/def ::Object (sh/map-spec (s/keys :opt [::id ...])))


(s/def ::Link (sh/map-spec (s/keys :opt [::id])))

rdfs:subClassOf

its value a rdfs:subClassOf the class

If subClassOf links to an other definition we map range same as a.

Example:

as:Activity rdfs:subClassOf as:Object ;

Maps to

(s/def ::Object ...)

(s/def ::Activity
    (s/and 
        ...
        ::Object
        ...))

Further infos

RDF/S

range (https://www.w3.org/TR/rdf12-schema/#ch_range)

"P rdfs:range C" indicates that:

  1. P is an instance of the class rdf:Property
  2. C is an instance of the class rdfs:Class
  3. all the resources denoted by the objects of triples whose predicate is P are instances of the class C. =>Bedeutet(?): Es gilt: Tupel = (Subjekt, Prädikat, Objekt): => Wenn (P, rdfs:range, C) & (S, P, C2) => C2 is instance of C

type (https://www.w3.org/TR/rdf12-schema/#ch_type)