1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
import os.path
from tempfile import TemporaryDirectory
from rdflib import RDF, BNode, Graph, Literal
from rdflib.namespace import DC, FOAF
if __name__ == "__main__":
store = Graph()
# Bind a few prefix, namespace pairs for pretty output
store.bind("dc", DC)
store.bind("foaf", FOAF)
# Create an identifier to use as the subject for Donna.
donna = BNode()
# Add triples using store's add method.
store.add((donna, RDF.type, FOAF.Person))
store.add((donna, FOAF.nick, Literal("donna", lang="foo")))
store.add((donna, FOAF.name, Literal("Donna Fales")))
# Iterate over triples in store and print them out.
print("--- printing raw triples ---")
for s, p, o in store:
print(s, p, o)
# For each foaf:Person in the store print out its mbox property.
print()
print("--- printing mboxes ---")
for person in store.subjects(RDF.type, FOAF["Person"]):
for mbox in store.objects(person, FOAF["mbox"]):
print(mbox)
tmp_dir = TemporaryDirectory()
output_file = os.path.join(tmp_dir.name, "donna_foaf.rdf")
print(f"--- saving RDF to a file ({output_file}) ---")
# Serialize the store as RDF/XML to the file donna_foaf.rdf.
store.serialize(f"{output_file}", format="pretty-xml", max_depth=3)
# Let's show off the serializers
print()
print("RDF Serializations:")
# Serialize as Turtle (default)
print("--- start: turtle ---")
print(store.serialize())
print("--- end: turtle ---\n")
# Serialize as XML
print("--- start: rdf-xml ---")
print(store.serialize(format="pretty-xml"))
print("--- end: rdf-xml ---\n")
# Serialize as NTriples
print("--- start: ntriples ---")
print(store.serialize(format="nt"))
print("--- end: ntriples ---\n")
# Serialize as JSON-LD
# only if you have the JSON-LD plugin installed!
print("--- start: JSON-LD ---")
print(store.serialize(format="json-ld"))
print("--- end: JSON-LD ---\n")
|