Before manually adapting to AS

This commit is contained in:
sneakers-the-rat 2024-01-12 23:27:16 -08:00
parent 265dc9333e
commit df6c5cfd82
Signed by untrusted user who does not match committer: jonny
GPG key ID: 6DCB96EF1E4D232D
15 changed files with 4537 additions and 35 deletions

41
.gitignore vendored
View file

@ -1,3 +1,7 @@
/docs/
/generated/docs/
/tmp/
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
@ -20,6 +24,7 @@ parts/
sdist/
var/
wheels/
pip-wheel-metadata/
share/python-wheels/
*.egg-info/
.installed.cfg
@ -49,7 +54,6 @@ coverage.xml
*.py,cover
.hypothesis/
.pytest_cache/
cover/
# Translations
*.mo
@ -72,7 +76,6 @@ instance/
docs/_build/
# PyBuilder
.pybuilder/
target/
# Jupyter Notebook
@ -83,9 +86,7 @@ profile_default/
ipython_config.py
# pyenv
# For a library or package, you might want to ignore these files since the code is
# intended to run in multiple environments; otherwise, check them in:
# .python-version
.python-version
# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
@ -94,22 +95,7 @@ ipython_config.py
# install all needed dependencies.
#Pipfile.lock
# poetry
# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.
# This is especially recommended for binary packages to ensure reproducibility, and is more
# commonly ignored for libraries.
# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control
#poetry.lock
# pdm
# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.
#pdm.lock
# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it
# in version control.
# https://pdm.fming.dev/#use-with-ide
.pdm.toml
# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm
# PEP 582; used by e.g. github.com/David-OConnor/pyflow
__pypackages__/
# Celery stuff
@ -145,16 +131,3 @@ dmypy.json
# Pyre type checker
.pyre/
# pytype static type analyzer
.pytype/
# Cython debug symbols
cython_debug/
# PyCharm
# JetBrains specific template is maintained in a separate JetBrains.gitignore that can
# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore
# and can be added to the global gitignore or merged into this file. For a more nuclear
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/

188
Makefile Normal file
View file

@ -0,0 +1,188 @@
MAKEFLAGS += --warn-undefined-variables
SHELL := bash
.SHELLFLAGS := -eu -o pipefail -c
.DEFAULT_GOAL := help
.DELETE_ON_ERROR:
.SUFFIXES:
.SECONDARY:
RUN = poetry run
# get values from about.yaml file
SCHEMA_NAME = $(shell ${SHELL} ./utils/get-value.sh name)
SOURCE_SCHEMA_PATH = $(shell ${SHELL} ./utils/get-value.sh source_schema_path)
SOURCE_SCHEMA_DIR = $(dir $(SOURCE_SCHEMA_PATH))
SRC = src
DEST = project
PYMODEL = $(SRC)/$(SCHEMA_NAME)/datamodel
DOCDIR = docs
EXAMPLEDIR = examples
SHEET_MODULE = personinfo_enums
SHEET_ID = $(shell ${SHELL} ./utils/get-value.sh google_sheet_id)
SHEET_TABS = $(shell ${SHELL} ./utils/get-value.sh google_sheet_tabs)
SHEET_MODULE_PATH = $(SOURCE_SCHEMA_DIR)/$(SHEET_MODULE).yaml
# environment variables
include config.env
GEN_PARGS =
ifdef LINKML_GENERATORS_PROJECT_ARGS
GEN_PARGS = ${LINKML_GENERATORS_PROJECT_ARGS}
endif
GEN_DARGS =
ifdef LINKML_GENERATORS_MARKDOWN_ARGS
GEN_DARGS = ${LINKML_GENERATORS_MARKDOWN_ARGS}
endif
# basename of a YAML file in model/
.PHONY: all clean setup gen-project gen-examples gendoc git-init-add git-init git-add git-commit git-status
# note: "help" MUST be the first target in the file,
# when the user types "make" they should get help info
help: status
@echo ""
@echo "make setup -- initial setup (run this first)"
@echo "make site -- makes site locally"
@echo "make install -- install dependencies"
@echo "make test -- runs tests"
@echo "make lint -- perform linting"
@echo "make testdoc -- builds docs and runs local test server"
@echo "make deploy -- deploys site"
@echo "make update -- updates linkml version"
@echo "make help -- show this help"
@echo ""
status: check-config
@echo "Project: $(SCHEMA_NAME)"
@echo "Source: $(SOURCE_SCHEMA_PATH)"
# generate products and add everything to github
setup: git-init install gen-project gen-examples gendoc git-add git-commit
# install any dependencies required for building
install:
poetry install
.PHONY: install
# ---
# Project Synchronization
# ---
#
# check we are up to date
check: cruft-check
cruft-check:
cruft check
cruft-diff:
cruft diff
update: update-template update-linkml
update-template:
cruft update
# todo: consider pinning to template
update-linkml:
poetry add -D linkml@latest
# EXPERIMENTAL
create-data-harmonizer:
npm init data-harmonizer $(SOURCE_SCHEMA_PATH)
all: site
site: gen-project gendoc
%.yaml: gen-project
deploy: all mkd-gh-deploy
compile-sheets:
$(RUN) sheets2linkml --gsheet-id $(SHEET_ID) $(SHEET_TABS) > $(SHEET_MODULE_PATH).tmp && mv $(SHEET_MODULE_PATH).tmp $(SHEET_MODULE_PATH)
# In future this will be done by conversion
gen-examples:
cp src/data/examples/* $(EXAMPLEDIR)
# generates all project files
gen-project: $(PYMODEL)
$(RUN) gen-project ${GEN_PARGS} -d $(DEST) $(SOURCE_SCHEMA_PATH) && mv $(DEST)/*.py $(PYMODEL)
test: test-schema test-python test-examples
test-schema:
$(RUN) gen-project ${GEN_PARGS} -d tmp $(SOURCE_SCHEMA_PATH)
test-python:
$(RUN) python -m unittest discover
lint:
$(RUN) linkml-lint $(SOURCE_SCHEMA_PATH)
check-config:
@(grep my-datamodel about.yaml > /dev/null && printf "\n**Project not configured**:\n\n - Remember to edit 'about.yaml'\n\n" || exit 0)
convert-examples-to-%:
$(patsubst %, $(RUN) linkml-convert % -s $(SOURCE_SCHEMA_PATH) -C Person, $(shell ${SHELL} find src/data/examples -name "*.yaml"))
examples/%.yaml: src/data/examples/%.yaml
$(RUN) linkml-convert -s $(SOURCE_SCHEMA_PATH) -C Person $< -o $@
examples/%.json: src/data/examples/%.yaml
$(RUN) linkml-convert -s $(SOURCE_SCHEMA_PATH) -C Person $< -o $@
examples/%.ttl: src/data/examples/%.yaml
$(RUN) linkml-convert -P EXAMPLE=http://example.org/ -s $(SOURCE_SCHEMA_PATH) -C Person $< -o $@
test-examples: examples/output
examples/output: src/linkml_activitypub
mkdir -p $@
$(RUN) linkml-run-examples \
--output-formats json \
--output-formats yaml \
--counter-example-input-directory src/data/examples/invalid \
--input-directory src/data/examples/valid \
--output-directory $@ \
--schema $< > $@/README.md
# Test documentation locally
serve: mkd-serve
# Python datamodel
$(PYMODEL):
mkdir -p $@
$(DOCDIR):
mkdir -p $@
gendoc: $(DOCDIR)
cp $(SRC)/docs/*md $(DOCDIR) ; \
$(RUN) gen-doc ${GEN_DARGS} -d $(DOCDIR) $(SOURCE_SCHEMA_PATH)
testdoc: gendoc serve
MKDOCS = $(RUN) mkdocs
mkd-%:
$(MKDOCS) $*
PROJECT_FOLDERS = sqlschema shex shacl protobuf prefixmap owl jsonschema jsonld graphql excel
git-init-add: git-init git-add git-commit git-status
git-init:
git init
git-add: .cruft.json
git add .
git-commit:
git commit -m 'chore: initial commit' -a
git-status:
git status
# only necessary if setting up via cookiecutter
.cruft.json:
echo "creating a stub for .cruft.json. IMPORTANT: setup via cruft not cookiecutter recommended!" ; \
touch $@
clean:
rm -rf $(DEST)
rm -rf tmp
rm -fr docs/*
rm -fr $(PYMODEL)/*
include project.Makefile

View file

@ -1,2 +1,23 @@
# linkml-activitypub
LinkML Schema representation of ActivityPub
LinkML representation of ActivityPub schema (which is mostly ActivityStreams except where it's not)
## Process
Intermediate files are in the `data` directory
- `activitystreams2.owl` - Initially imported from [activitystreams2.owl](https://github.com/w3c/activitystreams/blob/5910a59a6f46c1f8ec9fb028bd8bbb65a7332e4e/vocabulary/activitystreams2.owl)
- Removed problematic OrderedCollection definitions
- `activitystreams2.ofn` - Convert to functional notation with [robot](http://robot.obolibrary.org/)
- `activitystreams2.yaml` - Then to rough linkml using [schema-automator](https://linkml.io/schema-automator/)
Then the final schema in
- Manually refined...
# References
- Status of AS OWL vocabulary and etc. https://github.com/w3c/activitystreams/issues/416
# See Also
- https://github.com/steve-bate/activitypub-ontology

5
about.yaml Normal file
View file

@ -0,0 +1,5 @@
---
name: linkml-activitypub
author: Jonny Saunders <sneakers-the-rat@protonmail.com>
description: LinkML representation of linkml_activitypub Schema
source_schema_path: linkml_activitypub/activitypub.yaml

41
config.yaml Normal file
View file

@ -0,0 +1,41 @@
# Configuration of generators (defaults illustrated)
---
generator_args:
excel:
mergeimports: true
owl:
mergeimports: true
metaclasses: true
type_objects: true
# throws 'Cannot handle metadata profile: rdfs'
# metadata_profile: rdfs
markdown:
mergeimports: true
graphql:
mergeimports: true
java:
mergeimports: true
metadata: true
jsonld:
mergeimports: true
jsonschema:
mergeimports: true
jsonldcontext:
mergeimports: true
python:
mergeimports: true
prefixmap:
mergeimports: true
proto:
mergeimports: true
shacl:
mergeimports: true
shex:
mergeimports: true
sqlddl:
mergeimports: true
typescript:
mergeimports: true
metadata: true
...

653
data/activitystreams.yaml Normal file
View file

@ -0,0 +1,653 @@
name: ''
description: ''
id: http://www.w3.org/ns/activitystreams#
imports:
- linkml:types
prefixes:
linkml: https://w3id.org/linkml/
? ''
: https://w3id.org/None/
default_prefix: ''
slots:
predicate:
slot_uri: rdf:predicate
multivalued: true
subject:
comments:
- On a Relationship object, identifies the subject. e.g. when saying \"John is
connected to Sally\", 'subject' refers to 'John'@en
is_a: subject
slot_uri: as:subject
multivalued: true
actor:
comments:
- Subproperty of as:attributedTo that identifies the primary actor@en
is_a: attributedTo
slot_uri: as:actor
multivalued: true
anyOf:
comments:
- Describes a possible inclusive answer or option for a question.@en
slot_uri: as:anyOf
multivalued: true
attachment:
slot_uri: as:attachment
multivalued: true
attachments:
slot_uri: as:attachments
multivalued: true
attributedTo:
comments:
- Identifies an entity to which an object is attributed@en
slot_uri: as:attributedTo
multivalued: true
audience:
slot_uri: as:audience
multivalued: true
author:
comments:
- Identifies the author of an object. Deprecated. Use as:attributedTo instead@en
is_a: attributedTo
slot_uri: as:author
multivalued: true
bcc:
slot_uri: as:bcc
multivalued: true
bto:
slot_uri: as:bto
multivalued: true
cc:
slot_uri: as:cc
multivalued: true
context:
comments:
- Specifies the context within which an object exists or an activity was performed@en
slot_uri: as:context
multivalued: true
current:
slot_uri: as:current
multivalued: true
describes:
comments:
- On a Profile object, describes the object described by the profile@en
slot_uri: as:describes
multivalued: true
range: Object
first:
slot_uri: as:first
multivalued: true
formerType:
comments:
- On a Tombstone object, describes the former type of the deleted object@en
slot_uri: as:formerType
multivalued: true
range: Object
generator:
slot_uri: as:generator
multivalued: true
icon:
slot_uri: as:icon
multivalued: true
image:
slot_uri: as:image
multivalued: true
inReplyTo:
slot_uri: as:inReplyTo
multivalued: true
instrument:
comments:
- Indentifies an object used (or to be used) to complete an activity@en
slot_uri: as:instrument
multivalued: true
items:
slot_uri: as:items
multivalued: true
last:
slot_uri: as:last
multivalued: true
location:
slot_uri: as:location
multivalued: true
next:
slot_uri: as:next
multivalued: true
object:
slot_uri: as:object
multivalued: true
oneOf:
comments:
- Describes a possible exclusive answer or option for a question.@en
slot_uri: as:oneOf
multivalued: true
origin:
comments:
- For certain activities, specifies the entity from which the action is directed.@en
slot_uri: as:origin
multivalued: true
partOf:
slot_uri: as:partOf
multivalued: true
prev:
slot_uri: as:prev
multivalued: true
preview:
slot_uri: as:preview
multivalued: true
provider:
slot_uri: as:provider
multivalued: true
relationship:
comments:
- On a Relationship object, describes the type of relationship@en
is_a: predicate
slot_uri: as:relationship
multivalued: true
range: Property
replies:
slot_uri: as:replies
multivalued: true
range: Collection
result:
slot_uri: as:result
multivalued: true
tag:
slot_uri: as:tag
multivalued: true
tags:
slot_uri: as:tags
multivalued: true
target:
slot_uri: as:target
multivalued: true
to:
slot_uri: as:to
multivalued: true
url:
comments:
- Specifies a link to a specific representation of the Object@en
slot_uri: as:url
multivalued: true
accuracy:
comments:
- Specifies the accuracy around the point established by the longitude and latitude@en
slot_uri: as:accuracy
multivalued: true
altitude:
comments:
- The altitude of a place@en
slot_uri: as:altitude
multivalued: true
content:
comments:
- The content of the object.@en
slot_uri: as:content
multivalued: true
deleted:
comments:
- Specifies the date and time the object was deleted@en
slot_uri: as:deleted
multivalued: true
downstreamDuplicates:
slot_uri: as:downstreamDuplicates
multivalued: true
duration:
comments:
- The duration of the object@en
slot_uri: as:duration
multivalued: true
endTime:
comments:
- The ending time of the object@en
slot_uri: as:endTime
multivalued: true
height:
comments:
- The display height expressed as device independent pixels@en
slot_uri: as:height
multivalued: true
href:
comments:
- The target URI of the Link@en
slot_uri: as:href
multivalued: true
hreflang:
comments:
- A hint about the language of the referenced resource@en
slot_uri: as:hreflang
multivalued: true
id:
slot_uri: as:id
multivalued: true
latitude:
comments:
- The latitude@en
slot_uri: as:latitude
multivalued: true
longitude:
comments:
- The longitude@en
slot_uri: as:longitude
multivalued: true
mediaType:
comments:
- The MIME Media Type@en
slot_uri: as:mediaType
multivalued: true
name:
slot_uri: rdfs:name
multivalued: true
objectType:
slot_uri: as:objectType
multivalued: true
published:
comments:
- Specifies the date and time the object was published@en
slot_uri: as:published
multivalued: true
radius:
comments:
- Specifies a radius around the point established by the longitude and latitude@en
slot_uri: as:radius
multivalued: true
rating:
comments:
- A numeric rating (>= 0.0, <= 5.0) for the object@en
slot_uri: as:rating
multivalued: true
rel:
comments:
- The RFC 5988 or HTML5 Link Relation associated with the Link@en
slot_uri: as:rel
multivalued: true
startTime:
comments:
- The starting time of the object@en
slot_uri: as:startTime
multivalued: true
summary:
comments:
- A short summary of the object@en
slot_uri: as:summary
multivalued: true
totalItems:
comments:
- The total number of items in a logical collection@en
slot_uri: as:totalItems
multivalued: true
units:
comments:
- Identifies the unit of measurement used by the radius, altitude and accuracy
properties. The value can be expressed either as one of a set of predefined
units or as a well-known common URI that identifies units.@en
slot_uri: as:units
multivalued: true
updated:
comments:
- Specifies when the object was last updated@en
slot_uri: as:updated
multivalued: true
upstreamDuplicates:
slot_uri: as:upstreamDuplicates
multivalued: true
verb:
slot_uri: as:verb
multivalued: true
width:
comments:
- Specifies the preferred display width of the content, expressed in terms of
device independent pixels.@en
slot_uri: as:width
multivalued: true
classes:
Property:
class_uri: rdf:Property
Statement:
class_uri: rdf:Statement
Accept:
comments:
- Actor accepts the Object@en
is_a: Activity
class_uri: as:Accept
Activity:
comments:
- An Object representing some form of Action that has been taken@en
is_a: Object
slots:
- actor
- instrument
- object
- origin
- result
- target
- verb
class_uri: as:Activity
Add:
comments:
- To Add an Object or Link to Something@en
is_a: Activity
class_uri: as:Add
Announce:
comments:
- Actor announces the object to the target@en
is_a: Activity
class_uri: as:Announce
Application:
comments:
- Represents a software application of any sort@en
is_a: Object
class_uri: as:Application
Arrive:
comments:
- To Arrive Somewhere (can be used, for instance, to indicate that a particular
entity is currently located somewhere, e.g. a \"check-in\")@en
is_a: IntransitiveActivity
class_uri: as:Arrive
Article:
comments:
- A written work. Typically several paragraphs long. For example, a blog post
or a news article.@en
is_a: Object
class_uri: as:Article
Audio:
comments:
- An audio file@en
is_a: Document
class_uri: as:Audio
Block:
is_a: Ignore
class_uri: as:Block
Collection:
comments:
- An ordered or unordered collection of Objects or Links@en
is_a: Object
slots:
- current
- first
- items
- last
- totalItems
class_uri: as:Collection
CollectionPage:
comments:
- A subset of items from a Collection@en
is_a: Collection
slots:
- next
- partOf
- prev
class_uri: as:CollectionPage
Create:
comments:
- To Create Something@en
is_a: Activity
class_uri: as:Create
Delete:
comments:
- To Delete Something@en
is_a: Activity
class_uri: as:Delete
Dislike:
comments:
- The actor dislikes the object@en
is_a: Activity
class_uri: as:Dislike
Document:
comments:
- Represents a digital document/file of any sort@en
is_a: Object
class_uri: as:Document
Event:
comments:
- An Event of any kind@en
is_a: Object
class_uri: as:Event
Flag:
comments:
- To flag something (e.g. flag as inappropriate, flag as spam, etc)@en
is_a: Activity
class_uri: as:Flag
Follow:
comments:
- To Express Interest in Something@en
is_a: Activity
class_uri: as:Follow
Group:
comments:
- A Group of any kind.@en
is_a: Object
class_uri: as:Group
Ignore:
comments:
- Actor is ignoring the Object@en
is_a: Activity
class_uri: as:Ignore
Image:
comments:
- An Image file@en
is_a: Document
class_uri: as:Image
IntransitiveActivity:
comments:
- An Activity that has no direct object@en
is_a: Activity
class_uri: as:IntransitiveActivity
Invite:
comments:
- To invite someone or something to something@en
is_a: Offer
class_uri: as:Invite
Join:
comments:
- To Join Something@en
is_a: Activity
class_uri: as:Join
Leave:
comments:
- To Leave Something@en
is_a: Activity
class_uri: as:Leave
Like:
comments:
- To Like Something@en
is_a: Activity
class_uri: as:Like
Link:
comments:
- Represents a qualified reference to another resource. Patterned after the RFC5988
Web Linking Model@en
slots:
- attributedTo
- name
- preview
- height
- href
- hreflang
- id
- mediaType
- rel
- width
class_uri: as:Link
Listen:
comments:
- The actor listened to the object@en
is_a: Activity
class_uri: as:Listen
Mention:
comments:
- A specialized Link that represents an @mention@en
is_a: Link
class_uri: as:Mention
Move:
comments:
- The actor is moving the object. The target specifies where the object is moving
to. The origin specifies where the object is moving from.
is_a: Activity
class_uri: as:Move
Note:
comments:
- A Short note, typically less than a single paragraph. A \"tweet\" is an example,
or a \"status update\"@en
is_a: Object
class_uri: as:Note
Object:
slots:
- attachment
- attachments
- attributedTo
- audience
- author
- bcc
- bto
- cc
- content
- context
- generator
- icon
- image
- inReplyTo
- location
- name
- preview
- provider
- replies
- summary
- tag
- tags
- to
- url
- downstreamDuplicates
- duration
- endTime
- id
- mediaType
- objectType
- published
- rating
- startTime
- updated
- upstreamDuplicates
class_uri: as:Object
Offer:
comments:
- To Offer something to someone or something@en
is_a: Activity
class_uri: as:Offer
OrderedItems:
class_uri: as:OrderedItems
Organization:
comments:
- An Organization@en
is_a: Object
class_uri: as:Organization
Page:
comments:
- A Web Page@en
is_a: Object
class_uri: as:Page
Person:
comments:
- A Person@en
is_a: Object
class_uri: as:Person
Place:
comments:
- A physical or logical location@en
is_a: Object
slots:
- accuracy
- altitude
- latitude
- longitude
- radius
- units
class_uri: as:Place
Profile:
comments:
- A Profile Document@en
is_a: Object
slots:
- describes
class_uri: as:Profile
Question:
comments:
- A question of any sort.@en
is_a: IntransitiveActivity
slots:
- anyOf
- oneOf
class_uri: as:Question
Read:
comments:
- The actor read the object@en
is_a: Activity
class_uri: as:Read
Reject:
comments:
- Actor rejects the Object@en
is_a: Activity
class_uri: as:Reject
Relationship:
comments:
- Represents a Social Graph relationship between two Individuals (indicated by
the 'a' and 'b' properties)@en
is_a: Object
slots:
- object
- relationship
- subject
class_uri: as:Relationship
Remove:
comments:
- To Remove Something@en
is_a: Activity
class_uri: as:Remove
Service:
comments:
- A service provided by some entity@en
is_a: Object
class_uri: as:Service
TentativeAccept:
comments:
- Actor tentatively accepts the Object@en
is_a: Accept
class_uri: as:TentativeAccept
TentativeReject:
comments:
- Actor tentatively rejects the object@en
is_a: Reject
class_uri: as:TentativeReject
Tombstone:
comments:
- A placeholder for a deleted object@en
is_a: Object
slots:
- formerType
- deleted
class_uri: as:Tombstone
Travel:
comments:
- The actor is traveling to the target. The origin specifies where the actor is
traveling from.
is_a: IntransitiveActivity
class_uri: as:Travel
Undo:
comments:
- To Undo Something. This would typically be used to indicate that a previous
Activity has been undone.@en
is_a: Activity
class_uri: as:Undo
Update:
comments:
- To Update/Modify Something@en
is_a: Activity
class_uri: as:Update
Video:
comments:
- A Video document of any kind.@en
is_a: Document
class_uri: as:Video
View:
comments:
- The actor viewed the object@en
is_a: Activity
class_uri: as:View

379
data/activitystreams2.json Normal file
View file

@ -0,0 +1,379 @@
{
"@context": {
"@vocab": "_:",
"xsd": "http://www.w3.org/2001/XMLSchema#",
"as": "https://www.w3.org/ns/activitystreams#",
"ldp": "http://www.w3.org/ns/ldp#",
"vcard": "http://www.w3.org/2006/vcard/ns#",
"id": "@id",
"type": "@type",
"Accept": "as:Accept",
"Activity": "as:Activity",
"IntransitiveActivity": "as:IntransitiveActivity",
"Add": "as:Add",
"Announce": "as:Announce",
"Application": "as:Application",
"Arrive": "as:Arrive",
"Article": "as:Article",
"Audio": "as:Audio",
"Block": "as:Block",
"Collection": "as:Collection",
"CollectionPage": "as:CollectionPage",
"Relationship": "as:Relationship",
"Create": "as:Create",
"Delete": "as:Delete",
"Dislike": "as:Dislike",
"Document": "as:Document",
"Event": "as:Event",
"Follow": "as:Follow",
"Flag": "as:Flag",
"Group": "as:Group",
"Ignore": "as:Ignore",
"Image": "as:Image",
"Invite": "as:Invite",
"Join": "as:Join",
"Leave": "as:Leave",
"Like": "as:Like",
"Link": "as:Link",
"Mention": "as:Mention",
"Note": "as:Note",
"Object": "as:Object",
"Offer": "as:Offer",
"OrderedCollection": "as:OrderedCollection",
"OrderedCollectionPage": "as:OrderedCollectionPage",
"Organization": "as:Organization",
"Page": "as:Page",
"Person": "as:Person",
"Place": "as:Place",
"Profile": "as:Profile",
"Question": "as:Question",
"Reject": "as:Reject",
"Remove": "as:Remove",
"Service": "as:Service",
"TentativeAccept": "as:TentativeAccept",
"TentativeReject": "as:TentativeReject",
"Tombstone": "as:Tombstone",
"Undo": "as:Undo",
"Update": "as:Update",
"Video": "as:Video",
"View": "as:View",
"Listen": "as:Listen",
"Read": "as:Read",
"Move": "as:Move",
"Travel": "as:Travel",
"IsFollowing": "as:IsFollowing",
"IsFollowedBy": "as:IsFollowedBy",
"IsContact": "as:IsContact",
"IsMember": "as:IsMember",
"subject": {
"@id": "as:subject",
"@type": "@id"
},
"relationship": {
"@id": "as:relationship",
"@type": "@id"
},
"actor": {
"@id": "as:actor",
"@type": "@id"
},
"attributedTo": {
"@id": "as:attributedTo",
"@type": "@id"
},
"attachment": {
"@id": "as:attachment",
"@type": "@id"
},
"bcc": {
"@id": "as:bcc",
"@type": "@id"
},
"bto": {
"@id": "as:bto",
"@type": "@id"
},
"cc": {
"@id": "as:cc",
"@type": "@id"
},
"context": {
"@id": "as:context",
"@type": "@id"
},
"current": {
"@id": "as:current",
"@type": "@id"
},
"first": {
"@id": "as:first",
"@type": "@id"
},
"generator": {
"@id": "as:generator",
"@type": "@id"
},
"icon": {
"@id": "as:icon",
"@type": "@id"
},
"image": {
"@id": "as:image",
"@type": "@id"
},
"inReplyTo": {
"@id": "as:inReplyTo",
"@type": "@id"
},
"items": {
"@id": "as:items",
"@type": "@id"
},
"instrument": {
"@id": "as:instrument",
"@type": "@id"
},
"orderedItems": {
"@id": "as:items",
"@type": "@id",
"@container": "@list"
},
"last": {
"@id": "as:last",
"@type": "@id"
},
"location": {
"@id": "as:location",
"@type": "@id"
},
"next": {
"@id": "as:next",
"@type": "@id"
},
"object": {
"@id": "as:object",
"@type": "@id"
},
"oneOf": {
"@id": "as:oneOf",
"@type": "@id"
},
"anyOf": {
"@id": "as:anyOf",
"@type": "@id"
},
"closed": {
"@id": "as:closed",
"@type": "xsd:dateTime"
},
"origin": {
"@id": "as:origin",
"@type": "@id"
},
"accuracy": {
"@id": "as:accuracy",
"@type": "xsd:float"
},
"prev": {
"@id": "as:prev",
"@type": "@id"
},
"preview": {
"@id": "as:preview",
"@type": "@id"
},
"replies": {
"@id": "as:replies",
"@type": "@id"
},
"result": {
"@id": "as:result",
"@type": "@id"
},
"audience": {
"@id": "as:audience",
"@type": "@id"
},
"partOf": {
"@id": "as:partOf",
"@type": "@id"
},
"tag": {
"@id": "as:tag",
"@type": "@id"
},
"target": {
"@id": "as:target",
"@type": "@id"
},
"to": {
"@id": "as:to",
"@type": "@id"
},
"url": {
"@id": "as:url",
"@type": "@id"
},
"altitude": {
"@id": "as:altitude",
"@type": "xsd:float"
},
"content": "as:content",
"contentMap": {
"@id": "as:content",
"@container": "@language"
},
"name": "as:name",
"nameMap": {
"@id": "as:name",
"@container": "@language"
},
"duration": {
"@id": "as:duration",
"@type": "xsd:duration"
},
"endTime": {
"@id": "as:endTime",
"@type": "xsd:dateTime"
},
"height": {
"@id": "as:height",
"@type": "xsd:nonNegativeInteger"
},
"href": {
"@id": "as:href",
"@type": "@id"
},
"hreflang": "as:hreflang",
"latitude": {
"@id": "as:latitude",
"@type": "xsd:float"
},
"longitude": {
"@id": "as:longitude",
"@type": "xsd:float"
},
"mediaType": "as:mediaType",
"published": {
"@id": "as:published",
"@type": "xsd:dateTime"
},
"radius": {
"@id": "as:radius",
"@type": "xsd:float"
},
"rel": "as:rel",
"startIndex": {
"@id": "as:startIndex",
"@type": "xsd:nonNegativeInteger"
},
"startTime": {
"@id": "as:startTime",
"@type": "xsd:dateTime"
},
"summary": "as:summary",
"summaryMap": {
"@id": "as:summary",
"@container": "@language"
},
"totalItems": {
"@id": "as:totalItems",
"@type": "xsd:nonNegativeInteger"
},
"units": "as:units",
"updated": {
"@id": "as:updated",
"@type": "xsd:dateTime"
},
"width": {
"@id": "as:width",
"@type": "xsd:nonNegativeInteger"
},
"describes": {
"@id": "as:describes",
"@type": "@id"
},
"formerType": {
"@id": "as:formerType",
"@type": "@id"
},
"deleted": {
"@id": "as:deleted",
"@type": "xsd:dateTime"
},
"inbox": {
"@id": "ldp:inbox",
"@type": "@id"
},
"outbox": {
"@id": "as:outbox",
"@type": "@id"
},
"following": {
"@id": "as:following",
"@type": "@id"
},
"followers": {
"@id": "as:followers",
"@type": "@id"
},
"streams": {
"@id": "as:streams",
"@type": "@id"
},
"preferredUsername": "as:preferredUsername",
"endpoints": {
"@id": "as:endpoints",
"@type": "@id"
},
"uploadMedia": {
"@id": "as:uploadMedia",
"@type": "@id"
},
"proxyUrl": {
"@id": "as:proxyUrl",
"@type": "@id"
},
"liked": {
"@id": "as:liked",
"@type": "@id"
},
"oauthAuthorizationEndpoint": {
"@id": "as:oauthAuthorizationEndpoint",
"@type": "@id"
},
"oauthTokenEndpoint": {
"@id": "as:oauthTokenEndpoint",
"@type": "@id"
},
"provideClientKey": {
"@id": "as:provideClientKey",
"@type": "@id"
},
"signClientKey": {
"@id": "as:signClientKey",
"@type": "@id"
},
"sharedInbox": {
"@id": "as:sharedInbox",
"@type": "@id"
},
"Public": {
"@id": "as:Public",
"@type": "@id"
},
"source": "as:source",
"likes": {
"@id": "as:likes",
"@type": "@id"
},
"shares": {
"@id": "as:shares",
"@type": "@id"
},
"alsoKnownAs": {
"@id": "as:alsoKnownAs",
"@type": "@id"
}
}
}

975
data/activitystreams2.ofn Normal file
View file

@ -0,0 +1,975 @@
Prefix(:=<http://www.w3.org/ns/activitystreams#>)
Prefix(as:=<http://www.w3.org/ns/activitystreams#>)
Prefix(owl:=<http://www.w3.org/2002/07/owl#>)
Prefix(rdf:=<http://www.w3.org/1999/02/22-rdf-syntax-ns#>)
Prefix(xml:=<http://www.w3.org/XML/1998/namespace>)
Prefix(xsd:=<http://www.w3.org/2001/XMLSchema#>)
Prefix(rdfs:=<http://www.w3.org/2000/01/rdf-schema#>)
Ontology(<http://www.w3.org/ns/activitystreams#>
Annotation(rdfs:comment "Extended Activity Streams 2.0 Vocabulary"@en)
Annotation(rdfs:label "Activity Streams 2.0"@en)
Declaration(Class(rdf:Property))
Declaration(Class(rdf:Statement))
Declaration(Class(as:Accept))
Declaration(Class(as:Activity))
Declaration(Class(as:Add))
Declaration(Class(as:Announce))
Declaration(Class(as:Application))
Declaration(Class(as:Arrive))
Declaration(Class(as:Article))
Declaration(Class(as:Audio))
Declaration(Class(as:Block))
Declaration(Class(as:Collection))
Declaration(Class(as:CollectionPage))
Declaration(Class(as:Create))
Declaration(Class(as:Delete))
Declaration(Class(as:Dislike))
Declaration(Class(as:Document))
Declaration(Class(as:Event))
Declaration(Class(as:Flag))
Declaration(Class(as:Follow))
Declaration(Class(as:Group))
Declaration(Class(as:Ignore))
Declaration(Class(as:Image))
Declaration(Class(as:IntransitiveActivity))
Declaration(Class(as:Invite))
Declaration(Class(as:Join))
Declaration(Class(as:Leave))
Declaration(Class(as:Like))
Declaration(Class(as:Link))
Declaration(Class(as:Listen))
Declaration(Class(as:Mention))
Declaration(Class(as:Move))
Declaration(Class(as:Note))
Declaration(Class(as:Object))
Declaration(Class(as:Offer))
Declaration(Class(as:OrderedItems))
Declaration(Class(as:Organization))
Declaration(Class(as:Page))
Declaration(Class(as:Person))
Declaration(Class(as:Place))
Declaration(Class(as:Profile))
Declaration(Class(as:Question))
Declaration(Class(as:Read))
Declaration(Class(as:Reject))
Declaration(Class(as:Relationship))
Declaration(Class(as:Remove))
Declaration(Class(as:Service))
Declaration(Class(as:TentativeAccept))
Declaration(Class(as:TentativeReject))
Declaration(Class(as:Tombstone))
Declaration(Class(as:Travel))
Declaration(Class(as:Undo))
Declaration(Class(as:Update))
Declaration(Class(as:Video))
Declaration(Class(as:View))
Declaration(ObjectProperty(rdf:predicate))
Declaration(ObjectProperty(rdf:subject))
Declaration(ObjectProperty(as:actor))
Declaration(ObjectProperty(as:anyOf))
Declaration(ObjectProperty(as:attachment))
Declaration(ObjectProperty(as:attachments))
Declaration(ObjectProperty(as:attributedTo))
Declaration(ObjectProperty(as:audience))
Declaration(ObjectProperty(as:author))
Declaration(ObjectProperty(as:bcc))
Declaration(ObjectProperty(as:bto))
Declaration(ObjectProperty(as:cc))
Declaration(ObjectProperty(as:context))
Declaration(ObjectProperty(as:current))
Declaration(ObjectProperty(as:describes))
Declaration(ObjectProperty(as:first))
Declaration(ObjectProperty(as:formerType))
Declaration(ObjectProperty(as:generator))
Declaration(ObjectProperty(as:icon))
Declaration(ObjectProperty(as:image))
Declaration(ObjectProperty(as:inReplyTo))
Declaration(ObjectProperty(as:instrument))
Declaration(ObjectProperty(as:items))
Declaration(ObjectProperty(as:last))
Declaration(ObjectProperty(as:location))
Declaration(ObjectProperty(as:next))
Declaration(ObjectProperty(as:object))
Declaration(ObjectProperty(as:oneOf))
Declaration(ObjectProperty(as:origin))
Declaration(ObjectProperty(as:partOf))
Declaration(ObjectProperty(as:prev))
Declaration(ObjectProperty(as:preview))
Declaration(ObjectProperty(as:provider))
Declaration(ObjectProperty(as:relationship))
Declaration(ObjectProperty(as:replies))
Declaration(ObjectProperty(as:result))
Declaration(ObjectProperty(as:subject))
Declaration(ObjectProperty(as:tag))
Declaration(ObjectProperty(as:tags))
Declaration(ObjectProperty(as:target))
Declaration(ObjectProperty(as:to))
Declaration(ObjectProperty(as:url))
Declaration(DataProperty(as:accuracy))
Declaration(DataProperty(as:altitude))
Declaration(DataProperty(as:content))
Declaration(DataProperty(as:deleted))
Declaration(DataProperty(as:downstreamDuplicates))
Declaration(DataProperty(as:duration))
Declaration(DataProperty(as:endTime))
Declaration(DataProperty(as:height))
Declaration(DataProperty(as:href))
Declaration(DataProperty(as:hreflang))
Declaration(DataProperty(as:id))
Declaration(DataProperty(as:latitude))
Declaration(DataProperty(as:longitude))
Declaration(DataProperty(as:mediaType))
Declaration(DataProperty(as:name))
Declaration(DataProperty(as:objectType))
Declaration(DataProperty(as:published))
Declaration(DataProperty(as:radius))
Declaration(DataProperty(as:rating))
Declaration(DataProperty(as:rel))
Declaration(DataProperty(as:startTime))
Declaration(DataProperty(as:summary))
Declaration(DataProperty(as:totalItems))
Declaration(DataProperty(as:units))
Declaration(DataProperty(as:updated))
Declaration(DataProperty(as:upstreamDuplicates))
Declaration(DataProperty(as:verb))
Declaration(DataProperty(as:width))
Declaration(NamedIndividual(rdf:nil))
Declaration(NamedIndividual(as:Relationship))
Declaration(AnnotationProperty(rdfs:name))
Declaration(Datatype(rdf:langString))
Declaration(Datatype(xsd:duration))
############################
# Object Properties
############################
# Object Property: as:actor (actor)
AnnotationAssertion(rdfs:comment as:actor "Subproperty of as:attributedTo that identifies the primary actor"@en)
AnnotationAssertion(rdfs:label as:actor "actor"@en)
SubObjectPropertyOf(as:actor as:attributedTo)
ObjectPropertyDomain(as:actor as:Activity)
ObjectPropertyRange(as:actor ObjectUnionOf(as:Link as:Object))
# Object Property: as:anyOf (oneOf)
AnnotationAssertion(rdfs:comment as:anyOf "Describes a possible inclusive answer or option for a question."@en)
AnnotationAssertion(rdfs:label as:anyOf "oneOf"@en)
ObjectPropertyDomain(as:anyOf as:Question)
ObjectPropertyRange(as:anyOf ObjectUnionOf(as:Link as:Object))
# Object Property: as:attachment (attachment)
AnnotationAssertion(rdfs:label as:attachment "attachment"@en)
EquivalentObjectProperties(as:attachment as:attachments)
ObjectPropertyDomain(as:attachment as:Object)
ObjectPropertyRange(as:attachment ObjectUnionOf(as:Link as:Object))
# Object Property: as:attachments (attachments)
AnnotationAssertion(rdfs:label as:attachments "attachments"@en)
AnnotationAssertion(owl:deprecated as:attachments "true"^^xsd:boolean)
ObjectPropertyDomain(as:attachments as:Object)
ObjectPropertyRange(as:attachments ObjectUnionOf(as:Link as:Object))
# Object Property: as:attributedTo (attributedTo)
AnnotationAssertion(rdfs:comment as:attributedTo "Identifies an entity to which an object is attributed"@en)
AnnotationAssertion(rdfs:label as:attributedTo "attributedTo"@en)
ObjectPropertyDomain(as:attributedTo ObjectUnionOf(as:Link as:Object))
ObjectPropertyRange(as:attributedTo ObjectUnionOf(as:Link as:Object))
# Object Property: as:audience (audience)
AnnotationAssertion(rdfs:label as:audience "audience"@en)
ObjectPropertyDomain(as:audience as:Object)
ObjectPropertyRange(as:audience ObjectUnionOf(as:Link as:Object))
# Object Property: as:author (author)
AnnotationAssertion(rdfs:comment as:author "Identifies the author of an object. Deprecated. Use as:attributedTo instead"@en)
AnnotationAssertion(rdfs:label as:author "author"@en)
AnnotationAssertion(owl:deprecated as:author "true"^^xsd:boolean)
SubObjectPropertyOf(as:author as:attributedTo)
ObjectPropertyDomain(as:author as:Object)
ObjectPropertyRange(as:author ObjectUnionOf(as:Link as:Object))
# Object Property: as:bcc (bcc)
AnnotationAssertion(rdfs:label as:bcc "bcc"@en)
ObjectPropertyDomain(as:bcc as:Object)
ObjectPropertyRange(as:bcc ObjectUnionOf(as:Link as:Object))
# Object Property: as:bto (bto)
AnnotationAssertion(rdfs:label as:bto "bto"@en)
ObjectPropertyDomain(as:bto as:Object)
ObjectPropertyRange(as:bto ObjectUnionOf(as:Link as:Object))
# Object Property: as:cc (cc)
AnnotationAssertion(rdfs:label as:cc "cc"@en)
ObjectPropertyDomain(as:cc as:Object)
ObjectPropertyRange(as:cc ObjectUnionOf(as:Link as:Object))
# Object Property: as:content (content)
AnnotationAssertion(rdfs:comment as:content "The content of the object."@en)
AnnotationAssertion(rdfs:label as:content "content"@en)
ObjectPropertyDomain(as:content as:Object)
ObjectPropertyRange(as:content ObjectUnionOf(rdf:langString xsd:string))
# Object Property: as:context (context)
AnnotationAssertion(rdfs:comment as:context "Specifies the context within which an object exists or an activity was performed"@en)
AnnotationAssertion(rdfs:label as:context "context"@en)
ObjectPropertyDomain(as:context as:Object)
ObjectPropertyRange(as:context ObjectUnionOf(as:Link as:Object))
# Object Property: as:current (current)
AnnotationAssertion(rdfs:label as:current "current"@en)
FunctionalObjectProperty(as:current)
ObjectPropertyDomain(as:current as:Collection)
ObjectPropertyRange(as:current ObjectUnionOf(as:CollectionPage as:Link))
# Object Property: as:describes (describes)
AnnotationAssertion(rdfs:comment as:describes "On a Profile object, describes the object described by the profile"@en)
AnnotationAssertion(rdfs:label as:describes "describes"@en)
FunctionalObjectProperty(as:describes)
ObjectPropertyDomain(as:describes as:Profile)
ObjectPropertyRange(as:describes as:Object)
# Object Property: as:first (first)
AnnotationAssertion(rdfs:label as:first "first"@en)
FunctionalObjectProperty(as:first)
ObjectPropertyDomain(as:first as:Collection)
ObjectPropertyRange(as:first ObjectUnionOf(as:CollectionPage as:Link))
# Object Property: as:formerType (formerType)
AnnotationAssertion(rdfs:comment as:formerType "On a Tombstone object, describes the former type of the deleted object"@en)
AnnotationAssertion(rdfs:label as:formerType "formerType"@en)
FunctionalObjectProperty(as:formerType)
ObjectPropertyDomain(as:formerType as:Tombstone)
ObjectPropertyRange(as:formerType as:Object)
# Object Property: as:generator (generator)
AnnotationAssertion(rdfs:label as:generator "generator"@en)
ObjectPropertyDomain(as:generator as:Object)
ObjectPropertyRange(as:generator ObjectUnionOf(as:Link as:Object))
# Object Property: as:icon (icon)
AnnotationAssertion(rdfs:label as:icon "icon"@en)
ObjectPropertyDomain(as:icon as:Object)
ObjectPropertyRange(as:icon ObjectUnionOf(as:Image as:Link))